{"version":3,"sources":["vendor/ember-cli/app-prefix.js","settify-mvp/adapters/application.js","settify-mvp/adapters/catalogue.js","settify-mvp/adapters/client.js","settify-mvp/adapters/document.js","settify-mvp/adapters/invoice.js","settify-mvp/adapters/lead.js","settify-mvp/adapters/metadata.js","settify-mvp/adapters/questionnaire-summary.js","settify-mvp/adapters/questionnaire.js","settify-mvp/adapters/settify-base-adapter.js","settify-mvp/adapters/settings.js","settify-mvp/adapters/staff.js","settify-mvp/app.js","settify-mvp/authenticators/awscognito.js","settify-mvp/component-managers/glimmer.js","settify-mvp/components/-dynamic-element-alt.js","settify-mvp/components/-dynamic-element.js","settify-mvp/components/address-printer.js","settify-mvp/components/address-simple.js","settify-mvp/components/admin-header-breadcrumbs.js","settify-mvp/components/admin-header-firm.js","settify-mvp/components/admin-header-profile.js","settify-mvp/components/admin-header.js","settify-mvp/components/admin-notification.js","settify-mvp/components/admin-stats-panel.js","settify-mvp/components/animated-button.js","settify-mvp/components/animated-header.js","settify-mvp/components/banner-link-generator.js","settify-mvp/components/banner.js","settify-mvp/components/billing-status-select.js","settify-mvp/components/blueprint-display.js","settify-mvp/components/bs-accordion.js","settify-mvp/components/bs-accordion/item.js","settify-mvp/components/bs-accordion/item/body.js","settify-mvp/components/bs-accordion/item/title.js","settify-mvp/components/bs-alert.js","settify-mvp/components/bs-button-group.js","settify-mvp/components/bs-button-group/button.js","settify-mvp/components/bs-button.js","settify-mvp/components/bs-carousel.js","settify-mvp/components/bs-carousel/slide.js","settify-mvp/components/bs-collapse.js","settify-mvp/components/bs-dropdown.js","settify-mvp/components/bs-dropdown/button.js","settify-mvp/components/bs-dropdown/menu.js","settify-mvp/components/bs-dropdown/menu/divider.js","settify-mvp/components/bs-dropdown/menu/item.js","settify-mvp/components/bs-dropdown/toggle.js","settify-mvp/components/bs-form.js","settify-mvp/components/bs-form/element.js","settify-mvp/components/bs-form/element/control.js","settify-mvp/components/bs-form/element/control/checkbox.js","settify-mvp/components/bs-form/element/control/input.js","settify-mvp/components/bs-form/element/control/radio.js","settify-mvp/components/bs-form/element/control/switch.js","settify-mvp/components/bs-form/element/control/textarea.js","settify-mvp/components/bs-form/element/errors.js","settify-mvp/components/bs-form/element/feedback-icon.js","settify-mvp/components/bs-form/element/help-text.js","settify-mvp/components/bs-form/element/label.js","settify-mvp/components/bs-form/element/layout/horizontal.js","settify-mvp/components/bs-form/element/layout/horizontal/checkbox.js","settify-mvp/components/bs-form/element/layout/inline.js","settify-mvp/components/bs-form/element/layout/inline/checkbox.js","settify-mvp/components/bs-form/element/layout/vertical.js","settify-mvp/components/bs-form/element/layout/vertical/checkbox.js","settify-mvp/components/bs-form/element/legend.js","settify-mvp/components/bs-link-to.js","settify-mvp/components/bs-modal-simple.js","settify-mvp/components/bs-modal.js","settify-mvp/components/bs-modal/body.js","settify-mvp/components/bs-modal/dialog.js","settify-mvp/components/bs-modal/footer.js","settify-mvp/components/bs-modal/header.js","settify-mvp/components/bs-modal/header/close.js","settify-mvp/components/bs-modal/header/title.js","settify-mvp/components/bs-nav.js","settify-mvp/components/bs-nav/item.js","settify-mvp/components/bs-navbar.js","settify-mvp/components/bs-navbar/content.js","settify-mvp/components/bs-navbar/link-to.js","settify-mvp/components/bs-navbar/nav.js","settify-mvp/components/bs-navbar/toggle.js","settify-mvp/components/bs-popover.js","settify-mvp/components/bs-popover/element.js","settify-mvp/components/bs-progress.js","settify-mvp/components/bs-progress/bar.js","settify-mvp/components/bs-tab.js","settify-mvp/components/bs-tab/pane.js","settify-mvp/components/bs-tooltip.js","settify-mvp/components/bs-tooltip/element.js","settify-mvp/components/callback-token.js","settify-mvp/components/catalytic-feedback-widget.js","settify-mvp/components/cents-to-dollars.js","settify-mvp/components/chapter-animation.js","settify-mvp/components/chapter-heading-from-form.js","settify-mvp/components/check-box-list.js","settify-mvp/components/check-box.js","settify-mvp/components/check-internet.js","settify-mvp/components/choose-password.js","settify-mvp/components/client-badge.js","settify-mvp/components/client-billing.js","settify-mvp/components/client-brief.js","settify-mvp/components/client-header-navigation.js","settify-mvp/components/client-leads-list.js","settify-mvp/components/client-summary-for-legacy-data.js","settify-mvp/components/common-support-requests.js","settify-mvp/components/compare-form-changes.js","settify-mvp/components/confidence-display.js","settify-mvp/components/confidence-slider.js","settify-mvp/components/config-person-block.js","settify-mvp/components/content-from-unique-standalone-page-id.js","settify-mvp/components/custom-firm-summary-element.js","settify-mvp/components/custom-firm-summary-more-info-printer.js","settify-mvp/components/custom-firm-summary.js","settify-mvp/components/custom-tabbed-title.js","settify-mvp/components/customisations/landing-page/index.js","settify-mvp/components/dashboard-chart.js","settify-mvp/components/date-picker.js","settify-mvp/components/dev/todo/index.js","settify-mvp/components/display-if-icon.js","settify-mvp/components/document-base.js","settify-mvp/components/documents-other.js","settify-mvp/components/documents-required-feedback.js","settify-mvp/components/documents-required-list.js","settify-mvp/components/download-name-required.js","settify-mvp/components/download-resource.js","settify-mvp/components/edit-common-tasks.js","settify-mvp/components/edit-firm-summary-element.js","settify-mvp/components/edit-icon-picker.js","settify-mvp/components/edit-json.js","settify-mvp/components/edit-question.js","settify-mvp/components/email-list.js","settify-mvp/components/environment-indicator.js","settify-mvp/components/family-tree-branch-probate.js","settify-mvp/components/family-tree-branch.js","settify-mvp/components/family-tree-leaf-probate.js","settify-mvp/components/family-tree-leaf.js","settify-mvp/components/family-tree-probate.js","settify-mvp/components/family-tree.js","settify-mvp/components/file-type-thumbnail.js","settify-mvp/components/file-virus-scan-status.js","settify-mvp/components/form-safety-check.js","settify-mvp/components/formatted-number.js","settify-mvp/components/free-list.js","settify-mvp/components/gender-icon.js","settify-mvp/components/help-text-icon.js","settify-mvp/components/help-toggle.js","settify-mvp/components/illiquid-model.js","settify-mvp/components/invitation-email-history.js","settify-mvp/components/invitation-lawyer-bio.js","settify-mvp/components/invitation/email/index.js","settify-mvp/components/invitation/lawyer-bio/index.js","settify-mvp/components/invitation/optional-extra/index.js","settify-mvp/components/invitation/row-wrapper/index.js","settify-mvp/components/invitation/segment-content/index.js","settify-mvp/components/invoice-item.js","settify-mvp/components/lawyer-photo.js","settify-mvp/components/lawyer-select.js","settify-mvp/components/lead-billing-options.js","settify-mvp/components/lf-get-outlet-state.js","settify-mvp/components/line-icon.js","settify-mvp/components/linked-record-display.js","settify-mvp/components/liquid-bind.js","settify-mvp/components/liquid-child.js","settify-mvp/components/liquid-container.js","settify-mvp/components/liquid-if.js","settify-mvp/components/liquid-measured.js","settify-mvp/components/liquid-outlet.js","settify-mvp/components/liquid-spacer.js","settify-mvp/components/liquid-sync.js","settify-mvp/components/liquid-unless.js","settify-mvp/components/liquid-versions.js","settify-mvp/components/loading-display.js","settify-mvp/components/monitor-changes.js","settify-mvp/components/month-select.js","settify-mvp/components/multi-radio-buttons.js","settify-mvp/components/other-asset-list.js","settify-mvp/components/page-from-form.js","settify-mvp/components/periodic-payment.js","settify-mvp/components/pms-settings-config.js","settify-mvp/components/pms-settings-inputs-actionstep.js","settify-mvp/components/pms-settings-inputs-clio.js","settify-mvp/components/pms-settings-inputs-leap.js","settify-mvp/components/pms-settings-inputs-selector.js","settify-mvp/components/pms-settings-inputs-smokeball.js","settify-mvp/components/pms-settings-inputs-webhook.js","settify-mvp/components/postal-address-select.js","settify-mvp/components/practice-area-icon.js","settify-mvp/components/practice-area-link.js","settify-mvp/components/practice-area-warning.js","settify-mvp/components/preferred-office.js","settify-mvp/components/progress-indicator.js","settify-mvp/components/property-address.js","settify-mvp/components/question-rating-icon.js","settify-mvp/components/question-rating.js","settify-mvp/components/radio-buttons.js","settify-mvp/components/resource-upload.js","settify-mvp/components/resume-link-widget.js","settify-mvp/components/same-information-warning.js","settify-mvp/components/save-progress-widget.js","settify-mvp/components/searched-clients-list.js","settify-mvp/components/select-or-create-base.js","settify-mvp/components/select-or-create-legacy.js","settify-mvp/components/select-or-create-multiple.js","settify-mvp/components/select-or-create-singular.js","settify-mvp/components/send-to-pms.js","settify-mvp/components/settify-date-input.js","settify-mvp/components/settify-email-input.js","settify-mvp/components/settify-file-upload.js","settify-mvp/components/settify-footer.js","settify-mvp/components/settify-grid-input.js","settify-mvp/components/settify-guess-client-input.js","settify-mvp/components/settify-hidden-calculated-field.js","settify-mvp/components/settify-immutable-list.js","settify-mvp/components/settify-input-button.js","settify-mvp/components/settify-input-slider.js","settify-mvp/components/settify-input-switcher.js","settify-mvp/components/settify-name-input.js","settify-mvp/components/settify-number.js","settify-mvp/components/settify-phonenumber.js","settify-mvp/components/settify-region-overlay.js","settify-mvp/components/settify-select.js","settify-mvp/components/settify-summary-table.js","settify-mvp/components/settify-textarea.js","settify-mvp/components/settify-textline.js","settify-mvp/components/side-bar-nav.js","settify-mvp/components/side-bar.js","settify-mvp/components/simple-parse.js","settify-mvp/components/stop-think-warning.js","settify-mvp/components/summary-printer.js","settify-mvp/components/summary-section.js","settify-mvp/components/tabbed-list-label.js","settify-mvp/components/tabbed-list-remove-item.js","settify-mvp/components/tabbed-list-top.js","settify-mvp/components/tabbed-list.js","settify-mvp/components/team-mapping-select.js","settify-mvp/components/test-site-data-warning.js","settify-mvp/components/time-picker.js","settify-mvp/components/tip-tap-editor/index.js","settify-mvp/components/title-printer.js","settify-mvp/components/triage-interface.js","settify-mvp/components/triage-option.js","settify-mvp/components/units-per.js","settify-mvp/components/v2/account-dropdown/index.js","settify-mvp/components/v2/address-input/index.js","settify-mvp/components/v2/address-select/index.js","settify-mvp/components/v2/admin-page-header/index.js","settify-mvp/components/v2/admin-page/index.js","settify-mvp/components/v2/banner/index.js","settify-mvp/components/v2/billing-status/index.js","settify-mvp/components/v2/brief-menu-bar/index.js","settify-mvp/components/v2/button/index.js","settify-mvp/components/v2/checkbox-group/index.js","settify-mvp/components/v2/checkbox/index.js","settify-mvp/components/v2/client-facing-summary/chapter-summary/index.js","settify-mvp/components/v2/client-facing-summary/index.js","settify-mvp/components/v2/client-facing-summary/page-summary/index.js","settify-mvp/components/v2/client-facing-summary/question-summary/index.js","settify-mvp/components/v2/client-summary-for-legacy-data/index.js","settify-mvp/components/v2/clipboard/index.js","settify-mvp/components/v2/confidence-range/index.js","settify-mvp/components/v2/console/command-details/index.js","settify-mvp/components/v2/console/command-item/index.js","settify-mvp/components/v2/console/command-palette/index.js","settify-mvp/components/v2/console/execution-history/index.js","settify-mvp/components/v2/console/layout/index.js","settify-mvp/components/v2/console/manage-client/index.js","settify-mvp/components/v2/console/search-client/index.js","settify-mvp/components/v2/console/search-firm/index.js","settify-mvp/components/v2/data-table/index.js","settify-mvp/components/v2/date-input/index.js","settify-mvp/components/v2/documents-requested-list/index.js","settify-mvp/components/v2/dropdown/content.js","settify-mvp/components/v2/dropdown/header.js","settify-mvp/components/v2/dropdown/index.js","settify-mvp/components/v2/email-input/index.js","settify-mvp/components/v2/file-input/index.js","settify-mvp/components/v2/firm-facing-summary/chapter-summary/index.js","settify-mvp/components/v2/firm-facing-summary/index.js","settify-mvp/components/v2/firm-facing-summary/page-summary/index.js","settify-mvp/components/v2/firm-facing-summary/question-summary/index.js","settify-mvp/components/v2/grid-input/index.js","settify-mvp/components/v2/immutable-list/index.js","settify-mvp/components/v2/invitation-not-completed-excerpt-data/index.js","settify-mvp/components/v2/invite-client-form/index.js","settify-mvp/components/v2/invite-client-preview/index.js","settify-mvp/components/v2/invite-new-client-email/index.js","settify-mvp/components/v2/list/index.js","settify-mvp/components/v2/loading-button/index.js","settify-mvp/components/v2/matrix-scale/index.js","settify-mvp/components/v2/mfa-code/index.js","settify-mvp/components/v2/modal/index.js","settify-mvp/components/v2/money-input/index.js","settify-mvp/components/v2/name-input/index.js","settify-mvp/components/v2/new-password/index.js","settify-mvp/components/v2/number-input/index.js","settify-mvp/components/v2/office-select/index.js","settify-mvp/components/v2/pagination/index.js","settify-mvp/components/v2/phone-input/index.js","settify-mvp/components/v2/pin-input/index.js","settify-mvp/components/v2/pms-settings-inputs-leap/index.js","settify-mvp/components/v2/pms-settings-inputs-selector/index.js","settify-mvp/components/v2/pms-settings-inputs-smokeball/index.js","settify-mvp/components/v2/question-label/index.js","settify-mvp/components/v2/question-type-switcher/index.js","settify-mvp/components/v2/radio-button-group/index.js","settify-mvp/components/v2/radio-button/index.js","settify-mvp/components/v2/range-slider/index.js","settify-mvp/components/v2/select-box/index.js","settify-mvp/components/v2/select-date/index.js","settify-mvp/components/v2/select-or-create-presets/index.js","settify-mvp/components/v2/select-or-create-single/index.js","settify-mvp/components/v2/send-to-pms/index.js","settify-mvp/components/v2/sidebar/index.js","settify-mvp/components/v2/signup-button.js","settify-mvp/components/v2/signup-site.js","settify-mvp/components/v2/slide-over/index.js","settify-mvp/components/v2/summary-element/index.js","settify-mvp/components/v2/svg-icon/index.js","settify-mvp/components/v2/tab-list/index.js","settify-mvp/components/v2/team-mapping-select/index.js","settify-mvp/components/v2/textarea/index.js","settify-mvp/components/v2/textline/index.js","settify-mvp/components/v2/toggle/index.js","settify-mvp/components/v2/under-construction/index.js","settify-mvp/components/v2/units-per/index.js","settify-mvp/components/v2/yes-no/index.js","settify-mvp/components/variable-printer-branch.js","settify-mvp/components/variable-printer.js","settify-mvp/components/whats-new.js","settify-mvp/components/wills-cta.js","settify-mvp/components/yesnomaybe-icon.js","settify-mvp/container-debug-adapter.js","settify-mvp/controllers/admin/accountmaintenance.js","settify-mvp/controllers/admin/clients.js","settify-mvp/controllers/admin/compare.js","settify-mvp/controllers/admin/config/accounts/index.js","settify-mvp/controllers/admin/config/accounts/invoice.js","settify-mvp/controllers/admin/config/accounts/settings.js","settify-mvp/controllers/admin/config/customisations.js","settify-mvp/controllers/admin/config/dashboard.js","settify-mvp/controllers/admin/config/editform.js","settify-mvp/controllers/admin/config/editteam.js","settify-mvp/controllers/admin/config/emergency.js","settify-mvp/controllers/admin/config/forms.js","settify-mvp/controllers/admin/config/index.js","settify-mvp/controllers/admin/config/induction.js","settify-mvp/controllers/admin/config/integrationmanager.js","settify-mvp/controllers/admin/config/integrations.js","settify-mvp/controllers/admin/config/invitations.js","settify-mvp/controllers/admin/config/invoices.js","settify-mvp/controllers/admin/config/lineitems.js","settify-mvp/controllers/admin/config/links.js","settify-mvp/controllers/admin/config/offices.js","settify-mvp/controllers/admin/config/practiceclient.js","settify-mvp/controllers/admin/config/settingsbase.js","settify-mvp/controllers/admin/config/skinning.js","settify-mvp/controllers/admin/config/team.js","settify-mvp/controllers/admin/displayemailtemplate.js","settify-mvp/controllers/admin/editablesummary.js","settify-mvp/controllers/admin/files/download.js","settify-mvp/controllers/admin/files/invite.js","settify-mvp/controllers/admin/firms.js","settify-mvp/controllers/admin/frozen-record.js","settify-mvp/controllers/admin/history.js","settify-mvp/controllers/admin/index.js","settify-mvp/controllers/admin/invite.js","settify-mvp/controllers/admin/newfirm.js","settify-mvp/controllers/admin/reportconflict.js","settify-mvp/controllers/admin/resetconflict.js","settify-mvp/controllers/admin/reviewinvoice.js","settify-mvp/controllers/admin/search.js","settify-mvp/controllers/admin/undoinvoice.js","settify-mvp/controllers/admin/users.js","settify-mvp/controllers/admin/welcomeemail.js","settify-mvp/controllers/admin/whatsnew.js","settify-mvp/controllers/application-loading.js","settify-mvp/controllers/application.js","settify-mvp/controllers/base.js","settify-mvp/controllers/changepassword.js","settify-mvp/controllers/contact.js","settify-mvp/controllers/firstlogin.js","settify-mvp/controllers/help/frozenrecord.js","settify-mvp/controllers/help/legacyrecord.js","settify-mvp/controllers/index.js","settify-mvp/controllers/login.js","settify-mvp/controllers/mfa.js","settify-mvp/controllers/onboard.js","settify-mvp/controllers/partners.js","settify-mvp/controllers/resetpassword.js","settify-mvp/controllers/v2/admin.js","settify-mvp/controllers/v2/admin/billing.js","settify-mvp/controllers/v2/admin/billing/index.js","settify-mvp/controllers/v2/admin/billing/invoice.js","settify-mvp/controllers/v2/admin/billing/review.js","settify-mvp/controllers/v2/admin/clients.js","settify-mvp/controllers/v2/admin/index.js","settify-mvp/controllers/v2/admin/integrations/index.js","settify-mvp/controllers/v2/admin/integrations/integration.js","settify-mvp/controllers/v2/admin/offices.js","settify-mvp/controllers/v2/admin/offices/edit.js","settify-mvp/controllers/v2/admin/settings/settify.js","settify-mvp/controllers/v2/admin/settings/setting.js","settify-mvp/controllers/v2/admin/settings/setting/billing.js","settify-mvp/controllers/v2/admin/settings/setting/client-facing.js","settify-mvp/controllers/v2/admin/settings/setting/firm-facing.js","settify-mvp/controllers/v2/admin/settings/setting/invitations.js","settify-mvp/controllers/v2/admin/settings/setting/settify.js","settify-mvp/controllers/v2/admin/settings/setting/users.js","settify-mvp/controllers/v2/admin/team.js","settify-mvp/controllers/v2/admin/team/edit.js","settify-mvp/controllers/v2/auth/first-login.js","settify-mvp/controllers/v2/auth/forgot-password.js","settify-mvp/controllers/v2/auth/login.js","settify-mvp/controllers/v2/auth/logout.js","settify-mvp/controllers/v2/auth/mfa.js","settify-mvp/controllers/v2/auth/password.js","settify-mvp/controllers/v2/auth/verify.js","settify-mvp/controllers/v2/client.js","settify-mvp/controllers/v2/console/index.js","settify-mvp/controllers/v2/firms/clients/client.js","settify-mvp/controllers/v2/firms/firm.js","settify-mvp/controllers/v2/firms/index.js","settify-mvp/controllers/v2/reports/index.js","settify-mvp/controllers/v2/serverdown.js","settify-mvp/controllers/v2/signup.js","settify-mvp/controllers/v2/signup/complete.js","settify-mvp/controllers/v2/signup/validate.js","settify-mvp/controllers/v2/unsubscribe.js","settify-mvp/data-adapter.js","settify-mvp/errors/client-errors.js","settify-mvp/helpers/address-string.js","settify-mvp/helpers/age-from-dob.js","settify-mvp/helpers/age-from-object.js","settify-mvp/helpers/and.js","settify-mvp/helpers/app-version.js","settify-mvp/helpers/augment-hash.js","settify-mvp/helpers/basic-display-if.js","settify-mvp/helpers/bs-contains.js","settify-mvp/helpers/bs-default.js","settify-mvp/helpers/bs-eq.js","settify-mvp/helpers/bs-form-horiz-input-class.js","settify-mvp/helpers/bs-form-horiz-offset-class.js","settify-mvp/helpers/bs-noop.js","settify-mvp/helpers/bs-size-class.js","settify-mvp/helpers/bs-type-class.js","settify-mvp/helpers/cancel-all.js","settify-mvp/helpers/check-unique-standalone-page-id.js","settify-mvp/helpers/confidence-string.js","settify-mvp/helpers/contains.js","settify-mvp/helpers/css-supported.js","settify-mvp/helpers/current-year.js","settify-mvp/helpers/de-fingerprint.js","settify-mvp/helpers/decimal.js","settify-mvp/helpers/deep-copy.js","settify-mvp/helpers/defined.js","settify-mvp/helpers/did-insert-helper.js","settify-mvp/helpers/did-insert.js","settify-mvp/helpers/did-update-helper.js","settify-mvp/helpers/did-update.js","settify-mvp/helpers/div.js","settify-mvp/helpers/document-icon.js","settify-mvp/helpers/domain-url.js","settify-mvp/helpers/editor-question-title.js","settify-mvp/helpers/element.js","settify-mvp/helpers/encode-uri-component.js","settify-mvp/helpers/ensure-safe-component.js","settify-mvp/helpers/eq.js","settify-mvp/helpers/family-tree-relationship.js","settify-mvp/helpers/first-word.js","settify-mvp/helpers/format-number.js","settify-mvp/helpers/format-whitespace.js","settify-mvp/helpers/gender-defined.js","settify-mvp/helpers/gender-specific.js","settify-mvp/helpers/get-answers-from.js","settify-mvp/helpers/get-each.js","settify-mvp/helpers/get-known-entity.js","settify-mvp/helpers/get-people-from-ids.js","settify-mvp/helpers/get-row-attributes.js","settify-mvp/helpers/gt.js","settify-mvp/helpers/gte.js","settify-mvp/helpers/html-safe.js","settify-mvp/helpers/includes.js","settify-mvp/helpers/informal-name.js","settify-mvp/helpers/inverse-relationship.js","settify-mvp/helpers/invoice-item-name.js","settify-mvp/helpers/is-array.js","settify-mvp/helpers/is-empty.js","settify-mvp/helpers/is-equal.js","settify-mvp/helpers/json-stringify.js","settify-mvp/helpers/length.js","settify-mvp/helpers/lf-lock-model.js","settify-mvp/helpers/lf-or.js","settify-mvp/helpers/load-async-data.js","settify-mvp/helpers/lt.js","settify-mvp/helpers/lte.js","settify-mvp/helpers/max-length.js","settify-mvp/helpers/mul.js","settify-mvp/helpers/non-empty-string.js","settify-mvp/helpers/not-eq.js","settify-mvp/helpers/not.js","settify-mvp/helpers/on-document.js","settify-mvp/helpers/on-window.js","settify-mvp/helpers/on.js","settify-mvp/helpers/or.js","settify-mvp/helpers/ownership-percentage.js","settify-mvp/helpers/pa-colour.js","settify-mvp/helpers/page-title.js","settify-mvp/helpers/parse-text.js","settify-mvp/helpers/perform.js","settify-mvp/helpers/popper-modifier.js","settify-mvp/helpers/possible-colon.js","settify-mvp/helpers/possible-the.js","settify-mvp/helpers/pretty-date.js","settify-mvp/helpers/question-context-string.js","settify-mvp/helpers/readable-page-name.js","settify-mvp/helpers/ref-to.js","settify-mvp/helpers/s3-debucket.js","settify-mvp/helpers/sanitise-string.js","settify-mvp/helpers/sentence-case.js","settify-mvp/helpers/should-display.js","settify-mvp/helpers/strip-firm-prefix.js","settify-mvp/helpers/sub.js","settify-mvp/helpers/sum.js","settify-mvp/helpers/task.js","settify-mvp/helpers/testing.js","settify-mvp/helpers/trim.js","settify-mvp/helpers/type-of.js","settify-mvp/helpers/uppercase.js","settify-mvp/helpers/will-destroy-helper.js","settify-mvp/helpers/will-destroy.js","settify-mvp/helpers/xor.js","settify-mvp/helpers/years-since.js","settify-mvp/initializers/app-version.js","settify-mvp/initializers/ember-data-id-generator.js","settify-mvp/initializers/ember-data.js","settify-mvp/initializers/ember-simple-auth.js","settify-mvp/initializers/load-bootstrap-config.js","settify-mvp/initializers/startup.js","settify-mvp/instance-initializers/sentry-performance.js","settify-mvp/instance-initializers/service-init.js","settify-mvp/instance-initializers/settify.js","settify-mvp/lib/aws.js","settify-mvp/lib/clientconsts.js","settify-mvp/lib/customisations/email_payload.js","settify-mvp/lib/customisations/form.js","settify-mvp/lib/customisations/landing_page_payload.js","settify-mvp/lib/customisations/tiptap_extensions/heading.js","settify-mvp/lib/customisations/tiptap_extensions/index.js","settify-mvp/lib/customisations/tiptap_extensions/list_item.js","settify-mvp/lib/customisations/tiptap_extensions/paragraph.js","settify-mvp/lib/customisations/tiptap_nodes/draggable_item.js","settify-mvp/lib/customisations/tiptap_nodes/index.js","settify-mvp/lib/customisations/tiptap_nodes/non_editable_block_node.js","settify-mvp/lib/customisations/tiptap_nodes/non_editable_inline_node.js","settify-mvp/lib/customisations/tiptap_nodes/utils/prevent-destroy.js","settify-mvp/lib/href.js","settify-mvp/lib/identity.js","settify-mvp/lib/relationshipgender.js","settify-mvp/lib/sendhttp.js","settify-mvp/lib/settings.js","settify-mvp/lib/stateviolenceorders.js","settify-mvp/mixins/balance-sheet-export.js","settify-mvp/mixins/chronology-mixin.js","settify-mvp/mixins/create-wills-record.js","settify-mvp/mixins/date-generator.js","settify-mvp/mixins/document-upload.js","settify-mvp/mixins/edit-firm-settings.js","settify-mvp/mixins/edit-helpers.js","settify-mvp/mixins/family-tree-generator.js","settify-mvp/mixins/firm-notes.js","settify-mvp/mixins/gender-mixin.js","settify-mvp/mixins/get-source-list.js","settify-mvp/mixins/master-form-mixin.js","settify-mvp/mixins/mock-data.js","settify-mvp/mixins/pms-settings-inputs.js","settify-mvp/mixins/practice-areas.js","settify-mvp/mixins/question-types-mixin.js","settify-mvp/mixins/remove-empty-items.js","settify-mvp/mixins/request-appointment.js","settify-mvp/mixins/search-clients.js","settify-mvp/mixins/select-firm.js","settify-mvp/mixins/separationpathway-mixin.js","settify-mvp/mixins/settify-input-mixin.js","settify-mvp/mixins/summary-page-mixin.js","settify-mvp/mixins/upload-download.js","settify-mvp/mixins/violence-order.js","settify-mvp/models/catalogue.js","settify-mvp/models/client.js","settify-mvp/models/conversion-type.js","settify-mvp/models/document.js","settify-mvp/models/invoice.js","settify-mvp/models/lead.js","settify-mvp/models/metadata.js","settify-mvp/models/questionnaire-summary.js","settify-mvp/models/questionnaire.js","settify-mvp/models/settings.js","settify-mvp/models/staff.js","settify-mvp/modifiers/create-ref.js","settify-mvp/modifiers/did-insert.js","settify-mvp/modifiers/did-update.js","settify-mvp/modifiers/focus-trap.js","settify-mvp/modifiers/on-click-outside.js","settify-mvp/modifiers/popper-tooltip.js","settify-mvp/modifiers/popper.js","settify-mvp/modifiers/style.js","settify-mvp/modifiers/will-destroy.js","settify-mvp/router.js","settify-mvp/routes/admin/accountmaintenance.js","settify-mvp/routes/admin/admin-base.js","settify-mvp/routes/admin/clients.js","settify-mvp/routes/admin/compare.js","settify-mvp/routes/admin/config/accounts/index.js","settify-mvp/routes/admin/config/accounts/invoice.js","settify-mvp/routes/admin/config/accounts/settings.js","settify-mvp/routes/admin/config/customisations.js","settify-mvp/routes/admin/config/dashboard.js","settify-mvp/routes/admin/config/editform.js","settify-mvp/routes/admin/config/editteam.js","settify-mvp/routes/admin/config/emergency.js","settify-mvp/routes/admin/config/forms.js","settify-mvp/routes/admin/config/index.js","settify-mvp/routes/admin/config/induction.js","settify-mvp/routes/admin/config/integrationmanager.js","settify-mvp/routes/admin/config/integrations.js","settify-mvp/routes/admin/config/invitations.js","settify-mvp/routes/admin/config/invoices.js","settify-mvp/routes/admin/config/lineitems.js","settify-mvp/routes/admin/config/links.js","settify-mvp/routes/admin/config/offices.js","settify-mvp/routes/admin/config/practiceclient.js","settify-mvp/routes/admin/config/skinning.js","settify-mvp/routes/admin/config/team.js","settify-mvp/routes/admin/displayemailtemplate.js","settify-mvp/routes/admin/editablesummary.js","settify-mvp/routes/admin/files/download.js","settify-mvp/routes/admin/files/invite.js","settify-mvp/routes/admin/firms.js","settify-mvp/routes/admin/frozen-record.js","settify-mvp/routes/admin/history.js","settify-mvp/routes/admin/index.js","settify-mvp/routes/admin/invite.js","settify-mvp/routes/admin/newfirm.js","settify-mvp/routes/admin/reportconflict.js","settify-mvp/routes/admin/resetconflict.js","settify-mvp/routes/admin/reviewinvoice.js","settify-mvp/routes/admin/search.js","settify-mvp/routes/admin/undoinvoice.js","settify-mvp/routes/admin/users.js","settify-mvp/routes/admin/welcomeemail.js","settify-mvp/routes/admin/whatsnew.js","settify-mvp/routes/application.js","settify-mvp/routes/base.js","settify-mvp/routes/changepassword.js","settify-mvp/routes/config-error.js","settify-mvp/routes/documents.js","settify-mvp/routes/error.js","settify-mvp/routes/firstlogin.js","settify-mvp/routes/help/frozenrecord.js","settify-mvp/routes/help/legacyrecord.js","settify-mvp/routes/index.js","settify-mvp/routes/induction.js","settify-mvp/routes/lockedrecord.js","settify-mvp/routes/login.js","settify-mvp/routes/mfa.js","settify-mvp/routes/notfound.js","settify-mvp/routes/privacy.js","settify-mvp/routes/resetpassword.js","settify-mvp/routes/terms.js","settify-mvp/routes/unauthorised.js","settify-mvp/routes/v2.js","settify-mvp/routes/v2/admin.js","settify-mvp/routes/v2/admin/admin-base.js","settify-mvp/routes/v2/admin/billing/index.js","settify-mvp/routes/v2/admin/billing/invoice.js","settify-mvp/routes/v2/admin/billing/review.js","settify-mvp/routes/v2/admin/clients.js","settify-mvp/routes/v2/admin/index.js","settify-mvp/routes/v2/admin/integrations.js","settify-mvp/routes/v2/admin/integrations/index.js","settify-mvp/routes/v2/admin/integrations/integration.js","settify-mvp/routes/v2/admin/offices.js","settify-mvp/routes/v2/admin/offices/edit.js","settify-mvp/routes/v2/admin/settings/index.js","settify-mvp/routes/v2/admin/settings/settify.js","settify-mvp/routes/v2/admin/settings/setting.js","settify-mvp/routes/v2/admin/settings/setting/billing.js","settify-mvp/routes/v2/admin/settings/setting/client-facing.js","settify-mvp/routes/v2/admin/settings/setting/firm-facing.js","settify-mvp/routes/v2/admin/settings/setting/index.js","settify-mvp/routes/v2/admin/settings/setting/invitations.js","settify-mvp/routes/v2/admin/settings/setting/settify-admin.js","settify-mvp/routes/v2/admin/settings/setting/users.js","settify-mvp/routes/v2/admin/team.js","settify-mvp/routes/v2/admin/team/edit.js","settify-mvp/routes/v2/auth.js","settify-mvp/routes/v2/auth/forgot-password.js","settify-mvp/routes/v2/auth/login.js","settify-mvp/routes/v2/auth/mfa.js","settify-mvp/routes/v2/auth/password.js","settify-mvp/routes/v2/auth/verify.js","settify-mvp/routes/v2/client.js","settify-mvp/routes/v2/console/index.js","settify-mvp/routes/v2/firms.js","settify-mvp/routes/v2/firms/clients/client.js","settify-mvp/routes/v2/firms/firm.js","settify-mvp/routes/v2/firms/index.js","settify-mvp/routes/v2/index.js","settify-mvp/routes/v2/page-not-found.js","settify-mvp/routes/v2/reports.js","settify-mvp/routes/v2/reports/index.js","settify-mvp/routes/v2/serverdown.js","settify-mvp/routes/v2/signup.js","settify-mvp/routes/v2/signup/complete.js","settify-mvp/routes/v2/signup/index.js","settify-mvp/routes/v2/signup/validate.js","settify-mvp/routes/yourinformation.js","settify-mvp/serializers/application.js","settify-mvp/serializers/invoice.js","settify-mvp/serializers/lead.js","settify-mvp/serializers/metadata.js","settify-mvp/serializers/questionnaire-summary.js","settify-mvp/serializers/questionnaire.js","settify-mvp/serializers/settings.js","settify-mvp/serializers/staff.js","settify-mvp/services/-ensure-registered.js","settify-mvp/services/aws-service.js","settify-mvp/services/cache.js","settify-mvp/services/catalytic-events.js","settify-mvp/services/client-document-manager.js","settify-mvp/services/client-induction.js","settify-mvp/services/client-matter.js","settify-mvp/services/client-records.js","settify-mvp/services/cognito-user.js","settify-mvp/services/command-registry.js","settify-mvp/services/console.js","settify-mvp/services/cookies.js","settify-mvp/services/document-client-brief.js","settify-mvp/services/document-manager.js","settify-mvp/services/download-leads.js","settify-mvp/services/downtime-service.js","settify-mvp/services/dynamic-config.js","settify-mvp/services/email-templates.js","settify-mvp/services/event-logging.js","settify-mvp/services/execution-history.js","settify-mvp/services/firm-details.js","settify-mvp/services/firm-offices.js","settify-mvp/services/firm-settings.js","settify-mvp/services/firm.js","settify-mvp/services/firms-service.js","settify-mvp/services/frozen-record.js","settify-mvp/services/fullstory.js","settify-mvp/services/generate-pdf.js","settify-mvp/services/google-analytics.js","settify-mvp/services/induction-definitions/businessdetails.js","settify-mvp/services/induction-definitions/companyregistration.js","settify-mvp/services/induction-definitions/legalrelationshipreview.js","settify-mvp/services/induction-definitions/saleofbusiness.js","settify-mvp/services/induction-definitions/shareholdersagreement.js","settify-mvp/services/induction-definitions/simple.js","settify-mvp/services/induction-definitions/trustestablishment.js","settify-mvp/services/invoice.js","settify-mvp/services/json-export.js","settify-mvp/services/lambda-functions.js","settify-mvp/services/lambda.js","settify-mvp/services/latte-ai-summary.js","settify-mvp/services/latte-echo.js","settify-mvp/services/latte-firm-client-records.js","settify-mvp/services/latte-firm-files.js","settify-mvp/services/latte-firm-user.js","settify-mvp/services/latte-firm.js","settify-mvp/services/latte-prediction.js","settify-mvp/services/latte-reports.js","settify-mvp/services/latte.js","settify-mvp/services/lawyer-list.js","settify-mvp/services/liquid-fire-children.js","settify-mvp/services/liquid-fire-transitions.js","settify-mvp/services/local-storage.js","settify-mvp/services/master-form.js","settify-mvp/services/mock-inductions.js","settify-mvp/services/notifications.js","settify-mvp/services/page-title.js","settify-mvp/services/questionnaire-logic.js","settify-mvp/services/recordpolling.js","settify-mvp/services/rendered-more-info-strings.js","settify-mvp/services/request-manager.js","settify-mvp/services/security-service.js","settify-mvp/services/send-email-to-settify.js","settify-mvp/services/session.js","settify-mvp/services/shared-service.js","settify-mvp/services/signup-service.js","settify-mvp/services/store.js","settify-mvp/services/timestamp-encoder.js","settify-mvp/services/version-service.js","settify-mvp/session-stores/application.js","settify-mvp/templates/admin.js","settify-mvp/templates/admin/accountmaintenance.js","settify-mvp/templates/admin/billing/invoice.js","settify-mvp/templates/admin/billing/leadlist.js","settify-mvp/templates/admin/billing/oneoffpayment.js","settify-mvp/templates/admin/billing/rolloutinvoice.js","settify-mvp/templates/admin/clients.js","settify-mvp/templates/admin/compare.js","settify-mvp/templates/admin/config/accounts/index-loading.js","settify-mvp/templates/admin/config/accounts/index.js","settify-mvp/templates/admin/config/accounts/invoice.js","settify-mvp/templates/admin/config/accounts/settings.js","settify-mvp/templates/admin/config/customisations.js","settify-mvp/templates/admin/config/dashboard.js","settify-mvp/templates/admin/config/editform.js","settify-mvp/templates/admin/config/editteam.js","settify-mvp/templates/admin/config/emergency.js","settify-mvp/templates/admin/config/forms.js","settify-mvp/templates/admin/config/index.js","settify-mvp/templates/admin/config/induction.js","settify-mvp/templates/admin/config/integrationmanager.js","settify-mvp/templates/admin/config/integrations.js","settify-mvp/templates/admin/config/invitations.js","settify-mvp/templates/admin/config/invoices.js","settify-mvp/templates/admin/config/lineitems.js","settify-mvp/templates/admin/config/links.js","settify-mvp/templates/admin/config/offices.js","settify-mvp/templates/admin/config/practiceclient.js","settify-mvp/templates/admin/config/skinning.js","settify-mvp/templates/admin/config/team.js","settify-mvp/templates/admin/displayemailtemplate.js","settify-mvp/templates/admin/files/download.js","settify-mvp/templates/admin/files/invite.js","settify-mvp/templates/admin/firms.js","settify-mvp/templates/admin/frozen-record.js","settify-mvp/templates/admin/history.js","settify-mvp/templates/admin/index.js","settify-mvp/templates/admin/invite.js","settify-mvp/templates/admin/newfirm.js","settify-mvp/templates/admin/reportconflict.js","settify-mvp/templates/admin/resetconflict.js","settify-mvp/templates/admin/reviewinvoice.js","settify-mvp/templates/admin/search.js","settify-mvp/templates/admin/undoinvoice.js","settify-mvp/templates/admin/users.js","settify-mvp/templates/admin/welcomeemail.js","settify-mvp/templates/admin/whatsnew.js","settify-mvp/templates/application-loading.js","settify-mvp/templates/application.js","settify-mvp/templates/boilerplate/checkinternet.js","settify-mvp/templates/changepassword.js","settify-mvp/templates/components/accountant-invite-email-probate.js","settify-mvp/templates/components/admin/condensed-summary.js","settify-mvp/templates/components/admin/edit-client-pencil.js","settify-mvp/templates/components/admin/edit-team-buttons.js","settify-mvp/templates/components/admin/filtered-settings-table.js","settify-mvp/templates/components/admin/firm-notes.js","settify-mvp/templates/components/admin/helpwanted.js","settify-mvp/templates/components/admin/invite-badge.js","settify-mvp/templates/components/admin/nil.js","settify-mvp/templates/components/admin/page-summary.js","settify-mvp/templates/components/admin/settings-save-buttons.js","settify-mvp/templates/components/admin/summary-editor-buttons.js","settify-mvp/templates/components/admin/summary-editor.js","settify-mvp/templates/components/animated-button.js","settify-mvp/templates/components/animated-header.js","settify-mvp/templates/components/banner-link-generator.js","settify-mvp/templates/components/billing-status-select.js","settify-mvp/templates/components/cents-to-dollars.js","settify-mvp/templates/components/client-brief.js","settify-mvp/templates/components/confidence-slider.js","settify-mvp/templates/components/custom-tabbed-title.js","settify-mvp/templates/components/customisable-invitation-email.js","settify-mvp/templates/components/dashboard-chart.js","settify-mvp/templates/components/date-picker.js","settify-mvp/templates/components/documents-other.js","settify-mvp/templates/components/documents-required-feedback.js","settify-mvp/templates/components/documents-required-list.js","settify-mvp/templates/components/documents-required-upload.js","settify-mvp/templates/components/download-name-required.js","settify-mvp/templates/components/download-resource.js","settify-mvp/templates/components/edit-common-tasks.js","settify-mvp/templates/components/edit-firm-summary-element.js","settify-mvp/templates/components/email-list.js","settify-mvp/templates/components/file-virus-scan-status.js","settify-mvp/templates/components/formatted-number.js","settify-mvp/templates/components/invitation-row-component.js","settify-mvp/templates/components/invite-new-client-email.js","settify-mvp/templates/components/invoice-item.js","settify-mvp/templates/components/lead-billing-options.js","settify-mvp/templates/components/line-icon.js","settify-mvp/templates/components/loading-display.js","settify-mvp/templates/components/loading-spinner.js","settify-mvp/templates/components/no-information.js","settify-mvp/templates/components/page-from-form.js","settify-mvp/templates/components/periodic-payment.js","settify-mvp/templates/components/pms-settings-inputs-actionstep.js","settify-mvp/templates/components/pms-settings-inputs-webhook.js","settify-mvp/templates/components/postal-address-select.js","settify-mvp/templates/components/powered-by-settify-div.js","settify-mvp/templates/components/powered-by-settify.js","settify-mvp/templates/components/preferred-office.js","settify-mvp/templates/components/radio-buttons.js","settify-mvp/templates/components/record-polling-overlay.js","settify-mvp/templates/components/required-field.js","settify-mvp/templates/components/resource-upload.js","settify-mvp/templates/components/resume-link-widget.js","settify-mvp/templates/components/same-information-warning.js","settify-mvp/templates/components/save-progress-widget.js","settify-mvp/templates/components/searched-clients-list.js","settify-mvp/templates/components/select-or-create-base.js","settify-mvp/templates/components/select-or-create-legacy.js","settify-mvp/templates/components/select-or-create-multiple.js","settify-mvp/templates/components/select-or-create-singular.js","settify-mvp/templates/components/select-or-create-switcher-presets.js","settify-mvp/templates/components/settify-email-input.js","settify-mvp/templates/components/settify-file-upload.js","settify-mvp/templates/components/settify-footer.js","settify-mvp/templates/components/settify-grid-input.js","settify-mvp/templates/components/settify-guess-client-input.js","settify-mvp/templates/components/settify-immutable-list.js","settify-mvp/templates/components/settify-input-button.js","settify-mvp/templates/components/settify-input-slider.js","settify-mvp/templates/components/settify-input-switcher.js","settify-mvp/templates/components/settify-name-input.js","settify-mvp/templates/components/settify-number.js","settify-mvp/templates/components/settify-phonenumber.js","settify-mvp/templates/components/settify-region-overlay.js","settify-mvp/templates/components/settify-select.js","settify-mvp/templates/components/settify-summary-table.js","settify-mvp/templates/components/simple-parse.js","settify-mvp/templates/components/stop-think-warning.js","settify-mvp/templates/components/summary-header.js","settify-mvp/templates/components/wills-cta.js","settify-mvp/templates/config-error.js","settify-mvp/templates/documents.js","settify-mvp/templates/error.js","settify-mvp/templates/firstlogin.js","settify-mvp/templates/help/frozenrecord.js","settify-mvp/templates/help/gone.js","settify-mvp/templates/help/legacyrecord.js","settify-mvp/templates/induction.js","settify-mvp/templates/lockedrecord.js","settify-mvp/templates/login.js","settify-mvp/templates/mfa.js","settify-mvp/templates/notfound.js","settify-mvp/templates/privacy.js","settify-mvp/templates/resetpassword.js","settify-mvp/templates/summaryloadingspinner.js","settify-mvp/templates/terms.js","settify-mvp/templates/unauthorised.js","settify-mvp/templates/v2/admin/billing-loading.js","settify-mvp/templates/v2/admin/billing/index-loading.js","settify-mvp/templates/v2/admin/billing/index.js","settify-mvp/templates/v2/admin/billing/invoice-loading.js","settify-mvp/templates/v2/admin/billing/invoice.js","settify-mvp/templates/v2/admin/billing/review-loading.js","settify-mvp/templates/v2/admin/billing/review.js","settify-mvp/templates/v2/admin/clients-loading.js","settify-mvp/templates/v2/admin/clients.js","settify-mvp/templates/v2/admin/index-loading.js","settify-mvp/templates/v2/admin/index.js","settify-mvp/templates/v2/admin/integrations-loading.js","settify-mvp/templates/v2/admin/integrations.js","settify-mvp/templates/v2/admin/integrations/index-loading.js","settify-mvp/templates/v2/admin/integrations/index.js","settify-mvp/templates/v2/admin/integrations/integration-loading.js","settify-mvp/templates/v2/admin/integrations/integration.js","settify-mvp/templates/v2/admin/loading.js","settify-mvp/templates/v2/admin/offices-loading.js","settify-mvp/templates/v2/admin/offices.js","settify-mvp/templates/v2/admin/offices/edit.js","settify-mvp/templates/v2/admin/page-not-found.js","settify-mvp/templates/v2/admin/settings.js","settify-mvp/templates/v2/admin/settings/settify.js","settify-mvp/templates/v2/admin/settings/setting.js","settify-mvp/templates/v2/admin/settings/setting/billing.js","settify-mvp/templates/v2/admin/settings/setting/client-facing.js","settify-mvp/templates/v2/admin/settings/setting/firm-facing.js","settify-mvp/templates/v2/admin/settings/setting/invitations.js","settify-mvp/templates/v2/admin/settings/setting/loading.js","settify-mvp/templates/v2/admin/settings/setting/settify.js","settify-mvp/templates/v2/admin/settings/setting/users.js","settify-mvp/templates/v2/admin/team-loading.js","settify-mvp/templates/v2/admin/team.js","settify-mvp/templates/v2/admin/team/edit.js","settify-mvp/templates/v2/auth/first-login.js","settify-mvp/templates/v2/auth/forgot-password.js","settify-mvp/templates/v2/auth/login.js","settify-mvp/templates/v2/auth/logout.js","settify-mvp/templates/v2/auth/mfa.js","settify-mvp/templates/v2/auth/password.js","settify-mvp/templates/v2/auth/verify-loading.js","settify-mvp/templates/v2/auth/verify.js","settify-mvp/templates/v2/client.js","settify-mvp/templates/v2/console/index.js","settify-mvp/templates/v2/firms/clients/client.js","settify-mvp/templates/v2/firms/error.js","settify-mvp/templates/v2/firms/firm.js","settify-mvp/templates/v2/firms/index.js","settify-mvp/templates/v2/firms/loading.js","settify-mvp/templates/v2/layout-admin.js","settify-mvp/templates/v2/layout-auth.js","settify-mvp/templates/v2/layout-base.js","settify-mvp/templates/v2/layout-firms.js","settify-mvp/templates/v2/layout-reports.js","settify-mvp/templates/v2/layout-signup.js","settify-mvp/templates/v2/loading.js","settify-mvp/templates/v2/page-not-found.js","settify-mvp/templates/v2/reports/index.js","settify-mvp/templates/v2/reports/loading.js","settify-mvp/templates/v2/serverdown.js","settify-mvp/templates/v2/signup/complete.js","settify-mvp/templates/v2/signup/index.js","settify-mvp/templates/v2/signup/validate.js","settify-mvp/templates/v2/unsubscribe.js","settify-mvp/templates/v2/welcome.js","settify-mvp/templates/whyspouse.js","settify-mvp/templates/yourinformation.js","settify-mvp/transforms/boolean-strict.js","settify-mvp/transforms/boolean.js","settify-mvp/transforms/date.js","settify-mvp/transforms/number.js","settify-mvp/transforms/string.js","settify-mvp/transitions.js","settify-mvp/transitions/cross-fade.js","settify-mvp/transitions/default.js","settify-mvp/transitions/explode.js","settify-mvp/transitions/fade.js","settify-mvp/transitions/flex-grow.js","settify-mvp/transitions/fly-to.js","settify-mvp/transitions/move-over.js","settify-mvp/transitions/quickfade-left.js","settify-mvp/transitions/quickfade-right.js","settify-mvp/transitions/scale.js","settify-mvp/transitions/scroll-then.js","settify-mvp/transitions/to-down.js","settify-mvp/transitions/to-left.js","settify-mvp/transitions/to-right.js","settify-mvp/transitions/to-up.js","settify-mvp/transitions/wait.js","settify-mvp/utils/clamp-value.js","settify-mvp/utils/custom-query-params.js","settify-mvp/utils/defaults-object-initializer.js","settify-mvp/utils/display-name-utils.js","settify-mvp/utils/email-utils.js","settify-mvp/utils/filter-list-by-type.js","settify-mvp/utils/format-item-label.js","settify-mvp/utils/get-conversion-type.js","settify-mvp/utils/html-utils.js","settify-mvp/utils/inject.js","settify-mvp/utils/is-empty-object-checker.js","settify-mvp/utils/is-fastboot.js","settify-mvp/utils/location.js","settify-mvp/utils/objects-are-equal.js","settify-mvp/utils/set-css-variable.js","settify-mvp/validators/email-validator.js","settify-mvp/validators/url-validator.js","vendor/ember-cli/app-suffix.js","vendor/ember-cli/app-config.js","vendor/ember-cli/app-boot.js"],"sourcesContent":["'use strict';\n\n\n","define(\"settify-mvp/adapters/application\", [\"exports\", \"@ember-data/adapter/json-api\", \"@ember/service\"], function (_exports, _jsonApi, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember-data/adapter/json-api\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _jsonApi.default.extend({\n    session: (0, _service.inject)(),\n    host: \"http://0.0.0.0\",\n    // we never use pure HTTP, so disable this outright.\n\n    /**\n      This method is called for every response that the adapter receives from the API. \n      If the response has a 401 status code it invalidates the session\n      @method handleResponse\n      @param {Number} status The response status as received from the API\n      @param {Object} headers HTTP headers as received from the API\n      @param {Any} payload The response body as received from the API\n      @param {Object} requestData the original request information\n    */\n    handleResponse(status /* ,headers, payload, requestData */) {\n      this.ensureResponseAuthorized(status);\n      return this._super(...arguments);\n    },\n    /**\n      The default implementation for handleResponse.\n      If the response has a 401 status code it invalidates the session\n      Override this method if you want custom invalidation logic for incoming responses.\n      @method ensureResponseAuthorized\n      @param {Number} status The response status as received from the API\n      @param  {Object} headers HTTP headers as received from the API\n      @param {Any} payload The response body as received from the API\n      @param {Object} requestData the original request information\n    */\n    ensureResponseAuthorized(status /* ,headers, payload, requestData */) {\n      if (status === 401 && this.get(\"session.isAuthenticated\")) {\n        this.session.invalidate();\n      }\n    }\n  });\n});","define(\"settify-mvp/adapters/catalogue\", [\"exports\", \"@ember/service\", \"settify-mvp/adapters/application\"], function (_exports, _service, _application) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"settify-mvp/adapters/application\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _application.default.extend({\n    lambda: (0, _service.inject)(\"lambda\"),\n    eventLogging: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    findRecord(store, type, id /* , snapshot */) {\n      // run lambda query getdocuments where the clientID is 'id'\n      let params = {\n        clientID: id,\n        firmID: this.get(\"firm.id\")\n      };\n      return this.lambda.invoke(this.get(\"lambda.getCatalogueLambda\"), params).then(this.lambda.processResponse).then(catalogue => {\n        return {\n          data: {\n            id: id,\n            type: \"catalogue\"\n          },\n          included: catalogue.included\n        };\n      }).catch(err => {\n        this.eventLogging.logError(\"Unable to download client catalogue\", err);\n        throw {\n          errors: [{\n            code: \"404\",\n            message: \"Unable to download client catalogue\"\n          }]\n        };\n      });\n\n      // The code below shows what the payload should be that we retrieve from the Lambda function\n      // The payload below just creates a new catalogue with the ID that you asked for, pre-filled with 4 documents\n      // return Ember.RSVP.resolve({\n      //   data: {\n      //     id: id,\n      //     type: 'catalogue',\n      //     relationships: {\n      //     }\n      //   },\n      //   included: [\n      //     {\n      //       id: 1,\n      //       type: 'document',\n      //       attributes: {\n      //         \"client-id\": id,\n      //         \"file-name\": \"doc 1.pdf\",\n      //         \"form-id\": \"7bb84da8-eaef-4eb4-b2ef-e20459208355\",\n      //         \"repeat-token\": \"1\",\n      //         \"chapter-id\": \"overview\",\n      //         \"page-id\": \"structure\",\n      //         \"question-id\": \"structure\",\n      //       },\n      //       relationships: {\n      //         \"owner\": {\n      //           data: { type: \"catalogue\", id: id}\n      //         }\n      //       }\n      //     },\n      //     {\n      //       id: 2,\n      //       type: 'document',\n      //       attributes: {\n      //         \"client-id\": id,\n      //         \"file-name\": \"doc 2.pdf\",\n      //         \"form-id\": \"myform\",\n      //         \"repeat-token\": \"1\",\n      //         \"chapter-id\": \"CH01\",\n      //         \"page-id\": \"PG01\",\n      //         \"question-id\": \"QU01\",\n      //       },\n      //       relationships: {\n      //         \"owner\": {\n      //           data: { type: \"catalogue\", id: id}\n      //         }\n      //       }\n      //     },\n      //     {\n      //       id: 3,\n      //       type: 'document',\n      //       attributes: {\n      //         \"client-id\": id,\n      //         \"file-name\": \"doc 3.pdf\",\n      //         \"form-id\": \"myform\",\n      //         \"repeat-token\": \"1\",\n      //         \"chapter-id\": \"CH01\",\n      //         \"page-id\": \"PG01\",\n      //         \"question-id\": \"QU02\",\n      //       },\n      //       relationships: {\n      //         \"owner\": {\n      //           data: { type: \"catalogue\", id: id}\n      //         }\n      //       }\n      //     },\n      //     {\n      //       id: 4,\n      //       type: 'document',\n      //       attributes: {\n      //         \"client-id\": id,\n      //         \"file-name\": \"doc 4.pdf\",\n      //         \"form-id\": \"myform\",\n      //         \"repeat-token\": \"2\",\n      //         \"chapter-id\": \"CH01\",\n      //         \"page-id\": \"PG01\",\n      //         \"question-id\": \"QU01\",\n      //       },\n      //       relationships: {\n      //         \"owner\": {\n      //           data: { type: \"catalogue\", id: id}\n      //         }\n      //       }\n      //     },\n      //   ]\n      // });\n    },\n    shouldBackgroundReloadRecord() {\n      // Ember returns True by default, meaning it checks if the catalogue has changed each time findRecord is invoked\n      // We don't want this behaviour, as it leads to calling our lambda functions heaps of times.\n      return false;\n    },\n    createRecord() {\n      throw new Error(\"createRecord not implemented for catalogue.js adapter\");\n    },\n    updateRecord() {\n      throw new Error(\"updateRecord not implemented for catalogue.js adapter\");\n    },\n    deleteRecord() {\n      throw new Error(\"deleteRecord not implemented for catalogue.js adapter\");\n    },\n    findAll() {\n      throw new Error(\"findAll not implemented for catalogue.js adapter\");\n    },\n    query() {\n      throw new Error(\"query not implemented for catalogue.js adapter\");\n    }\n  });\n});","define(\"settify-mvp/adapters/client\", [\"exports\", \"@ember-data/adapter\", \"@ember/service\", \"settify-mvp/config/environment\", \"settify-mvp/errors/client-errors\", \"settify-mvp/utils/display-name-utils\"], function (_exports, _adapter, _service, _environment, _clientErrors, _displayNameUtils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7;\n  0; //eaimeta@70e063a35619d71f0,\"@ember-data/adapter\",0,\"@ember/service\",0,\"settify-mvp/config/environment\",0,\"settify-mvp/errors/client-errors\",0,\"settify-mvp/utils/display-name-utils\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let ClientAdapter = _exports.default = (_dec = (0, _service.service)(\"dynamic-config\"), _class = class ClientAdapter extends _adapter.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"session\", _descriptor, this);\n      _initializerDefineProperty(this, \"lambda\", _descriptor2, this);\n      _initializerDefineProperty(this, \"store\", _descriptor3, this);\n      _initializerDefineProperty(this, \"recordpolling\", _descriptor4, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor5, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor6, this);\n      _initializerDefineProperty(this, \"config\", _descriptor7, this);\n      _defineProperty(this, \"referenceJSON\", {});\n      // We store reference JSON for objects saved and read, to know whether ACTUAL changes have been made\n      _defineProperty(this, \"lastModifieds\", {});\n      // We store last modified timestamps, to assist in non-trampling of data\n      _defineProperty(this, \"oldDisplayName\", \"\");\n    }\n    // We store the old displayName, so we know when it has changed\n\n    /**\n     * Finds a client record by ID.\n     * @param {DS.Store} store - The Ember Data store.\n     * @param {DS.Model} type - The type of the model.\n     * @param {string} clientID - The ID of the client to find.\n     * @returns {Promise<Object>} - A promise resolving to the client record data.\n     */\n    async findRecord(store, type, clientID /* , snapshot  */) {\n      const params = {\n        id: clientID,\n        firmID: this.firm.id\n      };\n      try {\n        const clientRecord = await this.lambda.invoke(this.lambda.getClientLambda, params).then(this.lambda.processResponse);\n        if (clientRecord.error) {\n          throw clientRecord.error;\n        }\n        this.updateLastModified(params.id, clientRecord.lastModifiedNumeric);\n        this.setReferenceJSON(clientRecord.id, this.stringifyDataForReference(clientRecord));\n        if (clientRecord.attributes[\"first-login\"]) {\n          if (this.session.isAuthenticated) {\n            // User is logging in with a password for the first time. We need to lock down the account to their newly minted identity ID\n            if (!this.session.data.authenticated.adminUser) {\n              await this.lockPasswordProtectedRecord(clientRecord);\n            }\n            return {\n              data: clientRecord\n            };\n          }\n          // This is in the process of becoming a password-protected account but the user is not logged in.\n          throw {\n            code: \"401\",\n            message: \"401 Access denied - you are not authorised to view this record\"\n          };\n        }\n        if (this.session.isAuthenticated && !this.session.data.authenticated.adminUser) {\n          // This is a logged in, non-law firm user, so make sure that the record is set to 'passwordProtected', etc\n          // This is required because if one cognito account owns multiple client records, those subsequent\n          // records don't go through the full account creation process, and so these fields don't get set.\n          clientRecord.attributes[\"password-protected\"] = true;\n          clientRecord.attributes[\"has-received-resume-link-email\"] = true;\n        }\n        return {\n          data: clientRecord\n        };\n      } catch (err) {\n        if (err?.message?.includes) {\n          if (err.message.includes(\"401\")) throw new _clientErrors.ClientUnauthorisedError();\n          if (err.message.includes(\"410\")) throw new _clientErrors.ClientDeletedError();\n          if (err.message.includes(\"423\")) throw new _clientErrors.ClientFrozenError();\n        }\n        // catch all\n        throw new _clientErrors.ClientNotFoundError();\n      }\n    }\n    createRecord(store, type, snapshot) {\n      return this.updateRecord(store, type, snapshot, true);\n    }\n\n    /**\n     * Saves a client record.\n     * @param {DS.Store} store - The Ember Data store.\n     * @param {DS.Model} type - The type of the model.\n     * @param {DS.Snapshot} snapshot - The snapshot of the record to save.\n     * @param {boolean} [forceSave=false] - Whether to force save the record even if it hasn't changed.\n     * @returns {Promise<void>} - A promise that resolves when the save is complete.\n     */\n    async updateRecord(store, type, snapshot, forceSave) {\n      // See if we actually need to save this record\n      // Compare the most recently stored JSON for this record, with the JSON that we're about to save\n      // that way, we'll know if it's actually been changed or not, and thus, whether to trigger the event\n      let serializeData = this.serialize(snapshot, {\n        includeId: true\n      });\n      let referenceJSON = this.referenceJSON[snapshot.record.id];\n      let newJSON = JSON.stringify(serializeData.data);\n      if (!referenceJSON && !forceSave) {\n        // First time - simply save the reference JSON and abort\n        this.setReferenceJSON(snapshot.record.id, newJSON);\n        return Promise.resolve();\n      }\n      if (referenceJSON === newJSON && !forceSave) {\n        // Identical - can safely quit without doing anything\n        return Promise.resolve();\n      }\n\n      // Changed - update our reference and keep going\n      this.setReferenceJSON(snapshot.record.id, newJSON);\n      this.logDisplayNameChange(snapshot);\n      this.logPreferredOfficeChange(snapshot);\n      this.logClientSaveEvent(snapshot);\n\n      // Don't save in test mode\n      if (_environment.default.testing) return Promise.resolve();\n      return this.persistClientRecord(snapshot, serializeData.data, referenceJSON, newJSON);\n    }\n\n    /**\n     * Persists the client record to the server.\n     * @param {DS.Snapshot} snapshot - The snapshot of the record to persist.\n     * @param {Object} data - The serialized data of the record.\n     * @param {string} referenceJSON - The reference JSON for comparison.\n     * @param {string} newJSON - The new JSON representation of the record.\n     * @returns {Promise<void>} - A promise that resolves when the persistence is complete.\n     */\n    async persistClientRecord(snapshot, data, referenceJSON, newJSON) {\n      // Work out which pathway based on whether it's a brand-new client record or not\n      const savePromise = snapshot.record.isNew ? this.createNewClient(data) : this.updateExistingClient(data, referenceJSON, newJSON);\n      try {\n        await savePromise;\n        // Save was successful, so the data is safely stored on the server\n        this.recordpolling.setOfflineMode(false);\n      } catch (err) {\n        console.error(\"Error storing client record to server:\", err);\n        // Keep track that user information is not reaching the server\n        if (err.message === \"Network Failure\" && err.code === \"NetworkingError\") {\n          this.recordpolling.setOfflineMode(true);\n        }\n        // Reset the reference JSON, so we don't think we've saved something that we haven't\n        this.setReferenceJSON(snapshot.record.id, referenceJSON);\n        throw new Error(`Error storing client record to server. \\n${JSON.stringify(err, null, 2)}`);\n      }\n    }\n\n    /**\n     * Creates a new client record.\n     * @param {Object} data - The serialized data of the record.\n     * @returns {Promise<void>} - A promise that resolves when the creation is complete.\n     */\n    async createNewClient(data) {\n      let params = {\n        id: data.attributes[\"client-id\"],\n        firmID: data.attributes[\"firm-id\"],\n        deviceFingerprint: this.recordpolling.deviceFingerprint,\n        attributes: data.attributes,\n        // If record is being created while admin user is logged in, automatically give the law firm access to the record\n        // also, if the conflict check has already been completed, then grant access too\n        // Why do we grant law firm access even if the record has not yet had a conflict check performed? It's a bit of a hack,\n        // but basically, if you want to re-view or re-send an invitation, you need to be able to access (and update) the record.\n        // Similarly, if you want to save a snapshot, the firm needs read/write access.\n        // So, we grant access, but we add a second layer of checks in some admin routes,\n        // to determine whether we're actually able to view the full content of the record.\n        grantFirmAccess: this.session.isAuthenticated && this.session.data.authenticated.adminUser || data.attributes[\"conflict-check\"] === \"noconflict\"\n      };\n      if (params.grantFirmAccess) {\n        // Make sure we tell them what the admin pool is - as we might not be logged in as an admin user\n        params.grantFirmAccess = this.config.settings.adminIdentityPoolID;\n      }\n\n      // returns an object with lastModifiedNumeric - { lastModifiedNumeric: Timestamp }\n      const {\n        lastModifiedNumeric\n      } = await this.lambda.invoke(this.lambda.createClientLambda, params).then(this.lambda.processResponse);\n      this.updateLastModified(params.id, lastModifiedNumeric);\n    }\n\n    /**\n     * Updates an existing client record.\n     * @param {Object} data - The serialized data of the record.\n     * @returns {Promise<void>} - A promise that resolves when the update is complete.\n     */\n    async updateExistingClient(data /* , referenceJSON, newJSON */) {\n      const params = {\n        id: data.attributes[\"client-id\"],\n        firmID: data.attributes[\"firm-id\"],\n        previousLastModified: this.lastModifieds[data.attributes[\"client-id\"]],\n        deviceFingerprint: this.recordpolling.deviceFingerprint,\n        outOfSync: this.recordpolling.outOfSyncRecord,\n        attributes: data.attributes\n      };\n      if (data.attributes[\"read-only\"]) {\n        if (this.session?.data?.authenticated?.adminUser) {\n          // Do not save readOnly records for admin users\n          return Promise.resolve();\n        }\n        throw new Error(\"readOnly should only be used by admin users\");\n      }\n      if (params.outOfSync) {\n        this.eventLogging.logError(`Record out of sync on update`);\n      }\n\n      // Add customVariable values if there is a persisted record\n      const client = this.store.peekRecord(\"client\", data.id);\n      if (client) {\n        this.addCustomVariables(params, client, data);\n      }\n      try {\n        const {\n          lastModifiedNumeric,\n          error\n        } = await this.lambda.invoke(this.lambda.updateClientLambda, params).then(this.lambda.processResponse);\n        if (error) throw error;\n        this.updateLastModified(params.id, lastModifiedNumeric);\n      } catch (err) {\n        if (err?.includes && err.includes(\"409\")) {\n          // 409 is HTTP status code 'CONFLICT', eg for when there are multiple simultaneous edits\n          this.recordpolling.addSaveFailedMessage(data.attributes[\"conflict-check\"]);\n        } else {\n          this.recordpolling.setOfflineMode(true);\n        }\n        throw err;\n      }\n    }\n\n    /**\n     * Adds custom variables to the client record parameters.\n     * @param {Object} params - The parameters for the client record update.\n     */\n    addCustomVariables(params, client, data) {\n      const customVariables = client.getCustomVariableDefinitions();\n      const furthestPage = data.attributes[\"furthest-page\"];\n      const pageParts = furthestPage?.split(\".\");\n      if (pageParts) {\n        const context = {\n          induction: data.attributes.inductions[0].id,\n          chapter: pageParts[0],\n          page: pageParts[1],\n          repeat: data.attributes.inductions[0].repeatToken\n        };\n        params.customVariables = {};\n        for (const customVariable of customVariables) {\n          params.customVariables[customVariable.id] = client.getCustomVariableValue(customVariable.id, context);\n        }\n      }\n    }\n\n    /**\n     * When the client's name has changed, log that as an event\n     * @param {DS.Snapshot} snapshot - The snapshot of the record.\n     */\n    logDisplayNameChange(snapshot) {\n      const {\n        clientID,\n        firstName,\n        surname,\n        partnerFirstName,\n        partnerSurname,\n        practiceArea,\n        deceased,\n        matterReferenceNumber\n      } = snapshot.record;\n      const newDisplayName = (0, _displayNameUtils.generateDisplayName)({\n        firstName,\n        surname,\n        partnerFirstName,\n        partnerSurname,\n        practiceArea,\n        deceased,\n        matterReferenceNumber\n      });\n\n      // Check if the display name has changed and log the event if necessary\n      if (this.hasDisplayNameChanged(this.oldDisplayName, newDisplayName)) {\n        this.oldDisplayName = newDisplayName;\n        this.eventLogging.log(clientID, this.eventLogging.IDs.NameChanged, newDisplayName, practiceArea);\n      }\n    }\n\n    /**\n     * When the preferredOffice changes, log that as an event\n     * @param {DS.Snapshot} snapshot - The snapshot of the record.\n     */\n    logPreferredOfficeChange(snapshot) {\n      if (snapshot.record.changedAttributes().preferredOffice) {\n        this.eventLogging.log(snapshot.record.clientID, this.eventLogging.IDs.PreferredOfficeChanged, snapshot.record.preferredOffice, snapshot.record.practiceArea);\n      }\n    }\n\n    /**\n     * When the client saves their record, log that as an event\n     * @param {DS.Snapshot} snapshot - The snapshot of the record.\n     */\n    logClientSaveEvent(snapshot) {\n      if (!this?.session?.data?.authenticated?.adminUser) {\n        // If this is the client (not a firm admin) then log an event accordingly\n        this.eventLogging.log(snapshot.record.clientID, this.eventLogging.IDs.UserSaved, null, snapshot.record.practiceArea);\n      }\n    }\n\n    /**\n     * Checks if the display name has changed.\n     * @param {string} oldDisplayName - The old display name.\n     * @param {string} newDisplayName - The new display name.\n     * @returns {boolean} - Whether the display name has changed.\n     */\n    hasDisplayNameChanged(oldDisplayName, newDisplayName /* , oldRecord, newRecord */) {\n      // Unused code from other branches\n      // let oldDisplayNameVars = JSON.stringify(JSON.parse(oldRecord).attributes['display-name-variables']);\n      // let newDisplayNameVars = JSON.stringify(newRecord.attributes['display-name-variables']);\n      // if ( oldDisplayNameVars === newDisplayNameVars) {\n      //   return false;\n      // }\n      //\n      return oldDisplayName !== newDisplayName;\n    }\n\n    /**\n     * Locks a password-protected record.\n     * @param {Object} clientRecord - The client record.\n     * @returns {Promise<Object>} - The updated client record.\n     */\n    async lockPasswordProtectedRecord(clientRecord) {\n      const params = {\n        id: clientRecord.id,\n        firmID: this.firm.id\n      };\n      await this.lambda.invoke(this.lambda.protectRecordLambda, params);\n      await this.lambda.invoke(this.lambda.addRecordToAccountLambda, params);\n      clientRecord.attributes[\"first-login\"] = false;\n      clientRecord.attributes[\"creating-account\"] = false;\n      return this.updateExistingClient(clientRecord).then(() => clientRecord);\n    }\n    stringifyDataForReference(data) {\n      const {\n        attributes,\n        id,\n        type\n      } = data;\n      return JSON.stringify({\n        attributes,\n        id,\n        type\n      });\n    }\n\n    /**\n     * Sets the reference JSON for a client.\n     * @param {string} clientID - The ID of the client.\n     * @param {string} newJSON - The new JSON representation.\n     */\n    setReferenceJSON(clientID, newJSON) {\n      this.referenceJSON[clientID] = newJSON;\n    }\n\n    /**\n     * Gets the reference JSON for a client.\n     * @param {string} clientID - The ID of the client.\n     */\n    getReferenceJSON(clientID) {\n      return this.referenceJSON[clientID];\n    }\n\n    /**\n     * Updates the last modified timestamp and record polling time.\n     * @param {string} clientID - The ID of the client.\n     * @param {number} lastModifiedNumeric - The last modified timestamp.\n     */\n    updateLastModified(clientID, lastModifiedNumeric) {\n      this.lastModifieds = {\n        ...this.lastModifieds,\n        [clientID]: lastModifiedNumeric\n      };\n      this.recordpolling.setLastModifiedTime(clientID, lastModifiedNumeric, this.recordpolling.deviceFingerprint);\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"store\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"recordpolling\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"config\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/adapters/document\", [\"exports\", \"@ember/service\", \"@ember/object\", \"settify-mvp/adapters/application\"], function (_exports, _service, _object, _application) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@ember/object\",0,\"settify-mvp/adapters/application\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _application.default.extend({\n    lambda: (0, _service.inject)(\"lambda\"),\n    eventLogging: (0, _service.inject)(),\n    awsService: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    findRecord() {\n      throw new Error(\"findRecord not implemented for document.js adapter\");\n    },\n    createRecord(store, type, snapshot) {\n      let params = {\n        clientID: snapshot.record.get(\"clientID\"),\n        firmID: this.get(\"firm.id\"),\n        attributes: {\n          formID: snapshot.record.get(\"formID\"),\n          repeatToken: snapshot.record.get(\"repeatToken\"),\n          chapterID: snapshot.record.get(\"chapterID\"),\n          pageID: snapshot.record.get(\"pageID\"),\n          questionID: snapshot.record.get(\"questionID\"),\n          answersLocation: snapshot.record.get(\"answersLocation\"),\n          objectID: snapshot.record.get(\"objectID\"),\n          fullContextID: snapshot.record.get(\"fullContextID\"),\n          S3Key: snapshot.record.get(\"S3Key\"),\n          fileName: snapshot.record.get(\"fileName\"),\n          fileSize: snapshot.record.get(\"fileSize\"),\n          extension: snapshot.record.get(\"extension\")\n        }\n      };\n      return this.lambda.invoke(this.get(\"lambda.createDocumentLambda\"), params).then(this.lambda.processResponse).then(data => {\n        (0, _object.set)(snapshot.record, \"rowID\", data.rowID); // set rowID so doc can be deleted if it isnt retrieved from the DB\n        return {\n          data: {\n            id: snapshot.id,\n            type: \"document\",\n            attributes: {\n              \"expiry-date\": data.expiryDate\n            }\n          }\n        };\n      }).catch(err => {\n        this.eventLogging.logError(\"Unable to create document\", err);\n        throw {\n          errors: [{\n            code: \"404\",\n            message: \"Unable to create document\"\n          }]\n        };\n      });\n    },\n    updateRecord() {\n      throw new Error(\"updateRecord not implemented for document.js adapter\");\n    },\n    deleteRecord(store, type, snapshot) {\n      let params = {\n        clientID: snapshot.record.get(\"clientID\"),\n        firmID: this.get(\"firm.id\"),\n        formID: snapshot.record.get(\"formID\"),\n        rowID: snapshot.record.get(\"rowID\") || snapshot.record.get(\"id\")\n      };\n      return this.lambda.invoke(this.get(\"lambda.deleteDocumentLambda\"), params).then(this.lambda.processResponse).then(() => {\n        return {\n          data: {\n            id: snapshot.id,\n            type: \"document\"\n          }\n        };\n      }).catch(err => {\n        this.eventLogging.logError(\"Unable to delete document\", err);\n        throw {\n          errors: [{\n            code: \"404\",\n            message: \"Unable to delete document\"\n          }]\n        };\n      });\n    },\n    findAll() {\n      throw new Error(\"findAll not implemented for document.js adapter\");\n    },\n    query() {\n      throw new Error(\"query not implemented for document.js adapter\");\n    },\n    shouldBackgroundReloadRecord() {\n      // Ember returns True by default, meaning it checks if the catalogue has changed each time findRecord is invoked\n      // We don't want this behaviour, as it leads to calling our lambda functions heaps of times.\n      return false;\n    }\n  });\n});","define(\"settify-mvp/adapters/invoice\", [\"exports\", \"settify-mvp/adapters/settify-base-adapter\", \"@ember/service\"], function (_exports, _settifyBaseAdapter, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/adapters/settify-base-adapter\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let InvoiceAdapter = _exports.default = (_class = class InvoiceAdapter extends _settifyBaseAdapter.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n      _initializerDefineProperty(this, \"store\", _descriptor2, this);\n      _defineProperty(this, \"getLambdaFunction\", \"als-lawfirm-getinvoicerequests\");\n      _defineProperty(this, \"clientType\", \"lambda\");\n    }\n    async findAll() {\n      const firmID = this.firm.id;\n      const invoices = await this.getRecordFromAWSClient({\n        firmID\n      });\n      return invoices;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"store\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/adapters/lead\", [\"exports\", \"settify-mvp/adapters/settify-base-adapter\"], function (_exports, _settifyBaseAdapter) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/adapters/settify-base-adapter\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _settifyBaseAdapter.default.extend({\n    getLambdaFunction: \"als-lawfirm-getleadlist\",\n    clientType: \"lambda\",\n    async query(store, type, query) {\n      // TODO: Have both regular leads and invited leads be returned together\n      if (query.referral === \"invitation\") {\n        // Only return invitations\n        this.getLambdaFunction = \"als-lawfirm-getinvitationlist\";\n        const {\n          invites\n        } = await this.getRecordFromAWSClient(query);\n        return {\n          leads: invites\n        };\n      }\n      this.getLambdaFunction = \"als-lawfirm-getleadlist\";\n      const {\n        leads,\n        conversionTypes\n      } = await this.getRecordFromAWSClient(query);\n      return {\n        leads,\n        conversionTypes\n      };\n    }\n\n    // Other methods not yet implemented\n    // createRecord\n    // deleteRecord\n    // findRecord\n    // queryRecord\n    // updateRecord\n  });\n});","define(\"settify-mvp/adapters/metadata\", [\"exports\", \"settify-mvp/adapters/settify-base-adapter\"], function (_exports, _settifyBaseAdapter) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/adapters/settify-base-adapter\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _settifyBaseAdapter.default.extend({\n    getLambdaFunction: \"als-lawfirm-getclientmetadata\",\n    clientType: \"lambda\",\n    async queryRecord(store, type, query) {\n      return await this.getRecordFromAWSClient(query);\n    }\n  });\n});","define(\"settify-mvp/adapters/questionnaire-summary\", [\"exports\", \"settify-mvp/adapters/settify-base-adapter\", \"@ember/service\"], function (_exports, _settifyBaseAdapter, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/adapters/settify-base-adapter\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let QuestionnaireSummaryAdapter = _exports.default = (_class = class QuestionnaireSummaryAdapter extends _settifyBaseAdapter.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n      _initializerDefineProperty(this, \"store\", _descriptor2, this);\n      _defineProperty(this, \"getLambdaFunction\", \"als-public-getformlist\");\n      _defineProperty(this, \"clientType\", \"lambda\");\n    }\n    async findAll(/* store, type */\n    ) {\n      const firmID = this.firm.id;\n      const questionnaireSummaries = await this.getRecordFromAWSClient({\n        firmID,\n        filters: {\n          practiceArea: [this.firm.practiceArea, ...Object.keys(this.firm.otherSettifyURLs || {})]\n        }\n      });\n      return questionnaireSummaries;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"store\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/adapters/questionnaire\", [\"exports\", \"settify-mvp/adapters/settify-base-adapter\", \"@ember/service\"], function (_exports, _settifyBaseAdapter, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/adapters/settify-base-adapter\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let QuestionnaireAdapter = _exports.default = (_class = class QuestionnaireAdapter extends _settifyBaseAdapter.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n      _initializerDefineProperty(this, \"store\", _descriptor2, this);\n      _defineProperty(this, \"getLambdaFunction\", \"als-public-getform\");\n      _defineProperty(this, \"clientType\", \"lambda\");\n    }\n    async findRecord(store, type, id) {\n      const firmID = this.firm.id;\n      const questionnaire = await this.getRecordFromAWSClient({\n        firmID,\n        formID: id\n      });\n      return questionnaire;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"store\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/adapters/settify-base-adapter\", [\"exports\", \"@ember-data/adapter\", \"@ember/service\"], function (_exports, _adapter, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n  0; //eaimeta@70e063a35619d71f0,\"@ember-data/adapter\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let BaseAdapter = _exports.default = (_dec = (0, _service.inject)(\"dynamic-config\"), _class = class BaseAdapter extends _adapter.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"config\", _descriptor, this);\n      _initializerDefineProperty(this, \"awsService\", _descriptor2, this);\n      _initializerDefineProperty(this, \"session\", _descriptor3, this);\n      _initializerDefineProperty(this, \"lambda\", _descriptor4, this);\n    }\n    getRecordFromAWSClient(params) {\n      const adapter = this;\n      if (adapter.clientType === \"lambda\") {\n        return adapter.getRecordUsingLambdaClient(params);\n      }\n      if (adapter.clientType === \"dynamodb\") {\n        return adapter.getRecordUsingDocumentClient(params);\n      }\n      throw new Error(\"You subclassed the Adapter but missed the clientType override\");\n    }\n    getRecordUsingLambdaClient(params) {\n      const adapter = this;\n      if (adapter.getLambdaFunction) {\n        // TODO: Add lambda adapter error handling logic here\n        return adapter.lambda.invoke(adapter.getLambdaFunction, params || {}).then(adapter.lambda.processResponse);\n      }\n      throw new Error(\"You subclassed the Adapter but missed the getLambdaFunction override\");\n    }\n    updateRecordUsingLambdaClient(params) {\n      const adapter = this;\n      if (adapter.updateLambdaFunction) {\n        return adapter.lambda.invoke(adapter.updateLambdaFunction, params || {});\n      }\n      throw new Error(\"You subclassed the Adapter but missed the updateLambdaFunction override\");\n    }\n    createRecordUsingLambdaClient(params) {\n      const adapter = this;\n      if (adapter.createLambdaFunction) {\n        return adapter.lambda.invoke(adapter.createLambdaFunction, params || {});\n      }\n      throw new Error(\"You subclassed the Adapter but missed the createRecordUsingLambdaClient override\");\n    }\n    deleteRecordUsingLambdaClient(params) {\n      const adapter = this;\n      if (adapter.deleteLambdaFunction) {\n        return adapter.lambda.invoke(adapter.deleteLambdaFunction, params || {});\n      }\n      throw new Error(\"You subclassed the Adapter but missed the deleteRecordUsingLambdaClient override\");\n    }\n    getRecordUsingDocumentClient() {\n      throw new Error(\"Document client support not implemented yet\");\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"config\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"awsService\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/adapters/settings\", [\"exports\", \"settify-mvp/adapters/settify-base-adapter\"], function (_exports, _settifyBaseAdapter) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/adapters/settify-base-adapter\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _settifyBaseAdapter.default.extend({\n    getLambdaFunction: \"als-public-getfirmsettings\",\n    updateLambdaFunction: \"als-lawfirm-updatefirmsettings\",\n    practiceArea: \"global\",\n    clientType: \"lambda\",\n    findAll() {\n      const params = {\n        firmID: this.get(\"config.settings.Firm.id\"),\n        practiceArea: this.practiceArea,\n        includeNonLivePracticeAreas: false\n      };\n      return this.getRecordFromAWSClient(params).then(result => {\n        // TODO UNO: Refactor AWS function to return all data, faked response while testing\n        // console.log(\"Original Response\", result);\n        const promises = [result];\n        if (result.otherSettifyURLs) {\n          Object.keys(result.otherSettifyURLs).forEach(pa => {\n            promises.push(this.getRecordFromAWSClient({\n              ...params,\n              practiceArea: pa\n            }));\n          });\n        }\n        return Promise.all(promises);\n      });\n    },\n    updateRecord(store, type, snapshot) {\n      const data = this.serialize(snapshot, {\n        includeId: true\n      });\n      const params = {\n        firmID: data.firmID,\n        settings: data,\n        userEmail: this.session.data.authenticated.username\n      };\n      return this.updateRecordUsingLambdaClient(params);\n    }\n\n    // createRecord\n    // deleteRecord\n    // findRecord\n    // query\n    // queryRecord\n    // updateRecord\n\n    // destroy [OPTIONAL]\n    // findBelongsTo [OPTIONAL]\n    // findMany [OPTIONAL]\n    // findhasMany [OPTIONAL]\n    // generateIdForRecord [OPTIONAL]\n    // groupRecordsForFindMany [OPTIONAL]\n    // shouldBackgroundReloadAll [OPTIONAL]\n    // shouldBackgroundReloadRecord [OPTIONAL]\n    // shouldReloadAll [OPTIONAL]\n    // shouldReloadRecord [OPTIONAL]\n  });\n});","define(\"settify-mvp/adapters/staff\", [\"exports\", \"settify-mvp/adapters/settify-base-adapter\"], function (_exports, _settifyBaseAdapter) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/adapters/settify-base-adapter\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _settifyBaseAdapter.default.extend({\n    getLambdaFunction: \"als-public-getlawyerlist\",\n    updateLambdaFunction: \"als-lawfirm-updatelawyerdetails\",\n    createLambdaFunction: \"als-lawfirm-createlawyer\",\n    deleteLambdaFunction: \"als-lawfirm-deletelawyer\",\n    clientType: \"lambda\",\n    findAll() {\n      const params = {\n        firmID: this.config.settings.Firm.id\n      };\n      return this.getRecordFromAWSClient(params);\n    },\n    async findRecord(store, type, id /* , snapshot */) {\n      // There is no implementation of getting 1 record, so we need to get the list and then find the specific one we are after\n      const allStaff = await this.findAll();\n      return allStaff.find(staff => staff.personID === id);\n    },\n    async updateRecord(store, type, snapshot) {\n      const data = this.serialize(snapshot);\n      const params = {\n        firmID: this.config.settings.Firm.id,\n        personID: data.personID,\n        userEmail: this.get(\"session.data.authenticated.username\"),\n        details: data\n      };\n      await this.updateRecordUsingLambdaClient(params);\n      return data;\n    },\n    async createRecord(store, type, snapshot) {\n      const data = this.serialize(snapshot);\n      const params = {\n        firmID: this.config.settings.Firm.id,\n        personID: data.personID,\n        userEmail: this.get(\"session.data.authenticated.username\"),\n        details: data\n      };\n      return this.createRecordUsingLambdaClient(params);\n    },\n    deleteRecord(store, type, snapshot) {\n      const data = this.serialize(snapshot);\n      const params = {\n        firmID: this.config.settings.Firm.id,\n        personID: data.personID,\n        userEmail: this.session.data.authenticated.username\n      };\n      return this.deleteRecordUsingLambdaClient(params);\n    }\n\n    // query\n    // queryRecord\n\n    // destroy [OPTIONAL]\n    // findBelongsTo [OPTIONAL]\n    // findMany [OPTIONAL]\n    // findhasMany [OPTIONAL]\n    // generateIdForRecord [OPTIONAL]\n    // groupRecordsForFindMany [OPTIONAL]\n    // shouldBackgroundReloadAll [OPTIONAL]\n    // shouldBackgroundReloadRecord [OPTIONAL]\n    // shouldReloadAll [OPTIONAL]\n    // shouldReloadRecord [OPTIONAL]\n  });\n});","define(\"settify-mvp/app\", [\"exports\", \"@ember/application\", \"ember-resolver\", \"ember-load-initializers\", \"settify-mvp/config/environment\", \"@sentry/ember\"], function (_exports, _application, _emberResolver, _emberLoadInitializers, _environment, Sentry) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/application\",0,\"ember-resolver\",0,\"ember-load-initializers\",0,\"settify-mvp/config/environment\",0,\"@sentry/ember\"eaimeta@70e063a35619d71f\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  // Only initialise Sentry for deployed builds (not development)\n  if ([\"production\", \"staging\"].includes(_environment.default.environment)) {\n    Sentry.init({\n      dsn: \"https://43d74c3cee62be42a0f87ba708d8986d@o53584.ingest.sentry.io/4506375411859456\",\n      release: `settify-uno-admin:${_environment.default.APP.version}`,\n      environment: _environment.default.environment || \"unknown\",\n      // Sample 10% of transactions for performance monitoring.\n      tracesSampleRate: 0.1,\n      // Sample 5% of all sessions, regardless of errors\n      replaysSessionSampleRate: 0.05,\n      // If an error occurs, sample 50% in production, 100% in other environments\n      replaysOnErrorSampleRate: \"production\" === _environment.default.environment ? 0.5 : 1.0,\n      integrations: [new Sentry.Replay()]\n    });\n  }\n  class App extends _application.default {\n    constructor(...args) {\n      super(...args);\n      _defineProperty(this, \"modulePrefix\", _environment.default.modulePrefix);\n      _defineProperty(this, \"podModulePrefix\", _environment.default.podModulePrefix);\n      _defineProperty(this, \"Resolver\", _emberResolver.default);\n    }\n  }\n  _exports.default = App;\n  (0, _emberLoadInitializers.default)(App, _environment.default.modulePrefix);\n});","define(\"settify-mvp/authenticators/awscognito\", [\"exports\", \"rsvp\", \"@ember/service\", \"ember-simple-auth/authenticators/base\"], function (_exports, _rsvp, _service, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"rsvp\",0,\"@ember/service\",0,\"ember-simple-auth/authenticators/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    cognitoService: (0, _service.inject)(\"cognitoUser\"),\n    config: (0, _service.inject)(\"dynamic-config\"),\n    recordpolling: (0, _service.inject)(),\n    eventLogging: (0, _service.inject)(),\n    awsService: (0, _service.inject)(),\n    lambda: (0, _service.inject)(),\n    fullstory: (0, _service.inject)(),\n    cookies: (0, _service.inject)(),\n    session: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    store: (0, _service.inject)(),\n    onLoggedIn(authResult, admin, resolve, reject) {\n      this.cookies.clear(\"clientID\", {\n        path: \"/\"\n      });\n      this.set(\"cognitoService.user\", this.cognitoUser);\n\n      // get aws credentials for cognito user\n      const cognitoCredentials = this.awsService.getCognitoCredentials(authResult, admin);\n      cognitoCredentials.get(err => {\n        if (err) {\n          return reject(err);\n        }\n\n        // get cognito user attributes\n        this.cognitoUser.getUserData((err, userData) => {\n          if (err) {\n            return reject(err);\n          }\n          const attributes = this._processAttributes(userData.UserAttributes);\n\n          // security check: ensure users associated to specific firm are on correct site\n          const firmID = this.get(\"config.settings.Firm.id\");\n          if (attributes.website && attributes.website !== firmID) {\n            console.log(\"User belongs to another site\", attributes.website, firmID);\n            return reject(\"wrongsite\");\n          }\n          const sessionData = {\n            uid: attributes.custom.clientID || attributes.sub,\n            username: this.cognitoUser.username,\n            clientID: attributes.custom.clientID || \"\",\n            identityID: cognitoCredentials.identityId,\n            mfaEnabled: userData.PreferredMfaSetting || false,\n            adminUser: Boolean(admin),\n            isSettifyAdmin: /@settify\\.(com|co.uk|com.au)$/.test(this.cognitoUser.username),\n            // If the email address ends in @settify.co* mark that in the session\n            attributes: attributes\n          };\n\n          // we are authenticated now\n          this._postAuthentication(sessionData);\n          resolve(sessionData);\n        });\n      });\n    },\n    restore(data) {\n      // Ensure our AWS config settings are resolved before restoring session;\n      return this.config.resolve().then(() => {\n        return new _rsvp.Promise((resolve, reject) => {\n          if (Object.prototype.hasOwnProperty.call(data, \"username\") === false) {\n            reject(new Error(\"No session to restore\"));\n          }\n          console.debug(\"restoring session\");\n          this.cognitoUser = this.awsService.getCognitoUser(data.username, data.adminUser);\n          this.cognitoUser.getSession((err, result) => {\n            if (err) {\n              return reject(err);\n            }\n            this.cognitoUser.clearCachedUserData(); // forces cached cognito userdata to be refreshed\n            this.onLoggedIn(result, data.adminUser, resolve, reject);\n          });\n        });\n      });\n    },\n    authenticate(params) {\n      const tempSession = this.get(\"cognitoService.totpTempSession\");\n      const admin = true; // Admin Site never users client pools (removed param useClientPool)\n      if (tempSession !== false) {\n        // we've already partially authenticated, just finish the process\n        return new _rsvp.Promise((resolve, reject) => {\n          this.onLoggedIn(tempSession, true, resolve, reject);\n        });\n      }\n      const {\n        identification,\n        password\n      } = params;\n      return new _rsvp.Promise((resolve, reject) => {\n        const authenticationDetails = this.awsService.getAuthenticationDetails(identification, password);\n        this.cognitoUser = this.awsService.getCognitoUser(identification, admin);\n        this.cognitoUser.authenticateUser(authenticationDetails, {\n          onSuccess: result => this.onLoggedIn(result, admin, resolve, reject),\n          onFailure: err => reject(err),\n          newPasswordRequired: (userAttributes, requiredAttributes) => {\n            // User must provide new password and required attributes\n            // userAttributes: object, which is the user's current profile. It will list all attributes that are associated with the user.\n            // requiredAttributes: list of attributes that must be set by the user along with new password to complete the sign-in.\n\n            // Get these details and call\n            // newPassword: password that user has given\n            // attributesData: object with key as attribute name and value that the user has given.\n            this.set(\"cognitoService.user\", this.cognitoUser);\n            this.set(\"cognitoService.userAttributes\", userAttributes);\n            this.set(\"cognitoService.requiredAttributes\", requiredAttributes);\n            this.set(\"cognitoService.status\", \"newPasswordRequired\");\n            reject(\"newPasswordRequired\");\n          },\n          totpRequired: (/* tokenType, device */\n          ) => {\n            // console.log(\"totpRequired\", tokenType, device);\n            this.set(\"cognitoService.user\", this.cognitoUser);\n            this.set(\"cognitoService.status\", \"totpRequired\");\n            reject(\"totpRequired\");\n          }\n        });\n      });\n    },\n    invalidate(/* data */\n    ) {\n      return new _rsvp.Promise(resolve => {\n        this.cognitoUser.signOut(err => {\n          // signOut callback is required by cognito to revoke tokens\n          if (err) {\n            console.log(err);\n          }\n          this.cognitoService.reset();\n          this.awsService.useAnonymousCognitoCredentials();\n          this._postInvalidation();\n          resolve();\n        });\n      });\n    },\n    _processAttributes(userAttributes) {\n      const attributes = {\n        custom: {}\n      };\n      for (const userAttribute of userAttributes) {\n        if (userAttribute.Name.indexOf(\"custom:\") === 0) {\n          const customName = userAttribute.Name.replace(\"custom:\", \"\");\n          attributes.custom[customName] = userAttribute.Value;\n        } else {\n          attributes[userAttribute.Name] = userAttribute.Value;\n        }\n      }\n      return attributes;\n    },\n    _postAuthentication(data) {\n      this.setContext(data);\n      this.cookies.write(\"clientID\", data.clientID, {\n        path: \"/\"\n      }); // Set clientID if available\n      this.store.unloadAll(); // Clear the store to ensure a clean starting state for data, enhancing security and data integrity\n      this.firm.reloadFirm(); // Reload the firm settings to ensure we have updated settings for this user\n    },\n    _postInvalidation() {\n      this.clearCookies();\n      this.clearContext();\n    },\n    setContext(data) {\n      this.eventLogging.setSentryUserContext(data); // Set Sentry User Context\n      this.fullstory.addIdentification(data.uid); // Set Full Story User Context\n      this.fullstory.setUserProperties({\n        authenticated_str: data.adminUser ? \"lawyer\" : \"client\"\n      });\n      this.recordpolling.setTrackedClient(null);\n    },\n    clearContext() {\n      this.eventLogging.setSentryUserContext(false); // Clear Sentry User Context\n      this.fullstory.removeIdentification(); // Clear Full Story User Context\n      this.recordpolling.setTrackedClient(null);\n    },\n    clearCookies() {\n      this.cookies.clear(\"clientID\", {\n        path: \"/\"\n      });\n    }\n  });\n});","define(\"settify-mvp/component-managers/glimmer\", [\"exports\", \"@glimmer/component/-private/ember-component-manager\"], function (_exports, _emberComponentManager) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _emberComponentManager.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component/-private/ember-component-manager\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/-dynamic-element-alt\", [\"exports\", \"@glimmer/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\"eaimeta@70e063a35619d71f\n  // This component is not needed anymore. However we can only safely remove it once we have an Embroider release that\n  // has the special dependency rule for this addon removed:\n  // https://github.com/embroider-build/embroider/blob/4fad67f16f811e7f93199a1ee92dba8254c42978/packages/compat/src/addon-dependency-rules/ember-element-helper.ts\n  // eslint-disable-next-line ember/no-empty-glimmer-component-classes\n  class DynamicElementAlt extends _component.default {}\n  _exports.default = DynamicElementAlt;\n});","define(\"settify-mvp/components/-dynamic-element\", [\"exports\", \"@glimmer/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\"eaimeta@70e063a35619d71f\n  // This component is not needed anymore. However we can only safely remove it once we have an Embroider release that\n  // has the special dependency rule for this addon removed:\n  // https://github.com/embroider-build/embroider/blob/4fad67f16f811e7f93199a1ee92dba8254c42978/packages/compat/src/addon-dependency-rules/ember-element-helper.ts\n  // eslint-disable-next-line ember/no-empty-glimmer-component-classes\n  class DynamicElement extends _component.default {}\n  _exports.default = DynamicElement;\n});","define(\"settify-mvp/components/address-printer\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/template-factory\"], function (_exports, _component, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.emptyAddress}}\n    <div class=\"readonly-textarea\">\n      {{#if @noneText}}\n        {{@noneText}}\n      {{else}}\n        <NoInformation />\n        {{#if @required}}\n          <RequiredField />\n        {{/if}}\n      {{/if}}\n    </div>\n  {{else}}\n    {{#if (and @required (not (and this.address.lineOne this.address.suburb this.address.state this.address.postcode)))}}\n      <RequiredField />\n    {{/if}}\n    <div class=\"{{if @displayOnly \"readonly-textarea\"}} settify-sensitive\">\n      {{#if (or this.address.lineOne this.address.lineTwo this.address.lineThree)}}\n        {{#if this.address.lineOne}}\n          {{this.address.lineOne}} <br>\n        {{/if}}\n        {{#if this.address.lineTwo}}\n          {{this.address.lineTwo}} <br>\n        {{/if}}\n        {{#if this.address.lineThree}}\n          {{this.address.lineThree}} <br>\n        {{/if}}\n      {{else if this.address.streetName}}\n        {{this.address.streetNumber}} {{this.address.streetName}} <br>\n      {{/if}}\n      {{this.address.suburb}}\n      {{#if this.address.stateAbbreviation}}\n        {{this.address.stateAbbreviation}}\n      {{else}}\n        {{this.address.state}}\n      {{/if}}\n      {{this.address.postcode}}\n      {{#if this.address.country}}\n        <br>\n        {{this.address.country}}\n      {{/if}}\n      <br>\n    </div>\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"RNFu3n5T\",\n    \"block\": \"[[[41,[30,0,[\\\"emptyAddress\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"readonly-textarea\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1],[[[1,\\\"      \\\"],[1,[30,1]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[39,2],null,null,null],[1,\\\"\\\\n\\\"],[41,[30,2],[[[1,\\\"        \\\"],[8,[39,3],null,null,null],[1,\\\"\\\\n\\\"]],[]],null]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,4],[[30,2],[28,[37,5],[[28,[37,4],[[30,0,[\\\"address\\\",\\\"lineOne\\\"]],[30,0,[\\\"address\\\",\\\"suburb\\\"]],[30,0,[\\\"address\\\",\\\"state\\\"]],[30,0,[\\\"address\\\",\\\"postcode\\\"]]],null]],null]],null],[[[1,\\\"    \\\"],[8,[39,3],null,null,null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[10,0],[15,0,[29,[[52,[30,3],\\\"readonly-textarea\\\"],\\\" settify-sensitive\\\"]]],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,6],[[30,0,[\\\"address\\\",\\\"lineOne\\\"]],[30,0,[\\\"address\\\",\\\"lineTwo\\\"]],[30,0,[\\\"address\\\",\\\"lineThree\\\"]]],null],[[[41,[30,0,[\\\"address\\\",\\\"lineOne\\\"]],[[[1,\\\"        \\\"],[1,[30,0,[\\\"address\\\",\\\"lineOne\\\"]]],[1,\\\" \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"address\\\",\\\"lineTwo\\\"]],[[[1,\\\"        \\\"],[1,[30,0,[\\\"address\\\",\\\"lineTwo\\\"]]],[1,\\\" \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"address\\\",\\\"lineThree\\\"]],[[[1,\\\"        \\\"],[1,[30,0,[\\\"address\\\",\\\"lineThree\\\"]]],[1,\\\" \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],[[[41,[30,0,[\\\"address\\\",\\\"streetName\\\"]],[[[1,\\\"      \\\"],[1,[30,0,[\\\"address\\\",\\\"streetNumber\\\"]]],[1,\\\" \\\"],[1,[30,0,[\\\"address\\\",\\\"streetName\\\"]]],[1,\\\" \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n    \\\"]],[]],null]],[]]],[1,\\\"    \\\"],[1,[30,0,[\\\"address\\\",\\\"suburb\\\"]]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"address\\\",\\\"stateAbbreviation\\\"]],[[[1,\\\"      \\\"],[1,[30,0,[\\\"address\\\",\\\"stateAbbreviation\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[1,[30,0,[\\\"address\\\",\\\"state\\\"]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"],[1,[30,0,[\\\"address\\\",\\\"postcode\\\"]]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"address\\\",\\\"country\\\"]],[[[1,\\\"      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[1,[30,0,[\\\"address\\\",\\\"country\\\"]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[\\\"@noneText\\\",\\\"@required\\\",\\\"@displayOnly\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"no-information\\\",\\\"required-field\\\",\\\"and\\\",\\\"not\\\",\\\"or\\\",\\\"br\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/address-printer.hbs\",\n    \"isStrictMode\": false\n  });\n  class AddressPrinterComponent extends _component2.default {\n    get address() {\n      const {\n        address\n      } = this.args;\n      return Array.isArray(address) ? address[0] : address;\n    }\n    get emptyAddress() {\n      return !(this.address?.lineOne || this.address?.lineTwo || this.address?.lineThree || this.address?.streetNumber || this.address?.streetName || this.address?.suburb || this.address?.state || this.address?.postcode || this.address?.country);\n    }\n  }\n  _exports.default = AddressPrinterComponent;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, AddressPrinterComponent);\n});","define(\"settify-mvp/components/address-simple\", [\"exports\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <span class=\"settify-sensitive\">\n    {{#if (or @address.lineOne @address.lineTwo @address.lineThree)}}\n      {{#if @address.lineOne}}\n        {{@address.lineOne}},\n      {{/if}}\n      {{#if @address.lineTwo}}\n        {{@address.lineTwo}},\n      {{/if}}\n      {{#if @address.lineThree}}\n        {{@address.lineThree}},\n      {{/if}}\n    {{else if (and @address.streetNumber @address.streetName)}}\n      {{@address.streetNumber}}&nbsp;{{@address.streetName}},\n    {{/if}}\n    {{#if @address.suburb}}\n      {{@address.suburb}}\n    {{/if}}\n  </span>\n  \n  */\n  {\n    \"id\": \"29bbmInt\",\n    \"block\": \"[[[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,2],[[30,1,[\\\"lineOne\\\"]],[30,1,[\\\"lineTwo\\\"]],[30,1,[\\\"lineThree\\\"]]],null],[[[41,[30,1,[\\\"lineOne\\\"]],[[[1,\\\"      \\\"],[1,[30,1,[\\\"lineOne\\\"]]],[1,\\\",\\\\n\\\"]],[]],null],[41,[30,1,[\\\"lineTwo\\\"]],[[[1,\\\"      \\\"],[1,[30,1,[\\\"lineTwo\\\"]]],[1,\\\",\\\\n\\\"]],[]],null],[41,[30,1,[\\\"lineThree\\\"]],[[[1,\\\"      \\\"],[1,[30,1,[\\\"lineThree\\\"]]],[1,\\\",\\\\n\\\"]],[]],null]],[]],[[[41,[28,[37,3],[[30,1,[\\\"streetNumber\\\"]],[30,1,[\\\"streetName\\\"]]],null],[[[1,\\\"    \\\"],[1,[30,1,[\\\"streetNumber\\\"]]],[1,\\\" \\\"],[1,[30,1,[\\\"streetName\\\"]]],[1,\\\",\\\\n  \\\"]],[]],null]],[]]],[41,[30,1,[\\\"suburb\\\"]],[[[1,\\\"    \\\"],[1,[30,1,[\\\"suburb\\\"]]],[1,\\\"\\\\n\\\"]],[]],null],[13],[1,\\\"\\\\n\\\"]],[\\\"@address\\\"],false,[\\\"span\\\",\\\"if\\\",\\\"or\\\",\\\"and\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/address-simple.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({\n    tagName: \"span\"\n  }));\n});","define(\"settify-mvp/components/admin-header-breadcrumbs\", [\"exports\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <nav class=\"flex\" aria-label=\"Breadcrumb\">\n    <ol role=\"list\" class=\"flex items-center space-x-4 px-4 py-2\">\n      <li>\n        <div>\n          <LinkTo @route=\"{{this.homeRoute}}\" class=\"text-gray-400 hover:text-gray-500\">\n            <span class=\"sr-only\">Home</span>\n            <V2::SvgIcon @icon=\"house\" class=\"size-4 flex-shrink-0\" />\n          </LinkTo>\n        </div>\n      </li>\n      {{#each this.breadcrumbs as |crumb index|}}\n        <li>\n          <div class=\"flex items-center\">\n            <V2::SvgIcon @icon=\"chevron-right\" class=\"size-4 flex-shrink-0 text-gray-400\" />\n            <LinkTo @route=\"{{crumb.route}}\" class=\"ml-4 text-sm font-medium text-gray-500 hover:text-gray-700\">\n              {{crumb.title}}\n            </LinkTo>\n          </div>\n        </li>\n      {{/each}}\n    </ol>\n  </nav>\n  \n  {{yield}}\n  */\n  {\n    \"id\": \"PB5TSP2G\",\n    \"block\": \"[[[10,\\\"nav\\\"],[14,0,\\\"flex\\\"],[14,\\\"aria-label\\\",\\\"Breadcrumb\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"ol\\\"],[14,\\\"role\\\",\\\"list\\\"],[14,0,\\\"flex items-center space-x-4 px-4 py-2\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[8,[39,4],[[24,0,\\\"text-gray-400 hover:text-gray-500\\\"]],[[\\\"@route\\\"],[[29,[[30,0,[\\\"homeRoute\\\"]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Home\\\"],[13],[1,\\\"\\\\n          \\\"],[8,[39,6],[[24,0,\\\"size-4 flex-shrink-0\\\"]],[[\\\"@icon\\\"],[\\\"house\\\"]],null],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,8],[[28,[37,8],[[30,0,[\\\"breadcrumbs\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"flex items-center\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,6],[[24,0,\\\"size-4 flex-shrink-0 text-gray-400\\\"]],[[\\\"@icon\\\"],[\\\"chevron-right\\\"]],null],[1,\\\"\\\\n          \\\"],[8,[39,4],[[24,0,\\\"ml-4 text-sm font-medium text-gray-500 hover:text-gray-700\\\"]],[[\\\"@route\\\"],[[29,[[30,1,[\\\"route\\\"]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[1,[30,1,[\\\"title\\\"]]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[1,2]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[18,3,null]],[\\\"crumb\\\",\\\"index\\\",\\\"&default\\\"],false,[\\\"nav\\\",\\\"ol\\\",\\\"li\\\",\\\"div\\\",\\\"link-to\\\",\\\"span\\\",\\\"v2/svg-icon\\\",\\\"each\\\",\\\"-track-array\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/admin-header-breadcrumbs.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({\n    classNames: [\"w-full\"],\n    init() {\n      this._super(...arguments);\n      // TODO: externalise these to a higher-level component/service\n      this.homeRoute = \"v2.admin.index\";\n      this.breadcrumbs = [{\n        title: \"Dashboard\",\n        route: \"v2.admin.index\"\n      }];\n    }\n  }));\n});","define(\"settify-mvp/components/admin-header-firm\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/service\", \"@ember/template-factory\"], function (_exports, _component, _component2, _service, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/service\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"relative flex cursor-default select-none flex-col items-center gap-y-2\">\n    {{! TODO: Update the below to a button that opens up to firm specific routes - offices, firm settings, etc. See admin-header-profile for implementation }}\n    <div data-firm-id=\"{{this.firm.id}}\" class=\"-m-1.5 flex items-center gap-x-2 p-1.5\">\n      <V2::SvgIcon @icon=\"building\" class=\"size-4 text-gray-700\" />\n      <span class=\"text-sm text-gray-700\">\n        {{this.firm.name}}\n      </span>\n    </div>\n    <span data-user-id=\"\" class=\"text-xs text-gray-500\">{{this.username}}</span>\n  </div>\n  */\n  {\n    \"id\": \"VjHLdMyT\",\n    \"block\": \"[[[10,0],[14,0,\\\"relative flex cursor-default select-none flex-col items-center gap-y-2\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"  \\\"],[10,0],[15,\\\"data-firm-id\\\",[29,[[30,0,[\\\"firm\\\",\\\"id\\\"]]]]],[14,0,\\\"-m-1.5 flex items-center gap-x-2 p-1.5\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,1],[[24,0,\\\"size-4 text-gray-700\\\"]],[[\\\"@icon\\\"],[\\\"building\\\"]],null],[1,\\\"\\\\n    \\\"],[10,1],[14,0,\\\"text-sm text-gray-700\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,1],[14,\\\"data-user-id\\\",\\\"\\\"],[14,0,\\\"text-xs text-gray-500\\\"],[12],[1,[30,0,[\\\"username\\\"]]],[13],[1,\\\"\\\\n\\\"],[13]],[],false,[\\\"div\\\",\\\"v2/svg-icon\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/admin-header-firm.hbs\",\n    \"isStrictMode\": false\n  });\n  let AdminHeaderFirmComponent = _exports.default = (_class = class AdminHeaderFirmComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n      _initializerDefineProperty(this, \"session\", _descriptor2, this);\n    }\n    get username() {\n      if (this.session.isAuthenticated) {\n        return this.session.data.authenticated.username.toLowerCase();\n      }\n      return \"\";\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, AdminHeaderFirmComponent);\n});","define(\"settify-mvp/components/admin-header-profile\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/service\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _component2, _service, _tracking, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/service\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"relative ml-3\">\n    <V2::Dropdown @id=\"user-menu-button\" @toggleDropdown={{this.openProfileMenu}} @clickedOutside={{this.onClickedOutside}} as |dropdown|>\n      <dropdown.header>\n        <button type=\"button\" class=\"-m-1.5 flex items-center p-1.5\" aria-expanded=\"false\" aria-haspopup=\"true\">\n          <span class=\"sr-only\">Open account menu</span>\n          <V2::SvgIcon @icon=\"empty-profile\" class=\"size-8 rounded-full text-gray-300\" />\n          <span class=\"hidden lg:flex lg:items-center\">\n            <V2::SvgIcon @icon=\"chevron-down\" class=\"ml-2 size-3 text-gray-400\" />\n          </span>\n        </button>\n      </dropdown.header>\n      <dropdown.content @isOpen={{this.profileMenuShown}}>\n        <div\n          class=\"absolute right-0 z-10 mt-2 w-48 origin-top-right rounded-md bg-white py-1 shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none\"\n          role=\"menu\"\n          aria-orientation=\"vertical\"\n          aria-labelledby=\"user-menu-button\"\n          tabindex=\"-1\"\n        >\n          {{#each this.profileMenuItems as |menuItem index|}}\n            {{#if menuItem.route}}\n              <LinkTo @route={{menuItem.route}} class=\"block px-4 py-2 text-sm text-gray-700 hover:text-brand-primary-color-rgb\" role=\"menuitem\" tabindex=\"0\">\n                {{menuItem.title}}\n              </LinkTo>\n            {{else if menuItem.action}}\n              <a\n                {{on \"click\" menuItem.action}}\n                href=\"#\"\n                class=\"block px-4 py-2 text-sm text-gray-700 hover:text-brand-primary-color-rgb\"\n                role=\"menuitem\"\n                tabindex=\"0\"\n                id=\"profile-menu-item-{{index}}\"\n              >{{menuItem.title}}</a>\n            {{/if}}\n          {{/each}}\n        </div>\n      </dropdown.content>\n    </V2::Dropdown>\n  </div>\n  */\n  {\n    \"id\": \"N7Pgwcar\",\n    \"block\": \"[[[10,0],[14,0,\\\"relative ml-3\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[39,1],null,[[\\\"@id\\\",\\\"@toggleDropdown\\\",\\\"@clickedOutside\\\"],[\\\"user-menu-button\\\",[30,0,[\\\"openProfileMenu\\\"]],[30,0,[\\\"onClickedOutside\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"header\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,\\\"button\\\"],[14,0,\\\"-m-1.5 flex items-center p-1.5\\\"],[14,\\\"aria-expanded\\\",\\\"false\\\"],[14,\\\"aria-haspopup\\\",\\\"true\\\"],[14,4,\\\"button\\\"],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Open account menu\\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,4],[[24,0,\\\"size-8 rounded-full text-gray-300\\\"]],[[\\\"@icon\\\"],[\\\"empty-profile\\\"]],null],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"hidden lg:flex lg:items-center\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,4],[[24,0,\\\"ml-2 size-3 text-gray-400\\\"]],[[\\\"@icon\\\"],[\\\"chevron-down\\\"]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[8,[30,1,[\\\"content\\\"]],null,[[\\\"@isOpen\\\"],[[30,0,[\\\"profileMenuShown\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"absolute right-0 z-10 mt-2 w-48 origin-top-right rounded-md bg-white py-1 shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none\\\"],[14,\\\"role\\\",\\\"menu\\\"],[14,\\\"aria-orientation\\\",\\\"vertical\\\"],[14,\\\"aria-labelledby\\\",\\\"user-menu-button\\\"],[14,\\\"tabindex\\\",\\\"-1\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,6],[[28,[37,6],[[30,0,[\\\"profileMenuItems\\\"]]],null]],null],null,[[[41,[30,2,[\\\"route\\\"]],[[[1,\\\"            \\\"],[8,[39,8],[[24,0,\\\"block px-4 py-2 text-sm text-gray-700 hover:text-brand-primary-color-rgb\\\"],[24,\\\"role\\\",\\\"menuitem\\\"],[24,\\\"tabindex\\\",\\\"0\\\"]],[[\\\"@route\\\"],[[30,2,[\\\"route\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[1,[30,2,[\\\"title\\\"]]],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,2,[\\\"action\\\"]],[[[1,\\\"            \\\"],[11,3],[24,6,\\\"#\\\"],[24,0,\\\"block px-4 py-2 text-sm text-gray-700 hover:text-brand-primary-color-rgb\\\"],[24,\\\"role\\\",\\\"menuitem\\\"],[24,\\\"tabindex\\\",\\\"0\\\"],[16,1,[29,[\\\"profile-menu-item-\\\",[30,3]]]],[4,[38,10],[\\\"click\\\",[30,2,[\\\"action\\\"]]],null],[12],[1,[30,2,[\\\"title\\\"]]],[13],[1,\\\"\\\\n          \\\"]],[]],null]],[]]]],[2,3]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"]],[1]]]]],[1,\\\"\\\\n\\\"],[13]],[\\\"dropdown\\\",\\\"menuItem\\\",\\\"index\\\"],false,[\\\"div\\\",\\\"v2/dropdown\\\",\\\"button\\\",\\\"span\\\",\\\"v2/svg-icon\\\",\\\"each\\\",\\\"-track-array\\\",\\\"if\\\",\\\"link-to\\\",\\\"a\\\",\\\"on\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/admin-header-profile.hbs\",\n    \"isStrictMode\": false\n  });\n  let AdminHEaderProfile = _exports.default = (_class = class AdminHEaderProfile extends _component2.default {\n    constructor() {\n      super(...arguments);\n      // TODO: externalise these to a higher-level component/service\n      _initializerDefineProperty(this, \"session\", _descriptor, this);\n      _initializerDefineProperty(this, \"profileMenuShown\", _descriptor2, this);\n      this.profileMenuItems = [{\n        title: \"Change Password\",\n        route: \"v2.auth.password\"\n      },\n      // { title: \"Account Settings\", route: \"v2.admin.settings\" },\n      {\n        title: \"Enable MFA\",\n        route: \"v2.auth.mfa\"\n      }, {\n        title: \"Legacy UI\",\n        route: \"admin.index\"\n      }, {\n        title: \"Sign Out\",\n        action: this.invalidateSession\n      }];\n    }\n    openProfileMenu() {\n      this.profileMenuShown = !this.profileMenuShown;\n    }\n    onClickedOutside() {\n      if (this.profileMenuShown) this.profileMenuShown = false;\n    }\n    async invalidateSession() {\n      await this.session.invalidate();\n      this.session.handleInvalidation(\"/\");\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"profileMenuShown\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"openProfileMenu\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"openProfileMenu\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"onClickedOutside\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"onClickedOutside\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"invalidateSession\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"invalidateSession\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, AdminHEaderProfile);\n});","define(\"settify-mvp/components/admin-header\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/service\", \"@ember/object\", \"@glimmer/tracking\", \"@ember/template-factory\"], function (_exports, _component, _component2, _service, _object, _tracking, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/service\",0,\"@ember/object\",0,\"@glimmer/tracking\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"fixed inset-x-0 top-0 z-40 flex h-14 shrink-0 items-center gap-x-4 bg-gray-900 px-4 text-gray-400 shadow-sm sm:gap-x-6 sm:px-6 lg:hidden lg:px-8\">\n    <button type=\"button\" {{on \"click\" this.openSidebar}} class=\"-m-2.5 p-2.5 text-white\">\n      <span class=\"sr-only\">Open sidebar</span>\n      <V2::SvgIcon @icon=\"bars-3\" class=\"size-5\" />\n    </button>\n  \n    {{! Separator }}\n    <div class=\"h-8 w-px bg-white/80 lg:hidden\" aria-hidden=\"true\"></div>\n  \n    <div class=\"relative ml-auto\">\n      <V2::AccountDropdown @dropDirection=\"bottom\" />\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"Jdsd4Q5Q\",\n    \"block\": \"[[[10,0],[14,0,\\\"fixed inset-x-0 top-0 z-40 flex h-14 shrink-0 items-center gap-x-4 bg-gray-900 px-4 text-gray-400 shadow-sm sm:gap-x-6 sm:px-6 lg:hidden lg:px-8\\\"],[12],[1,\\\"\\\\n  \\\"],[11,\\\"button\\\"],[24,0,\\\"-m-2.5 p-2.5 text-white\\\"],[24,4,\\\"button\\\"],[4,[38,2],[\\\"click\\\",[30,0,[\\\"openSidebar\\\"]]],null],[12],[1,\\\"\\\\n    \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Open sidebar\\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,4],[[24,0,\\\"size-5\\\"]],[[\\\"@icon\\\"],[\\\"bars-3\\\"]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"  \\\"],[10,0],[14,0,\\\"h-8 w-px bg-white/80 lg:hidden\\\"],[14,\\\"aria-hidden\\\",\\\"true\\\"],[12],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"relative ml-auto\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,5],null,[[\\\"@dropDirection\\\"],[\\\"bottom\\\"]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[],false,[\\\"div\\\",\\\"button\\\",\\\"on\\\",\\\"span\\\",\\\"v2/svg-icon\\\",\\\"v2/account-dropdown\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/admin-header.hbs\",\n    \"isStrictMode\": false\n  });\n  let AdminHeader = _exports.default = (_class = class AdminHeader extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"router\", _descriptor, this);\n      _initializerDefineProperty(this, \"mobileMenuShown\", _descriptor2, this);\n    }\n    toggleMobileMenu() {\n      this.mobileMenuShown = !this.mobileMenuShown;\n    }\n    openSidebar() {\n      this.args.setSidebarState?.(true);\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"mobileMenuShown\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"toggleMobileMenu\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleMobileMenu\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"openSidebar\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"openSidebar\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, AdminHeader);\n});","define(\"settify-mvp/components/admin-notification\", [\"exports\", \"@ember/component\", \"@ember/service\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _service, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@ember/component\",0,\"@ember/object\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div aria-live=\"assertive\" class=\"lg:pl-68 pointer-events-none fixed inset-0 z-[100] mt-16 flex items-end px-4 py-6 sm:p-8\">\n    <div class=\"flex w-full flex-col items-center space-y-4 sm:items-end\">\n      {{#each this.notifications.notifications as |notification index|}}\n        <div\n          data-notification-id=\"notification-{{index}}\"\n          class=\"pointer-events-auto relative w-full max-w-sm overflow-hidden rounded-lg bg-white shadow-lg ring-1 ring-black ring-opacity-5\"\n        >\n          <div class=\"p-4\">\n            <div class=\"flex items-start\">\n              <div class=\"flex-shrink-0\">\n                {{#if (eq \"success\" notification.icon)}}\n                  <V2::SvgIcon @icon=\"circle-check\" class=\"size-5 text-green-500\" />\n                {{/if}}\n                {{#if (eq \"info\" notification.icon)}}\n                  <V2::SvgIcon @icon=\"circle-info\" class=\"size-5\" />\n                {{/if}}\n                {{#if (eq \"error\" notification.icon)}}\n                  <V2::SvgIcon @icon=\"circle-x-mark\" class=\"size-5 text-red-500\" />\n                {{/if}}\n                {{#if (eq \"loading\" notification.icon)}}\n                  <V2::SvgIcon @icon=\"arrows-rotate\" class=\"size-5 animate-spin\" />\n                {{/if}}\n              </div>\n              <div class=\"ml-3 w-0 flex-1 pt-0.5\">\n                <p class=\"text-sm font-medium text-gray-900\">{{notification.title}}</p>\n                <p class=\"mt-1 text-sm text-gray-500\">{{notification.message}} </p>\n              </div>\n              {{#if notification.canDismiss}}\n                <V2::Button\n                  @size=\"small\"\n                  class=\"close-button absolute right-2 top-3 inline-flex text-gray-400 hover:text-gray-500\"\n                  {{on \"click\" (fn this.removeNotification notification)}}\n                >\n                  <span class=\"sr-only\">Close</span>\n                  <V2::SvgIcon @icon=\"x-mark\" class=\"size-5\" />\n                </V2::Button>\n              {{/if}}\n            </div>\n          </div>\n        </div>\n      {{/each}}\n    </div>\n  </div>\n  \n  */\n  {\n    \"id\": \"p5ABTzcz\",\n    \"block\": \"[[[10,0],[14,\\\"aria-live\\\",\\\"assertive\\\"],[14,0,\\\"lg:pl-68 pointer-events-none fixed inset-0 z-[100] mt-16 flex items-end px-4 py-6 sm:p-8\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"flex w-full flex-col items-center space-y-4 sm:items-end\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,2],[[28,[37,2],[[30,0,[\\\"notifications\\\",\\\"notifications\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[10,0],[15,\\\"data-notification-id\\\",[29,[\\\"notification-\\\",[30,2]]]],[14,0,\\\"pointer-events-auto relative w-full max-w-sm overflow-hidden rounded-lg bg-white shadow-lg ring-1 ring-black ring-opacity-5\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"p-4\\\"],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"flex items-start\\\"],[12],[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"flex-shrink-0\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,4],[\\\"success\\\",[30,1,[\\\"icon\\\"]]],null],[[[1,\\\"                \\\"],[8,[39,5],[[24,0,\\\"size-5 text-green-500\\\"]],[[\\\"@icon\\\"],[\\\"circle-check\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,4],[\\\"info\\\",[30,1,[\\\"icon\\\"]]],null],[[[1,\\\"                \\\"],[8,[39,5],[[24,0,\\\"size-5\\\"]],[[\\\"@icon\\\"],[\\\"circle-info\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,4],[\\\"error\\\",[30,1,[\\\"icon\\\"]]],null],[[[1,\\\"                \\\"],[8,[39,5],[[24,0,\\\"size-5 text-red-500\\\"]],[[\\\"@icon\\\"],[\\\"circle-x-mark\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,4],[\\\"loading\\\",[30,1,[\\\"icon\\\"]]],null],[[[1,\\\"                \\\"],[8,[39,5],[[24,0,\\\"size-5 animate-spin\\\"]],[[\\\"@icon\\\"],[\\\"arrows-rotate\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"ml-3 w-0 flex-1 pt-0.5\\\"],[12],[1,\\\"\\\\n              \\\"],[10,2],[14,0,\\\"text-sm font-medium text-gray-900\\\"],[12],[1,[30,1,[\\\"title\\\"]]],[13],[1,\\\"\\\\n              \\\"],[10,2],[14,0,\\\"mt-1 text-sm text-gray-500\\\"],[12],[1,[30,1,[\\\"message\\\"]]],[1,\\\" \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"canDismiss\\\"]],[[[1,\\\"              \\\"],[8,[39,7],[[24,0,\\\"close-button absolute right-2 top-3 inline-flex text-gray-400 hover:text-gray-500\\\"],[4,[38,8],[\\\"click\\\",[28,[37,9],[[30,0,[\\\"removeNotification\\\"]],[30,1]],null]],null]],[[\\\"@size\\\"],[\\\"small\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Close\\\"],[13],[1,\\\"\\\\n                \\\"],[8,[39,5],[[24,0,\\\"size-5\\\"]],[[\\\"@icon\\\"],[\\\"x-mark\\\"]],null],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[1,2]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[\\\"notification\\\",\\\"index\\\"],false,[\\\"div\\\",\\\"each\\\",\\\"-track-array\\\",\\\"if\\\",\\\"eq\\\",\\\"v2/svg-icon\\\",\\\"p\\\",\\\"v2/button\\\",\\\"on\\\",\\\"fn\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/admin-notification.hbs\",\n    \"isStrictMode\": false\n  });\n  let AdminNotification = _exports.default = (_class = class AdminNotification extends _component.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"notifications\", _descriptor, this);\n    }\n    removeNotification(notification) {\n      this.notifications.remove(notification);\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"notifications\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"removeNotification\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"removeNotification\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, AdminNotification);\n});","define(\"settify-mvp/components/admin-stats-panel\", [\"exports\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <h3 className=\"text-base font-semibold leading-6 \">Last 30 days</h3>\n  <div class=\"mt-2 grid grid-cols-1 gap-5 sm:grid-cols-4\">\n    {{#each @statistics as |stat|}}\n      <div class=\"overflow-hidden rounded-lg ring-1 ring-gray-900/5 px-4 py-4\">\n        <p class=\"text-sm font-medium leading-6 text-gray-500\">{{stat.name}}</p>\n        <p class=\"mt-2 flex items-baseline gap-x-2\">\n          <span class=\"text-4xl font-semibold tracking-tight \">{{stat.value}}</span>\n          {{#if stat.unit}}\n            <span class=\"text-sm text-gray-600\">{{stat.unit}}</span>\n          {{/if}}\n        </p>\n      </div>\n    {{/each}}\n  </div>\n  \n  */\n  {\n    \"id\": \"uNu7oJ9e\",\n    \"block\": \"[[[10,\\\"h3\\\"],[14,\\\"className\\\",\\\"text-base font-semibold leading-6 \\\"],[12],[1,\\\"Last 30 days\\\"],[13],[1,\\\"\\\\n\\\"],[10,0],[14,0,\\\"mt-2 grid grid-cols-1 gap-5 sm:grid-cols-4\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,3],[[28,[37,3],[[30,1]],null]],null],null,[[[1,\\\"    \\\"],[10,0],[14,0,\\\"overflow-hidden rounded-lg ring-1 ring-gray-900/5 px-4 py-4\\\"],[12],[1,\\\"\\\\n      \\\"],[10,2],[14,0,\\\"text-sm font-medium leading-6 text-gray-500\\\"],[12],[1,[30,2,[\\\"name\\\"]]],[13],[1,\\\"\\\\n      \\\"],[10,2],[14,0,\\\"mt-2 flex items-baseline gap-x-2\\\"],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"text-4xl font-semibold tracking-tight \\\"],[12],[1,[30,2,[\\\"value\\\"]]],[13],[1,\\\"\\\\n\\\"],[41,[30,2,[\\\"unit\\\"]],[[[1,\\\"          \\\"],[10,1],[14,0,\\\"text-sm text-gray-600\\\"],[12],[1,[30,2,[\\\"unit\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],null],[13],[1,\\\"\\\\n\\\"]],[\\\"@statistics\\\",\\\"stat\\\"],false,[\\\"h3\\\",\\\"div\\\",\\\"each\\\",\\\"-track-array\\\",\\\"p\\\",\\\"span\\\",\\\"if\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/admin-stats-panel.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({}));\n});","define(\"settify-mvp/components/animated-button\", [\"exports\", \"settify-mvp/components/animated-header\"], function (_exports, _animatedHeader) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/components/animated-header\"eaimeta@70e063a35619d71f\n  // import Ember from 'ember';\n  var _default = _exports.default = _animatedHeader.default.extend({\n    midpoint: 100,\n    topEdge: 68,\n    bottomEdge: 140,\n    resize() {\n      let {\n        largeHeader\n      } = this;\n      this.set(\"width\", largeHeader.offsetWidth);\n      this.set(\"height\", this.midpoint * 2);\n      let {\n        canvas\n      } = this;\n      canvas.width = largeHeader.offsetWidth;\n      canvas.height = largeHeader.offsetHeight;\n      let i = 0;\n      let {\n        points\n      } = this;\n\n      // \"cancel\" the shifting on the old points to prevent resource leakage\n      for (i = 0; i < points.length; i++) {\n        points[i].stopShifting = true;\n      }\n      // create new points\n      this.initHeader();\n\n      // make new points shift\n      for (i = 0; i < points.length; i++) {\n        this.shiftPoint(points[i]);\n      }\n    },\n    shiftPoint(p) {\n      let newX = p.originX - 25 + Math.random() * 50;\n      let newY = p.originY - 25 + Math.random() * 50;\n      p.shiftTime = 5 + 3 * Math.random();\n      p.vX = (newX - p.x) / p.shiftTime;\n      p.vY = (newY - p.y) / p.shiftTime;\n    },\n    drawLine(p1, p2, intensity) {\n      let {\n        ctx\n      } = this;\n      let av_y = 0.5 * (p1.y + p2.y);\n      let distance = this.distanceFromMidpoint(av_y);\n      let affected_intensity = intensity * distance;\n      if (intensity < 0.1) {\n        distance *= intensity / 0.1;\n      }\n      ctx.beginPath();\n      ctx.moveTo(p1.x, p1.y);\n      ctx.lineTo(p2.x, p2.y);\n      ctx.strokeStyle = `rgba(200,200,200,${(affected_intensity * 0.3 + distance * 0.3 + this.mouseover_counter * 0.1) * this.fadein})`;\n      ctx.stroke();\n    },\n    drawCircle(c) {\n      if (!c.active) {\n        return;\n      }\n      c.active = this.distanceFromMidpoint(c.pos.y);\n      let {\n        ctx\n      } = this;\n      ctx.beginPath();\n      // var c3 = [255-78, 255-148, 255-60];\n      ctx.arc(c.pos.x, c.pos.y, c.radius * (1 + c.active), 0, 2 * Math.PI, false);\n      // ctx.fillStyle = 'rgba(' + (255-(mouseover_counter*c3[0]).toFixed(0)) + ', ' + (255-(mouseover_counter * c3[1]).toFixed(0)) + ', ' + (255-(mouseover_counter*c3[2]).toFixed(0)) + ', ' + (_this.active * (0.15 + (0.2 * mouseover_counter)) * fadein) +')'\n\n      ctx.fillStyle = `rgba(52,168,83,${c.active * 0.8 * this.fadein})`;\n      ctx.fill();\n    },\n    distanceFromMidpoint(y) {\n      let {\n        midpoint\n      } = this;\n      if (y <= 0) {\n        return 0;\n      } else if (y < midpoint) {\n        return y / midpoint;\n      } else if (y >= 2 * midpoint) {\n        return 0;\n      }\n      return (2 * midpoint - y) / midpoint;\n    },\n    clampPoint(p) {\n      let mid = this.midpoint;\n      let {\n        topEdge\n      } = this;\n      let {\n        bottomEdge\n      } = this;\n      if (p.y <= mid) {\n        if (p.y > topEdge) {\n          p.y = topEdge;\n        }\n      } else {\n        if (p.y < bottomEdge) {\n          p.y = bottomEdge;\n        }\n      }\n    }\n  });\n});","define(\"settify-mvp/components/animated-header\", [\"exports\", \"@ember/object/computed\", \"@ember/service\", \"@ember/component\"], function (_exports, _computed, _service, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object/computed\",0,\"@ember/service\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  let unique = 0;\n  var _default = _exports.default = _component.default.extend({\n    session: (0, _service.inject)(),\n    init() {\n      this._super(...arguments);\n      if (!this.canvasID) {\n        this.set(\"canvasID\", `animating-canvas-${unique}`);\n        unique++;\n      }\n    },\n    adminUser: (0, _computed.and)(\"session.isAuthenticated\", \"session.data.authenticated.adminUser\")\n  });\n});","define(\"settify-mvp/components/banner-link-generator\", [\"exports\", \"@ember/object\", \"@ember/runloop\", \"@ember/service\", \"@ember/component\"], function (_exports, _object, _runloop, _service, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/runloop\",0,\"@ember/service\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    practiceArea: \"\",\n    type: null,\n    websiteType: null,\n    isPersonalised: false,\n    lawyerName: \"\",\n    isMultidisciplinary: null,\n    trackPhrase: \"\",\n    hasAppointment: false,\n    conflictChecked: false,\n    firmSettingsCache: null,\n    practiceAreaCache: null,\n    lambda: (0, _service.inject)(),\n    config: (0, _service.inject)(\"dynamic-config\"),\n    init() {\n      this._super(...arguments);\n      this.set(\"firmSettingsCache\", null);\n      this.set(\"practiceAreaCache\", null);\n\n      // Here we trigger generateInviteLink to ensure that the\n      // invite link is built when our component is first loaded\n      (0, _runloop.next)(() => {\n        this.generateInviteLink();\n      });\n    },\n    bannerFirmName: (0, _object.computed)(\"firm.settifyURL\", \"practiceArea\", function () {\n      const URL = this.firm.settifyURL;\n      const regex = /(?:http[s]*:\\/\\/)*(.*?)\\.(?=[^/]*\\..{2,5})/i;\n      const subdomain = URL.match(regex)[1];\n      if (this.practiceArea !== \"Family\") {\n        const practiceArea = this.practiceArea.toLowerCase();\n        return `${subdomain}-${practiceArea}`;\n      }\n      return `${subdomain}`;\n    }),\n    displayType: (0, _object.computed)(\"type\", \"websiteType\", function () {\n      if (this.type === \"invitation\") {\n        return \"invitation\";\n      } else if (this.websiteType === \"banner\") {\n        return \"banner\";\n      }\n      return \"link\";\n    }),\n    iframeBannerContent: (0, _object.computed)(\"bannerFirmName\", \"queryParamsContent\", \"bannerURL\", function () {\n      return `\n      <iframe src=\"${this.bannerURL}/${this.bannerFirmName}.html${this.queryParamsContent}\"\n      style=\"display: block;\" frameborder=\"0\" width=\"100%\" height=\"150px\" sandbox=\"allow-scripts allow-top-navigation\n      allow-popups allow-popups-to-escape-sandbox\"></iframe>\n    `;\n    }),\n    bannerURL: (0, _object.computed)(function () {\n      return this.config.getS3UrlForBucket(\"widgets\", \"banner-v1\");\n    }),\n    queryParamsContent: (0, _object.computed)(\"trackPhrase\", \"isPersonalised\", \"lawyerName\", \"isMultidisciplinary\", function () {\n      let phrase = \"\";\n      let placementQueryParam = \"\";\n      if (this.trackPhrase) {\n        placementQueryParam = `?placement=${this.trackPhrase.replace(/[^A-Za-z0-9]+/g, \"\")}`;\n      }\n      if (this.isPersonalised) {\n        phrase = `?placement=lawyerprofile`;\n        if (this.lawyerName) {\n          phrase = `${phrase}&lawyer=${this.lawyerName.replace(/ /g, \"%20\")}`;\n        }\n      } else {\n        if (this.trackPhrase) {\n          phrase = placementQueryParam;\n        }\n      }\n      if (this.isMultidisciplinary && !this.isPersonalised) {\n        if (this.trackPhrase) {\n          phrase = `${placementQueryParam}&multidisciplinary=true`;\n        } else {\n          phrase = `?multidisciplinary=true`;\n        }\n      }\n      return phrase;\n    }),\n    generateInviteLinkObserver: (0, _object.observer)(\"websiteType\", \"practiceArea\", \"isPersonalised\", \"lawyerName\", \"trackPhrase\", \"type\", \"hasAppointment\", \"conflictChecked\", function () {\n      this.generateInviteLink();\n    }),\n    generateInviteLink() {\n      if (this.websiteType !== \"link\" && this.type !== \"invitation\") {\n        return false;\n      }\n      if (this.firmSettingsCache && this.practiceAreaCache === this.practiceArea) {\n        return this.setLinkContent(this.firmSettingsCache);\n      }\n      this.lambda.invoke(this.lambda.getFirmSettingsLambda, {\n        firmID: this.firm.firmID,\n        practiceArea: this.practiceArea\n      }).then(this.lambda.processResponse).then(result => {\n        this.set(\"firmSettingsCache\", result);\n        this.set(\"practiceAreaCache\", this.practiceArea);\n        this.setLinkContent(result);\n      });\n    },\n    setLinkContent(result) {\n      let link = result.settifyURL;\n      if (this.type === \"invitation\") {\n        link += `/invitation?referral=invitation&invited=true`;\n        if (this.isPersonalised) {\n          link += `&partnerName=${this.lawyerName.replace(/ /g, \"%20\")}`;\n        }\n        if (this.hasAppointment) {\n          link += `&hasAppointment=true`;\n        }\n        if (this.conflictChecked) {\n          link += `&conflictCheckPerformed=true`;\n        }\n      } else {\n        if (this.isPersonalised) {\n          link += `/invitation?referral=lawyerprofile&partnerName=${this.lawyerName.replace(/ /g, \"%20\")}`;\n        } else if (this.trackPhrase) {\n          link += `/landing?referral=${this.trackPhrase}`;\n        } else {\n          link += `/landing`;\n        }\n      }\n      this.set(\"linkContent\", link);\n    }\n  });\n});","define(\"settify-mvp/components/banner\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object/internals\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _component2, _internals, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object/internals\",0,\"@ember/object\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @isOpen}}\n    <div id={{this.id}} class=\"banner\">\n      <div class=\"banner-wrapper\">\n        <div class=\"flex\">\n          <p class=\"banner-title\">{{@title}}</p>\n          {{#if @description}}\n            <p class=\"banner-description\">{{@description}}</p>\n          {{/if}}\n        </div>\n  \n        {{#if @primaryAction}}\n          <button type=\"button\" {{on \"click\" this.handlePrimaryClick}}>\n            {{@primaryActionText}} <span aria-hidden=\"true\">&rarr;</span>\n          </button>\n        {{/if}}\n      </div>\n    </div>\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"QmKyMLZH\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[10,0],[15,1,[30,0,[\\\"id\\\"]]],[14,0,\\\"banner\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"banner-wrapper\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"flex\\\"],[12],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"banner-title\\\"],[12],[1,[30,2]],[13],[1,\\\"\\\\n\\\"],[41,[30,3],[[[1,\\\"          \\\"],[10,2],[14,0,\\\"banner-description\\\"],[12],[1,[30,3]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,4],[[[1,\\\"        \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,4],[\\\"click\\\",[30,0,[\\\"handlePrimaryClick\\\"]]],null],[12],[1,\\\"\\\\n          \\\"],[1,[30,5]],[1,\\\" \\\"],[10,1],[14,\\\"aria-hidden\\\",\\\"true\\\"],[12],[1,\\\"→\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@isOpen\\\",\\\"@title\\\",\\\"@description\\\",\\\"@primaryAction\\\",\\\"@primaryActionText\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"p\\\",\\\"button\\\",\\\"on\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/banner.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component representing a banner.\n   * @class BannerComponent\n   * @extends Component\n   * @param {Object} this.args - The arguments passed to the component.\n   * @param {string} [this.args.id] - Banner ID, if not provided, a unique ID will be generated.\n   * @param {boolean} [this.args.isOpen] - Controls whether the banner is shown or not.\n   * @param {string} [this.args.title] - The title of the banner.\n   * @param {string} [this.args.description] - A short description for the purpose of the banner.\n   * @param {action} [this.args.primaryAction] - The primary action to be triggered on button click.\n   * @param {string} [this.args.primaryActionText] - The text to display on the primary action button.\n   */\n  let BannerComponent = _exports.default = (_class = class BannerComponent extends _component2.default {\n    get id() {\n      return this.args.id ?? `banner-component-${(0, _internals.guidFor)(this)}`;\n    }\n    handlePrimaryClick() {\n      if (typeof this.args.primaryAction === \"function\") {\n        return this.args.primaryAction();\n      }\n    }\n  }, _applyDecoratedDescriptor(_class.prototype, \"handlePrimaryClick\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handlePrimaryClick\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, BannerComponent);\n});","define(\"settify-mvp/components/billing-status-select\", [\"exports\", \"@ember/object\", \"@ember/component\"], function (_exports, _object, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    selectLeadShortName: null,\n    init() {\n      this._super(...arguments);\n      let property = \"invoiceType\";\n      if (this.sweep) {\n        property = \"billingSweepInvoiceType\";\n      }\n      if (this.get(`lead.${property}`)) {\n        // The lead already has a type set\n        this.set(\"selectLeadShortName\", this.get(`lead.${property}`));\n      }\n    },\n    filteredConversionTypes: (0, _object.computed)(\"conversionTypes\", \"firmSettings\", \"isLocked\", \"lead\", \"sweep\", function () {\n      const {\n        lead,\n        conversionTypes,\n        sweep\n      } = this;\n      const firmSettings = this?.firmSettings || [];\n\n      // conversion group to use as fallback if lead.conversionTypeAtReferralDate is invalid or blank\n      const practiceAreaConversionGroup = firmSettings[lead.practiceArea] ? firmSettings[lead.practiceArea].conversionGroup : \"\";\n\n      // use the lead conversion group if set, otherwise fallback to current practice area group\n      const groupNameFilter = lead.conversionTypeAtReferralDate ? lead.conversionTypeAtReferralDate : practiceAreaConversionGroup;\n      const filteredConversionTypes = conversionTypes.filter(type => {\n        const isAllowedPracticeArea = type.allowedPracticeArea === lead.practiceArea;\n        const isAllowedBillingType = lead.billingFlag === type.requiredBillingFlags || !type.requiredBillingFlags;\n        const isAllowedGroupName = type.groupName === groupNameFilter;\n        const isAllowedForReferralType = type.allowedForInvites && lead.referral === \"invitation\" || type.allowedForWebsites && lead.referral !== \"invitation\";\n        const shouldShowBasedOnDollarAmount = !sweep || type.invoiceAmountCents > 0;\n        return isAllowedPracticeArea && isAllowedBillingType && isAllowedGroupName && isAllowedForReferralType && shouldShowBasedOnDollarAmount;\n      });\n      if (sweep) {\n        filteredConversionTypes.push({\n          shortName: \"Confirm\",\n          longName: \"Still has not become a client\",\n          fontawesome: \"times-circle\",\n          description: \"This client has not returned to engage our firm\"\n        });\n      }\n      if (this.isLocked) {\n        // add \"Unknown/Free\" as some clients can be marked as unknown when locked\n        filteredConversionTypes.push({\n          shortName: \"Unknown\",\n          longName: \"Free/Unknown\",\n          fontawesome: \"info-circle\",\n          description: \"unknown client status\"\n        });\n      }\n      return filteredConversionTypes;\n    }),\n    isLocked: (0, _object.computed)(\"confirmationComplete\", \"lead\", \"sweep\", function () {\n      const isSweep = this.sweep;\n      if (this.confirmationComplete) {\n        // Submit has been clicked, lets mark all clients with an invoice type as locked\n        const invoiceTypeProperty = isSweep ? \"billingSweepInvoiceType\" : \"invoiceType\";\n        return this.get(`lead.${invoiceTypeProperty}`);\n      }\n      const property = isSweep ? \"billingSweepCompleted\" : \"billingLockedDate\";\n      return this.get(`lead.${property}`);\n    }),\n    selectedLeadType: (0, _object.computed)(\"filteredConversionTypes\", \"selectLeadShortName\", function () {\n      return this.filteredConversionTypes.find(e => e.shortName === this.selectLeadShortName);\n    }),\n    onLeadTypeChanged: (0, _object.observer)(\"selectLeadShortName\", function () {\n      this.setInvoiceType(this.lead, this.selectedLeadType);\n    }),\n    actions: {\n      removeLeadType() {\n        // If we send the current leadType status, we will unset it.\n        this.setInvoiceType(this.lead, this.selectedLeadType);\n        this.set(\"selectLeadShortName\", null);\n      }\n    }\n  });\n});","define(\"settify-mvp/components/blueprint-display\", [\"exports\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @blueprint}}\n    {{! MVPTODO: <p>\n      <img src=\"/assets/images/fileicons/word.png\" style=\"width: 24px; height:24px; margin-right: 5px; \"/> Download in Word\n    </p> }}\n  \n    <div id=\"condensed-blueprint-output\" class=\"condensed-summary settify-for-everything blueprint-output\">\n      {{#if @blueprint.icon}}\n        <LineIcon @src={{sum \"https://cdn.settify.com.au/icons/\" (de-fingerprint @blueprint.icon)}} />\n      {{/if}}\n  \n      <h1>\n        {{#if (defined @blueprint.displayIf excludeEmptyObjects=true)}}\n          <span class=\"conditional\"><i class=\"fal fa-code-branch tight\" />Only shown if relevant:</span>\n        {{/if}}\n        {{parse-text (or @blueprint.title \"Unnamed chapter\") touch=@clientRecord.touch clientRecord=@clientRecord blueprintMode=true}}\n      </h1>\n      <ol>\n        {{#each @blueprint.chapters as |chapter|}}\n          {{#unless chapter.deleted}}\n            <li>\n              <h2>\n                {{#if (defined chapter.displayIf excludeEmptyObjects=true)}}\n                  <span class=\"conditional\"><i class=\"fal fa-code-branch tight\" />Only shown if relevant:</span>\n                {{/if}}\n                {{parse-text (or chapter.title \"Unnamed chapter\") touch=@clientRecord.touch clientRecord=@clientRecord blueprintMode=true}}\n              </h2>\n  \n              <ol>\n                {{#each chapter.pages as |page|}}\n                  {{#unless page.deleted}}\n                    <li>\n                      <h3>\n                        {{#if (defined page.displayIf excludeEmptyObjects=true)}}\n                          <span class=\"conditional\"><i class=\"fal fa-code-branch tight\" />Only shown if relevant:</span>\n                        {{/if}}\n                        {{parse-text (or page.title \"Unnamed chapter\") touch=@clientRecord.touch clientRecord=@clientRecord blueprintMode=true}}\n                      </h3>\n  \n                      {{#each page.questions as |q|}}\n                        {{#unless q.deleted}}\n                          <SettifyInputSwitcher\n                            @question={{q}}\n                            @clientRecord={{@clientRecord}}\n                            @context={{hash induction=@induction.id chapter=chapter.id page=page.id repeat=@induction.repeatToken}}\n                            @blueprintMode={{true}}\n                          />\n                        {{/unless}}\n                      {{/each}}\n                    </li>\n                  {{/unless}}\n                {{/each}}\n              </ol>\n            </li>\n          {{/unless}}\n        {{/each}}\n      </ol>\n    </div>\n  {{/if}}\n  {{#if @onFinishedRendering}}\n    <CallbackToken @callback={{@onFinishedRendering}} />\n  {{/if}}\n  */\n  {\n    \"id\": \"5kHxWLEc\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"\\\\n  \\\"],[10,0],[14,1,\\\"condensed-blueprint-output\\\"],[14,0,\\\"condensed-summary settify-for-everything blueprint-output\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"icon\\\"]],[[[1,\\\"      \\\"],[8,[39,2],null,[[\\\"@src\\\"],[[28,[37,3],[\\\"https://cdn.settify.com.au/icons/\\\",[28,[37,4],[[30,1,[\\\"icon\\\"]]],null]],null]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n    \\\"],[10,\\\"h1\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,6],[[30,1,[\\\"displayIf\\\"]]],[[\\\"excludeEmptyObjects\\\"],[true]]],[[[1,\\\"        \\\"],[10,1],[14,0,\\\"conditional\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-code-branch tight\\\"],[12],[13],[1,\\\"Only shown if relevant:\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[1,[28,[35,9],[[28,[37,10],[[30,1,[\\\"title\\\"]],\\\"Unnamed chapter\\\"],null]],[[\\\"touch\\\",\\\"clientRecord\\\",\\\"blueprintMode\\\"],[[30,2,[\\\"touch\\\"]],[30,2],true]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"ol\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,13],[[28,[37,13],[[30,1,[\\\"chapters\\\"]]],null]],null],null,[[[41,[51,[30,3,[\\\"deleted\\\"]]],[[[1,\\\"          \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"h2\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,6],[[30,3,[\\\"displayIf\\\"]]],[[\\\"excludeEmptyObjects\\\"],[true]]],[[[1,\\\"                \\\"],[10,1],[14,0,\\\"conditional\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-code-branch tight\\\"],[12],[13],[1,\\\"Only shown if relevant:\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[1,[28,[35,9],[[28,[37,10],[[30,3,[\\\"title\\\"]],\\\"Unnamed chapter\\\"],null]],[[\\\"touch\\\",\\\"clientRecord\\\",\\\"blueprintMode\\\"],[[30,2,[\\\"touch\\\"]],[30,2],true]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\\n            \\\"],[10,\\\"ol\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,13],[[28,[37,13],[[30,3,[\\\"pages\\\"]]],null]],null],null,[[[41,[51,[30,4,[\\\"deleted\\\"]]],[[[1,\\\"                  \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"h3\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,6],[[30,4,[\\\"displayIf\\\"]]],[[\\\"excludeEmptyObjects\\\"],[true]]],[[[1,\\\"                        \\\"],[10,1],[14,0,\\\"conditional\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-code-branch tight\\\"],[12],[13],[1,\\\"Only shown if relevant:\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                      \\\"],[1,[28,[35,9],[[28,[37,10],[[30,4,[\\\"title\\\"]],\\\"Unnamed chapter\\\"],null]],[[\\\"touch\\\",\\\"clientRecord\\\",\\\"blueprintMode\\\"],[[30,2,[\\\"touch\\\"]],[30,2],true]]]],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[42,[28,[37,13],[[28,[37,13],[[30,4,[\\\"questions\\\"]]],null]],null],null,[[[41,[51,[30,5,[\\\"deleted\\\"]]],[[[1,\\\"                        \\\"],[8,[39,18],null,[[\\\"@question\\\",\\\"@clientRecord\\\",\\\"@context\\\",\\\"@blueprintMode\\\"],[[30,5],[30,2],[28,[37,19],null,[[\\\"induction\\\",\\\"chapter\\\",\\\"page\\\",\\\"repeat\\\"],[[30,6,[\\\"id\\\"]],[30,3,[\\\"id\\\"]],[30,4,[\\\"id\\\"]],[30,6,[\\\"repeatToken\\\"]]]]],true]],null],[1,\\\"\\\\n\\\"]],[]],null]],[5]],null],[1,\\\"                  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[4]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[3]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,7],[[[1,\\\"  \\\"],[8,[39,20],null,[[\\\"@callback\\\"],[[30,7]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@blueprint\\\",\\\"@clientRecord\\\",\\\"chapter\\\",\\\"page\\\",\\\"q\\\",\\\"@induction\\\",\\\"@onFinishedRendering\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"line-icon\\\",\\\"sum\\\",\\\"de-fingerprint\\\",\\\"h1\\\",\\\"defined\\\",\\\"span\\\",\\\"i\\\",\\\"parse-text\\\",\\\"or\\\",\\\"ol\\\",\\\"each\\\",\\\"-track-array\\\",\\\"unless\\\",\\\"li\\\",\\\"h2\\\",\\\"h3\\\",\\\"settify-input-switcher\\\",\\\"hash\\\",\\\"callback-token\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/blueprint-display.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({}));\n});","define(\"settify-mvp/components/bs-accordion\", [\"exports\", \"ember-bootstrap/components/bs-accordion\"], function (_exports, _bsAccordion) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _bsAccordion.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-accordion\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-accordion/item\", [\"exports\", \"ember-bootstrap/components/bs-accordion/item\"], function (_exports, _item) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _item.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-accordion/item\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-accordion/item/body\", [\"exports\", \"ember-bootstrap/components/bs-accordion/item/body\"], function (_exports, _body) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _body.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-accordion/item/body\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-accordion/item/title\", [\"exports\", \"ember-bootstrap/components/bs-accordion/item/title\"], function (_exports, _title) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _title.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-accordion/item/title\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-alert\", [\"exports\", \"ember-bootstrap/components/bs-alert\"], function (_exports, _bsAlert) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _bsAlert.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-alert\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-button-group\", [\"exports\", \"ember-bootstrap/components/bs-button-group\"], function (_exports, _bsButtonGroup) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _bsButtonGroup.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-button-group\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-button-group/button\", [\"exports\", \"ember-bootstrap/components/bs-button-group/button\"], function (_exports, _button) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _button.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-button-group/button\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-button\", [\"exports\", \"ember-bootstrap/components/bs-button\"], function (_exports, _bsButton) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _bsButton.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-button\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-carousel\", [\"exports\", \"ember-bootstrap/components/bs-carousel\"], function (_exports, _bsCarousel) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _bsCarousel.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-carousel\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-carousel/slide\", [\"exports\", \"ember-bootstrap/components/bs-carousel/slide\"], function (_exports, _slide) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _slide.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-carousel/slide\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-collapse\", [\"exports\", \"ember-bootstrap/components/bs-collapse\"], function (_exports, _bsCollapse) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _bsCollapse.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-collapse\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-dropdown\", [\"exports\", \"ember-bootstrap/components/bs-dropdown\"], function (_exports, _bsDropdown) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _bsDropdown.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-dropdown\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-dropdown/button\", [\"exports\", \"ember-bootstrap/components/bs-dropdown/button\"], function (_exports, _button) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _button.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-dropdown/button\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-dropdown/menu\", [\"exports\", \"ember-bootstrap/components/bs-dropdown/menu\"], function (_exports, _menu) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _menu.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-dropdown/menu\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-dropdown/menu/divider\", [\"exports\", \"ember-bootstrap/components/bs-dropdown/menu/divider\"], function (_exports, _divider) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _divider.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-dropdown/menu/divider\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-dropdown/menu/item\", [\"exports\", \"ember-bootstrap/components/bs-dropdown/menu/item\"], function (_exports, _item) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _item.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-dropdown/menu/item\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-dropdown/toggle\", [\"exports\", \"ember-bootstrap/components/bs-dropdown/toggle\"], function (_exports, _toggle) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _toggle.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-dropdown/toggle\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-form\", [\"exports\", \"ember-bootstrap/components/bs-form\"], function (_exports, _bsForm) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _bsForm.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-form\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-form/element\", [\"exports\", \"ember-bootstrap/components/bs-form/element\"], function (_exports, _element) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _element.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-form/element\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-form/element/control\", [\"exports\", \"ember-bootstrap/components/bs-form/element/control\"], function (_exports, _control) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _control.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-form/element/control\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-form/element/control/checkbox\", [\"exports\", \"ember-bootstrap/components/bs-form/element/control/checkbox\"], function (_exports, _checkbox) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _checkbox.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-form/element/control/checkbox\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-form/element/control/input\", [\"exports\", \"ember-bootstrap/components/bs-form/element/control/input\"], function (_exports, _input) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _input.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-form/element/control/input\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-form/element/control/radio\", [\"exports\", \"ember-bootstrap/components/bs-form/element/control/radio\"], function (_exports, _radio) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _radio.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-form/element/control/radio\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-form/element/control/switch\", [\"exports\", \"ember-bootstrap/components/bs-form/element/control/switch\"], function (_exports, _switch) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _switch.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-form/element/control/switch\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-form/element/control/textarea\", [\"exports\", \"ember-bootstrap/components/bs-form/element/control/textarea\"], function (_exports, _textarea) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _textarea.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-form/element/control/textarea\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-form/element/errors\", [\"exports\", \"ember-bootstrap/components/bs-form/element/errors\"], function (_exports, _errors) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _errors.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-form/element/errors\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-form/element/feedback-icon\", [\"exports\", \"ember-bootstrap/components/bs-form/element/feedback-icon\"], function (_exports, _feedbackIcon) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _feedbackIcon.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-form/element/feedback-icon\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-form/element/help-text\", [\"exports\", \"ember-bootstrap/components/bs-form/element/help-text\"], function (_exports, _helpText) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _helpText.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-form/element/help-text\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-form/element/label\", [\"exports\", \"ember-bootstrap/components/bs-form/element/label\"], function (_exports, _label) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _label.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-form/element/label\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-form/element/layout/horizontal\", [\"exports\", \"ember-bootstrap/components/bs-form/element/layout/horizontal\"], function (_exports, _horizontal) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _horizontal.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-form/element/layout/horizontal\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-form/element/layout/horizontal/checkbox\", [\"exports\", \"ember-bootstrap/components/bs-form/element/layout/horizontal/checkbox\"], function (_exports, _checkbox) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _checkbox.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-form/element/layout/horizontal/checkbox\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-form/element/layout/inline\", [\"exports\", \"ember-bootstrap/components/bs-form/element/layout/inline\"], function (_exports, _inline) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _inline.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-form/element/layout/inline\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-form/element/layout/inline/checkbox\", [\"exports\", \"ember-bootstrap/components/bs-form/element/layout/inline/checkbox\"], function (_exports, _checkbox) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _checkbox.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-form/element/layout/inline/checkbox\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-form/element/layout/vertical\", [\"exports\", \"ember-bootstrap/components/bs-form/element/layout/vertical\"], function (_exports, _vertical) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _vertical.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-form/element/layout/vertical\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-form/element/layout/vertical/checkbox\", [\"exports\", \"ember-bootstrap/components/bs-form/element/layout/vertical/checkbox\"], function (_exports, _checkbox) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _checkbox.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-form/element/layout/vertical/checkbox\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-form/element/legend\", [\"exports\", \"ember-bootstrap/components/bs-form/element/legend\"], function (_exports, _legend) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _legend.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-form/element/legend\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-link-to\", [\"exports\", \"ember-bootstrap/components/bs-link-to\"], function (_exports, _bsLinkTo) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _bsLinkTo.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-link-to\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-modal-simple\", [\"exports\", \"ember-bootstrap/components/bs-modal-simple\"], function (_exports, _bsModalSimple) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _bsModalSimple.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-modal-simple\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-modal\", [\"exports\", \"ember-bootstrap/components/bs-modal\"], function (_exports, _bsModal) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _bsModal.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-modal\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-modal/body\", [\"exports\", \"ember-bootstrap/components/bs-modal/body\"], function (_exports, _body) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _body.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-modal/body\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-modal/dialog\", [\"exports\", \"ember-bootstrap/components/bs-modal/dialog\"], function (_exports, _dialog) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _dialog.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-modal/dialog\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-modal/footer\", [\"exports\", \"ember-bootstrap/components/bs-modal/footer\"], function (_exports, _footer) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _footer.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-modal/footer\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-modal/header\", [\"exports\", \"ember-bootstrap/components/bs-modal/header\"], function (_exports, _header) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _header.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-modal/header\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-modal/header/close\", [\"exports\", \"ember-bootstrap/components/bs-modal/header/close\"], function (_exports, _close) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _close.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-modal/header/close\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-modal/header/title\", [\"exports\", \"ember-bootstrap/components/bs-modal/header/title\"], function (_exports, _title) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _title.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-modal/header/title\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-nav\", [\"exports\", \"ember-bootstrap/components/bs-nav\"], function (_exports, _bsNav) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _bsNav.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-nav\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-nav/item\", [\"exports\", \"ember-bootstrap/components/bs-nav/item\"], function (_exports, _item) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _item.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-nav/item\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-navbar\", [\"exports\", \"ember-bootstrap/components/bs-navbar\"], function (_exports, _bsNavbar) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _bsNavbar.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-navbar\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-navbar/content\", [\"exports\", \"ember-bootstrap/components/bs-navbar/content\"], function (_exports, _content) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _content.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-navbar/content\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-navbar/link-to\", [\"exports\", \"ember-bootstrap/components/bs-navbar/link-to\"], function (_exports, _linkTo) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _linkTo.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-navbar/link-to\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-navbar/nav\", [\"exports\", \"ember-bootstrap/components/bs-navbar/nav\"], function (_exports, _nav) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _nav.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-navbar/nav\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-navbar/toggle\", [\"exports\", \"ember-bootstrap/components/bs-navbar/toggle\"], function (_exports, _toggle) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _toggle.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-navbar/toggle\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-popover\", [\"exports\", \"ember-bootstrap/components/bs-popover\"], function (_exports, _bsPopover) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _bsPopover.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-popover\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-popover/element\", [\"exports\", \"ember-bootstrap/components/bs-popover/element\"], function (_exports, _element) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _element.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-popover/element\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-progress\", [\"exports\", \"ember-bootstrap/components/bs-progress\"], function (_exports, _bsProgress) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _bsProgress.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-progress\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-progress/bar\", [\"exports\", \"ember-bootstrap/components/bs-progress/bar\"], function (_exports, _bar) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _bar.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-progress/bar\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-tab\", [\"exports\", \"ember-bootstrap/components/bs-tab\"], function (_exports, _bsTab) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _bsTab.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-tab\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-tab/pane\", [\"exports\", \"ember-bootstrap/components/bs-tab/pane\"], function (_exports, _pane) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _pane.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-tab/pane\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-tooltip\", [\"exports\", \"ember-bootstrap/components/bs-tooltip\"], function (_exports, _bsTooltip) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _bsTooltip.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-tooltip\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/bs-tooltip/element\", [\"exports\", \"ember-bootstrap/components/bs-tooltip/element\"], function (_exports, _element) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _element.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/components/bs-tooltip/element\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/callback-token\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{yield}}\n  \n  */\n  {\n    \"id\": \"xwQSirW8\",\n    \"block\": \"[[[18,1,null],[1,\\\"\\\\n\\\"]],[\\\"&default\\\"],false,[\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/callback-token.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({\n    tagName: \"\",\n    didInsertElement() {\n      this._super(...arguments);\n      if (typeof this.callback === \"function\") {\n        this.callback();\n      }\n    },\n    onModelChanged: (0, _object.observer)(\"model\", function () {\n      if (typeof this.callback === \"function\") {\n        this.callback();\n      }\n    })\n  }));\n});","define(\"settify-mvp/components/catalytic-feedback-widget\", [\"exports\", \"@ember/component\", \"@ember/utils\", \"@ember/object\", \"@ember/service\", \"@ember/template-factory\"], function (_exports, _component, _utils, _object, _service, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/utils\",0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! Don't display the widget on the admin page }}\n  {{#unless (contains this.firm.id \"999999999\")}}\n    <div>\n      <LiquidIf @predicate={{this.displayCatalyticFeedbackWidget}}>\n        {{#if (eq @widgetType \"box\")}}\n          <div class=\"feedback-box\">\n            {{#if (eq @feedbackType \"client\")}}\n              {{#if @skipped}}\n                <b>As you've just skipped a chapter, we thought we'd check to see how we're going. Are you finding this system great?</b><br />\n              {{else}}\n                <b>\n                  Do you think this system is great?\n                </b><br />\n              {{/if}}\n              <RadioButtons @text=\"Yes\" @value={{true}} @model={{@client.catalyticFeedbackAnswers.client.positiveFeedback}} />\n              <RadioButtons @text=\"No\" @value={{false}} @model={{@client.catalyticFeedbackAnswers.client.positiveFeedback}} />\n  \n              <LiquidIf @predicate={{defined @client.catalyticFeedbackAnswers.client.positiveFeedback}}>\n                <LiquidIf @predicate={{@client.catalyticFeedbackAnswers.client.positiveFeedback}}>\n                  <b>Is there anything you’d like to single out, or anything we could do to be even better?</b><br />\n                </LiquidIf>\n                <LiquidIf @predicate={{not @client.catalyticFeedbackAnswers.client.positiveFeedback}}>\n                  <b>Please tell us why</b><br />\n                </LiquidIf>\n  \n                <SettifyTextarea @model={{@client.catalyticFeedbackAnswers.client.moreInfo}} />\n              </LiquidIf>\n  \n            {{else if (eq @feedbackType \"lawyer\")}}\n              <b>Was Settify useful in this matter?</b><br />\n              <RadioButtons @text=\"Yes\" @value={{true}} @model={{@client.catalyticFeedbackAnswers.lawyer.positiveFeedback}} />\n              <RadioButtons @text=\"No\" @value={{false}} @model={{@client.catalyticFeedbackAnswers.lawyer.positiveFeedback}} />\n  \n              <LiquidIf @predicate={{defined @client.catalyticFeedbackAnswers.lawyer.positiveFeedback}}>\n                <LiquidIf @predicate={{@client.catalyticFeedbackAnswers.lawyer.positiveFeedback}}>\n                  <b>Is there anything you’d like to single out, or anything we could do to be even more useful?</b><br />\n                </LiquidIf>\n                <LiquidIf @predicate={{not @client.catalyticFeedbackAnswers.lawyer.positiveFeedback}}>\n                  <b>Please tell us why</b><br />\n                </LiquidIf>\n  \n                <SettifyTextarea @model={{@client.catalyticFeedbackAnswers.lawyer.moreInfo}} />\n              </LiquidIf>\n            {{/if}}\n  \n            <LiquidIf @predicate={{this.submitButtonPressed}}>\n              <LoadingSpinner />\n            </LiquidIf>\n            <LiquidIf @predicate={{or @client.catalyticFeedbackAnswers.lawyer.moreInfo @client.catalyticFeedbackAnswers.client.moreInfo}}>\n  \n              <div class=\"feedback-info-box\">\n  \n                <button type=\"button\" class=\"next-button {{unless this.rowID 'disabled-button'}}\" {{action (if this.rowID \"submitFeedback\" \"nullAction\")}}>\n                  Submit answers\n                </button>\n  \n                <LiquidIf @predicate={{this.providedLocal}}>\n                  <p><i class=\"fal fa-check-circle positive\"></i>Thanks! Your feedback is really important to us.</p>\n                </LiquidIf>\n  \n              </div>\n            </LiquidIf>\n          </div>\n        {{/if}}\n      </LiquidIf>\n    </div>\n  {{/unless}}\n  */\n  {\n    \"id\": \"v45fJ8Bd\",\n    \"block\": \"[[[41,[51,[28,[37,1],[[30,0,[\\\"firm\\\",\\\"id\\\"]],\\\"999999999\\\"],null]],[[[1,\\\"  \\\"],[10,0],[12],[1,\\\"\\\\n    \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[30,0,[\\\"displayCatalyticFeedbackWidget\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[30,1],\\\"box\\\"],null],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"feedback-box\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[30,2],\\\"client\\\"],null],[[[41,[30,3],[[[1,\\\"              \\\"],[10,\\\"b\\\"],[12],[1,\\\"As you've just skipped a chapter, we thought we'd check to see how we're going. Are you finding this system great?\\\"],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"              \\\"],[10,\\\"b\\\"],[12],[1,\\\"\\\\n                Do you think this system is great?\\\\n              \\\"],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"            \\\"],[8,[39,8],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\"],[\\\"Yes\\\",true,[30,4,[\\\"catalyticFeedbackAnswers\\\",\\\"client\\\",\\\"positiveFeedback\\\"]]]],null],[1,\\\"\\\\n            \\\"],[8,[39,8],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\"],[\\\"No\\\",false,[30,4,[\\\"catalyticFeedbackAnswers\\\",\\\"client\\\",\\\"positiveFeedback\\\"]]]],null],[1,\\\"\\\\n\\\\n            \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[28,[37,9],[[30,4,[\\\"catalyticFeedbackAnswers\\\",\\\"client\\\",\\\"positiveFeedback\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[30,4,[\\\"catalyticFeedbackAnswers\\\",\\\"client\\\",\\\"positiveFeedback\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"b\\\"],[12],[1,\\\"Is there anything you’d like to single out, or anything we could do to be even better?\\\"],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n              \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[28,[37,10],[[30,4,[\\\"catalyticFeedbackAnswers\\\",\\\"client\\\",\\\"positiveFeedback\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"b\\\"],[12],[1,\\\"Please tell us why\\\"],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n\\\\n              \\\"],[8,[39,11],null,[[\\\"@model\\\"],[[30,4,[\\\"catalyticFeedbackAnswers\\\",\\\"client\\\",\\\"moreInfo\\\"]]]],null],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"]],[]],[[[41,[28,[37,5],[[30,2],\\\"lawyer\\\"],null],[[[1,\\\"            \\\"],[10,\\\"b\\\"],[12],[1,\\\"Was Settify useful in this matter?\\\"],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n            \\\"],[8,[39,8],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\"],[\\\"Yes\\\",true,[30,4,[\\\"catalyticFeedbackAnswers\\\",\\\"lawyer\\\",\\\"positiveFeedback\\\"]]]],null],[1,\\\"\\\\n            \\\"],[8,[39,8],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\"],[\\\"No\\\",false,[30,4,[\\\"catalyticFeedbackAnswers\\\",\\\"lawyer\\\",\\\"positiveFeedback\\\"]]]],null],[1,\\\"\\\\n\\\\n            \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[28,[37,9],[[30,4,[\\\"catalyticFeedbackAnswers\\\",\\\"lawyer\\\",\\\"positiveFeedback\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[30,4,[\\\"catalyticFeedbackAnswers\\\",\\\"lawyer\\\",\\\"positiveFeedback\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"b\\\"],[12],[1,\\\"Is there anything you’d like to single out, or anything we could do to be even more useful?\\\"],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n              \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[28,[37,10],[[30,4,[\\\"catalyticFeedbackAnswers\\\",\\\"lawyer\\\",\\\"positiveFeedback\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"b\\\"],[12],[1,\\\"Please tell us why\\\"],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n\\\\n              \\\"],[8,[39,11],null,[[\\\"@model\\\"],[[30,4,[\\\"catalyticFeedbackAnswers\\\",\\\"lawyer\\\",\\\"moreInfo\\\"]]]],null],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"]],[]],null]],[]]],[1,\\\"\\\\n          \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[30,0,[\\\"submitButtonPressed\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,12],null,null,null],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[28,[37,13],[[30,4,[\\\"catalyticFeedbackAnswers\\\",\\\"lawyer\\\",\\\"moreInfo\\\"]],[30,4,[\\\"catalyticFeedbackAnswers\\\",\\\"client\\\",\\\"moreInfo\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\\n            \\\"],[10,0],[14,0,\\\"feedback-info-box\\\"],[12],[1,\\\"\\\\n\\\\n              \\\"],[11,\\\"button\\\"],[16,0,[29,[\\\"next-button \\\",[52,[51,[30,0,[\\\"rowID\\\"]]],\\\"disabled-button\\\"]]]],[24,4,\\\"button\\\"],[4,[38,15],[[30,0],[52,[30,0,[\\\"rowID\\\"]],\\\"submitFeedback\\\",\\\"nullAction\\\"]],null],[12],[1,\\\"\\\\n                Submit answers\\\\n              \\\"],[13],[1,\\\"\\\\n\\\\n              \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[30,0,[\\\"providedLocal\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,2],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle positive\\\"],[12],[13],[1,\\\"Thanks! Your feedback is really important to us.\\\"],[13],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@widgetType\\\",\\\"@feedbackType\\\",\\\"@skipped\\\",\\\"@client\\\"],false,[\\\"unless\\\",\\\"contains\\\",\\\"div\\\",\\\"liquid-if\\\",\\\"if\\\",\\\"eq\\\",\\\"b\\\",\\\"br\\\",\\\"radio-buttons\\\",\\\"defined\\\",\\\"not\\\",\\\"settify-textarea\\\",\\\"loading-spinner\\\",\\\"or\\\",\\\"button\\\",\\\"action\\\",\\\"p\\\",\\\"i\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/catalytic-feedback-widget.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({\n    lambda: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    catalyticEvents: (0, _service.inject)(),\n    clientRecords: (0, _service.inject)(),\n    positiveFeedback: null,\n    rowID: null,\n    postingFeedback: null,\n    providedGlobal: false,\n    providedLocal: false,\n    postFeedbackOnFirstChange: true,\n    init() {\n      this._super(...arguments);\n\n      // We need both a local, and a saved rowID, so\n      // a. the button will update when rowID changes\n      // b. The submit answers button isn't greyed out if you provided feedback on another page\n      this.set(\"rowID\", this.get(`${this.feedbackPath}.rowID`));\n      this.set(\"providedGlobal\", this.get(`${this.feedbackPath}.rowID`));\n      this.set(\"postFeedbackOnFirstChange\", !!this.client);\n    },\n    displayCatalyticFeedbackWidget: (0, _object.computed)(\"hideIfProvided\", \"providedGlobal\", \"providedLocal\", function () {\n      if (this.hideIfProvided) {\n        // If it's a box, let's not hide it if it was answered on this page (locally)\n        return !this.providedGlobal || this.providedLocal;\n      }\n      return true;\n    }),\n    feedbackPath: (0, _object.computed)(\"feedbackType\", function () {\n      return `client.catalyticFeedbackAnswers.${this.feedbackType}`;\n    }),\n    postFeedback(submitButtonPressed = false) {\n      this.set(\"postingFeedback\", true);\n      this.set(\"submitButtonPressed\", submitButtonPressed);\n      const payload = {\n        clientID: this.get(\"client.id\"),\n        rowID: submitButtonPressed ? this.rowID : null,\n        // We only want to update a row if the text changed, not the radio button\n        feedbackType: this.feedbackType,\n        positiveFeedback: this.get(`${this.feedbackPath}.positiveFeedback`),\n        moreInfo: this.get(`${this.feedbackPath}.moreInfo`),\n        surveyLocation: this.surveyLocation,\n        firmID: this.get(\"firm.id\")\n      };\n      return this.lambda.invoke(this.get(\"lambda.saveCatalyticFeedback\"), payload).then(this.lambda.processResponse).then(data => {\n        this.set(\"postingFeedback\", false);\n        if (data.rowID > this.rowID || !this.rowID) {\n          this.set(\"rowID\", data.rowID);\n          this.set(`${this.feedbackPath}.rowID`, data.rowID);\n        }\n        this.set(\"submitButtonPressed\", false);\n        if (submitButtonPressed) {\n          // We use this to hide the feedback widget sometimes, but only want to hide it\n          // after the submit button was pressed, NOT after the radio button was ticked,\n          this.set(`${this.feedbackPath}.provided`, true);\n          // We also want to know if we provided the feedback here, or another location\n          // As we may want to hide it on later pages, but not after pressing submit\n          this.set(\"providedLocal\", true);\n        }\n      });\n    },\n    appointmentRequestedObserver: (0, _object.observer)(\"appointmentRequested\", \"client.catalyticFeedbackAnswers.client.positiveFeedback\", \"client.catalyticFeedbackAnswers.lawyer.positiveFeedback\", function () {\n      // Only post if appt requested AND there actually is feedback to post\n      if (this.appointmentRequested && !(0, _utils.isEmpty)(this.get(`${this.feedbackPath}.positiveFeedback`))) {\n        this.postFeedback(true);\n      }\n    }),\n    listenForFeedback: (0, _object.observer)(\"type\", \"client.catalyticFeedbackAnswers.client.positiveFeedback\", \"client.catalyticFeedbackAnswers.lawyer.positiveFeedback\", function () {\n      // Otherwise, when we load the client in the dropdown, we would instantly submit feedback\n      if (this.postFeedbackOnFirstChange) {\n        if (this.widgetType === \"box\" && !(0, _utils.isEmpty)(this.get(`${this.feedbackPath}.positiveFeedback`))) {\n          this.postFeedback();\n        }\n      } else {\n        // first change, let's allow posting from this observer now\n        this.set(\"postFeedbackOnFirstChange\", true);\n      }\n    }),\n    actions: {\n      submitFeedback() {\n        this.postFeedback(true);\n      },\n      submitFeedbackFromDropdown(positiveFeedback) {\n        this.set(`${this.feedbackPath}.positiveFeedback`, positiveFeedback);\n        this.postFeedback();\n      },\n      hideDropdown() {\n        this.catalyticEvents.set(\"hideDropdown\", true);\n      },\n      nullAction() {}\n    }\n  }));\n});","define(\"settify-mvp/components/cents-to-dollars\", [\"exports\", \"@ember/object\", \"@ember/component\"], function (_exports, _object, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    tagName: \"\",\n    amountInDollars: (0, _object.computed)(\"model\", function () {\n      let cents = parseInt(this.model);\n      if (cents && typeof cents === \"number\") {\n        return this.model / 100;\n      }\n      return 0;\n    })\n  });\n});","define(\"settify-mvp/components/chapter-animation\", [\"exports\", \"@ember/component\", \"@ember/template\", \"@glimmer/component\", \"@ember/template-factory\"], function (_exports, _component, _template, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template\",0,\"@glimmer/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.animationImages}}\n    <div class=\"chapter-animation  {{if this.runAnimation \"animation-playing\" \"animation-paused\"}} {{if this.line \" \" \"no-line\"}}\">\n      <table>\n        <tbody>\n          <tr>\n            <td>\n              <div class=\"bounce-container\">\n                <div class=\"text\">\n                  {{yield}}\n                </div>\n              </div>\n            </td>\n            <td>\n              {{#each this.animationImages as |image index|}}\n                <div class=\"bounce-container {{if image.lineColour \"line-colour\"}} delay{{sum index 3}} {{if (gt index 3) \"wide-screen-only\" \"\" }}\" style={{image.style}}>\n                  <img src={{if image.imageStyle \"/assets/images/transparent.png\" image.src}} alt=\"\" style={{image.imageStyle}}>\n                </div>\n              {{/each}}\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </div>\n    <span class=\"settify-animation-line delay{{or @delay 0}} {{if this.runAnimation \"animation-playing\"}}\"></span>\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"ERH9N73o\",\n    \"block\": \"[[[41,[30,0,[\\\"animationImages\\\"]],[[[1,\\\"  \\\"],[10,0],[15,0,[29,[\\\"chapter-animation  \\\",[52,[30,0,[\\\"runAnimation\\\"]],\\\"animation-playing\\\",\\\"animation-paused\\\"],\\\" \\\",[52,[30,0,[\\\"line\\\"]],\\\" \\\",\\\"no-line\\\"]]]],[12],[1,\\\"\\\\n    \\\"],[10,\\\"table\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"bounce-container\\\"],[12],[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"text\\\"],[12],[1,\\\"\\\\n                \\\"],[18,4,null],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,8],[[28,[37,8],[[30,0,[\\\"animationImages\\\"]]],null]],null],null,[[[1,\\\"              \\\"],[10,0],[15,0,[29,[\\\"bounce-container \\\",[52,[30,1,[\\\"lineColour\\\"]],\\\"line-colour\\\"],\\\" delay\\\",[28,[37,9],[[30,2],3],null],\\\" \\\",[52,[28,[37,10],[[30,2],3],null],\\\"wide-screen-only\\\",\\\"\\\"]]]],[15,5,[30,1,[\\\"style\\\"]]],[12],[1,\\\"\\\\n                \\\"],[10,\\\"img\\\"],[15,\\\"src\\\",[52,[30,1,[\\\"imageStyle\\\"]],\\\"/assets/images/transparent.png\\\",[30,1,[\\\"src\\\"]]]],[14,\\\"alt\\\",\\\"\\\"],[15,5,[30,1,[\\\"imageStyle\\\"]]],[12],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[1,2]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,1],[15,0,[29,[\\\"settify-animation-line delay\\\",[28,[37,13],[[30,3],0],null],\\\" \\\",[52,[30,0,[\\\"runAnimation\\\"]],\\\"animation-playing\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"image\\\",\\\"index\\\",\\\"@delay\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"table\\\",\\\"tbody\\\",\\\"tr\\\",\\\"td\\\",\\\"yield\\\",\\\"each\\\",\\\"-track-array\\\",\\\"sum\\\",\\\"gt\\\",\\\"img\\\",\\\"span\\\",\\\"or\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/chapter-animation.hbs\",\n    \"isStrictMode\": false\n  });\n  class ChapterAnimationComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _defineProperty(this, \"runAnimation\", true);\n      // Set to true so all images are shown\n      _defineProperty(this, \"line\", true);\n      _defineProperty(this, \"standardOffset\", -6);\n    }\n    get animationImages() {\n      const {\n        icon\n      } = this.args;\n      let retval = [];\n      if (icon) {\n        if (Array.isArray(icon)) {\n          const offset = this.args.iconOffset || this.standardOffset;\n          icon.forEach(ico => {\n            const iconOffset = ico.offset || offset;\n            if (ico.icon) {\n              retval.push({\n                src: `${ico.icon}`,\n                offset: iconOffset,\n                lineColour: true\n              });\n            }\n          });\n        } else {\n          retval = [{\n            src: `${icon}`,\n            offset: this.args.iconOffset || this.standardOffset,\n            lineColour: true\n          }];\n        }\n      }\n      for (let i = 0; i < retval.length; i++) {\n        const element = retval[i];\n        element.style = (0, _template.htmlSafe)(`top: ${element.offset}px;`);\n        if (element.lineColour && !window.document.documentMode) {\n          // window.document.documentMode checks for Internet Explorer\n          element.imageStyle = (0, _template.htmlSafe)(`-webkit-mask-image: url('${element.src}'); mask-image: url('${element.src}');`);\n        }\n      }\n      return retval;\n    }\n  }\n  _exports.default = ChapterAnimationComponent;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, ChapterAnimationComponent);\n});","define(\"settify-mvp/components/chapter-heading-from-form\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"settify-mvp/helpers/get-answers-from\", \"@ember/template-factory\"], function (_exports, _component, _component2, _getAnswersFrom, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"settify-mvp/helpers/get-answers-from\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <LiquidIf @predicate={{this.chapter}}>\n    {{#if this.chapter.icon}}\n      <LineIcon @src={{sum \"https://cdn.settify.com.au/icons/\" (de-fingerprint this.chapter.icon)}} />\n    {{/if}}\n  \n    <h1>\n      {{parse-text this.chapter.title touch=@client.touch model=this.model clientRecord=@client context=@context}}\n    </h1>\n  </LiquidIf>\n  */\n  {\n    \"id\": \"PXtahF0k\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@predicate\\\"],[[30,0,[\\\"chapter\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"chapter\\\",\\\"icon\\\"]],[[[1,\\\"    \\\"],[8,[39,2],null,[[\\\"@src\\\"],[[28,[37,3],[\\\"https://cdn.settify.com.au/icons/\\\",[28,[37,4],[[30,0,[\\\"chapter\\\",\\\"icon\\\"]]],null]],null]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[10,\\\"h1\\\"],[12],[1,\\\"\\\\n    \\\"],[1,[28,[35,6],[[30,0,[\\\"chapter\\\",\\\"title\\\"]]],[[\\\"touch\\\",\\\"model\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,1,[\\\"touch\\\"]],[30,0,[\\\"model\\\"]],[30,1],[30,2]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"@client\\\",\\\"@context\\\"],false,[\\\"liquid-if\\\",\\\"if\\\",\\\"line-icon\\\",\\\"sum\\\",\\\"de-fingerprint\\\",\\\"h1\\\",\\\"parse-text\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/chapter-heading-from-form.hbs\",\n    \"isStrictMode\": false\n  });\n  class ChapterHeadingFromFormComponent extends _component2.default {\n    get chapter() {\n      return this.args.chapter ?? this.args.induction.chapters.find(c => c.id === this.args.context.chapter);\n    }\n    get model() {\n      // If no model was passed down we need to go get right answers object\n      return this.args.model ?? (0, _getAnswersFrom.getAnswersFrom)([], {\n        client: this.client,\n        induction: this.args.context.induction,\n        chapter: this.args.context.chapter,\n        page: this.args.context.page,\n        answersLocation: this.args.context.answersLocation,\n        repeatToken: this.args.context.repeat\n      });\n    }\n  }\n  _exports.default = ChapterHeadingFromFormComponent;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, ChapterHeadingFromFormComponent);\n});","define(\"settify-mvp/components/check-box-list\", [\"exports\", \"@ember/component\", \"@ember/object\", \"settify-mvp/mixins/settify-input-mixin\", \"settify-mvp/utils/format-item-label\", \"settify-mvp/utils/is-empty-object-checker\", \"settify-mvp/mixins/get-source-list\", \"@ember/template-factory\"], function (_exports, _component, _object, _settifyInputMixin, _formatItemLabel, _isEmptyObjectChecker, _getSourceList, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/component\",0,\"settify-mvp/mixins/settify-input-mixin\",0,\"settify-mvp/utils/format-item-label\",0,\"settify-mvp/utils/is-empty-object-checker\",0,\"settify-mvp/mixins/get-source-list\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @documentsOnly}}\n    {{! We only want to check for documents uploaded }}\n    {{#each this.checkboxList as |item|}}\n      <LiquidIf @predicate={{and (get item.source @checkboxProperty) @content}}>\n        {{#each @content as |c|}}\n          <SettifyInputSwitcher\n            @question={{c}}\n            @context={{@context}}\n            @clientRecord={{@clientRecord}}\n            @model={{item.source}}\n            @displayOnly={{@displayOnly}}\n            @documentsOnly={{@documentsOnly}}\n            @notSureButton={{@notSureButton}}\n          />\n        {{/each}}\n      </LiquidIf>\n    {{/each}}\n  {{else}}\n    <p>\n      {{#if (non-empty-string @label)}}\n        <span class={{if (and @required (not @hasContent)) \"can-highlight\"}}>\n          {{@label}}\n          {{#if @required}}\n            <span class=\"required-field-marker {{if @hasContent 'required-field-provided'}}\"></span>\n          {{/if}}\n          <HelpTextIcon @helpText={{@helpText}} @displayOnly={{@displayOnly}} @lawyerName={{@clientRecord.helpTextIconLawyerName}} />\n          {{#if @displayOnly}}\n            <br />\n          {{/if}}\n        </span>\n      {{/if}}\n  \n      <LiquidIf @predicate={{this.checkboxList}}>\n        {{#if this.emptyCheckboxList}}\n          No items were selected\n        {{else}}\n          {{#each this.checkboxList as |item|}}\n            <CheckBox\n              @disabled={{@readOnly}}\n              @model={{get item.source @checkboxProperty}}\n              @text={{or item.label \"No name provided\"}}\n              @displayOnly={{@displayOnly}}\n              @onChange={{@onChange}}\n            />\n            <LiquidIf @predicate={{and (get item.source @checkboxProperty) @content}}>\n              <div class=\"checkbox-content\">\n                {{#each @content as |c|}}\n                  <SettifyInputSwitcher @question={{c}} @context={{@context}} @clientRecord={{@clientRecord}} @model={{item.source}} @displayOnly={{@displayOnly}} />\n                {{/each}}\n              </div>\n            </LiquidIf>\n          {{/each}}\n        {{/if}}\n      </LiquidIf>\n      <LiquidIf @predicate={{not this.checkboxList}}>\n        There are currently no items in this list\n      </LiquidIf>\n    </p>\n  {{/if}}\n  */\n  {\n    \"id\": \"xwn8+Mt5\",\n    \"block\": \"[[[41,[30,1],[[[42,[28,[37,2],[[28,[37,2],[[30,0,[\\\"checkboxList\\\"]]],null]],null],null,[[[1,\\\"    \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[28,[37,4],[[28,[37,5],[[30,2,[\\\"source\\\"]],[30,3]],null],[30,4]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,2],[[28,[37,2],[[30,4]],null]],null],null,[[[1,\\\"        \\\"],[8,[39,6],null,[[\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@documentsOnly\\\",\\\"@notSureButton\\\"],[[30,5],[30,6],[30,7],[30,2,[\\\"source\\\"]],[30,8],[30,1],[30,9]]],null],[1,\\\"\\\\n\\\"]],[5]],null],[1,\\\"    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[2]],null]],[]],[[[1,\\\"  \\\"],[10,2],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,8],[[30,10]],null],[[[1,\\\"      \\\"],[10,1],[15,0,[52,[28,[37,4],[[30,11],[28,[37,10],[[30,12]],null]],null],\\\"can-highlight\\\"]],[12],[1,\\\"\\\\n        \\\"],[1,[30,10]],[1,\\\"\\\\n\\\"],[41,[30,11],[[[1,\\\"          \\\"],[10,1],[15,0,[29,[\\\"required-field-marker \\\",[52,[30,12],\\\"required-field-provided\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[8,[39,11],null,[[\\\"@helpText\\\",\\\"@displayOnly\\\",\\\"@lawyerName\\\"],[[30,13],[30,8],[30,7,[\\\"helpTextIconLawyerName\\\"]]]],null],[1,\\\"\\\\n\\\"],[41,[30,8],[[[1,\\\"          \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n    \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[30,0,[\\\"checkboxList\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"emptyCheckboxList\\\"]],[[[1,\\\"        No items were selected\\\\n\\\"]],[]],[[[42,[28,[37,2],[[28,[37,2],[[30,0,[\\\"checkboxList\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[8,[39,13],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\",\\\"@displayOnly\\\",\\\"@onChange\\\"],[[30,15],[28,[37,5],[[30,14,[\\\"source\\\"]],[30,3]],null],[28,[37,14],[[30,14,[\\\"label\\\"]],\\\"No name provided\\\"],null],[30,8],[30,16]]],null],[1,\\\"\\\\n          \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[28,[37,4],[[28,[37,5],[[30,14,[\\\"source\\\"]],[30,3]],null],[30,4]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"checkbox-content\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,2],[[28,[37,2],[[30,4]],null]],null],null,[[[1,\\\"                \\\"],[8,[39,6],null,[[\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@displayOnly\\\"],[[30,17],[30,6],[30,7],[30,14,[\\\"source\\\"]],[30,8]]],null],[1,\\\"\\\\n\\\"]],[17]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[14]],null]],[]]],[1,\\\"    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[28,[37,10],[[30,0,[\\\"checkboxList\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      There are currently no items in this list\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[\\\"@documentsOnly\\\",\\\"item\\\",\\\"@checkboxProperty\\\",\\\"@content\\\",\\\"c\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@displayOnly\\\",\\\"@notSureButton\\\",\\\"@label\\\",\\\"@required\\\",\\\"@hasContent\\\",\\\"@helpText\\\",\\\"item\\\",\\\"@readOnly\\\",\\\"@onChange\\\",\\\"c\\\"],false,[\\\"if\\\",\\\"each\\\",\\\"-track-array\\\",\\\"liquid-if\\\",\\\"and\\\",\\\"get\\\",\\\"settify-input-switcher\\\",\\\"p\\\",\\\"non-empty-string\\\",\\\"span\\\",\\\"not\\\",\\\"help-text-icon\\\",\\\"br\\\",\\\"check-box\\\",\\\"or\\\",\\\"div\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/check-box-list.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend(_settifyInputMixin.default, _getSourceList.default, {\n    init() {\n      this._super();\n      this.buildCheckboxList();\n      if (this.displayOnly && this.checkboxList && this.get(\"checkboxList.length\")) {\n        // Check if the checkboxList is empty by checking each items checkboxProperty value\n        const emptyList = this.checkboxList.every(item => !item.source[this.checkboxProperty]);\n        this.set(\"emptyCheckboxList\", emptyList);\n      }\n    },\n    buildCheckboxList() {\n      // build the full list to select from\n      const checkboxList = [];\n      let sourceList = this.getSourceListAsArray();\n\n      // Remove any duplicates\n      sourceList = sourceList.filter((e, index, array) => {\n        return array.findIndex(t => t.id === e.id) === index;\n      });\n\n      // Create a label to use for each checkbox\n      for (let i = 0; i < sourceList.length; i++) {\n        const element = sourceList[i];\n        if (!(0, _isEmptyObjectChecker.default)(element)) {\n          checkboxList.push(this.buildItem(element));\n        }\n      }\n      this.set(\"checkboxList\", checkboxList);\n    },\n    buildItem(item) {\n      return {\n        label: (0, _formatItemLabel.default)(item, this.itemLabelFormat),\n        source: item\n      };\n    },\n    refreshCheckboxList() {\n      // rebuild the labels of the list\n      for (let i = 0; this?.checkboxList && i < this.checkboxList?.length; i++) {\n        const element = this.checkboxList[i];\n        const builtItem = this.buildItem(element.source);\n        if (builtItem.label !== element.label) {\n          (0, _object.set)(element, \"label\", builtItem.label);\n        }\n      }\n    }\n  }));\n});","define(\"settify-mvp/components/check-box\", [\"exports\", \"@ember/component\", \"@ember/runloop\", \"@ember/object\", \"settify-mvp/mixins/settify-input-mixin\", \"@ember/template-factory\"], function (_exports, _component, _runloop, _object, _settifyInputMixin, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/component\",0,\"settify-mvp/mixins/settify-input-mixin\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @displayOnly}}\n    {{#if @model}}\n      <div>\n        {{#unless @hideIcon}}\n          <i class=\"fal {{or @summaryIconIfChecked \"fa-check-circle\"}}\" />\n        {{/unless}}\n        {{#if @text}}\n          {{@text}}\n          {{~#if @hideIcon~}}\n            {{possible-colon displayOnly=@displayOnly title=@text}} Yes\n          {{~/if~}}\n        {{/if}}\n        {{yield}}\n        <br>\n      </div>\n    {{else if @required}}\n      <RequiredField />\n    {{/if}}\n  {{else}}\n    <div class=\"settify-checkbox {{if (and @required (not @model)) \"can-highlight\"}}\" data-checkbox={{@name}}>\n      <Input @type=\"checkbox\" name={{@name}} id={{sum \"settifycheckbox\" this.uid}} @checked={{@model}} class={{@class}} disabled={{@disabled}} />\n      <label for={{sum \"settifycheckbox\" this.uid}} class=\"{{@class}} {{if @disabled \"disabled\"}}\">\n        {{#if (eq @symbolType \"refresh\")}}\n          <span class=\"settify-checkbox-svg\">\n            <svg viewBox=\"0 0 314.154 314.154\" class={{@refreshClass}}>\n              <path d=\"M307.475,141.686c-6.893-4.598-16.207-2.736-20.802,4.157l-0.446,0.669c-5.426-74.107-67.45-132.745-142.918-132.745\n              C64.288,13.768,0,78.056,0,157.077s64.288,143.309,143.309,143.309c11.046,0,20-8.954,20-20s-8.954-20-20-20\n              C86.344,260.385,40,214.041,40,157.077S86.344,53.768,143.309,53.768c52.798,0,96.465,39.815,102.571,90.996\n              c-4.813-5.991-13.486-7.422-20-3.078c-6.893,4.596-8.754,13.91-4.158,20.802l29.702,44.541c3.505,5.256,9.208,8.394,15.255,8.394\n              c6.047,0,11.749-3.139,15.252-8.394l29.702-44.541C316.228,155.595,314.367,146.282,307.475,141.686z\"/>\n            </svg>\n          </span>\n        {{else}}\n          <span class=\"settify-checkbox-svg\">\n            <svg viewbox=\"0 0 12 10\">\n              <polyline points=\"1.5 6 4.5 9 10.5 1\"></polyline>\n            </svg>\n          </span>\n        {{/if}}\n        {{#if @text}}\n          {{@text}}\n        {{/if}}\n        {{yield}}\n        {{#if @required}}\n          <span class=\"required-field-marker {{if @model \"required-field-provided\"}}\"></span>\n        {{/if}}\n        <HelpTextIcon @helpText={{@helpText}} @displayOnly={{@displayOnly}} @lawyerName={{@clientRecord.helpTextIconLawyerName}} />\n      </label>\n    </div>\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"9joKmER9\",\n    \"block\": \"[[[41,[30,1],[[[41,[30,2],[[[1,\\\"    \\\"],[10,0],[12],[1,\\\"\\\\n\\\"],[41,[51,[30,3]],[[[1,\\\"        \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal \\\",[28,[37,4],[[30,4],\\\"fa-check-circle\\\"],null]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,5],[[[1,\\\"        \\\"],[1,[30,5]],[41,[30,3],[[[1,[28,[35,5],null,[[\\\"displayOnly\\\",\\\"title\\\"],[[30,1],[30,5]]]]],[1,\\\" Yes\\\"]],[]],null]],[]],null],[1,\\\"      \\\"],[18,14,null],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,6],[[[1,\\\"    \\\"],[8,[39,8],null,null,null],[1,\\\"\\\\n  \\\"]],[]],null]],[]]]],[]],[[[1,\\\"  \\\"],[10,0],[15,0,[29,[\\\"settify-checkbox \\\",[52,[28,[37,9],[[30,6],[28,[37,10],[[30,2]],null]],null],\\\"can-highlight\\\"]]]],[15,\\\"data-checkbox\\\",[30,7]],[12],[1,\\\"\\\\n    \\\"],[8,[39,11],[[16,3,[30,7]],[16,1,[28,[37,12],[\\\"settifycheckbox\\\",[30,0,[\\\"uid\\\"]]],null]],[16,0,[30,8]],[16,\\\"disabled\\\",[30,9]]],[[\\\"@type\\\",\\\"@checked\\\"],[\\\"checkbox\\\",[30,2]]],null],[1,\\\"\\\\n    \\\"],[10,\\\"label\\\"],[15,\\\"for\\\",[28,[37,12],[\\\"settifycheckbox\\\",[30,0,[\\\"uid\\\"]]],null]],[15,0,[29,[[30,8],\\\" \\\",[52,[30,9],\\\"disabled\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,14],[[30,10],\\\"refresh\\\"],null],[[[1,\\\"        \\\"],[10,1],[14,0,\\\"settify-checkbox-svg\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"svg\\\"],[14,\\\"viewBox\\\",\\\"0 0 314.154 314.154\\\"],[15,0,[30,11]],[12],[1,\\\"\\\\n            \\\"],[10,\\\"path\\\"],[14,\\\"d\\\",\\\"M307.475,141.686c-6.893-4.598-16.207-2.736-20.802,4.157l-0.446,0.669c-5.426-74.107-67.45-132.745-142.918-132.745\\\\n            C64.288,13.768,0,78.056,0,157.077s64.288,143.309,143.309,143.309c11.046,0,20-8.954,20-20s-8.954-20-20-20\\\\n            C86.344,260.385,40,214.041,40,157.077S86.344,53.768,143.309,53.768c52.798,0,96.465,39.815,102.571,90.996\\\\n            c-4.813-5.991-13.486-7.422-20-3.078c-6.893,4.596-8.754,13.91-4.158,20.802l29.702,44.541c3.505,5.256,9.208,8.394,15.255,8.394\\\\n            c6.047,0,11.749-3.139,15.252-8.394l29.702-44.541C316.228,155.595,314.367,146.282,307.475,141.686z\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,1],[14,0,\\\"settify-checkbox-svg\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"svg\\\"],[14,\\\"viewbox\\\",\\\"0 0 12 10\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"polyline\\\"],[14,\\\"points\\\",\\\"1.5 6 4.5 9 10.5 1\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[41,[30,5],[[[1,\\\"        \\\"],[1,[30,5]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[18,14,null],[1,\\\"\\\\n\\\"],[41,[30,6],[[[1,\\\"        \\\"],[10,1],[15,0,[29,[\\\"required-field-marker \\\",[52,[30,2],\\\"required-field-provided\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[8,[39,19],null,[[\\\"@helpText\\\",\\\"@displayOnly\\\",\\\"@lawyerName\\\"],[[30,12],[30,1],[30,13,[\\\"helpTextIconLawyerName\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[\\\"@displayOnly\\\",\\\"@model\\\",\\\"@hideIcon\\\",\\\"@summaryIconIfChecked\\\",\\\"@text\\\",\\\"@required\\\",\\\"@name\\\",\\\"@class\\\",\\\"@disabled\\\",\\\"@symbolType\\\",\\\"@refreshClass\\\",\\\"@helpText\\\",\\\"@clientRecord\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"unless\\\",\\\"i\\\",\\\"or\\\",\\\"possible-colon\\\",\\\"yield\\\",\\\"br\\\",\\\"required-field\\\",\\\"and\\\",\\\"not\\\",\\\"input\\\",\\\"sum\\\",\\\"label\\\",\\\"eq\\\",\\\"span\\\",\\\"svg\\\",\\\"path\\\",\\\"polyline\\\",\\\"help-text-icon\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/check-box.hbs\",\n    \"isStrictMode\": false\n  });\n  let uid = 0;\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend(_settifyInputMixin.default, {\n    // tagName: \"\",\n    init() {\n      this._super(...arguments);\n      this.set(\"uid\", uid++);\n    },\n    onModelChanged: (0, _object.observer)(\"model\", function () {\n      (0, _runloop.next)(() => {\n        if (Object.prototype.hasOwnProperty.call(this, \"cloneModel\")) {\n          this.set(\"cloneModel\", this.model);\n        }\n      });\n    })\n  }));\n});","define(\"settify-mvp/components/check-internet\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    Please check that you are connected to the internet. \n  \n  */\n  {\n    \"id\": \"0HzOGaud\",\n    \"block\": \"[[[1,\\\"Please check that you are connected to the internet. \\\\n\\\"]],[],false,[]]\",\n    \"moduleName\": \"settify-mvp/components/check-internet.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/choose-password\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{yield}}\n  <SettifyTextline @model={{@password}} @maxlength=\"64\" @name=\"password\" @isPassword={{true}} @allowShowPassword={{true}} @placeholder=\"Enter your desired password\" @headerLabel={{true}} @class=\"settify-sensitive\" />\n  \n  <p>\n    <small>\n      Your password must: <br>\n      <CheckBox @text=\"be at least 8 characters long\" @model={{if this.longEnough true}} @disabled={{true}} />\n      <CheckBox @text=\"contain at least one number\" @model={{if this.hasNumber true}} @disabled={{true}} />\n      <CheckBox @text=\"contain at least one upper case letter\" @model={{if this.hasUppercase true}} @disabled={{true}} />\n      <CheckBox @text=\"contain at least one lower case letter\" @model={{if this.hasLowercase true}} @disabled={{true}} />\n    </small>\n  </p>\n  \n  */\n  {\n    \"id\": \"YojR1e1S\",\n    \"block\": \"[[[18,2,null],[1,\\\"\\\\n\\\"],[8,[39,1],null,[[\\\"@model\\\",\\\"@maxlength\\\",\\\"@name\\\",\\\"@isPassword\\\",\\\"@allowShowPassword\\\",\\\"@placeholder\\\",\\\"@headerLabel\\\",\\\"@class\\\"],[[30,1],\\\"64\\\",\\\"password\\\",true,true,\\\"Enter your desired password\\\",true,\\\"settify-sensitive\\\"]],null],[1,\\\"\\\\n\\\\n\\\"],[10,2],[12],[1,\\\"\\\\n  \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n    Your password must: \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[8,[39,5],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@disabled\\\"],[\\\"be at least 8 characters long\\\",[52,[30,0,[\\\"longEnough\\\"]],true],true]],null],[1,\\\"\\\\n    \\\"],[8,[39,5],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@disabled\\\"],[\\\"contain at least one number\\\",[52,[30,0,[\\\"hasNumber\\\"]],true],true]],null],[1,\\\"\\\\n    \\\"],[8,[39,5],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@disabled\\\"],[\\\"contain at least one upper case letter\\\",[52,[30,0,[\\\"hasUppercase\\\"]],true],true]],null],[1,\\\"\\\\n    \\\"],[8,[39,5],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@disabled\\\"],[\\\"contain at least one lower case letter\\\",[52,[30,0,[\\\"hasLowercase\\\"]],true],true]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[\\\"@password\\\",\\\"&default\\\"],false,[\\\"yield\\\",\\\"settify-textline\\\",\\\"p\\\",\\\"small\\\",\\\"br\\\",\\\"check-box\\\",\\\"if\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/choose-password.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({\n    onPasswordChanged() {\n      const valid = this.longEnough && this.hasUppercase && this.hasLowercase && this.hasNumber;\n      // compare against passwordConfirmation if you want to do that.\n      this.set(\"passwordValid\", valid);\n    },\n    passwordChanged: (0, _object.observer)(\"password\", function () {\n      this.onPasswordChanged();\n    }),\n    longEnough: (0, _object.computed)(\"password\", function () {\n      const p = this.password;\n      return p && p.length >= 8;\n    }),\n    hasNumber: (0, _object.computed)(\"password\", function () {\n      const p = this.password;\n      return p && p.match(/[0-9]/);\n    }),\n    hasUppercase: (0, _object.computed)(\"password\", function () {\n      const p = this.password;\n      return p && p.match(/[A-Z]/);\n    }),\n    hasLowercase: (0, _object.computed)(\"password\", function () {\n      const p = this.password;\n      return p && p.match(/[a-z]/);\n    })\n  }));\n});","define(\"settify-mvp/components/client-badge\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/template-factory\"], function (_exports, _component, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <client-badge>\n    <span title={{@title}} class=\"inline-flex items-center rounded-md bg-gray-50 px-2 py-1 text-xs font-medium {{this.classes}}\">{{yield}}</span>\n  </client-badge>\n  */\n  {\n    \"id\": \"eC6qqDlN\",\n    \"block\": \"[[[10,\\\"client-badge\\\"],[12],[1,\\\"\\\\n  \\\"],[10,1],[15,\\\"title\\\",[30,1]],[15,0,[29,[\\\"inline-flex items-center rounded-md bg-gray-50 px-2 py-1 text-xs font-medium \\\",[30,0,[\\\"classes\\\"]]]]],[12],[18,2,null],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@title\\\",\\\"&default\\\"],false,[\\\"client-badge\\\",\\\"span\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/client-badge.hbs\",\n    \"isStrictMode\": false\n  });\n  class ClientBadgeComponent extends _component2.default {\n    get classes() {\n      switch (this.args.colour) {\n        case \"blue\":\n          return \"text-blue-700 ring-1 ring-inset ring-blue-700/10\";\n        case \"red\":\n          return \"text-red-700 ring-1 ring-inset ring-red-600/10\";\n        case \"green\":\n          return \"text-green-700 ring-1 ring-inset ring-green-600/20\";\n        case \"yellow\":\n          return \"text-yellow-800 ring-1 ring-inset ring-yellow-600/20\";\n        case \"purple\":\n          return \"text-purple-700 ring-1 ring-inset ring-purple-700/10\";\n        default:\n          return \"text-gray-600 ring-1 ring-inset ring-gray-500/10\";\n      }\n    }\n  }\n  _exports.default = ClientBadgeComponent;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, ClientBadgeComponent);\n});","define(\"settify-mvp/components/client-billing\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\",0,\"@ember/object\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @label}}\n    <label id=\"listbox-label\" class=\"block text-sm font-medium leading-6\">{{@label}}</label>\n  {{/if}}\n  \n  <button\n    type=\"button\"\n    disabled={{@lead.billingLocked}}\n    {{action \"toggleBillingMenu\"}}\n    class=\"relative w-full cursor-default rounded-md bg-white py-1.5 pl-3 pr-10 text-left shadow-sm ring-1 ring-inset ring-gray-300 disabled:cursor-not-allowed disabled:bg-gray-50 disabled:text-gray-500 disabled:ring-gray-200 sm:text-sm sm:leading-6\"\n    aria-haspopup=\"listbox\"\n    aria-expanded=\"true\"\n    aria-labelledby=\"listbox-label\"\n  >\n    <span class=\"flex items-center\">\n      <span class=\"block truncate\">{{this.activeType.longName}}</span>\n    </span>\n    <span class=\"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2\">\n      <svg class=\"h-5 w-5 text-gray-400\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n        <path\n          fill-rule=\"evenodd\"\n          d=\"M10 3a.75.75 0 01.55.24l3.25 3.5a.75.75 0 11-1.1 1.02L10 4.852 7.3 7.76a.75.75 0 01-1.1-1.02l3.25-3.5A.75.75 0 0110 3zm-3.76 9.2a.75.75 0 011.06.04l2.7 2.908 2.7-2.908a.75.75 0 111.1 1.02l-3.25 3.5a.75.75 0 01-1.1 0l-3.25-3.5a.75.75 0 01.04-1.06z\"\n          clip-rule=\"evenodd\"\n        />\n      </svg>\n    </span>\n  </button>\n  \n  {{#if this.billingMenuShown}}\n    <ul\n      class=\"absolute z-10 mt-1 max-h-56 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none sm:text-sm\"\n      tabindex=\"-1\"\n      role=\"listbox\"\n      aria-labelledby=\"listbox-label\"\n    >\n      {{#each this.availableTypes as |type index|}}\n        {{#let (eq @lead.invoiceType type.shortName) as |isSelected|}}\n          <li\n            class=\"group relative cursor-default select-none py-2 pl-3 pr-9 hover:bg-settify-green hover:text-white\"\n            {{action \"updateBillingType\" type.shortName}}\n            id=\"listbox-option-{{index}}\"\n            role=\"option\"\n            tabindex=\"0\"\n            data-selected={{isSelected}}\n            aria-selected={{isSelected}}\n          >\n            <span class=\"{{if isSelected 'font-semibold' 'font-normal'}} block truncate\">\n              {{type.longName}}\n            </span>\n            {{#if isSelected}}\n              <span class=\"absolute inset-y-0 right-0 flex items-center pr-4 text-settify-green group-hover:text-white\">\n                <svg class=\"h-5 w-5\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\" role=\"presentation\">\n                  <path\n                    fill-rule=\"evenodd\"\n                    d=\"M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z\"\n                    clip-rule=\"evenodd\"\n                    role=\"presentation\"\n                  />\n                </svg>\n              </span>\n            {{/if}}\n          </li>\n        {{/let}}\n      {{/each}}\n    </ul>\n  {{/if}}\n  \n  <V2::Dropdown @id=\"client-billing-button\" @toggleDropdown={{action \"toggleBillingMenu\"}} @clickedOutside={{action \"onClickedOutside\"}} as |dropdown|>\n    <dropdown.header>\n      <button\n        type=\"button\"\n        disabled={{@lead.billingLocked}}\n        class=\"relative w-full cursor-default rounded-md bg-white py-1.5 pl-3 pr-10 text-left shadow-sm ring-1 ring-inset ring-gray-300 disabled:cursor-not-allowed disabled:bg-gray-50 disabled:text-gray-500 disabled:ring-gray-200 sm:text-sm sm:leading-6\"\n        aria-haspopup=\"listbox\"\n        aria-expanded=\"false\"\n        aria-labelledby=\"listbox-label\"\n      >\n        <span class=\"flex items-center\">\n          <span class=\"block truncate\">{{this.activeType.longName}}</span>\n        </span>\n        <span class=\"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2\">\n          <V2::SvgIcon @icon=\"chevron-up-down\" class=\"size-5 text-gray-400\" />\n        </span>\n      </button>\n    </dropdown.header>\n    <dropdown.content @isOpen={{this.billingMenuShown}}>\n      <ul\n        class=\"absolute z-10 mt-1 max-h-56 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none sm:text-sm\"\n        tabindex=\"-1\"\n        role=\"listbox\"\n        aria-labelledby=\"listbox-label\"\n      >\n        {{#each this.availableTypes as |type index|}}\n          {{#let (eq @lead.invoiceType type.shortName) as |isSelected|}}\n            <li\n              class=\"group relative cursor-default select-none py-2 pl-3 pr-9 hover:bg-brand-primary-color-rgb hover:text-white\"\n              {{on \"click\" (action \"updateBillingType\" type.shortName)}}\n              id=\"invoiceType-option-{{index}}\"\n              tabindex=\"0\"\n              data-selected={{isSelected}}\n            >\n              <span class=\"{{if isSelected 'font-semibold' 'font-normal'}} block truncate\">\n                {{type.longName}}\n              </span>\n              {{#if isSelected}}\n                <span class=\"absolute inset-y-0 right-0 flex items-center pr-4 text-brand-primary-color-rgb group-hover:text-white\">\n                  <V2::SvgIcon @icon=\"check\" class=\"size-4\" />\n                </span>\n              {{/if}}\n            </li>\n          {{/let}}\n        {{/each}}\n      </ul>\n    </dropdown.content>\n  </V2::Dropdown>\n  */\n  {\n    \"id\": \"9BDtAdap\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[10,\\\"label\\\"],[14,1,\\\"listbox-label\\\"],[14,0,\\\"block text-sm font-medium leading-6\\\"],[12],[1,[30,1]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[11,\\\"button\\\"],[16,\\\"disabled\\\",[30,2,[\\\"billingLocked\\\"]]],[24,0,\\\"relative w-full cursor-default rounded-md bg-white py-1.5 pl-3 pr-10 text-left shadow-sm ring-1 ring-inset ring-gray-300 disabled:cursor-not-allowed disabled:bg-gray-50 disabled:text-gray-500 disabled:ring-gray-200 sm:text-sm sm:leading-6\\\"],[24,\\\"aria-haspopup\\\",\\\"listbox\\\"],[24,\\\"aria-expanded\\\",\\\"true\\\"],[24,\\\"aria-labelledby\\\",\\\"listbox-label\\\"],[24,4,\\\"button\\\"],[4,[38,3],[[30,0],\\\"toggleBillingMenu\\\"],null],[12],[1,\\\"\\\\n  \\\"],[10,1],[14,0,\\\"flex items-center\\\"],[12],[1,\\\"\\\\n    \\\"],[10,1],[14,0,\\\"block truncate\\\"],[12],[1,[30,0,[\\\"activeType\\\",\\\"longName\\\"]]],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,1],[14,0,\\\"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"svg\\\"],[14,0,\\\"h-5 w-5 text-gray-400\\\"],[14,\\\"viewBox\\\",\\\"0 0 20 20\\\"],[14,\\\"fill\\\",\\\"currentColor\\\"],[14,\\\"aria-hidden\\\",\\\"true\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"path\\\"],[14,\\\"fill-rule\\\",\\\"evenodd\\\"],[14,\\\"d\\\",\\\"M10 3a.75.75 0 01.55.24l3.25 3.5a.75.75 0 11-1.1 1.02L10 4.852 7.3 7.76a.75.75 0 01-1.1-1.02l3.25-3.5A.75.75 0 0110 3zm-3.76 9.2a.75.75 0 011.06.04l2.7 2.908 2.7-2.908a.75.75 0 111.1 1.02l-3.25 3.5a.75.75 0 01-1.1 0l-3.25-3.5a.75.75 0 01.04-1.06z\\\"],[14,\\\"clip-rule\\\",\\\"evenodd\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"billingMenuShown\\\"]],[[[1,\\\"  \\\"],[10,\\\"ul\\\"],[14,0,\\\"absolute z-10 mt-1 max-h-56 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none sm:text-sm\\\"],[14,\\\"tabindex\\\",\\\"-1\\\"],[14,\\\"role\\\",\\\"listbox\\\"],[14,\\\"aria-labelledby\\\",\\\"listbox-label\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,9],[[28,[37,9],[[30,0,[\\\"availableTypes\\\"]]],null]],null],null,[[[44,[[28,[37,11],[[30,2,[\\\"invoiceType\\\"]],[30,3,[\\\"shortName\\\"]]],null]],[[[1,\\\"        \\\"],[11,\\\"li\\\"],[24,0,\\\"group relative cursor-default select-none py-2 pl-3 pr-9 hover:bg-settify-green hover:text-white\\\"],[16,1,[29,[\\\"listbox-option-\\\",[30,4]]]],[24,\\\"role\\\",\\\"option\\\"],[24,\\\"tabindex\\\",\\\"0\\\"],[16,\\\"data-selected\\\",[30,5]],[16,\\\"aria-selected\\\",[30,5]],[4,[38,3],[[30,0],\\\"updateBillingType\\\",[30,3,[\\\"shortName\\\"]]],null],[12],[1,\\\"\\\\n          \\\"],[10,1],[15,0,[29,[[52,[30,5],\\\"font-semibold\\\",\\\"font-normal\\\"],\\\" block truncate\\\"]]],[12],[1,\\\"\\\\n            \\\"],[1,[30,3,[\\\"longName\\\"]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,5],[[[1,\\\"            \\\"],[10,1],[14,0,\\\"absolute inset-y-0 right-0 flex items-center pr-4 text-settify-green group-hover:text-white\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"svg\\\"],[14,0,\\\"h-5 w-5\\\"],[14,\\\"viewBox\\\",\\\"0 0 20 20\\\"],[14,\\\"fill\\\",\\\"currentColor\\\"],[14,\\\"aria-hidden\\\",\\\"true\\\"],[14,\\\"role\\\",\\\"presentation\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"path\\\"],[14,\\\"fill-rule\\\",\\\"evenodd\\\"],[14,\\\"d\\\",\\\"M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z\\\"],[14,\\\"clip-rule\\\",\\\"evenodd\\\"],[14,\\\"role\\\",\\\"presentation\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n\\\"]],[5]]]],[3,4]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[8,[39,13],null,[[\\\"@id\\\",\\\"@toggleDropdown\\\",\\\"@clickedOutside\\\"],[\\\"client-billing-button\\\",[28,[37,3],[[30,0],\\\"toggleBillingMenu\\\"],null],[28,[37,3],[[30,0],\\\"onClickedOutside\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[30,6,[\\\"header\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,\\\"button\\\"],[15,\\\"disabled\\\",[30,2,[\\\"billingLocked\\\"]]],[14,0,\\\"relative w-full cursor-default rounded-md bg-white py-1.5 pl-3 pr-10 text-left shadow-sm ring-1 ring-inset ring-gray-300 disabled:cursor-not-allowed disabled:bg-gray-50 disabled:text-gray-500 disabled:ring-gray-200 sm:text-sm sm:leading-6\\\"],[14,\\\"aria-haspopup\\\",\\\"listbox\\\"],[14,\\\"aria-expanded\\\",\\\"false\\\"],[14,\\\"aria-labelledby\\\",\\\"listbox-label\\\"],[14,4,\\\"button\\\"],[12],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"flex items-center\\\"],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"block truncate\\\"],[12],[1,[30,0,[\\\"activeType\\\",\\\"longName\\\"]]],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,14],[[24,0,\\\"size-5 text-gray-400\\\"]],[[\\\"@icon\\\"],[\\\"chevron-up-down\\\"]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[30,6,[\\\"content\\\"]],null,[[\\\"@isOpen\\\"],[[30,0,[\\\"billingMenuShown\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,\\\"ul\\\"],[14,0,\\\"absolute z-10 mt-1 max-h-56 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none sm:text-sm\\\"],[14,\\\"tabindex\\\",\\\"-1\\\"],[14,\\\"role\\\",\\\"listbox\\\"],[14,\\\"aria-labelledby\\\",\\\"listbox-label\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,9],[[28,[37,9],[[30,0,[\\\"availableTypes\\\"]]],null]],null],null,[[[44,[[28,[37,11],[[30,2,[\\\"invoiceType\\\"]],[30,7,[\\\"shortName\\\"]]],null]],[[[1,\\\"          \\\"],[11,\\\"li\\\"],[24,0,\\\"group relative cursor-default select-none py-2 pl-3 pr-9 hover:bg-brand-primary-color-rgb hover:text-white\\\"],[16,1,[29,[\\\"invoiceType-option-\\\",[30,8]]]],[24,\\\"tabindex\\\",\\\"0\\\"],[16,\\\"data-selected\\\",[30,9]],[4,[38,15],[\\\"click\\\",[28,[37,3],[[30,0],\\\"updateBillingType\\\",[30,7,[\\\"shortName\\\"]]],null]],null],[12],[1,\\\"\\\\n            \\\"],[10,1],[15,0,[29,[[52,[30,9],\\\"font-semibold\\\",\\\"font-normal\\\"],\\\" block truncate\\\"]]],[12],[1,\\\"\\\\n              \\\"],[1,[30,7,[\\\"longName\\\"]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,9],[[[1,\\\"              \\\"],[10,1],[14,0,\\\"absolute inset-y-0 right-0 flex items-center pr-4 text-brand-primary-color-rgb group-hover:text-white\\\"],[12],[1,\\\"\\\\n                \\\"],[8,[39,14],[[24,0,\\\"size-4\\\"]],[[\\\"@icon\\\"],[\\\"check\\\"]],null],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\"]],[9]]]],[7,8]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[6]]]]]],[\\\"@label\\\",\\\"@lead\\\",\\\"type\\\",\\\"index\\\",\\\"isSelected\\\",\\\"dropdown\\\",\\\"type\\\",\\\"index\\\",\\\"isSelected\\\"],false,[\\\"if\\\",\\\"label\\\",\\\"button\\\",\\\"action\\\",\\\"span\\\",\\\"svg\\\",\\\"path\\\",\\\"ul\\\",\\\"each\\\",\\\"-track-array\\\",\\\"let\\\",\\\"eq\\\",\\\"li\\\",\\\"v2/dropdown\\\",\\\"v2/svg-icon\\\",\\\"on\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/client-billing.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({\n    tagName: \"client-billing\",\n    classNames: [\"relative w-full\"],\n    billingMenuShown: false,\n    activeType: (0, _object.computed)(\"conversionTypes\", \"lead.invoiceType\", function () {\n      const leadType = this.get(\"lead.invoiceType\");\n      const conversionTypes = this.conversionTypes || [];\n      return conversionTypes.find(option => option.shortName === leadType) || {\n        shortName: \"default\",\n        longName: \"Select billing...\"\n      };\n    }),\n    availableTypes: (0, _object.computed)(\"conversionTypes\", \"lead.practiceArea\", function () {\n      const practiceArea = this.get(\"lead.practiceArea\");\n      const conversionTypes = this.conversionTypes || [];\n      return conversionTypes.filter(option => option.allowedPracticeArea === practiceArea);\n    }),\n    onDocumentClick() {\n      this.set(\"billingMenuShown\", false);\n    },\n    actions: {\n      onClickedOutside() {\n        if (this.billingMenuShown) this.set(\"billingMenuShown\", false);\n      },\n      toggleBillingMenu() {\n        this.toggleProperty(\"billingMenuShown\");\n      },\n      updateBillingType(shortName) {\n        // TODO: Work out best practice on saving changes to lead (I assume it is via a model & store)\n        this.set(\"lead.invoiceType\", shortName);\n        this.set(\"billingMenuShown\", false);\n      }\n    }\n  }));\n});","define(\"settify-mvp/components/client-brief\", [\"exports\", \"@ember/object\", \"@ember/service\", \"@ember/component\", \"settify-mvp/mixins/summary-page-mixin\"], function (_exports, _object, _service, _component, _summaryPageMixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/component\",0,\"settify-mvp/mixins/summary-page-mixin\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend(_summaryPageMixin.default, {\n    questionnaireLogic: (0, _service.inject)(),\n    condensedOutputMode: true,\n    adminMode: true,\n    you: (0, _object.computed)(\"model.client.firstName\", function () {\n      const n = this.model?.client?.firstName;\n      if (n) {\n        return n;\n      }\n      return \"Client\";\n    }),\n    your: (0, _object.computed)(\"model.client.firstName\", function () {\n      const n = this.model?.client?.firstName;\n      if (n) {\n        return `${n}'s`;\n      }\n      return \"Client's\";\n    }),\n    otherPersonName: (0, _object.computed)(\"model.client.{otherPersonName,otherPersonType}\", \"your\", function () {\n      let opn = this.model?.client?.otherPersonName;\n      if (opn === \"your spouse\" || opn === \"your partner\" || opn === \"your former spouse\" || opn === \"your former partner\") {\n        opn = `${this.your} ${this.model?.client?.otherPersonType}`;\n      }\n      return opn;\n    }),\n    isare: \"is\",\n    hashave: \"has\",\n    youthey: \"they\",\n    s: \"s\",\n    shouldSetModel: (0, _object.observer)(\"client\", function () {\n      const {\n        client\n      } = this;\n      if (client) {\n        return this.questionnaireLogic.getInductions(client).then(data => {\n          data.client = client;\n          this.set(\"model\", data);\n        });\n      }\n      this.set(\"model\", {\n        client\n      });\n    })\n  });\n});","define(\"settify-mvp/components/client-header-navigation\", [\"exports\", \"@ember/component\", \"@ember/service\", \"@ember/template-factory\"], function (_exports, _component, _service, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\",0,\"@ember/service\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <nav class=\"bg-gray-800\">\n    <div class=\"mx-auto max-w-7xl sm:px-6 lg:px-8\">\n      <div class=\"border-b border-gray-700\">\n        <div class=\"flex h-16 items-center justify-around px-4 sm:px-0 md:justify-between\">\n          <div class=\"flex items-center\">\n            <div class=\"flex-shrink-0\">\n              <img class=\"h-12\" src={{or this.firm.logoURL \"https://cdn.settify.com.au/Settify+Logo.png\"}} alt=\"Your Company\" />\n            </div>\n            <div class=\"hidden md:block\">\n              <div class=\"ml-10 flex items-baseline space-x-4 text-white\">\n                {{! todo: left block content }}\n              </div>\n            </div>\n          </div>\n          <div class=\"hidden md:block\">\n            <div class=\"ml-4 flex items-center text-white md:ml-6\">\n              {{this.firm.name}}\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </nav>\n  */\n  {\n    \"id\": \"H9M+FqY5\",\n    \"block\": \"[[[10,\\\"nav\\\"],[14,0,\\\"bg-gray-800\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"mx-auto max-w-7xl sm:px-6 lg:px-8\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"border-b border-gray-700\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"flex h-16 items-center justify-around px-4 sm:px-0 md:justify-between\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"flex items-center\\\"],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"flex-shrink-0\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"img\\\"],[14,0,\\\"h-12\\\"],[15,\\\"src\\\",[28,[37,3],[[30,0,[\\\"firm\\\",\\\"logoURL\\\"]],\\\"https://cdn.settify.com.au/Settify+Logo.png\\\"],null]],[14,\\\"alt\\\",\\\"Your Company\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"hidden md:block\\\"],[12],[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"ml-10 flex items-baseline space-x-4 text-white\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"hidden md:block\\\"],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"ml-4 flex items-center text-white md:ml-6\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[],false,[\\\"nav\\\",\\\"div\\\",\\\"img\\\",\\\"or\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/client-header-navigation.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({\n    tagName: \"client-header-nav\",\n    mobileMenuShown: false,\n    router: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    init() {\n      this._super(...arguments);\n    },\n    actions: {\n      toggleMobileMenu() {\n        this.toggleProperty(\"mobileMenuShown\");\n      }\n    }\n  }));\n});","define(\"settify-mvp/components/client-leads-list\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/service\", \"@ember/object\", \"@ember/template\", \"moment\", \"@ember/template-factory\"], function (_exports, _component, _component2, _service, _object, _template, _moment, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/service\",0,\"@ember/object\",0,\"@ember/template\",0,\"moment\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::DataTable @data={{@leads}} @columns={{this.columns}} @onRowSelection={{this.onClientSelected}} @onDownload={{this.downloadCsv}} @isSearchable={{true}} @id=\"client-leads-list\">\n    <:colgroup>\n      {{! Name }}\n      <col class=\"w-full\" />\n      {{! Badges }}\n      <col />\n      {{! Practice area }}\n      <col class=\"sm:w-1/6\" />\n      {{! Referred }}\n      <col class=\"sm:w-1/6\" />\n      {{! Last updated }}\n      <col class=\"sm:w-1/6\" />\n      {{! Actions }}\n      <col />\n    </:colgroup>\n  \n    <:action as |data|>\n      {{#if data.row.conflictCheckCompleted}}\n        {{#if data.row.hasConflict}}\n          {{! TODO: Fix this button currently it doesn't toggle the slide out }}\n          <V2::Button class=\"text-red-500\">Conflicted</V2::Button>\n        {{else}}\n          <V2::Button @route=\"v2.admin.clients\" @model={{data.row.clientID}} class=\"whitespace-nowrap text-brand-primary-color-rgb\">View brief</V2::Button>\n        {{/if}}\n      {{else}}\n        <V2::Button @route=\"v2.admin.conflict\" @model={{data.row.clientID}} class=\"whitespace-nowrap text-amber-500\">Conflict check</V2::Button>\n      {{/if}}\n    </:action>\n  </V2::DataTable>\n  \n  */\n  {\n    \"id\": \"5MfHGOHA\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@data\\\",\\\"@columns\\\",\\\"@onRowSelection\\\",\\\"@onDownload\\\",\\\"@isSearchable\\\",\\\"@id\\\"],[[30,1],[30,0,[\\\"columns\\\"]],[30,0,[\\\"onClientSelected\\\"]],[30,0,[\\\"downloadCsv\\\"]],true,\\\"client-leads-list\\\"]],[[\\\"colgroup\\\",\\\"action\\\"],[[[[1,\\\"\\\\n\\\"],[1,\\\"    \\\"],[10,\\\"col\\\"],[14,0,\\\"w-full\\\"],[12],[13],[1,\\\"\\\\n\\\"],[1,\\\"    \\\"],[10,\\\"col\\\"],[12],[13],[1,\\\"\\\\n\\\"],[1,\\\"    \\\"],[10,\\\"col\\\"],[14,0,\\\"sm:w-1/6\\\"],[12],[13],[1,\\\"\\\\n\\\"],[1,\\\"    \\\"],[10,\\\"col\\\"],[14,0,\\\"sm:w-1/6\\\"],[12],[13],[1,\\\"\\\\n\\\"],[1,\\\"    \\\"],[10,\\\"col\\\"],[14,0,\\\"sm:w-1/6\\\"],[12],[13],[1,\\\"\\\\n\\\"],[1,\\\"    \\\"],[10,\\\"col\\\"],[12],[13],[1,\\\"\\\\n  \\\"]],[]],[[[1,\\\"\\\\n\\\"],[41,[30,2,[\\\"row\\\",\\\"conflictCheckCompleted\\\"]],[[[41,[30,2,[\\\"row\\\",\\\"hasConflict\\\"]],[[[1,\\\"        \\\"],[8,[39,5],[[24,0,\\\"text-red-500\\\"]],null,[[\\\"default\\\"],[[[[1,\\\"Conflicted\\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[8,[39,5],[[24,0,\\\"whitespace-nowrap text-brand-primary-color-rgb\\\"]],[[\\\"@route\\\",\\\"@model\\\"],[\\\"v2.admin.clients\\\",[30,2,[\\\"row\\\",\\\"clientID\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"View brief\\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]],[]],[[[1,\\\"      \\\"],[8,[39,5],[[24,0,\\\"whitespace-nowrap text-amber-500\\\"]],[[\\\"@route\\\",\\\"@model\\\"],[\\\"v2.admin.conflict\\\",[30,2,[\\\"row\\\",\\\"clientID\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"Conflict check\\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"]],[2]]]]],[1,\\\"\\\\n\\\"]],[\\\"@leads\\\",\\\"data\\\"],false,[\\\"v2/data-table\\\",\\\":colgroup\\\",\\\"col\\\",\\\":action\\\",\\\"if\\\",\\\"v2/button\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/client-leads-list.hbs\",\n    \"isStrictMode\": false\n  });\n  let ClientLeadsListComponent = _exports.default = (_class = class ClientLeadsListComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n      _initializerDefineProperty(this, \"notifications\", _descriptor2, this);\n      _initializerDefineProperty(this, \"documentManager\", _descriptor3, this);\n      _initializerDefineProperty(this, \"downloadLeads\", _descriptor4, this);\n      _initializerDefineProperty(this, \"router\", _descriptor5, this);\n      _defineProperty(this, \"columns\", [{\n        name: \"Name\",\n        selector: row => row.name || \"No name provided\",\n        format: (name, row) => row.settifySensitiveName,\n        cellClass: \"font-medium\",\n        sortable: true\n      }, {\n        name: \"\",\n        selector: row => row,\n        format: this.getStatusBadges,\n        cellClass: \"text-gray-500 hidden md:table-cell\",\n        headClass: \"hidden md:table-cell\"\n      }, {\n        name: \"Practice Area\",\n        selector: row => row.practiceArea,\n        cellClass: \"text-gray-500\",\n        sortable: Object.keys(this?.firm?.otherSettifyURLs || {}).length > 1\n      }, {\n        name: \"Referred\",\n        selector: row => row.referredToFirm || row.becameLead,\n        format: cellValue => (0, _moment.default)(cellValue).fromNow(),\n        cellClass: \"text-gray-500 hidden md:table-cell\",\n        headClass: \"hidden md:table-cell\",\n        sortable: true,\n        sortFunction: this.fromNowSort\n      }, {\n        name: \"Last updated\",\n        selector: row => row.lastUpdated,\n        format: cellValue => (0, _moment.default)(cellValue).fromNow(),\n        cellClass: \"text-gray-500 hidden md:table-cell\",\n        headClass: \"hidden md:table-cell\",\n        sortable: true,\n        sortFunction: this.fromNowSort\n      }]);\n    }\n    // Generate a html safe string to represent badges\n    getStatusBadges(rowItem) {\n      const badges = [];\n      if (!rowItem.isFormsRecord) {\n        badges.push(`<span class='inline-flex rounded-md px-2 py-1 text-xs font-medium ring-1 ring-inset text-yellow-800 bg-yellow-50 ring-yellow-600/20'>Legacy</span>`);\n      }\n      return (0, _template.htmlSafe)(badges.join(\"\"));\n    }\n    fromNowSort(rows, selector, sortDirection) {\n      return rows.sort((a, b) => {\n        // Use the selector to retrieve date values and convert to moment objects\n        const dateA = (0, _moment.default)(selector(a));\n        const dateB = (0, _moment.default)(selector(b));\n        if (dateA.isBefore(dateB)) {\n          return sortDirection === \"ASC\" ? 1 : -1;\n        }\n        if (dateA.isAfter(dateB)) {\n          return sortDirection === \"ASC\" ? -1 : 1;\n        }\n        return 0;\n      });\n    }\n    onClientSelected(client) {\n      return this.args.toggleSelectedClient(client.clientID);\n    }\n    async downloadCsv() {\n      const notification = {\n        title: `Downloading clients`,\n        icon: \"loading\",\n        message: \"Preparing clients in CSV format...\",\n        canDismiss: false\n      };\n      try {\n        this.notifications.add(notification);\n        const downloadRequest = {\n          dateFormat: \"D/MM/YYYY\",\n          fileName: `${this.firm.name} - Settify Leads - ${(0, _moment.default)().format(\"D MMMM YYYY\")}.csv`,\n          firmID: this.firm.id,\n          totalClients: this.args.leads.length,\n          includePracticeArea: Object.keys(this.firm?.otherSettifyURLs || {}).length > 1\n        };\n        const csvContent = await this.downloadLeads.startDownload(downloadRequest);\n        this.documentManager.downloadBuffer(csvContent, downloadRequest.fileName, \"text/csv;charset=utf-8\");\n        this.notifications.notify({\n          title: `Clients downloaded successfully`,\n          icon: \"success\"\n        }, 6000);\n      } catch (error) {\n        this.notifications.add({\n          title: `Failed to download clients`,\n          icon: \"error\",\n          message: `Please try again or contact Settify support.`,\n          canDismiss: true\n        });\n      } finally {\n        this.notifications.remove(notification);\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"notifications\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"documentManager\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"downloadLeads\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"onClientSelected\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"onClientSelected\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"downloadCsv\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"downloadCsv\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, ClientLeadsListComponent);\n});","define(\"settify-mvp/components/client-summary-for-legacy-data\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/template\", \"@ember/service\", \"settify-mvp/helpers/address-string\", \"settify-mvp/helpers/pretty-date\", \"@ember/template-factory\"], function (_exports, _component, _component2, _template, _service, _addressString, _prettyDate, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/template\",0,\"@ember/service\",0,\"settify-mvp/helpers/address-string\",0,\"settify-mvp/helpers/pretty-date\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div id=\"settify-summary-content\" class=\"condensed-summary settify-for-everything\">\n    <table id=\"confidential-table\">\n      <tbody>\n        <tr>\n          <td>\n            <b>PRIVILEGED AND CONFIDENTIAL</b>\n            <br />\n            Prepared by\n            <img src=\"https://cdn.settify.com.au/Settify+Logo.png\" alt=\"Settify\" class=\"powered-by-image align-middle\" height=\"30px\" />\n            for\n            {{this.firm.name}}\n            <br />\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  \n    <h1>Brief Summary</h1>\n  \n    {{! View full record CTA }}\n    <div class=\"settify-callout pdf-exclude\">\n      <i class=\"fal fa-info-circle\" />\n      <span>You are viewing a legacy record. As a result, only basic information is available.</span>\n      {{#if this.fullRecordURL}}\n        <a href={{this.fullRecordURL}} target=\"_blank\" rel=\"noopener noreferrer\" class=\"next-button small margin-0 font-14\">\n          View the full record\n        </a>\n      {{/if}}\n    </div>\n  \n    <div class=\"keeptogether\">\n      <table class=\"subheading\">\n        <tbody>\n          <tr>\n            <td>\n              <LineIcon @src=\"https://cdn.settify.com.au/icons/034-mail-box.png\" />\n            </td>\n            <td>\n              Contact Details\n            </td>\n          </tr>\n        </tbody>\n      </table>\n  \n      <table class=\"header-left subtle-delineation three-columns\">\n        <thead>\n          <tr>\n            <th></th>\n            {{! Empty header cell for the first column }}\n            <th scope=\"col\">\n              {{@clientRecord.title}}\n              <span class=\"settify-sensitive\">{{@clientRecord.firstName}}</span>\n              <span class=\"settify-sensitive\">{{@clientRecord.middleName}}</span>\n              <span class=\"settify-sensitive\">{{@clientRecord.surname}}</span>\n              {{#if (eq @clientRecord.practiceArea \"Family\")}}\n                <span class=\"fontweight-400\">(client)</span>\n              {{/if}}\n            </th>\n            {{#if this.showPartnerColumn}}\n              <th scope=\"col\">\n                {{@clientRecord.partnerTitle}}\n                <span class=\"settify-sensitive\">{{@clientRecord.partnerFirstName}}</span>\n                <span class=\"settify-sensitive\">{{@clientRecord.partnerMiddleName}}</span>\n                <span class=\"settify-sensitive\">{{@clientRecord.partnerSurname}}</span>\n              </th>\n            {{/if}}\n          </tr>\n        </thead>\n        <tbody>\n          {{#each this.tableBodyRows as |row|}}\n            <tr>\n              <td>{{row.title}}</td>\n              <td>\n                {{#if row.user}}\n                  <span class=\"settify-sensitive\">{{row.user}}</span>\n                {{else}}\n                  <Admin::Nil />\n                {{/if}}\n              </td>\n              {{#if this.showPartnerColumn}}\n                <td>\n                  {{#if row.spouse}}\n                    <span class=\"settify-sensitive\">{{row.spouse}}</span>\n                  {{else}}\n                    <Admin::Nil />\n                  {{/if}}\n                </td>\n              {{/if}}\n            </tr>\n          {{/each}}\n        </tbody>\n      </table>\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"p+1v91LE\",\n    \"block\": \"[[[10,0],[14,1,\\\"settify-summary-content\\\"],[14,0,\\\"condensed-summary settify-for-everything\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"table\\\"],[14,1,\\\"confidential-table\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"b\\\"],[12],[1,\\\"PRIVILEGED AND CONFIDENTIAL\\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n          Prepared by\\\\n          \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"https://cdn.settify.com.au/Settify+Logo.png\\\"],[14,\\\"alt\\\",\\\"Settify\\\"],[14,0,\\\"powered-by-image align-middle\\\"],[14,\\\"height\\\",\\\"30px\\\"],[12],[13],[1,\\\"\\\\n          for\\\\n          \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\"\\\\n          \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,\\\"h1\\\"],[12],[1,\\\"Brief Summary\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"  \\\"],[10,0],[14,0,\\\"settify-callout pdf-exclude\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-info-circle\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[10,1],[12],[1,\\\"You are viewing a legacy record. As a result, only basic information is available.\\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"fullRecordURL\\\"]],[[[1,\\\"      \\\"],[10,3],[15,6,[30,0,[\\\"fullRecordURL\\\"]]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[14,0,\\\"next-button small margin-0 font-14\\\"],[12],[1,\\\"\\\\n        View the full record\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"keeptogether\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"table\\\"],[14,0,\\\"subheading\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,13],null,[[\\\"@src\\\"],[\\\"https://cdn.settify.com.au/icons/034-mail-box.png\\\"]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n            Contact Details\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,\\\"table\\\"],[14,0,\\\"header-left subtle-delineation three-columns\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"th\\\"],[12],[13],[1,\\\"\\\\n\\\"],[1,\\\"          \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[30,1,[\\\"title\\\"]]],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,1,[\\\"firstName\\\"]]],[13],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,1,[\\\"middleName\\\"]]],[13],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,1,[\\\"surname\\\"]]],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,16],[[30,1,[\\\"practiceArea\\\"]],\\\"Family\\\"],null],[[[1,\\\"              \\\"],[10,1],[14,0,\\\"fontweight-400\\\"],[12],[1,\\\"(client)\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showPartnerColumn\\\"]],[[[1,\\\"            \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[12],[1,\\\"\\\\n              \\\"],[1,[30,1,[\\\"partnerTitle\\\"]]],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,1,[\\\"partnerFirstName\\\"]]],[13],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,1,[\\\"partnerMiddleName\\\"]]],[13],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,1,[\\\"partnerSurname\\\"]]],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,18],[[28,[37,18],[[30,0,[\\\"tableBodyRows\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[12],[1,[30,2,[\\\"title\\\"]]],[13],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,2,[\\\"user\\\"]],[[[1,\\\"                \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,2,[\\\"user\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                \\\"],[8,[39,19],null,null,null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"            \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showPartnerColumn\\\"]],[[[1,\\\"              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,2,[\\\"spouse\\\"]],[[[1,\\\"                  \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,2,[\\\"spouse\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                  \\\"],[8,[39,19],null,null,null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@clientRecord\\\",\\\"row\\\"],false,[\\\"div\\\",\\\"table\\\",\\\"tbody\\\",\\\"tr\\\",\\\"td\\\",\\\"b\\\",\\\"br\\\",\\\"img\\\",\\\"h1\\\",\\\"i\\\",\\\"span\\\",\\\"if\\\",\\\"a\\\",\\\"line-icon\\\",\\\"thead\\\",\\\"th\\\",\\\"eq\\\",\\\"each\\\",\\\"-track-array\\\",\\\"admin/nil\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/client-summary-for-legacy-data.hbs\",\n    \"isStrictMode\": false\n  });\n  let ClientSummaryForLegacyData = _exports.default = (_class = class ClientSummaryForLegacyData extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n    }\n    get fullRecordURL() {\n      const {\n        practiceArea,\n        clientID\n      } = this.args.clientRecord;\n      const practiceAreaUrlForFirm = this.firm.getLegacyRecordUrl(practiceArea);\n      if (practiceAreaUrlForFirm) {\n        return `${practiceAreaUrlForFirm}admin/clients/${clientID}?viewMode=classic`;\n      }\n      return null;\n    }\n    get showPartnerColumn() {\n      return this.args.clientRecord?.partnerFirstName || this.args?.clientRecord?.partnerSurname;\n    }\n    get tableBodyRows() {\n      const {\n        clientRecord\n      } = this.args;\n      return [{\n        title: \"Date of birth\",\n        user: (0, _prettyDate.prettyDate)([clientRecord?.dobDay, clientRecord?.dobMonth, clientRecord?.dobYear]),\n        spouse: (0, _prettyDate.prettyDate)([clientRecord?.partnerDobDay, clientRecord?.partnerDobMonth, clientRecord?.partnerDobYear])\n      }, {\n        title: \"Phone\",\n        user: clientRecord?.phone,\n        spouse: clientRecord?.partnerPhone\n      }, {\n        title: \"Email\",\n        user: clientRecord?.email,\n        spouse: clientRecord?.partnerEmail\n      }, {\n        title: \"Address\",\n        user: (0, _template.htmlSafe)((0, _addressString.addressString)([clientRecord?.postalAddress], {\n          detailed: true,\n          linebreaks: true\n        })),\n        spouse: (0, _template.htmlSafe)((0, _addressString.addressString)([clientRecord?.partnerPostalAddress], {\n          detailed: true,\n          linebreaks: true\n        }))\n      }, {\n        title: \"Maiden or other names\",\n        user: clientRecord?.otherNames,\n        spouse: clientRecord?.partnerOtherNames\n      }];\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, ClientSummaryForLegacyData);\n});","define(\"settify-mvp/components/common-support-requests\", [\"exports\", \"@ember/component\", \"@ember/service\", \"@glimmer/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@glimmer/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"common-support-reqests-box\">\n    <p>\n      <span class=\"fontweight-400\"><i class=\"fal fa-info-circle tight\" /> Did you know</span><br>\n    </p>\n  \n    {{#if (eq @model \"frozenRecord\")}}\n      {{#if @isLawyer}}\n        <p>\n          It is possible to unfreeze a client's record yourself.\n        </p> \n        <p>\n          Simply find the client you would like unfrozen and open their record.\n          You will then be redirected to the 'frozen record' page where you will be asked to enter your {{this.firm.name}} email address.\n        </p>\n        <p>\n          Once entered, click the 'send' button and we will send you an email with a link to unfreeze that record.\n        </p>\n      {{else}}\n        <p>\n          It is possible to unfreeze a record yourself.\n        </p> \n        <p>\n          If you have not done so already, simply access your record as normal and then from the unfreeze page click 'Send unfreeze email' button. \n          We will send an email through to your registered email address with a link to unfreeze your record.\n        </p>\n      {{/if}}\n    {{else if (eq @model \"cantLogin\")}}\n      <p>\n        If you have an existing account, you are able to <LinkTo @route=\"resetpassword\">reset your password</LinkTo> at any time.\n      </p>\n      <p>\n        From the log in page, click 'Forgot your password' which will take you to the reset password page. \n        This will allow you to enter your email address to reset your password.\n      </p>\n      <p>\n        If you are a {{this.firm.name}} team member and need access, another team member with access can create you a login from the 'Configure Settify' page.\n      </p>\n    {{else if (eq @model \"lostData\")}}\n      <p>\n        You may have an email with a custom resume link to help you retrieve your information.\n        This could include an invite from {{this.firm.name}} or even just a 'Personal Link' email.\n      </p>\n      <p>\n        Please check your inbox, including your spam or junk mail folders, for your personal link to resume the process from where you left off.\n      </p>\n    {{else if (eq @model \"lawyerEmails\")}}\n      <p>\n        Updating who receives notification and other emails can be edited from your Settify admin screen.\n      </p>\n      <p>\n        From your admin screen, select <LinkTo @route=\"admin.config\">Configure Settify</LinkTo> in the top right-hand corner. From here you can edit:\n        <ul>\n          <li><LinkTo @route=\"admin.config.accounts\">Billing and accounts</LinkTo> - who receives emails for invoices and to mark which leads became clients</li>\n          <li><LinkTo @route=\"admin.config.dashboard\">Customise the admin experience</LinkTo> - who receives all notifications from Settify and who receives new lead notifications only</li>\n        </ul>\n      </p>\n    {{else if (eq @model \"lawyerListUpate\")}}\n      <p>\n        You can 'add' a new team member or 'update' a current profile from your Settify admin screen. \n      </p>\n      <p>\n        From your admin screen, select Configure Settify in the top right-hand corner and then <LinkTo @route=\"admin.config.team\">Your team</LinkTo>.\n        Here you can add, edit, delete or archive profiles if a team member is on extended leave.\n      </p>\n    {{/if}}\n  </div>\n  */\n  {\n    \"id\": \"VV7VK5pT\",\n    \"block\": \"[[[10,0],[14,0,\\\"common-support-reqests-box\\\"],[12],[1,\\\"\\\\n  \\\"],[10,2],[12],[1,\\\"\\\\n    \\\"],[10,1],[14,0,\\\"fontweight-400\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-info-circle tight\\\"],[12],[13],[1,\\\" Did you know\\\"],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,6],[[30,1],\\\"frozenRecord\\\"],null],[[[41,[30,2],[[[1,\\\"      \\\"],[10,2],[12],[1,\\\"\\\\n        It is possible to unfreeze a client's record yourself.\\\\n      \\\"],[13],[1,\\\" \\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        Simply find the client you would like unfrozen and open their record.\\\\n        You will then be redirected to the 'frozen record' page where you will be asked to enter your \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\" email address.\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        Once entered, click the 'send' button and we will send you an email with a link to unfreeze that record.\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,2],[12],[1,\\\"\\\\n        It is possible to unfreeze a record yourself.\\\\n      \\\"],[13],[1,\\\" \\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        If you have not done so already, simply access your record as normal and then from the unfreeze page click 'Send unfreeze email' button. \\\\n        We will send an email through to your registered email address with a link to unfreeze your record.\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[]],[[[41,[28,[37,6],[[30,1],\\\"cantLogin\\\"],null],[[[1,\\\"    \\\"],[10,2],[12],[1,\\\"\\\\n      If you have an existing account, you are able to \\\"],[8,[39,7],null,[[\\\"@route\\\"],[\\\"resetpassword\\\"]],[[\\\"default\\\"],[[[[1,\\\"reset your password\\\"]],[]]]]],[1,\\\" at any time.\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,2],[12],[1,\\\"\\\\n      From the log in page, click 'Forgot your password' which will take you to the reset password page. \\\\n      This will allow you to enter your email address to reset your password.\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,2],[12],[1,\\\"\\\\n      If you are a \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\" team member and need access, another team member with access can create you a login from the 'Configure Settify' page.\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,6],[[30,1],\\\"lostData\\\"],null],[[[1,\\\"    \\\"],[10,2],[12],[1,\\\"\\\\n      You may have an email with a custom resume link to help you retrieve your information.\\\\n      This could include an invite from \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\" or even just a 'Personal Link' email.\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,2],[12],[1,\\\"\\\\n      Please check your inbox, including your spam or junk mail folders, for your personal link to resume the process from where you left off.\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,6],[[30,1],\\\"lawyerEmails\\\"],null],[[[1,\\\"    \\\"],[10,2],[12],[1,\\\"\\\\n      Updating who receives notification and other emails can be edited from your Settify admin screen.\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,2],[12],[1,\\\"\\\\n      From your admin screen, select \\\"],[8,[39,7],null,[[\\\"@route\\\"],[\\\"admin.config\\\"]],[[\\\"default\\\"],[[[[1,\\\"Configure Settify\\\"]],[]]]]],[1,\\\" in the top right-hand corner. From here you can edit:\\\\n      \\\"],[10,\\\"ul\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"li\\\"],[12],[8,[39,7],null,[[\\\"@route\\\"],[\\\"admin.config.accounts\\\"]],[[\\\"default\\\"],[[[[1,\\\"Billing and accounts\\\"]],[]]]]],[1,\\\" - who receives emails for invoices and to mark which leads became clients\\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"li\\\"],[12],[8,[39,7],null,[[\\\"@route\\\"],[\\\"admin.config.dashboard\\\"]],[[\\\"default\\\"],[[[[1,\\\"Customise the admin experience\\\"]],[]]]]],[1,\\\" - who receives all notifications from Settify and who receives new lead notifications only\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,6],[[30,1],\\\"lawyerListUpate\\\"],null],[[[1,\\\"    \\\"],[10,2],[12],[1,\\\"\\\\n      You can 'add' a new team member or 'update' a current profile from your Settify admin screen. \\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,2],[12],[1,\\\"\\\\n      From your admin screen, select Configure Settify in the top right-hand corner and then \\\"],[8,[39,7],null,[[\\\"@route\\\"],[\\\"admin.config.team\\\"]],[[\\\"default\\\"],[[[[1,\\\"Your team\\\"]],[]]]]],[1,\\\".\\\\n      Here you can add, edit, delete or archive profiles if a team member is on extended leave.\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]],null]],[]]]],[]]]],[]]]],[]]],[13]],[\\\"@model\\\",\\\"@isLawyer\\\"],false,[\\\"div\\\",\\\"p\\\",\\\"span\\\",\\\"i\\\",\\\"br\\\",\\\"if\\\",\\\"eq\\\",\\\"link-to\\\",\\\"ul\\\",\\\"li\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/common-support-requests.hbs\",\n    \"isStrictMode\": false\n  });\n  let CommonSupportRequestComponent = _exports.default = (_class = class CommonSupportRequestComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, CommonSupportRequestComponent);\n});","define(\"settify-mvp/components/compare-form-changes\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@glimmer/tracking\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _tracking, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@glimmer/tracking\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.hasChanges}}\n    <small>\n      <button type=\"button\" {{on \"click\" this.toggleChanges}}><i class=\"fal fa-split\" />View changes</button>\n      <LiquidIf @predicate={{this.showChanges}}>\n        <div class=\"edge\"></div>\n        <div class=\"content\">\n          Original content:\n          <br />\n          {{#each-in this.changes as |key value|}}\n            <code>\n              <b>{{key}}:</b>\n              {{value}}\n              <br />\n            </code>\n          {{/each-in}}\n        </div>\n      </LiquidIf>\n    </small>\n  {{/if}}\n  */\n  {\n    \"id\": \"HUgyliR5\",\n    \"block\": \"[[[41,[30,0,[\\\"hasChanges\\\"]],[[[1,\\\"  \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n    \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,3],[\\\"click\\\",[30,0,[\\\"toggleChanges\\\"]]],null],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-split\\\"],[12],[13],[1,\\\"View changes\\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,5],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showChanges\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"edge\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"content\\\"],[12],[1,\\\"\\\\n        Original content:\\\\n        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,9],[[30,0,[\\\"changes\\\"]]],null],null,[[[1,\\\"          \\\"],[10,\\\"code\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"b\\\"],[12],[1,[30,2]],[1,\\\":\\\"],[13],[1,\\\"\\\\n            \\\"],[1,[30,1]],[1,\\\"\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[1,2]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"value\\\",\\\"key\\\"],false,[\\\"if\\\",\\\"small\\\",\\\"button\\\",\\\"on\\\",\\\"i\\\",\\\"liquid-if\\\",\\\"div\\\",\\\"br\\\",\\\"each\\\",\\\"-each-in\\\",\\\"code\\\",\\\"b\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/compare-form-changes.hbs\",\n    \"isStrictMode\": false\n  });\n  let CompareFormChangesComponent = _exports.default = (_class = class CompareFormChangesComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"showChanges\", _descriptor, this);\n    }\n    get hasChanges() {\n      return Object.keys(this.changes || []).length;\n    }\n    get changes() {\n      const changesObject = JSON.parse(JSON.stringify(this.args?.model?.__diffs || {}));\n      delete changesObject.deleted;\n      for (const key in changesObject) {\n        if (Object.hasOwnProperty.call(changesObject, key)) {\n          const element = changesObject[key];\n          changesObject[key] = JSON.stringify(element);\n        }\n      }\n      return changesObject;\n    }\n    toggleChanges() {\n      this.showChanges = !this.showChanges;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"showChanges\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"toggleChanges\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleChanges\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, CompareFormChangesComponent);\n});","define(\"settify-mvp/components/confidence-display\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <span>\n    {{#if (gte @confidence 75)}}\n      <div class=\"confidence-display full\" data-value=\"Client has evidence\"></div>\n    {{else if (gte @confidence 50)}}\n      <div class=\"confidence-display half\" data-value=\"Client is quite confident\"></div>\n    {{else if (gte @confidence 25)}}\n      <div class=\"confidence-display quarter\" data-value=\"Client is somewhat confident\"></div>\n    {{else}}\n      <div class=\"confidence-display\" data-value=\"Client guess\"></div>\n    {{/if}}\n  </span>\n  */\n  {\n    \"id\": \"s4IEE/ho\",\n    \"block\": \"[[[10,1],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,2],[[30,1],75],null],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"confidence-display full\\\"],[14,\\\"data-value\\\",\\\"Client has evidence\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,1],50],null],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"confidence-display half\\\"],[14,\\\"data-value\\\",\\\"Client is quite confident\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,1],25],null],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"confidence-display quarter\\\"],[14,\\\"data-value\\\",\\\"Client is somewhat confident\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"confidence-display\\\"],[14,\\\"data-value\\\",\\\"Client guess\\\"],[12],[13],[1,\\\"\\\\n  \\\"]],[]]]],[]]]],[]]],[13]],[\\\"@confidence\\\"],false,[\\\"span\\\",\\\"if\\\",\\\"gte\\\",\\\"div\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/confidence-display.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/confidence-slider\", [\"exports\", \"@ember/template\", \"@ember/object\", \"@ember/component\"], function (_exports, _template, _object, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template\",0,\"@ember/object\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    init() {\n      this._super(...arguments);\n      if (!this.model) {\n        this.set(\"model\", 0);\n      }\n    },\n    labelStyle: (0, _object.computed)(\"model\", function () {\n      const x = this.model;\n      let style = \"\";\n      if (x < 25) {\n        style = \"confidence-first\";\n      } else if (x < 50) {\n        style = \"confidence-second\";\n      } else if (x < 75) {\n        style = \"confidence-third\";\n      } else if (x <= 100) {\n        style = \"confidence-fourth\";\n      }\n      return (0, _template.htmlSafe)(style);\n    }),\n    rangeFill: (0, _object.computed)(\"model\", function () {\n      const amount = this.model;\n      return (0, _template.htmlSafe)(`background-size: ${amount}% 100%`);\n    })\n  });\n});","define(\"settify-mvp/components/config-person-block\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember/service\", \"@ember/template-factory\"], function (_exports, _component, _object, _service, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <tr class={{if @person.disabled \"archived\"}}>\n    <td>\n      {{#if @person.photoURL}}\n        <img src={{@person.photoURL}} alt=\"{{@person.name}}\" />\n      {{else}}\n        <img src=\"/assets/images/nophoto.png\" alt=\"\" />\n      {{/if}}\n    </td>\n    <td>\n      {{#if @person.name}}\n        <span class=\"name\">{{@person.name}}</span>\n        {{#if @person.tag}}\n          ({{@person.tag}})\n        {{/if}}\n        {{#unless @person.disabled}}\n          <SettifyEmailInput @model={{@person.email}} @label=\"Email:\" @validation={{@person.emailValid}} @displayOnly={{true}} />\n        {{/unless}}\n      {{else if @person.newPerson}}\n        <SettifyEmailInput @model={{@person.email}} @placeholder=\"\" @validation={{@person.emailValid}} /><br />\n      {{else if (and (not @person.disabled) @person.email)}}\n        <SettifyEmailInput @model={{@person.email}} @validation={{@person.emailValid}} @displayOnly={{true}} />\n      {{else}}\n        <b>\n          Unnamed\n          {{#if (eq @person.personType \"lawyer\")}}\n            Lawyer\n          {{else}}\n            Assistant\n          {{/if}}\n        </b>\n      {{/if}}\n  \n      {{#if @person.disabled}}\n        (disabled / archived)\n      {{else}}\n        {{#if @person.worksWith.length}}\n          {{#if (eq @person.personType \"lawyer\")}}\n            Assisted by\n          {{else}}\n            Assists\n          {{/if}}\n          {{this.worksWithLabel}}\n        {{else}}\n          {{#if (eq @person.personType \"lawyer\")}}\n            No assistant assigned\n          {{/if}}\n        {{/if}}\n      {{/if}}\n      <small>\n        <LiquidIf @predicate={{this.loading}}>\n          <LoadingSpinner />\n        </LiquidIf>\n        <LiquidIf @predicate={{and (not this.loading) @person.hasLogin}}>\n          {{#if @person.loginEnabled}}\n            <i class=\"fal fa-key config-stack-icon no-left-margin\" />{{#if @person.name}}{{@person.name}}{{else}}{{@person.email}}{{/if}}\n            has an active Settify login\n            <a class=\"clickable\" {{action \"toggleLogin\" @person}}>(click here to disable it)</a>\n          {{else}}\n            <span class=\"fa-stack config-stack-wrapper\">\n              <i class=\"fal fa-key fa-stack-1x config-stack-icon no-margin\" />\n              <i class=\"fal fa-slash fa-stack-1x config-stack-icon no-margin\" />\n            </span>\n            {{#if @person.name}}{{@person.name}}{{else}}{{@person.email}}{{/if}}\n            has a disabled Settify login\n            <a class=\"clickable\" {{action \"toggleLogin\" @person}}>(click here to enable it)</a>\n          {{/if}}\n        </LiquidIf>\n        <LiquidIf @predicate={{and (not this.loading) (not @person.hasLogin)}}>\n          <a class=\"clickable\" {{action \"createLogin\" @person}}>\n            <span class=\"fa-stack config-stack-wrapper\">\n              <i class=\"fal fa-key fa-stack-1x config-stack-icon no-margin shift-left\" />\n              <i class=\"fal fa-plus fa-stack-1x config-stack-icon no-margin shift-right\" />\n            </span>\n            Create a Settify login for\n            {{#if @person.name}}{{@person.name}}{{else}}{{@person.email}}{{/if}}\n          </a>\n        </LiquidIf>\n      </small>\n      <LiquidIf @predicate={{this.accountStatusMessage}}>\n        <small class=\"negative\">\n          {{this.accountStatusMessage}}\n          <LiquidIf @predicate={{this.showImSure}}>\n            <a class=\"clickable\" {{action \"createLogin\" @person}}>I'm sure</a>\n          </LiquidIf>\n        </small>\n      </LiquidIf>\n      {{yield}}\n    </td>\n  \n    <td>\n      {{#unless @hideActions}}\n        <small><LinkTo @route=\"admin.config.editteam\" @model={{@person.personID}} @query={{hash editField=\"false\" firmID=this.firmID}}><i class=\"fal fa-pencil\" />Edit</LinkTo></small>\n      {{/unless}}\n      {{#if (and @person.disabled (not @hideActions))}}\n        <small><LinkTo @route=\"admin.config.editteam\" @model={{@person.personID}} @query={{hash editField=\"showArchive\" firmID=this.firmID}}><i class=\"fal fa-archive\" />Unarchive</LinkTo></small>\n      {{else}}\n        {{#unless @hideActions}}\n          <small><LinkTo @route=\"admin.config.editteam\" @model={{@person.personID}} @query={{hash editField=\"showArchive\" firmID=this.firmID}}><i class=\"fal fa-archive\" />Archive</LinkTo></small>\n        {{/unless}}\n        {{#if @deleteUser}}\n          <a class=\"clickable\" {{action \"deleteUser\" @person}}><i class=\"fal fa-trash\" />Delete</a>\n        {{else}}\n          <small><LinkTo @route=\"admin.config.editteam\" @model={{@person.personID}} @query={{hash editField=\"showDelete\" firmID=this.firmID}}><i class=\"fal fa-trash\" />Delete</LinkTo></small>\n        {{/if}}\n      {{/if}}\n    </td>\n  </tr>\n  */\n  {\n    \"id\": \"3Ni/LGyO\",\n    \"block\": \"[[[10,\\\"tr\\\"],[15,0,[52,[30,1,[\\\"disabled\\\"]],\\\"archived\\\"]],[12],[1,\\\"\\\\n  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"photoURL\\\"]],[[[1,\\\"      \\\"],[10,\\\"img\\\"],[15,\\\"src\\\",[30,1,[\\\"photoURL\\\"]]],[15,\\\"alt\\\",[29,[[30,1,[\\\"name\\\"]]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"/assets/images/nophoto.png\\\"],[14,\\\"alt\\\",\\\"\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"name\\\"]],[[[1,\\\"      \\\"],[10,1],[14,0,\\\"name\\\"],[12],[1,[30,1,[\\\"name\\\"]]],[13],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"tag\\\"]],[[[1,\\\"        (\\\"],[1,[30,1,[\\\"tag\\\"]]],[1,\\\")\\\\n\\\"]],[]],null],[41,[51,[30,1,[\\\"disabled\\\"]]],[[[1,\\\"        \\\"],[8,[39,6],null,[[\\\"@model\\\",\\\"@label\\\",\\\"@validation\\\",\\\"@displayOnly\\\"],[[30,1,[\\\"email\\\"]],\\\"Email:\\\",[30,1,[\\\"emailValid\\\"]],true]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]],[[[41,[30,1,[\\\"newPerson\\\"]],[[[1,\\\"      \\\"],[8,[39,6],null,[[\\\"@model\\\",\\\"@placeholder\\\",\\\"@validation\\\"],[[30,1,[\\\"email\\\"]],\\\"\\\",[30,1,[\\\"emailValid\\\"]]]],null],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,8],[[28,[37,9],[[30,1,[\\\"disabled\\\"]]],null],[30,1,[\\\"email\\\"]]],null],[[[1,\\\"      \\\"],[8,[39,6],null,[[\\\"@model\\\",\\\"@validation\\\",\\\"@displayOnly\\\"],[[30,1,[\\\"email\\\"]],[30,1,[\\\"emailValid\\\"]],true]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,\\\"b\\\"],[12],[1,\\\"\\\\n        Unnamed\\\\n\\\"],[41,[28,[37,11],[[30,1,[\\\"personType\\\"]],\\\"lawyer\\\"],null],[[[1,\\\"          Lawyer\\\\n\\\"]],[]],[[[1,\\\"          Assistant\\\\n\\\"]],[]]],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]],[]]]],[]]],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"disabled\\\"]],[[[1,\\\"      (disabled / archived)\\\\n\\\"]],[]],[[[41,[30,1,[\\\"worksWith\\\",\\\"length\\\"]],[[[41,[28,[37,11],[[30,1,[\\\"personType\\\"]],\\\"lawyer\\\"],null],[[[1,\\\"          Assisted by\\\\n\\\"]],[]],[[[1,\\\"          Assists\\\\n\\\"]],[]]],[1,\\\"        \\\"],[1,[30,0,[\\\"worksWithLabel\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,11],[[30,1,[\\\"personType\\\"]],\\\"lawyer\\\"],null],[[[1,\\\"          No assistant assigned\\\\n\\\"]],[]],null]],[]]]],[]]],[1,\\\"    \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[30,0,[\\\"loading\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[39,14],null,null,null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[28,[37,8],[[28,[37,9],[[30,0,[\\\"loading\\\"]]],null],[30,1,[\\\"hasLogin\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"loginEnabled\\\"]],[[[1,\\\"          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-key config-stack-icon no-left-margin\\\"],[12],[13],[41,[30,1,[\\\"name\\\"]],[[[1,[30,1,[\\\"name\\\"]]]],[]],[[[1,[30,1,[\\\"email\\\"]]]],[]]],[1,\\\"\\\\n          has an active Settify login\\\\n          \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,17],[[30,0],\\\"toggleLogin\\\",[30,1]],null],[12],[1,\\\"(click here to disable it)\\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[10,1],[14,0,\\\"fa-stack config-stack-wrapper\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-key fa-stack-1x config-stack-icon no-margin\\\"],[12],[13],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-slash fa-stack-1x config-stack-icon no-margin\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[41,[30,1,[\\\"name\\\"]],[[[1,[30,1,[\\\"name\\\"]]]],[]],[[[1,[30,1,[\\\"email\\\"]]]],[]]],[1,\\\"\\\\n          has a disabled Settify login\\\\n          \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,17],[[30,0],\\\"toggleLogin\\\",[30,1]],null],[12],[1,\\\"(click here to enable it)\\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[28,[37,8],[[28,[37,9],[[30,0,[\\\"loading\\\"]]],null],[28,[37,9],[[30,1,[\\\"hasLogin\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,17],[[30,0],\\\"createLogin\\\",[30,1]],null],[12],[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"fa-stack config-stack-wrapper\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-key fa-stack-1x config-stack-icon no-margin shift-left\\\"],[12],[13],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus fa-stack-1x config-stack-icon no-margin shift-right\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          Create a Settify login for\\\\n          \\\"],[41,[30,1,[\\\"name\\\"]],[[[1,[30,1,[\\\"name\\\"]]]],[]],[[[1,[30,1,[\\\"email\\\"]]]],[]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[30,0,[\\\"accountStatusMessage\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,\\\"small\\\"],[14,0,\\\"negative\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[30,0,[\\\"accountStatusMessage\\\"]]],[1,\\\"\\\\n        \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showImSure\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,17],[[30,0],\\\"createLogin\\\",[30,1]],null],[12],[1,\\\"I'm sure\\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[18,4,null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[51,[30,2]],[[[1,\\\"      \\\"],[10,\\\"small\\\"],[12],[8,[39,19],null,[[\\\"@route\\\",\\\"@model\\\",\\\"@query\\\"],[\\\"admin.config.editteam\\\",[30,1,[\\\"personID\\\"]],[28,[37,20],null,[[\\\"editField\\\",\\\"firmID\\\"],[\\\"false\\\",[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-pencil\\\"],[12],[13],[1,\\\"Edit\\\"]],[]]]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,8],[[30,1,[\\\"disabled\\\"]],[28,[37,9],[[30,2]],null]],null],[[[1,\\\"      \\\"],[10,\\\"small\\\"],[12],[8,[39,19],null,[[\\\"@route\\\",\\\"@model\\\",\\\"@query\\\"],[\\\"admin.config.editteam\\\",[30,1,[\\\"personID\\\"]],[28,[37,20],null,[[\\\"editField\\\",\\\"firmID\\\"],[\\\"showArchive\\\",[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-archive\\\"],[12],[13],[1,\\\"Unarchive\\\"]],[]]]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[51,[30,2]],[[[1,\\\"        \\\"],[10,\\\"small\\\"],[12],[8,[39,19],null,[[\\\"@route\\\",\\\"@model\\\",\\\"@query\\\"],[\\\"admin.config.editteam\\\",[30,1,[\\\"personID\\\"]],[28,[37,20],null,[[\\\"editField\\\",\\\"firmID\\\"],[\\\"showArchive\\\",[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-archive\\\"],[12],[13],[1,\\\"Archive\\\"]],[]]]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,3],[[[1,\\\"        \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,17],[[30,0],\\\"deleteUser\\\",[30,1]],null],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-trash\\\"],[12],[13],[1,\\\"Delete\\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,\\\"small\\\"],[12],[8,[39,19],null,[[\\\"@route\\\",\\\"@model\\\",\\\"@query\\\"],[\\\"admin.config.editteam\\\",[30,1,[\\\"personID\\\"]],[28,[37,20],null,[[\\\"editField\\\",\\\"firmID\\\"],[\\\"showDelete\\\",[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-trash\\\"],[12],[13],[1,\\\"Delete\\\"]],[]]]]],[13],[1,\\\"\\\\n\\\"]],[]]]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@person\\\",\\\"@hideActions\\\",\\\"@deleteUser\\\",\\\"&default\\\"],false,[\\\"tr\\\",\\\"if\\\",\\\"td\\\",\\\"img\\\",\\\"span\\\",\\\"unless\\\",\\\"settify-email-input\\\",\\\"br\\\",\\\"and\\\",\\\"not\\\",\\\"b\\\",\\\"eq\\\",\\\"small\\\",\\\"liquid-if\\\",\\\"loading-spinner\\\",\\\"i\\\",\\\"a\\\",\\\"action\\\",\\\"yield\\\",\\\"link-to\\\",\\\"hash\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/config-person-block.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({\n    tagName: \"\",\n    firm: (0, _service.inject)(),\n    lambda: (0, _service.inject)(),\n    lawyerList: (0, _service.inject)(),\n    reset() {\n      this.set(\"loading\", false);\n      this.set(\"accountStatusMessage\", \"\");\n      this.set(\"forceRestrictedDomain\", false);\n      this.set(\"showImSure\", false);\n    },\n    worksWithLabel: (0, _object.computed)(\"lawyerList.byID\", \"person.worksWith\", \"this.lawyerList.byID\", \"this.person.worksWith\", function () {\n      return this.person.worksWith.map(colleague => {\n        const {\n          name,\n          email\n        } = this.lawyerList.byID[colleague.personID];\n        return name ?? email;\n      }).filter(Boolean).join(\", \");\n    }),\n    actions: {\n      toggleLogin(person) {\n        this.set(\"loading\", true);\n        const payload = {\n          firmID: this.lawyerList.firmID,\n          username: person.email.toLowerCase(),\n          userEmail: person.email.toLowerCase(),\n          enabled: !person.loginEnabled\n        };\n        return this.lambda.invoke(this.lambda.updateFirmUserLambda, payload).then(this.lambda.processResponse).then(data => {\n          // A good response is {}\n          this.set(\"loading\", false);\n          if (Object.keys(data).length === 0) {\n            (0, _object.set)(person, \"loginEnabled\", !person.loginEnabled);\n          } else {\n            this.set(\"accountStatusMessage\", `Error ${person.loginEnabled ? \"disabling\" : \"enabling\"} user`);\n          }\n        }).catch(() => {\n          this.set(\"loading\", false);\n          this.set(\"accountStatusMessage\", `Error ${person.loginEnabled ? \"disabling\" : \"enabling\"} user`);\n        });\n      },\n      createLogin(person) {\n        if (!person.emailValid) {\n          return this.set(\"accountStatusMessage\", \"Please add a valid email address\");\n        }\n        this.set(\"loading\", true);\n        this.set(\"showImSure\", false);\n        const payload = {\n          firmID: this.lawyerList.firmID,\n          email: person.email,\n          userEmail: person.email,\n          forceRestrictedDomain: this.forceRestrictedDomain\n        };\n        return this.lambda.invoke(this.lambda.createFirmUserLambda, payload).then(this.lambda.processResponse).then(data => {\n          this.set(\"loading\", false);\n          if (data.failed.length) {\n            if (data.failed.length === 1 && typeof data.failed[0] === \"object\") {\n              this.set(\"accountStatusMessage\", data.failed[0].message);\n              this.set(\"showImSure\", data.failed[0].code === \"432\");\n              this.set(\"forceRestrictedDomain\", true);\n            } else {\n              this.set(\"accountStatusMessage\", \"Error creating user\");\n            }\n          } else {\n            (0, _object.set)(person, \"hasLogin\", true);\n            (0, _object.set)(person, \"loginEnabled\", true);\n            (0, _object.set)(person, \"newPerson\", false); // No longer a new person\n            this.set(\"forceRestrictedDomain\", false);\n            this.set(\"accountStatusMessage\", null);\n          }\n        }).catch(() => {\n          this.set(\"loading\", false);\n          this.set(\"accountStatusMessage\", \"Error creating user\");\n        });\n      },\n      deleteUser(p) {\n        this.set(\"loading\", true);\n        let payload = {\n          firmID: this.lawyerList.firmID,\n          username: p.email,\n          userEmail: p.email\n        };\n        return this.lambda.invoke(this.lambda.deleteFirmUserLambda, payload).then(this.lambda.processResponse).then(data => {\n          if (data.error) {\n            throw data.error;\n          }\n          this.lawyerList.list.removeObject(p);\n          this.set(\"loading\", false);\n        }).catch(() => {\n          // Could not delete user, display message\n          this.set(\"accountStatusMessage\", \"Could not delete user\");\n          this.set(\"loading\", false);\n        });\n      }\n    }\n  }));\n});","define(\"settify-mvp/components/content-from-unique-standalone-page-id\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/template-factory\"], function (_exports, _component, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"settify-for-everything\">\n    <PageFromForm\n      @page={{this.pageDetails.page}}\n      @model={{this.pageDetails.model}}\n      @client={{@client}}\n      @context={{this.pageDetails.context}}\n      @pageIndex={{this.pageDetails.pageIndex}}\n      @loop={{this.pageDetails.loop}}\n      @useNewSwitcher={{@useNewSwitcher}}\n    />\n  </div>\n  */\n  {\n    \"id\": \"BQNMXJ7m\",\n    \"block\": \"[[[10,0],[14,0,\\\"settify-for-everything\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[39,1],null,[[\\\"@page\\\",\\\"@model\\\",\\\"@client\\\",\\\"@context\\\",\\\"@pageIndex\\\",\\\"@loop\\\",\\\"@useNewSwitcher\\\"],[[30,0,[\\\"pageDetails\\\",\\\"page\\\"]],[30,0,[\\\"pageDetails\\\",\\\"model\\\"]],[30,1],[30,0,[\\\"pageDetails\\\",\\\"context\\\"]],[30,0,[\\\"pageDetails\\\",\\\"pageIndex\\\"]],[30,0,[\\\"pageDetails\\\",\\\"loop\\\"]],[30,2]]],null],[1,\\\"\\\\n\\\"],[13]],[\\\"@client\\\",\\\"@useNewSwitcher\\\"],false,[\\\"div\\\",\\\"page-from-form\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/content-from-unique-standalone-page-id.hbs\",\n    \"isStrictMode\": false\n  });\n  class ContentFromUniqueStandalonePageIdComponent extends _component2.default {\n    get pageDetails() {\n      return this.args.client.getUniqueStandalonePageDetails(this.args.pageID) ?? {};\n    }\n  }\n  _exports.default = ContentFromUniqueStandalonePageIdComponent;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, ContentFromUniqueStandalonePageIdComponent);\n});","define(\"settify-mvp/components/custom-firm-summary-element\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/service\", \"settify-mvp/helpers/get-answers-from\", \"@ember/template-factory\"], function (_exports, _component, _component2, _service, _getAnswersFrom, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/service\",0,\"settify-mvp/helpers/get-answers-from\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div data-element-type=\"{{this.elementType}}\" class=\"keep-together\">\n    {{#if this.shouldDisplay}}\n      {{#if (eq this.elementType \"questionDefinition\")}}\n        <SettifyInputSwitcher @question={{@summaryElement}} @summaryMode={{true}} @adminMode={{true}} @displayOnly={{true}} />\n      {{else if (eq this.elementType \"chapterHeading\")}}\n        <ChapterHeadingFromForm @induction={{@induction}} @context={{this.contextObject}} @client={{@clientRecord}} @adminMode={{true}} />\n      {{else if (eq this.elementType \"pageHeading\")}}\n        <PageFromForm @context={{this.contextObject}} @client={{@clientRecord}} @onlyDisplayHeading={{true}} @summaryMode={{true}} @adminMode={{true}} />\n      {{else if (eq this.elementType \"question\")}}\n        <PageFromForm @context={{this.contextObject}} @client={{@clientRecord}} @onlyDisplayQuestions={{true}} @displayOnly={{true}} @summaryMode={{true}} @adminMode={{true}} />\n      {{else if (eq this.elementType \"page\")}}\n        <PageFromForm @context={{this.contextObject}} @client={{@clientRecord}} @summaryMode={{true}} @displayOnly={{true}} @adminMode={{true}} />\n      {{else if (eq this.elementType \"loopedPage\")}}\n        {{#each this.loopAnswers as |loopAnswer loopIndex|}}\n          <PageFromForm @context={{this.contextObject}} @model={{loopAnswer}} @loop={{loopIndex}} @client={{@clientRecord}} @displayOnly={{true}} @summaryMode={{true}} @adminMode={{true}} />\n        {{/each}}\n      {{/if}}\n    {{/if}}\n    {{#if (eq this.elementType \"newSummaryElement\")}}\n      <EditFirmSummaryElement @summaryElement={{@summaryElement}} @listOfPossibleAdditions={{@listOfPossibleAdditions}} @addContentAction={{@addContentAction}} />\n    {{/if}}\n    {{#if @iCan.editFirmSummary}}\n      <EditCommonTasks @name=\"Summary element\" @object={{@summaryElement}} @parentObject={{@induction.firmSummary}} @parentKey=\"customDefinition\" @index={{@index}} @iCan={{@iCan}} />\n    {{/if}}\n  </div>\n  \n  */\n  {\n    \"id\": \"5gI1fWFy\",\n    \"block\": \"[[[10,0],[15,\\\"data-element-type\\\",[29,[[30,0,[\\\"elementType\\\"]]]]],[14,0,\\\"keep-together\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"shouldDisplay\\\"]],[[[41,[28,[37,2],[[30,0,[\\\"elementType\\\"]],\\\"questionDefinition\\\"],null],[[[1,\\\"      \\\"],[8,[39,3],null,[[\\\"@question\\\",\\\"@summaryMode\\\",\\\"@adminMode\\\",\\\"@displayOnly\\\"],[[30,1],true,true,true]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"elementType\\\"]],\\\"chapterHeading\\\"],null],[[[1,\\\"      \\\"],[8,[39,4],null,[[\\\"@induction\\\",\\\"@context\\\",\\\"@client\\\",\\\"@adminMode\\\"],[[30,2],[30,0,[\\\"contextObject\\\"]],[30,3],true]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"elementType\\\"]],\\\"pageHeading\\\"],null],[[[1,\\\"      \\\"],[8,[39,5],null,[[\\\"@context\\\",\\\"@client\\\",\\\"@onlyDisplayHeading\\\",\\\"@summaryMode\\\",\\\"@adminMode\\\"],[[30,0,[\\\"contextObject\\\"]],[30,3],true,true,true]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"elementType\\\"]],\\\"question\\\"],null],[[[1,\\\"      \\\"],[8,[39,5],null,[[\\\"@context\\\",\\\"@client\\\",\\\"@onlyDisplayQuestions\\\",\\\"@displayOnly\\\",\\\"@summaryMode\\\",\\\"@adminMode\\\"],[[30,0,[\\\"contextObject\\\"]],[30,3],true,true,true,true]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"elementType\\\"]],\\\"page\\\"],null],[[[1,\\\"      \\\"],[8,[39,5],null,[[\\\"@context\\\",\\\"@client\\\",\\\"@summaryMode\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\"],[[30,0,[\\\"contextObject\\\"]],[30,3],true,true,true]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"elementType\\\"]],\\\"loopedPage\\\"],null],[[[42,[28,[37,7],[[28,[37,7],[[30,0,[\\\"loopAnswers\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[8,[39,5],null,[[\\\"@context\\\",\\\"@model\\\",\\\"@loop\\\",\\\"@client\\\",\\\"@displayOnly\\\",\\\"@summaryMode\\\",\\\"@adminMode\\\"],[[30,0,[\\\"contextObject\\\"]],[30,4],[30,5],[30,3],true,true,true]],null],[1,\\\"\\\\n\\\"]],[4,5]],null],[1,\\\"    \\\"]],[]],null]],[]]]],[]]]],[]]]],[]]]],[]]]],[]],null],[41,[28,[37,2],[[30,0,[\\\"elementType\\\"]],\\\"newSummaryElement\\\"],null],[[[1,\\\"    \\\"],[8,[39,8],null,[[\\\"@summaryElement\\\",\\\"@listOfPossibleAdditions\\\",\\\"@addContentAction\\\"],[[30,1],[30,6],[30,7]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,8,[\\\"editFirmSummary\\\"]],[[[1,\\\"    \\\"],[8,[39,9],null,[[\\\"@name\\\",\\\"@object\\\",\\\"@parentObject\\\",\\\"@parentKey\\\",\\\"@index\\\",\\\"@iCan\\\"],[\\\"Summary element\\\",[30,1],[30,2,[\\\"firmSummary\\\"]],\\\"customDefinition\\\",[30,9],[30,8]]],null],[1,\\\"\\\\n\\\"]],[]],null],[13],[1,\\\"\\\\n\\\"]],[\\\"@summaryElement\\\",\\\"@induction\\\",\\\"@clientRecord\\\",\\\"loopAnswer\\\",\\\"loopIndex\\\",\\\"@listOfPossibleAdditions\\\",\\\"@addContentAction\\\",\\\"@iCan\\\",\\\"@index\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"eq\\\",\\\"settify-input-switcher\\\",\\\"chapter-heading-from-form\\\",\\\"page-from-form\\\",\\\"each\\\",\\\"-track-array\\\",\\\"edit-firm-summary-element\\\",\\\"edit-common-tasks\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/custom-firm-summary-element.hbs\",\n    \"isStrictMode\": false\n  });\n  let customFirmSummaryElementsComponent = _exports.default = (_class = class customFirmSummaryElementsComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"questionnaireLogic\", _descriptor, this);\n    }\n    get elementType() {\n      return this.getElementType(this.args.summaryElement);\n    }\n    getElementType(element = {}) {\n      if (element.isNewElement) {\n        return \"newSummaryElement\";\n      }\n      if (element.type) {\n        return \"questionDefinition\";\n      }\n      if (element.loopedPage) {\n        return \"loopedPage\";\n      }\n      if (/^standalone\\..+/.test(element.id)) {\n        return \"page\";\n      }\n      const numberOfPartsInId = element.id.split(\".\").length;\n      if (numberOfPartsInId === 1) {\n        return \"chapterHeading\";\n      }\n      if (numberOfPartsInId === 2) {\n        return \"pageHeading\";\n      }\n      return \"question\";\n    }\n    get loopAnswers() {\n      if (this.elementType === \"loopedPage\") {\n        // Find answersLocation of looped page\n        return this.getAnswersObject(this.elementType.id);\n      }\n      return null;\n    }\n    getAnswersObject(elementID) {\n      const [chapter, page] = elementID.split(\".\");\n      const pageDefinition = this.questionnaireLogic.getPageDefinition(this.args.induction.id, chapter, page);\n      return (0, _getAnswersFrom.getAnswersFrom)(null, {\n        answersLocation: pageDefinition.answersLocation,\n        client: this.args.clientRecord,\n        repeatToken: this.args.induction.repeatToken,\n        induction: this.args.induction.id\n      });\n    }\n    get shouldDisplay() {\n      const displayFunctions = {\n        questionDefinition: () => true,\n        page: () => this.calculateShouldDisplaySection(),\n        loopedPage: () => this.calculateShouldDisplaySection(),\n        question: () => this.calculateShouldDisplaySection(),\n        chapterHeading: () => this.calculateShouldDisplaySection(),\n        pageHeading: () => this.calculateShouldDisplaySection()\n      };\n      const displayFunction = displayFunctions[this.elementType] || (() => true);\n      return displayFunction();\n    }\n    calculateShouldDisplaySection() {\n      const [chapter, page] = this.args.summaryElement.id.split(\".\");\n      let pageDefinition = this.questionnaireLogic.getPageDefinition(this.args.induction.id, chapter, page, true);\n      pageDefinition = {\n        inductionObject: pageDefinition.induction,\n        chapterObject: pageDefinition.chapter,\n        pageObject: pageDefinition.page,\n        repeat: this.args.induction.repeatToken\n      };\n      return this.questionnaireLogic.validPageOrChapter(pageDefinition, this.args.clientRecord, {\n        adminMode: true\n      });\n    }\n    get contextObject() {\n      if (this.elementType !== \"questionDefinition\") {\n        return this.generateContextObject();\n      }\n      return null;\n    }\n    generateContextObject() {\n      const [chapter, page, question] = this.args.summaryElement.id.split(\".\");\n      return {\n        chapter: chapter,\n        page: page,\n        question: question,\n        induction: this.args.induction.id,\n        repeat: this.args.induction.repeatToken\n      };\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"questionnaireLogic\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, customFirmSummaryElementsComponent);\n});","define(\"settify-mvp/components/custom-firm-summary-more-info-printer\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"settify-mvp/helpers/get-answers-from\", \"settify-mvp/helpers/non-empty-string\", \"settify-mvp/helpers/parse-text\", \"@ember/template-factory\"], function (_exports, _component, _component2, _getAnswersFrom, _nonEmptyString, _parseText, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"settify-mvp/helpers/get-answers-from\",0,\"settify-mvp/helpers/non-empty-string\",0,\"settify-mvp/helpers/parse-text\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.moreInfoElements.length}}\n    <div id=\"custom-firm-summary-more-info\">\n      <div class=\"image-wrapper bold\">\n        <LineIcon @src={{sum \"https://cdn.settify.com.au/icons/\" (de-fingerprint this.moreInfoHeader.icon)}} />\n        <h3 class=\"banner-title settify-sensitive\">\n          {{this.moreInfoHeader.title}}\n        </h3>\n      </div>\n      <ul>\n        {{#each this.moreInfoElements as |element|}}\n          <li class=\"settify-sensitive\">\n            {{element}}\n          </li>\n        {{/each}}\n      </ul>\n    </div>\n  {{/if}}\n  */\n  {\n    \"id\": \"pDLdWFFf\",\n    \"block\": \"[[[41,[30,0,[\\\"moreInfoElements\\\",\\\"length\\\"]],[[[1,\\\"  \\\"],[10,0],[14,1,\\\"custom-firm-summary-more-info\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"image-wrapper bold\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,2],null,[[\\\"@src\\\"],[[28,[37,3],[\\\"https://cdn.settify.com.au/icons/\\\",[28,[37,4],[[30,0,[\\\"moreInfoHeader\\\",\\\"icon\\\"]]],null]],null]]],null],[1,\\\"\\\\n      \\\"],[10,\\\"h3\\\"],[14,0,\\\"banner-title settify-sensitive\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[30,0,[\\\"moreInfoHeader\\\",\\\"title\\\"]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"ul\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,8],[[28,[37,8],[[30,0,[\\\"moreInfoElements\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[10,\\\"li\\\"],[14,0,\\\"settify-sensitive\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[30,1]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"element\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"line-icon\\\",\\\"sum\\\",\\\"de-fingerprint\\\",\\\"h3\\\",\\\"ul\\\",\\\"each\\\",\\\"-track-array\\\",\\\"li\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/custom-firm-summary-more-info-printer.hbs\",\n    \"isStrictMode\": false\n  });\n  class CustomFirmSummaryMoreInfoPrinterComponent extends _component2.default {\n    get moreInfoElements() {\n      const {\n        induction\n      } = this.args;\n      if (!induction) {\n        return null;\n      }\n      const moreInfoElements = [];\n      const idsSeen = {};\n      const pt = _parseText.default.create();\n      for (const chapter of induction.chapters) {\n        for (const page of chapter.pages) {\n          const answersObject = (0, _getAnswersFrom.getAnswersFrom)(null, {\n            client: this.args.clientRecord,\n            induction: induction.id,\n            chapter: chapter.id,\n            page: page.id,\n            repeatToken: induction.repeatToken,\n            answersLocation: page.answersLocation\n          });\n          const context = {\n            induction: induction.id,\n            repeat: induction.repeatToken,\n            chapter: chapter.id,\n            page: page.id\n          };\n          if (answersObject && answersObject.settifyMoreInfo) {\n            // We found some more info\n            let parsedTitle = pt.compute([page.title], {\n              clientRecord: this.args.clientRecord,\n              context,\n              doNotWrap: true\n            });\n            if (!(0, _nonEmptyString.nonEmptyString)([parsedTitle])) {\n              // this page didn't have a title - need to make one up ourselves\n              parsedTitle = page.id;\n            }\n            moreInfoElements.push(`From ${this.args.clientRecord.firstName}'s answers about ${parsedTitle}: ${answersObject.settifyMoreInfo}`);\n          }\n          if (Array.isArray(answersObject)) {\n            // We are on a looped page\n            for (const loopInfo of answersObject) {\n              if (loopInfo && loopInfo.settifyMoreInfo && !idsSeen[loopInfo.id]) {\n                let parsedTitle = pt.compute([page.title], {\n                  clientRecord: this.args.clientRecord,\n                  context,\n                  doNotWrap: true,\n                  model: loopInfo\n                });\n                if (!(0, _nonEmptyString.nonEmptyString)([parsedTitle])) {\n                  // this page didn't have a title - need to make one up ourselves\n                  parsedTitle = [loopInfo.firstName || \"\", loopInfo.middleName || \"\", loopInfo.surname || \"\"].join(\" \").trim();\n                  parsedTitle = parsedTitle || loopInfo.name;\n                  parsedTitle = parsedTitle || loopInfo.description;\n                }\n                if (!(0, _nonEmptyString.nonEmptyString)([parsedTitle])) {\n                  parsedTitle = page.id;\n                }\n                moreInfoElements.push(`From ${this.args.clientRecord.firstName}'s answers about ${parsedTitle}: ${loopInfo.settifyMoreInfo}`);\n                idsSeen[loopInfo.id] = true;\n              }\n            }\n          }\n        }\n      }\n      return moreInfoElements;\n    }\n    get moreInfoHeader() {\n      const clientFirstName = this.args.clientRecord.firstName;\n      return {\n        title: `${clientFirstName}'s Additional Information`,\n        icon: \"paper-stack.png\"\n      };\n    }\n  }\n  _exports.default = CustomFirmSummaryMoreInfoPrinterComponent;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, CustomFirmSummaryMoreInfoPrinterComponent);\n});","define(\"settify-mvp/components/custom-firm-summary\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember/runloop\", \"@ember/utils\", \"@ember/service\", \"settify-mvp/mixins/edit-helpers\", \"@ember/template-factory\"], function (_exports, _component, _object, _runloop, _utils, _service, _editHelpers, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/runloop\",0,\"@ember/utils\",0,\"@ember/service\",0,\"@ember/component\",0,\"settify-mvp/mixins/edit-helpers\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"condensed-summary custom-firm-summary settify-for-everything\">\n    {{#if @iCan.editFirmSummary}}\n      <div class=\"insert-bar clickable {{if @readOnly \"no-display\"}}\" {{action \"insertSummaryContentSelectAt\" 0}}>\n        <span><i class=\"fal fa-plus-circle tight\" />Insert summary content here</span>\n      </div>\n    {{/if}}\n    {{#each @induction.firmSummary.customDefinition as |summaryElement index|}}\n      <CustomFirmSummaryElement @summaryElement={{summaryElement}} @clientRecord={{@clientRecord}} @induction={{@induction}} @listOfPossibleAdditions={{this.listOfPossibleAdditions}} @index={{index}} @iCan={{@iCan}} @addContentAction={{action \"addContent\" (sum index 1)}} />\n      {{#if @iCan.editFirmSummary}}\n        <div class=\"insert-bar clickable {{if @readOnly \"no-display\"}}\" {{action \"insertSummaryContentSelectAt\" (sum index 1)}}>\n          <span><i class=\"fal fa-plus-circle tight\" />Insert summary content here</span>\n        </div>\n      {{/if}}\n    {{/each}}\n  \n    <CustomFirmSummaryMoreInfoPrinter @induction={{@induction}} @clientRecord={{@clientRecord}} />\n    <CallbackToken @callback={{@onFinishedRendering}} />\n  </div>\n  \n  */\n  {\n    \"id\": \"zDUfKpNJ\",\n    \"block\": \"[[[10,0],[14,0,\\\"condensed-summary custom-firm-summary settify-for-everything\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"editFirmSummary\\\"]],[[[1,\\\"    \\\"],[11,0],[16,0,[29,[\\\"insert-bar clickable \\\",[52,[30,2],\\\"no-display\\\"]]]],[4,[38,2],[[30,0],\\\"insertSummaryContentSelectAt\\\",0],null],[12],[1,\\\"\\\\n      \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Insert summary content here\\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[42,[28,[37,6],[[28,[37,6],[[30,3,[\\\"firmSummary\\\",\\\"customDefinition\\\"]]],null]],null],null,[[[1,\\\"    \\\"],[8,[39,7],null,[[\\\"@summaryElement\\\",\\\"@clientRecord\\\",\\\"@induction\\\",\\\"@listOfPossibleAdditions\\\",\\\"@index\\\",\\\"@iCan\\\",\\\"@addContentAction\\\"],[[30,4],[30,6],[30,3],[30,0,[\\\"listOfPossibleAdditions\\\"]],[30,5],[30,1],[28,[37,2],[[30,0],\\\"addContent\\\",[28,[37,8],[[30,5],1],null]],null]]],null],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"editFirmSummary\\\"]],[[[1,\\\"      \\\"],[11,0],[16,0,[29,[\\\"insert-bar clickable \\\",[52,[30,2],\\\"no-display\\\"]]]],[4,[38,2],[[30,0],\\\"insertSummaryContentSelectAt\\\",[28,[37,8],[[30,5],1],null]],null],[12],[1,\\\"\\\\n        \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Insert summary content here\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[4,5]],null],[1,\\\"\\\\n  \\\"],[8,[39,9],null,[[\\\"@induction\\\",\\\"@clientRecord\\\"],[[30,3],[30,6]]],null],[1,\\\"\\\\n  \\\"],[8,[39,10],null,[[\\\"@callback\\\"],[[30,7]]],null],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[\\\"@iCan\\\",\\\"@readOnly\\\",\\\"@induction\\\",\\\"summaryElement\\\",\\\"index\\\",\\\"@clientRecord\\\",\\\"@onFinishedRendering\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"action\\\",\\\"span\\\",\\\"i\\\",\\\"each\\\",\\\"-track-array\\\",\\\"custom-firm-summary-element\\\",\\\"sum\\\",\\\"custom-firm-summary-more-info-printer\\\",\\\"callback-token\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/custom-firm-summary.hbs\",\n    \"isStrictMode\": false\n  });\n  const emptyFirmSummary = {\n    id: \"firmSummary\",\n    lastSafetyCheckRun: null,\n    customDefinition: [{\n      id: \"defaultNewElement\",\n      isNewElement: true\n    }],\n    uniqueNumber: 1\n  };\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend(_editHelpers.default, {\n    questionnaireLogic: (0, _service.inject)(),\n    reset() {\n      let uniqueNumber = 1;\n      if (this.induction?.firmSummary?.customDefinition) {\n        uniqueNumber = this.induction.firmSummary.customDefinition.length + 1;\n      }\n      this.set(\"induction.firmSummary.uniqueNumber\", uniqueNumber);\n    },\n    init() {\n      this._super(...arguments);\n      if ((0, _utils.isEmpty)(this.induction?.firmSummary)) {\n        (0, _runloop.next)(() => {\n          (0, _object.set)(this.induction, \"firmSummary\", JSON.parse(JSON.stringify(emptyFirmSummary)));\n        });\n      }\n    },\n    listOfPossibleAdditions: (0, _object.computed)(\"iCan.editFirmSummary\", \"induction.chapters.@each.pages\", \"induction.firmSummary.customDefinition.[]\", \"induction.useCustomDefinition\", function () {\n      if (this.iCan?.editFirmSummary) {\n        const flatInduction = [];\n        this.induction.chapters.forEach(c => {\n          if (c.id !== \"standalone\") {\n            // Can't add the whole standalone chapter as one\n            flatInduction.push(c.id);\n          }\n          c.pages.forEach(p => {\n            flatInduction.push(`${c.id}.${p.id}`);\n            if (c.id !== \"standalone\") {\n              // Can only add standalone pages as a whole\n              p.questions.forEach(q => {\n                flatInduction.push(`${c.id}.${p.id}.${q.id}`);\n              });\n            }\n          });\n        });\n        const customDefinition = this.induction.firmSummary.customDefinition.map(element => element.id);\n        // Need to filter out elements already in the summary, since we can't have two elements with the same ID\n        return flatInduction.filter(id => !customDefinition.includes(id)).map(id => {\n          return {\n            id\n          };\n        });\n      }\n      return [];\n    })\n  }));\n});","define(\"settify-mvp/components/custom-tabbed-title\", [\"exports\", \"@ember/object\", \"@ember/component\", \"settify-mvp/utils/format-item-label\"], function (_exports, _object, _component, _formatItemLabel) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/component\",0,\"settify-mvp/utils/format-item-label\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    label: (0, _object.computed)(\"client.touch\", \"item\", \"itemLabelFormat\", function () {\n      return (0, _formatItemLabel.default)(this.item, this.itemLabelFormat);\n    })\n  });\n});","define(\"settify-mvp/components/customisations/landing-page/index\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <TipTapEditor @content={{@content}} @editor={{@editor}} @setEditor={{@setEditor}} />\n  */\n  {\n    \"id\": \"BKHemuOg\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@content\\\",\\\"@editor\\\",\\\"@setEditor\\\"],[[30,1],[30,2],[30,3]]],null]],[\\\"@content\\\",\\\"@editor\\\",\\\"@setEditor\\\"],false,[\\\"tip-tap-editor\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/customisations/landing-page/index.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/dashboard-chart\", [\"exports\", \"@ember/template\", \"jquery\", \"@ember/service\", \"@ember/component\"], function (_exports, _template, _jquery, _service, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template\",0,\"jquery\",0,\"@ember/service\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  let uid = 0;\n  let seriesColors = [\"#34a853\", \"#FF2233\", \"#3498FF\", \"#34FF66\", \"#FF81FF\", \"#77FFFF\", \"#FFAA11\", \"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\", \"#b3de69\", \"#fccde5\", \"#d9d9d9\"];\n  var _default = _exports.default = _component.default.extend({\n    chartdiv: null,\n    lambda: (0, _service.inject)(),\n    init() {\n      this._super(...arguments);\n      this.set(\"chartdiv\", `chart-${uid++}`);\n      this.set(\"loading\", true);\n      this.set(\"error\", null);\n      this.loadData();\n    },\n    loadData() {\n      let {\n        arn\n      } = this;\n      let {\n        parameters\n      } = this;\n      this.lambda.invoke(arn, parameters).then(result => {\n        // put this result into the chart!\n        let payload = JSON.parse(result.Payload);\n        if (payload.axes && payload.values) {\n          _jquery.default.jqplot.config.enablePlugins = true;\n          let config = {\n            title: this.title,\n            seriesColors: seriesColors,\n            animate: false,\n            seriesDefaults: {\n              pointLabels: {\n                show: true\n              },\n              rendererOptions: {\n                shadowOffset: 0\n              }\n            },\n            grid: {\n              background: \"#FFF\",\n              gridLineColor: \"#DDD\",\n              borderWidth: 1.0,\n              borderColor: \"#DDD\",\n              shadow: false\n            },\n            axes: {\n              xaxis: {\n                renderer: _jquery.default.jqplot.CategoryAxisRenderer,\n                labelRenderer: _jquery.default.jqplot.CanvasAxisLabelRenderer,\n                tickRenderer: _jquery.default.jqplot.CanvasAxisTickRenderer,\n                ticks: payload.axes,\n                tickOptions: {\n                  angle: -80\n                },\n                pad: 0\n              },\n              yaxis: {\n                pad: 0\n              }\n            },\n            highlighter: {\n              show: false\n            }\n          };\n          let {\n            type\n          } = this;\n          if (type === \"bar\") {\n            config.seriesDefaults.renderer = _jquery.default.jqplot.BarRenderer;\n            config.seriesDefaults.rendererOptions.barWidth = 10;\n            if (this.stacked) {\n              config.stackSeries = true;\n            }\n          }\n          if (type === \"line\") {\n            if (this.smooth) {\n              config.seriesDefaults.rendererOptions.smooth = true;\n            }\n            if (this.filled) {\n              config.seriesDefaults.fill = true;\n              config.stackSeries = true;\n            }\n          }\n          if (payload.labels) {\n            let la = [];\n            let j = 0;\n            for (let i = 0; i < payload.labels.length; i++) {\n              la.pushObject({\n                text: payload.labels[i],\n                style: (0, _template.htmlSafe)(`background-color: ${seriesColors[j]};`)\n              });\n              j++;\n              if (j >= seriesColors.length) {\n                j = 0;\n              }\n            }\n            this.set(\"labels\", la);\n          }\n          _jquery.default.jqplot(this.chartdiv, payload.values, config);\n          this.set(\"loading\", false);\n        }\n      }).catch(error => {\n        if (error.toString() === \"TypeError: Cannot read property 'config' of undefined\") {\n          error = `${error.toString()}. Did you forget to restart the Ember server?`;\n        }\n        this.set(\"loading\", false);\n        this.set(\"error\", error);\n      });\n    }\n  });\n});","define(\"settify-mvp/components/date-picker\", [\"exports\", \"@ember/object/computed\", \"@ember/object\", \"@ember/component\", \"moment\"], function (_exports, _computed, _object, _component, _moment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object/computed\",0,\"@ember/object\",0,\"@ember/component\",0,\"moment\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    classNames: [\"datepicker__wrapper\"],\n    placeholder: \"Select a date\",\n    selectedDate: null,\n    showPlaceholder: (0, _computed.not)(\"date\"),\n    didInsertElement() {\n      this._super(...arguments);\n      this.setupDatePicker();\n    },\n    convertModelToDateObject: (0, _object.observer)(\"selectedDate\", function () {\n      this.handleDateChange();\n    }),\n    setupDatePicker() {\n      // Present browser's date input when user has old browser\n      if (!(\"showPicker\" in HTMLInputElement.prototype)) {\n        this.set(\"showPlaceholder\", false);\n        const dateLabel = this.element.querySelector(\".datepicker__label\");\n        dateLabel.addClass(\"sr-only\");\n        return;\n      }\n      if (this.date) {\n        // There is already a date, set the selectedDate accordingly\n        this.set(\"selectedDate\", this.convertDateToInputFormat(this.date));\n      }\n      if (this.minDate) {\n        // There is a min date that should be allowed to be selected\n        this.set(\"minDate\", this.convertDateToInputFormat(this.minDate));\n      }\n    },\n    handleDateChange() {\n      // early exit for when someone clears the date in the picker.\n      if (!this.selectedDate) {\n        this.set(\"date\", null);\n        return;\n      }\n      if (this.utc) {\n        return this.set(\"date\", _moment.default.utc(this.selectedDate).toDate());\n      }\n      this.set(\"date\", (0, _moment.default)(this.selectedDate).toDate());\n    },\n    convertDateToInputFormat(date) {\n      return (0, _moment.default)(date).format(\"YYYY-MM-DD\");\n    },\n    actions: {\n      openDatePicker() {\n        const dateInput = this.element.querySelector(\".datepicker__input\");\n        if (dateInput) {\n          dateInput.showPicker();\n        }\n      }\n    }\n  });\n});","define(\"settify-mvp/components/dev/todo/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"settify-mvp/lib/settings\", \"@ember/template-factory\"], function (_exports, _component, _component2, _settings, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"settify-mvp/lib/settings\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.shouldDisplay}}\n    <span class=\"inline-flex items-center rounded-md bg-yellow-50 px-2 py-1 text-xs font-medium text-yellow-800 ring-1 ring-inset ring-yellow-600/20\">\n      TODO:\n      {{#if (has-block)}}\n        {{yield}}\n      {{else}}\n        {{@text}}\n      {{/if}}\n    </span>\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"D30Yb5oa\",\n    \"block\": \"[[[41,[30,0,[\\\"shouldDisplay\\\"]],[[[1,\\\"  \\\"],[10,1],[14,0,\\\"inline-flex items-center rounded-md bg-yellow-50 px-2 py-1 text-xs font-medium text-yellow-800 ring-1 ring-inset ring-yellow-600/20\\\"],[12],[1,\\\"\\\\n    TODO:\\\\n\\\"],[41,[48,[30,2]],[[[1,\\\"      \\\"],[18,2,null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[1,[30,1]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@text\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"span\\\",\\\"has-block\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/dev/todo/index.hbs\",\n    \"isStrictMode\": false\n  });\n  class DevTodoComponent extends _component2.default {\n    get shouldDisplay() {\n      return _settings.default.isDevelopmentAccount();\n    }\n  }\n  _exports.default = DevTodoComponent;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, DevTodoComponent);\n});","define(\"settify-mvp/components/display-if-icon\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/template-factory\"], function (_exports, _component, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.showIcon}}\n    <i class=\"fal fa-code-branch tight\" title=\"This will only displayed if certain conditions are met\"/>\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"tmqSdTFu\",\n    \"block\": \"[[[41,[30,0,[\\\"showIcon\\\"]],[[[1,\\\"  \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-code-branch tight\\\"],[14,\\\"title\\\",\\\"This will only displayed if certain conditions are met\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null]],[],false,[\\\"if\\\",\\\"i\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/display-if-icon.hbs\",\n    \"isStrictMode\": false\n  });\n  class DisplayIfIconComponent extends _component2.default {\n    get showIcon() {\n      const displayIfObject = this.args.displayIf;\n      if (!displayIfObject) {\n        return false;\n      }\n      for (const key in displayIfObject) {\n        if (Object.prototype.hasOwnProperty.call(displayIfObject, key)) {\n          return true;\n        }\n      }\n      return false;\n    }\n  }\n  _exports.default = DisplayIfIconComponent;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, DisplayIfIconComponent);\n});","define(\"settify-mvp/components/document-base\", [\"exports\", \"@ember/service\", \"@ember/component\", \"settify-mvp/lib/identity\", \"settify-mvp/helpers/s3-debucket\"], function (_exports, _service, _component, _identity, _s3Debucket) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@ember/component\",0,\"settify-mvp/lib/identity\",0,\"settify-mvp/helpers/s3-debucket\"eaimeta@70e063a35619d71f\n  /* global saveAs */\n  var _default = _exports.default = _component.default.extend({\n    awsService: (0, _service.inject)(),\n    store: (0, _service.inject)(),\n    session: (0, _service.inject)(),\n    record: undefined,\n    isLoading: 0,\n    startLoading() {\n      this.incrementProperty(\"isLoading\");\n    },\n    finishedLoading() {\n      this.decrementProperty(\"isLoading\");\n      if (this.isLoading < 0) {\n        this.set(\"isLoading\", 0);\n      }\n    },\n    init() {\n      this._super(...arguments);\n      this.set(\"isLoading\", 0);\n      const {\n        store\n      } = this;\n      const docID = this.get(\"document.resource\");\n      if (!this.userID) {\n        this.set(\"userID\", (0, _identity.getIdentityID)(this.session));\n      }\n\n      // Ember can't handle multiple IDs per record, so we have to patch them together like this\n      const combinedID = `${this.userID}@${docID}`;\n      const documentRecord = store.peekRecord(\"document\", combinedID);\n      if (documentRecord) {\n        this.set(\"record\", documentRecord);\n        const func = this.statusCallback;\n        if (func) {\n          const doc = this.document.resource;\n          const status = this.get(\"record.status\");\n          func(doc, status);\n        }\n      } else {\n        // console.log(\"Document not cached, going to server.\");\n        const that = this;\n        store.findRecord(\"document\", combinedID).then(function (value) {\n          // success\n          // console.log(\"Document retrieved successfully: \", value);\n          that.set(\"record\", value);\n        }, function (err) {\n          // error\n          // debugger;\n          console.log(`Failed to retrieve document ${combinedID}: `, err);\n\n          // because we've already tried to find this record, it will now exist in Ember Store\n          // therefore, need to unload that record first\n          store.recordForId(\"document\", combinedID).unloadRecord();\n          const r = store.createRecord(\"document\", {\n            id: combinedID\n          });\n          r.save();\n          that.set(\"record\", r);\n        });\n      }\n    },\n    doDownload(filename) {\n      this.awsService.getS3ByType(\"clientdocuments\").then(s3Client => {\n        this.startLoading();\n        s3Client.getObject({\n          Key: filename\n        }, (err, data) => {\n          this.finishedLoading();\n          if (!err) {\n            const blob = new Blob([data.Body], {\n              type: data.ContentType\n            });\n            saveAs(blob, (0, _s3Debucket.s3Debucket)([filename]));\n          }\n        });\n      });\n    }\n  });\n});","define(\"settify-mvp/components/documents-other\", [\"exports\", \"@ember/object\", \"@ember/service\", \"@ember/component\"], function (_exports, _object, _service, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    store: (0, _service.inject)(),\n    init() {\n      this._super();\n      this.otherDocumentsPlaceholderArray = [{\n        title: \"Other documents\"\n      }];\n      if (this.get(\"client.clientID\")) {\n        this.store.findRecord(\"catalogue\", this.get(\"client.clientID\")).then(c => {\n          if (!this.isDestroyed && !this.isDestroying) {\n            this.set(\"catalogue\", c);\n          }\n        });\n      }\n    },\n    otherDocumentsUploaded: (0, _object.computed)(\"catalogue\", function () {\n      const c = this.catalogue;\n      if (!c) {\n        return [];\n      }\n      return c.filterBy(\"otherDocuments\", 1, \"otherDocuments\", \"otherDocuments\", \"otherDocuments\");\n    })\n  });\n});","define(\"settify-mvp/components/documents-required-feedback\", [\"exports\", \"@ember/object\", \"@ember/service\", \"@ember/component\", \"settify-mvp/mixins/document-upload\", \"settify-mvp/mixins/upload-download\"], function (_exports, _object, _service, _component, _documentUpload, _uploadDownload) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/component\",0,\"settify-mvp/mixins/document-upload\",0,\"settify-mvp/mixins/upload-download\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend(_documentUpload.default, _uploadDownload.default, {\n    tagName: \"\",\n    store: (0, _service.inject)(),\n    session: (0, _service.inject)(),\n    init() {\n      this._super();\n      this.resetDocumentUpload();\n      if (this.clientID) {\n        this.store.findRecord(\"catalogue\", this.clientID).then(c => {\n          if (!this.isDestroyed && !this.isDestroying) {\n            this.set(\"catalogue\", c);\n          }\n        });\n      }\n    },\n    documentsFiltered: (0, _object.computed)(\"documents\", \"documents.length\", \"documents.@each.title\", function () {\n      return (this.documents || []).filter(d => !!d.title);\n    }),\n    uploadsFiltered: (0, _object.computed)(\"catalogue.documents.@each.fullContextID\", \"context.{answersLocation,chapter,induction,page,repeat}\", \"objectID\", \"questionID\", \"session.data.authenticated.adminUser\", \"session.isAuthenticated\", function () {\n      const c = this.catalogue;\n      if (!c) {\n        return [];\n      }\n      const retval = c.filterBy(this.get(\"context.induction\"), this.get(\"context.repeat\"), this.get(\"context.chapter\"), this.get(\"context.page\"), this.questionID, this.get(\"context.answersLocation\"), this.objectID);\n      const now = Date.now();\n      const sevenDays = 1000 * 60 * 60 * 24 * 7;\n      retval.forEach(d => {\n        const expiryTime = new Date(d.get(\"expiryDate\")).getTime();\n        if (expiryTime < now) {\n          // document expired\n          d.set(\"expired\", true);\n        } else if (this.get(\"session.isAuthenticated\") && this.get(\"session.data.authenticated.adminUser\")) {\n          if (expiryTime - now < sevenDays) {\n            d.set(\"expiresSoon\", true);\n            d.set(\"showExpireMessage\", true);\n          }\n        }\n      });\n      return retval;\n    }),\n    clientRecord: (0, _object.computed)(\"clientID\", function () {\n      if (this.clientID) {\n        return this.store.peekRecord(\"client\", this.clientID);\n      }\n      return null;\n    }),\n    unknownDocCheckboxLocation: (0, _object.computed)(\"context.{chapter,induction,page,repeat}\", \"questionID\", function () {\n      return `unknownDocumentIDs.${this.get(\"context.induction\")}-${this.get(\"context.repeat\")}-${this.get(\"context.chapter\")}-${this.get(\"context.page\")}-${this.questionID}`;\n    }),\n    actions: {\n      showExpireMessage(doc) {\n        doc.set(\"showExpireMessage\", !doc.get(\"showExpireMessage\"));\n      }\n    }\n  });\n});","define(\"settify-mvp/components/documents-required-list\", [\"exports\", \"@ember/object\", \"@ember/service\", \"@ember/component\"], function (_exports, _object, _service, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    firm: (0, _service.inject)(),\n    questionnaireLogic: (0, _service.inject)(),\n    init() {\n      this._super(...arguments);\n      if (this.induction) {\n        // We were passed an ID, not a list of inductions\n        this.questionnaireLogic.getInductionObject(this.induction).then(i => {\n          this.set(\"inductions\", [i]);\n        });\n      }\n    },\n    filteredInductions: (0, _object.computed)(\"filterList\", \"filterType\", \"inductions\", function () {\n      let {\n        filterType,\n        filterList,\n        inductions\n      } = this;\n      if (!filterType || !inductions || !filterList) {\n        return inductions;\n      }\n      filterList = filterList.split(\"\\n\");\n      const inductionsCopy = JSON.parse(JSON.stringify(inductions));\n      const filterTestFunction = this.filterTestFactory(filterType);\n      for (let idx = 0; idx < inductionsCopy.length; idx++) {\n        const i = inductionsCopy[idx];\n        for (let cdx = 0; cdx < i.chapters.length; cdx++) {\n          const c = i.chapters[cdx];\n          for (let pdx = 0; pdx < c.pages.length; pdx++) {\n            const p = c.pages[pdx];\n            p.questions = p.questions.filter(q => {\n              return filterTestFunction(`${c.id}.${p.id}.${q.id}`, filterList);\n            });\n          }\n        }\n      }\n      return inductionsCopy;\n    }),\n    filterTestFactory(type) {\n      if (type === \"whitelist\") {\n        return function (val, whitelist) {\n          return whitelist.includes(val);\n        };\n      } else if (type === \"blacklist\") {\n        return function (val, blacklist) {\n          return !blacklist.includes(val);\n        };\n      }\n    },\n    didUpdate() {\n      this._super(...arguments);\n      const listItems = this.element.querySelectorAll(\"li\");\n      this.set(\"documentsRequired\", listItems.length > 0);\n    },\n    didInsertElement() {\n      this._super(...arguments);\n      const listItems = this.element.querySelectorAll(\"li\");\n      this.set(\"documentsRequired\", listItems.length > 0);\n    }\n  });\n});","define(\"settify-mvp/components/download-name-required\", [\"exports\", \"@ember/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    actions: {\n      saveNames() {\n        this.checkPiracy().then(data => {\n          if (!data) {\n            this.set(\"model.readOnly\", false);\n            this.model.save().then(() => {\n              this.set(\"model.readOnly\", true);\n            });\n          }\n        });\n      }\n    }\n  });\n});","define(\"settify-mvp/components/download-resource\", [\"exports\", \"@ember/object\", \"@ember/component\", \"bowser\"], function (_exports, _object, _component, _bowser) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/component\",0,\"bowser\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    allowEmailDocuments: false,\n    init() {\n      this._super();\n      this.set(\"onMobileDevice\", _bowser.default.osname === \"iOS\");\n    },\n    downloadButtonDisabled: (0, _object.computed)(\"lawyerEmailValid\", \"emailToType\", \"invalidEmailMessage\", function () {\n      if (this.emailToType === \"client\") {\n        return this.invalidEmailMessage;\n      }\n      return !this.lawyerEmailValid || this.invalidEmailMessage;\n    }),\n    actions: {\n      nullAction() {},\n      download() {\n        this.emailFile();\n      },\n      downloadLocally() {\n        this.localDownload();\n      },\n      addAdditionalRecipient() {\n        this.addRecipient();\n      },\n      removeLawyer(recipient) {\n        this.removeLawyerCallback(recipient);\n      },\n      toggleEmailDocuments(type) {\n        this.set(\"emailToType\", type);\n        if (this.preDeterminedRecipients) {\n          this.emailFile();\n        }\n        this.set(\"allowEmailDocuments\", true);\n      }\n    }\n  });\n});","define(\"settify-mvp/components/edit-common-tasks\", [\"exports\", \"@ember/object\", \"@ember/component\"], function (_exports, _object, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    parentList: (0, _object.computed)(\"parentObject\", \"parentKey\", function () {\n      return this.get(`parentObject.${this.parentKey}`);\n    }),\n    actions: {\n      toggleDeleteElement(object) {\n        if (object) {\n          (0, _object.set)(object, \"showDelete\", !object.showDelete);\n        }\n      },\n      disableElement(obj) {\n        (0, _object.set)(obj, \"deleted\", true);\n        (0, _object.set)(obj, \"showDelete\", false);\n        (0, _object.set)(obj, \"expand\", false);\n      },\n      deleteElement(parentObject, keyName, deletingObject) {\n        if (deletingObject && deletingObject.created && !this.iCan?.permanentlyDelete && !this.isTable) {\n          // we don't want to actually remove this item from the definition,\n          // since that would mess with client records who went through before the deletion took place\n          // instead, we simply mark it as deleted, and the backend will add a timestamp for us\n          // which will be checked against each individual client record to determine what questions to display\n          (0, _object.set)(deletingObject, \"deleted\", true);\n          (0, _object.set)(deletingObject, \"showDelete\", false);\n          (0, _object.set)(deletingObject, \"expand\", false);\n        } else {\n          // this element is new since the form was last saved, so we are comfortable to just delete it wholesale\n          if (parentObject && keyName && deletingObject) {\n            // We have to use Ember.set, not .removeObject(), due to (what appears to be) a bug in Ember\n            (0, _object.set)(parentObject, keyName, parentObject[keyName].filter(o => o.id !== deletingObject.id));\n            if (this.isTable && keyName === \"columns\") {\n              // If we removed a column, we need to remove it in each row too\n              parentObject.rows.forEach(r => {\n                (0, _object.set)(r, keyName, r.columns.filter(c => c.colID !== deletingObject.id));\n              });\n            }\n          }\n        }\n      },\n      enableElement() {\n        if (!this?.object) {\n          return;\n        }\n        (0, _object.set)(this.object, \"deleted\", null);\n      },\n      duplicate(parentObject, parentKey, index) {\n        const list = parentObject[parentKey];\n        const newItem = {\n          ...list[index]\n        };\n        let newID = newItem.id;\n        const listContainsID = (list, id) => list.some(formContent => formContent.id === id);\n        while (listContainsID(list, newID)) {\n          const copyFlagRegexMatches = newID.match(/-copy$|-copy-([0-9]+)$/);\n          if (copyFlagRegexMatches) {\n            const intGroup = copyFlagRegexMatches[1];\n            if (intGroup) {\n              const copyNum = parseInt(intGroup);\n              newID = newID.replace(`copy-${intGroup}`, `copy-${copyNum + 1}`);\n            } else {\n              newID += \"-1\";\n            }\n          } else {\n            newID = `${newItem.id}-copy`;\n          }\n        }\n        (0, _object.set)(newItem, \"id\", newID);\n        const newList = [...list.slice(0, index + 1), newItem, ...list.slice(index + 1)];\n        (0, _object.set)(parentObject, parentKey, newList);\n      },\n      moveElementUp(parentObject, parentKey, index, disableRecursion) {\n        if (index === 0) {\n          return;\n        }\n        const array = parentObject[parentKey];\n        const element = array[index];\n        (0, _object.set)(element, \"itemMoved\", true);\n        const newList = array.slice(0, index - 1).concat([element]).concat(array.slice(index - 1, index)).concat(array.slice(index + 1));\n        (0, _object.set)(parentObject, parentKey, newList);\n        if (this.isTable === \"column\" && !disableRecursion) {\n          // We need to move the column in each row too\n          this.parentObject.rows.forEach(r => {\n            this.send(\"moveElementUp\", r, \"columns\", index, true);\n          });\n        }\n      },\n      moveElementDown(parentObject, parentKey, index, disableRecursion) {\n        const array = parentObject[parentKey];\n        if (index + 1 === array.length) {\n          return;\n        }\n        const element = array[index];\n        (0, _object.set)(element, \"itemMoved\", true);\n        const newList = array.slice(0, index).concat(array.slice(index + 1, index + 2)).concat([element]).concat(array.slice(index + 2));\n        (0, _object.set)(parentObject, parentKey, newList);\n        if (this.isTable === \"column\" && !disableRecursion) {\n          // We need to move the column in each row too\n          this.parentObject.rows.forEach(r => {\n            this.send(\"moveElementDown\", r, \"columns\", index, true);\n          });\n        }\n      }\n    }\n  });\n});","define(\"settify-mvp/components/edit-firm-summary-element\", [\"exports\", \"@ember/object\", \"@ember/component\"], function (_exports, _object, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    reset() {\n      this.set(\"elementToAdd\", null);\n      this.set(\"showAddWholeChunkQuestion\", false);\n    },\n    onElementSelected: (0, _object.observer)(\"elementToAdd\", function () {\n      if (this.elementToAdd.split(\".\").length < 3 && this.elementToAdd.indexOf(\"standalone\") !== 0) {\n        // It is a whole page or chapter, that is not a standalone page\n        this.set(\"showAddWholeChunkQuestion\", true);\n      } else {\n        this.setElement();\n      }\n    }),\n    setElement() {\n      this.set(\"summaryElement.id\", this.elementToAdd);\n      this.set(\"summaryElement.isNewElement\", false);\n    },\n    actions: {\n      addHeading() {\n        this.setElement();\n      },\n      addContentLocal(id) {\n        this.setElement();\n        // This action has to be passed down from custom-firm-summary, since the local element has no reference to the others around it\n        this.addContentAction(id);\n      }\n    }\n  });\n});","define(\"settify-mvp/components/edit-icon-picker\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <LiquidIf @predicate={{@model}}>\n    <LineIcon @src={{@model}} />\n  </LiquidIf>\n  {{#if @iCan.editIcons}}\n    <SettifyTextline @disabled={{@readOnly}} @model={{@model}} @label=\"Icon\" @placeholder=\"/assets/images/icons/file.png\" />\n  {{/if}}\n  */\n  {\n    \"id\": \"TD4yi0wm\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@predicate\\\"],[[30,1]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[39,1],null,[[\\\"@src\\\"],[[30,1]]],null],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[30,2,[\\\"editIcons\\\"]],[[[1,\\\"  \\\"],[8,[39,3],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,3],[30,1],\\\"Icon\\\",\\\"/assets/images/icons/file.png\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@model\\\",\\\"@iCan\\\",\\\"@readOnly\\\"],false,[\\\"liquid-if\\\",\\\"line-icon\\\",\\\"if\\\",\\\"settify-textline\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/edit-icon-picker.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/edit-json\", [\"exports\", \"@ember/component\", \"@ember/runloop\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _runloop, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <SettifyTextarea\n    @class=\"json-editor\"\n    @rows={{this.rows}}\n    @max={{this.max}}\n    @model={{this.displayIfJSON}}\n    @label={{or @label \"Display if (in JSON format)\"}}\n    @onChange={{action \"changed\"}}\n    @disabled={{@disabled}}\n    @readonly={{@readOnly}}\n  />\n  <LiquidIf @predicate={{this.invalidJSON}}>\n    <small>\n      <span class=\"negative\">There's a syntax error in your JSON.</span>\n      {{#if this.canReset}}\n        <a class=\"clickable\" {{action \"reset\"}}>Click here to reset to before you started editing</a>\n      {{/if}}\n    </small>\n  </LiquidIf>\n  */\n  {\n    \"id\": \"ycDYLTyb\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@class\\\",\\\"@rows\\\",\\\"@max\\\",\\\"@model\\\",\\\"@label\\\",\\\"@onChange\\\",\\\"@disabled\\\",\\\"@readonly\\\"],[\\\"json-editor\\\",[30,0,[\\\"rows\\\"]],[30,0,[\\\"max\\\"]],[30,0,[\\\"displayIfJSON\\\"]],[28,[37,1],[[30,1],\\\"Display if (in JSON format)\\\"],null],[28,[37,2],[[30,0],\\\"changed\\\"],null],[30,2],[30,3]]],null],[1,\\\"\\\\n\\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[30,0,[\\\"invalidJSON\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n    \\\"],[10,1],[14,0,\\\"negative\\\"],[12],[1,\\\"There's a syntax error in your JSON.\\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"canReset\\\"]],[[[1,\\\"      \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,2],[[30,0],\\\"reset\\\"],null],[12],[1,\\\"Click here to reset to before you started editing\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"@label\\\",\\\"@disabled\\\",\\\"@readOnly\\\"],false,[\\\"settify-textarea\\\",\\\"or\\\",\\\"action\\\",\\\"liquid-if\\\",\\\"small\\\",\\\"span\\\",\\\"if\\\",\\\"a\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/edit-json.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({\n    rows: 3,\n    max: 2048,\n    init() {\n      this._super(...arguments);\n      this.updateDisplayJSON(\"init\");\n    },\n    didUpdateAttrs() {\n      this._super(...arguments);\n      this.updateDisplayJSON();\n    },\n    canReset: (0, _object.computed)(\"backupJSON\", \"displayIfJSON\", function () {\n      return this.backupJSON !== this.displayIfJSON;\n    }),\n    actions: {\n      changed() {\n        (0, _runloop.debounce)(this, \"parseJSON\", 250);\n      },\n      reset() {\n        this.set(\"displayIfJSON\", this.backupJSON);\n      }\n    },\n    updateDisplayJSON(context) {\n      const json = JSON.stringify(this.model, null, 2);\n      this.set(\"displayIfJSON\", json);\n      if (context) {\n        this.set(\"backupJSON\", json);\n      }\n    },\n    parseJSON() {\n      const json = this.displayIfJSON;\n      if (!json) {\n        this.set(\"model\", {});\n        return;\n      }\n      try {\n        const parsed = JSON.parse(json);\n        this.set(\"model\", parsed);\n        this.set(\"invalidJSON\", false);\n      } catch (e) {\n        this.set(\"invalidJSON\", true);\n      }\n    }\n  }));\n});","define(\"settify-mvp/components/edit-question\", [\"exports\", \"@ember/component\", \"@ember/object/computed\", \"@ember/runloop\", \"@ember/object\", \"settify-mvp/mixins/edit-helpers\", \"settify-mvp/mixins/question-types-mixin\", \"@ember/template-factory\"], function (_exports, _component, _computed, _runloop, _object, _editHelpers, _questionTypesMixin, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object/computed\",0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/component\",0,\"settify-mvp/mixins/edit-helpers\",0,\"settify-mvp/mixins/question-types-mixin\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div>\n    {{! MVPTODO: Selectively show these input fields based on the settings for what the firm is allowed to edit }}\n    <SettifySelect\n      @model={{@q.type}}\n      @label=\"Question type\"\n      @name=\"question-type\"\n      @content={{this.questionTypesToSelectFrom}}\n      @disabled={{or @readOnly (not @iCan.editQuestionType) (eq this.questionTypesToSelectFrom.length 1)}}\n      @labelPath=\"label\"\n      @valuePath=\"value\"\n    />\n    {{#if (or (not @q.created) @iCan.editIDs)}}\n      <SettifyTextline\n        @disabled={{@readOnly}}\n        @model={{@q.id}}\n        @label=\"ID (must be unique among all questions on this page)\"\n        @placeholder=\"For example, saleofland, registercompany, motorvehicleaccident\"\n      />\n      {{#if (and @iCan.editIDs @q.created)}}\n        <small><b class=\"negative\">Warning:</b> Changing an id can break references (eg, displayIf logic or {parsed text})</small>\n      {{/if}}\n    {{/if}}\n    {{#if (eq @q.type \"paragraph\")}}\n      <SettifyTextarea @disabled={{@readOnly}} @max={{8192}} @model={{@q.content}} @label=\"Paragraph content\" />\n      {{#if (includes this.helpTextTypes @q.type)}}\n        <SettifyTextarea @disabled={{@readOnly}} @model={{@q.helpText}} @label=\"Helpful text if the client is not sure how to answer the question\" @rows={{2}} />\n      {{/if}}\n      {{#if @iCan.editDisplayIf}}\n        <EditJson @model={{@q.displayIf}} @disabled={{@readOnly}} />\n      {{/if}}\n    {{else if (eq @q.type \"hiddenCalculatedField\")}}\n      <SettifyTextarea @disabled={{@readOnly}} @model={{@q.content}} @label=\"Parse text formula to calculate\" />\n    {{else if (eq @q.type \"heading\")}}\n      <SettifyTextline @disabled={{@readOnly}} @model={{@q.content}} @label=\"Heading content\" />\n      <FreeList @assignUUIDS={{false}} @label=\"Icons to be displayed on the header\" @model={{@q.icons}} @itemName=\"value\" as |val|>\n        <EditIconPicker @model={{val.icon}} @iCan={{@iCan}} @readOnly={{@readOnly}} />\n        {{#if @iCan.setIconOffset}}\n          <SettifyNumber @model={{val.offset}} @min={{-20}} @max={{20}} @label=\"How many px should this icon be offset?\" />\n        {{/if}}\n      </FreeList>\n      {{#if @iCan.editDisplayIf}}\n        <EditJson @model={{@q.displayIf}} @disabled={{@readOnly}} />\n      {{/if}}\n    {{else if (eq @q.type \"image\")}}\n      <SettifyTextline @disabled={{@readOnly}} @model={{@q.content}} @label=\"Text\" />\n      <EditIconPicker @model={{@q.icon}} @iCan={{@iCan}} @readOnly={{@readOnly}} />\n    {{else if (eq @q.type \"link\")}}\n      <CheckBox @disabled={{@readOnly}} @model={{@q.toggleButton}} @text={{sum \"Change to \" (if @q.toggleButton \"a link\" \"toggle another value\")}} />\n      <SettifyTextline @disabled={{@readOnly}} @model={{@q.content}} @label=\"Link text\" />\n      <LiquidIf @predicate={{@q.toggleButton}}>\n        <SettifyTextline @disabled={{@readOnly}} @model={{@q.alternateContent}} @label=\"Link text when toggled\" />\n      </LiquidIf>\n      <LiquidIf @predicate={{not @q.toggleButton}}>\n        <SettifyTextline @disabled={{@readOnly}} @model={{@q.link}} @label=\"Link URL\" />\n      </LiquidIf>\n      {{#if @iCan.editDisplayIf}}\n        <EditJson @model={{@q.displayIf}} @disabled={{@readOnly}} />\n      {{/if}}\n    {{else if (eq @q.type \"block\")}}\n      {{#if @iCan.editDisplayIf}}\n        <EditJson @model={{@q.displayIf}} @disabled={{@readOnly}} />\n      {{/if}}\n      {{#if (or @iCan.addOptions @q.content.length)}}\n        <b>Content held within this block</b>\n        <br />\n      {{/if}}\n      {{#if @iCan.addOptions}}\n        <div class=\"insert-bar clickable {{if @readOnly 'no-display'}}\" {{action \"insertSubquestionAfter\" @q}}>\n          <span><i class=\"fal fa-plus-circle tight\" />Insert content here</span>\n        </div>\n      {{/if}}\n      {{#each @q.content as |c contentIndex|}}\n        <span class=\"clickable {{if c.deleted 'disabled-placeholder'}}\" {{action \"toggleExpand\" c}} id={{sum @chapter.id \".\" @page.id \".\" @q.id \".\" c.id}}>\n          <i class=\"fal fa-chevron-right {{if c.expand 'fa-rotate-90'}}\" />\n          <TitlePrinter @model={{c}} @titleFor=\"content\" @clientRecord={{@client}} @context={{@context}} />\n        </span>\n        <i\n          class=\"fal fa-link clickable tight\"\n          title=\"Copy the full context ID of this question, for use elswhere in the form definition\"\n          {{action \"copyToClipboard\" (question-context-string @chapter @page @q c)}}\n        />\n        <LiquidIf @predicate={{c.expand}}>\n          <div class=\"edge\" {{action \"toggleExpand\" c}}></div>\n          <div class=\"content\">\n            <CompareFormChanges @model={{c}} />\n            <EditQuestion\n              @readOnly={{@readOnly}}\n              @induction={{@induction}}\n              @chapter={{@chapter}}\n              @page={{@page}}\n              @q={{c}}\n              @parentQuestion={{@q}}\n              @client={{@client}}\n              @editMode={{@editMode}}\n              @questionIndex={{contentIndex}}\n              @questionCount={{@q.content.length}}\n              @iCan={{@iCan}}\n            />\n          </div>\n        </LiquidIf>\n        {{#if @iCan.addOptions}}\n          <div class=\"insert-bar clickable {{if @readOnly 'no-display'}}\" {{action \"insertSubquestionAfter\" @q c}}>\n            <span><i class=\"fal fa-plus-circle tight\" />Insert content here</span>\n          </div>\n        {{/if}}\n      {{/each}}\n    {{else if (eq @q.type \"divider\")}}\n      <small>\n        <CheckBox @disabled={{@readOnly}} @model={{@q.whitespace}} @text=\"Divide sections using whitespace\" />\n        <CheckBox @disabled={{@readOnly}} @model={{@q.border}} @text=\"Divide sections with a line\" />\n      </small>\n    {{else if (eq @q.type \"button\")}}\n      <SettifyTextline @disabled={{@readOnly}} @model={{@q.title}} @maxlength={{4096}} @label=\"Question text\" @onblur={{action \"checkTitleInputType\"}} />\n      <SettifyTextline @disabled={{@readOnly}} @model={{@q.link}} @label=\"What page should it link to?\" />\n      <CheckBox @disabled={{@readOnly}} @model={{@q.completeThisChapter}} @text=\"Set this chapter to completed on button trigger\" />\n      <CheckBox @disabled={{@readOnly}} @model={{@q.hideInClientSummary}} @text=\"Hide this question on the client-facing brief\" />\n      {{#if @iCan.editDisplayIf}}\n        <EditDisplayIf @model={{@q.displayIf}} />\n      {{/if}}\n    {{else}}\n      <LiquidIf @predicate={{eq this.titleInputType \"textarea\"}}>\n        <SettifyTextarea @disabled={{@readOnly}} @model={{@q.title}} @max={{4096}} @label=\"Question text\" @onblur={{action \"checkTitleInputType\"}} />\n      </LiquidIf>\n      <LiquidIf @predicate={{not-eq this.titleInputType \"textarea\"}}>\n        <SettifyTextline @disabled={{@readOnly}} @model={{@q.title}} @maxlength={{4096}} @label=\"Question text\" @onblur={{action \"checkTitleInputType\"}} />\n      </LiquidIf>\n      {{#if @iCan.editSimpleFormatting}}\n        <small><CheckBox @disabled={{@readOnly}} @model={{@q.noHeaderLabel}} @text=\"Shrink the question text when an answer has been provided\" /></small>\n      {{/if}}\n      {{#if @iCan.editShortTitles}}\n        <SettifyTextline\n          @disabled={{@readOnly}}\n          @model={{@q.shortTitle}}\n          @label=\"Text to use on the client brief\"\n          @placeholder={{sum \"(Defaults to \" (if @q.title (sum \"\" \" @q.title \" \"\") \"the text above\") \")\"}}\n        />\n      {{/if}}\n  \n      {{#if (includes this.promptTypes @q.type)}}\n        <SettifyTextline @disabled={{@readOnly}} @model={{@q.prompt}} @label=\"Prompt to display when nothing is selected\" />\n      {{/if}}\n  \n      {{#if (includes this.helpTextTypes @q.type)}}\n        <SettifyTextarea @disabled={{@readOnly}} @model={{@q.helpText}} @label=\"Helpful text if the client is not sure how to answer the question\" @rows={{2}} />\n      {{/if}}\n  \n      {{#if @iCan.editDisplayIf}}\n        <EditJson @model={{@q.displayIf}} @disabled={{@readOnly}} />\n      {{/if}}\n  \n      {{#if @iCan.useAnswersLocation}}\n        <p class=\"marginbottom-0\">\n          Alternative storage location for this question\n          <i class=\"clickable fal fa-question-circle tight\" {{action \"toggle\" \"showAnswersLocationHelpText\"}} />\n          <LiquidIf @predicate={{this.showAnswersLocationHelpText}}>\n            <small>\n              This feature's behaviour changes depending on the number of segments in the location path:\n              <ul>\n                <li>A location with 1 segment will replace the question's ID as the storage key, but not change where the question is actually stored.</li>\n                <li>A location with 2 segments will store the answer with the question's ID as the key, but under a different page (which overrides the page-level answers location).</li>\n                <li>A location with 3 segments will be treated as a full alternate chapter.page.question path.</li>\n                <li>A location with more than 3 segments will remove the last segment from the path and store the question at that location (eg. for an person object, which would be\n                  used something like chapter.page.person.firstName)</li>\n              </ul>\n            </small>\n          </LiquidIf>\n          <SettifyTextline @disabled={{@readOnly}} @model={{@q.answersLocation}} />\n        </p>\n      {{/if}}\n  \n      {{#if (and @iCan.customiseNumericFields (includes this.numericFieldsTypes @q.type))}}\n        <SettifyNumber @model={{@q.min}} @label=\"Minimum value\" @placeholder=\"(can be left blank)\" />\n        <SettifyNumber @model={{@q.max}} @label=\"Maximum value\" @placeholder=\"(can be left blank)\" />\n        <SettifyNumber @model={{@q.suggestedMillionsThreshold}} @label=\"Millions threshold\" @placeholder=\"(a number below this will prompt the user to convert it to millions)\" />\n        <SettifyNumber @model={{@q.suggestedThousandsThreshold}} @label=\"Thousands threshold\" @placeholder=\"(a number below this will prompt the user to convert it to thousands)\" />\n      {{/if}}\n  \n      {{#if (eq @q.type \"multiradio\")}}\n        {{#if (or @iCan.addOptions @q.multiRadioRows.length)}}\n          Rows:\n          <br />\n        {{/if}}\n        {{#if @iCan.addOptions}}\n          <div class=\"insert-bar clickable {{if @readOnly 'no-display'}}\" {{action \"insertMultiRadioRowAfter\" @q}}>\n            <span><i class=\"fal fa-plus-circle tight\" />Insert row here</span>\n          </div>\n        {{/if}}\n  \n        {{#each @q.multiRadioRows as |row rowIndex|}}\n          <span class=\"clickable {{if row.deleted 'disabled-placeholder'}}\" {{action \"toggleExpand\" row}}>\n            <i class=\"fal fa-chevron-right {{if row.expand 'fa-rotate-90'}}\" />\n            <TitlePrinter @model={{row}} @titleFor=\"row\" @clientRecord={{@client}} @context={{@context}} />\n          </span>\n          <LiquidIf @predicate={{row.expand}}>\n            <div class=\"edge\" {{action \"toggleExpand\" row}}></div>\n            <div class=\"content\">\n              <CompareFormChanges @model={{row}} />\n              <SettifyTextline @disabled={{@readOnly}} @model={{row.title}} @label=\"Row header text\" />\n              {{#if (or (not row.created) @iCan.editIDs)}}\n                <SettifyTextline @disabled={{@readOnly}} @model={{row.id}} @label=\"Unique ID to refer to this option\" />\n                {{#if (and @iCan.editIDs row.created)}}\n                  <small><b class=\"negative\">Warning:</b> Changing an id can break references (eg, displayIf logic or {parsed text})</small>\n                {{/if}}\n              {{/if}}\n              {{#if @iCan.editDisplayIf}}\n                <EditJson @model={{row.displayIf}} />\n              {{/if}}\n              <EditCommonTasks @name=\"row\" @object={{row}} @parentObject={{@q}} @parentKey=\"multiRadioRows\" @index={{rowIndex}} @readOnly={{@readOnly}} @iCan={{@iCan}} />\n            </div>\n          </LiquidIf>\n          {{#if @iCan.addOptions}}\n            <div class=\"insert-bar clickable {{if @readOnly 'no-display'}}\" {{action \"insertMultiRadioRowAfter\" @q row}}>\n              <span><i class=\"fal fa-plus-circle tight\" />Insert row here</span>\n            </div>\n          {{/if}}\n        {{/each}}\n      {{/if}}\n  \n      {{#if (includes this.multipleOptionsTypes @q.type)}}\n        {{#if (or @iCan.addOptions @q.options.length)}}\n          {{if (eq @q.type \"officeselect\") \"Additional options\" \"Options\"}}:\n          <br />\n        {{/if}}\n        {{#if @iCan.addOptions}}\n          <div class=\"insert-bar clickable {{if @readOnly 'no-display'}}\" {{action \"insertOptionAfter\" @q}}>\n            <span><i class=\"fal fa-plus-circle tight\" />Insert option here</span>\n          </div>\n        {{/if}}\n        {{#each @q.options as |o optionIndex|}}\n          <span\n            class=\"clickable {{if o.deleted 'disabled-placeholder'}}\"\n            {{action \"toggleExpand\" o}}\n            id={{sum @chapter.id \".\" @page.id \".\" (if @parentQuestion (sum @parentQuestion.id \".\")) @q.id \".\" o.id}}\n          >\n            <i class=\"fal fa-chevron-right {{if o.expand 'fa-rotate-90'}}\" />\n            <TitlePrinter @model={{o}} @titleFor=\"option\" @clientRecord={{@client}} @context={{@context}} />\n          </span>\n          <LiquidIf @predicate={{o.expand}}>\n            <div class=\"edge\" {{action \"toggleExpand\" o}}></div>\n            <div class=\"content\">\n              <CompareFormChanges @model={{o}} />\n              <SettifyTextline @disabled={{@readOnly}} @model={{o.title}} @maxlength={{4096}} @label=\"Option text\" />\n              {{#if (eq @q.type \"inputslider\")}}\n                <SettifyTextline @disabled={{@readOnly}} @model={{o.icon}} @label=\"Grain icon (path from /public)\" />\n                {{#if o.icon}}\n                  <LineIcon @src={{o.icon}} />\n                {{/if}}\n              {{/if}}\n              {{#if (and @iCan.editShortTitles (eq @q.type \"checkbox\"))}}\n                <SettifyTextline\n                  @disabled={{@readOnly}}\n                  @model={{o.shortTitle}}\n                  @label=\"Text to use on the client brief\"\n                  @placeholder={{sum \"(Defaults to \" (if o.title (sum \"\" \" o.title \" \"\") \"the option text above\") \")\"}}\n                />\n              {{/if}}\n              {{#if (or (not o.created) @iCan.editIDs)}}\n                <SettifyTextline @disabled={{@readOnly}} @model={{o.id}} @label=\"Unique ID to refer to this option\" />\n                {{#if (and @iCan.editIDs o.created)}}\n                  <small><b class=\"negative\">Warning:</b> Changing an id can break references (eg, displayIf logic or {parsed text})</small>\n                {{/if}}\n              {{/if}}\n              {{#if @iCan.editDisplayIf}}\n                <EditJson @model={{o.displayIf}} />\n              {{/if}}\n              {{#if (not-eq @q.type \"multiradio\")}}\n                <SettifyTextarea @disabled={{@readOnly}} @model={{o.helpText}} @label=\"Helpful text if the client is not sure what this option means\" @rows={{2}} />\n                <SettifyTextarea @disabled={{@readOnly}} @model={{o.feedback}} @label=\"Feedback to the client if they select this option\" @rows={{2}} />\n                <SettifyTextarea @disabled={{@readOnly}} @model={{o.feedbackToLawyer}} @label=\"Information for the lawyer if the client selects this option\" @rows={{2}} />\n                {{#if (eq @q.type \"checkbox\")}}\n                  <CheckBox @disabled={{@readOnly}} @model={{o.required}} @text=\"This box must be checked in order to continue\" />\n                  <CheckBox @disabled={{@readOnly}} @model={{o.hideIcon}} @text=\"Don't show an icon in the brief if this option is ticked\" />\n                {{/if}}\n                {{#if @iCan.setOtherQuestions}}\n                  <CheckBox @disabled={{@readOnly}} @model={{o.setAnotherQuestion}} @text=\"Selecting this option should also set another question to a specific answer\" />\n                  <LiquidIf @predicate={{o.setAnotherQuestion}}>\n                    <FreeList @assignUUIDS={{false}} @label=\"Value to set if this option is selected\" @model={{o.setValues}} @itemName=\"value\" as |val|>\n                      <SettifyTextarea @disabled={{@readOnly}} @model={{val.variableToUpdate}} @label=\"ID of variable to be updated if this option is selected\" />\n                      <SettifyTextarea @disabled={{@readOnly}} @model={{val.valueToSet}} @label=\"Value to set variable if this option is selected\" />\n                      {{#if (or (eq @q.type \"checkbox\") (and (eq @q.type \"radio\") @q.unselectable))}}\n                        <SettifyTextarea @disabled={{@readOnly}} @model={{val.valueToUnset}} @label=\"Value to set variable if this option is de-selected\" />\n                      {{/if}}\n                      <CheckBox @disabled={{@readOnly}} @model={{val.shouldOverrideValue}} @text=\"Should this override any previous answers?\" />\n                    </FreeList>\n                  </LiquidIf>\n                {{/if}}\n                <FreeList @assignUUIDs={{false}} @label=\"Documents to ask for if this option is selected\" @model={{o.documentsRequired}} @itemName=\"document\" as |doc|>\n                  <SettifyTextline @disabled={{@readOnly}} @model={{doc.title}} @label=\"Document name (lower case, and don't include 'the' at the start)\" />\n                </FreeList>\n              {{/if}}\n              <EditCommonTasks @name=\"option\" @object={{o}} @parentObject={{@q}} @parentKey=\"options\" @index={{optionIndex}} @readOnly={{@readOnly}} @iCan={{@iCan}} />\n            </div>\n          </LiquidIf>\n          {{#if @iCan.addOptions}}\n            <div class=\"insert-bar clickable {{if @readOnly 'no-display'}}\" {{action \"insertOptionAfter\" @q o}}>\n              <span><i class=\"fal fa-plus-circle tight\" />Insert option here</span>\n            </div>\n          {{/if}}\n        {{/each}}\n      {{/if}}\n  \n      {{#if (includes this.allowFeedbackToLawyerTypes @q.type)}}\n        <SettifyTextarea @disabled={{@readOnly}} @model={{@q.feedbackToLawyer}} @label=\"Information for the lawyer if the client answers this question\" @rows={{1}} />\n        <SettifyTextarea\n          @disabled={{@readOnly}}\n          @model={{@q.feedbackToLawyerIfNotProvided}}\n          @label=\"Information for the lawyer if the client does not answers this question\"\n          @rows={{1}}\n        />\n      {{/if}}\n  \n      {{#if (eq @q.type \"yesno\")}}\n        {{#each this.yesNoObjects as |ynObject|}}\n          {{#let (get @q ynObject.key) as |obj|}}\n            <span class=\"clickable\" {{action \"toggleExpand\" obj}}><i class=\"fal fa-chevron-right {{if obj.expand 'fa-rotate-90'}}\" /> {{ynObject.title}}</span>\n            <LiquidIf @predicate={{obj.expand}}>\n              <div class=\"edge\" {{action \"toggleExpand\" obj}}></div>\n              <div class=\"content\">\n                <SettifyTextline @disabled={{@readOnly}} @model={{obj.title}} @label=\"Text to display on the client brief if this option is selected\" />\n                <small>Icon to display on the client brief if this option is selected</small>\n                <YesnomaybeIcon @displayAll={{true}} @question={{obj}} @key={{ynObject.key}} @selectIcon={{action \"toggleIconType\"}} />\n                <SettifyTextarea @disabled={{@readOnly}} @model={{obj.helpText}} @label=\"Helpful text if the client is not sure what this option means\" @rows={{2}} />\n                <SettifyTextarea @disabled={{@readOnly}} @model={{obj.feedback}} @label=\"Feedback to the client if they select this option\" @rows={{2}} />\n                <SettifyTextarea @disabled={{@readOnly}} @model={{obj.feedbackToLawyer}} @label=\"Information for the lawyer if the client selects this option\" @rows={{2}} />\n                {{#if @iCan.setOtherQuestions}}\n                  <CheckBox @disabled={{@readOnly}} @model={{obj.setAnotherQuestion}} @text=\"Selecting this option should also set another question to a specific answer\" />\n                  <LiquidIf @predicate={{obj.setAnotherQuestion}}>\n                    <FreeList @assignUUIDS={{false}} @label=\"Value to set if this option is selected\" @model={{obj.setValues}} @itemName=\"value\" as |val|>\n                      <SettifyTextline @disabled={{@readOnly}} @model={{val.variableToUpdate}} @label=\"ID of variable to be updated if this option is selected\" />\n                      <SettifyTextline @disabled={{@readOnly}} @model={{val.valueToSet}} @label=\"Value to set variable if this option is selected\" />\n                      {{#if (or (eq @q.type \"checkbox\") (and (eq @q.type \"radio\") @q.unselectable))}}\n                        <SettifyTextline @disabled={{@readOnly}} @model={{val.valueToUnset}} @label=\"Value to set variable if this option is de-selected\" />\n                      {{/if}}\n                      <CheckBox @disabled={{@readOnly}} @model={{val.shouldOverrideValue}} @text=\"Should this override any previous answers?\" />\n                    </FreeList>\n                  </LiquidIf>\n                {{/if}}\n                <FreeList @assignUUIDs={{false}} @label=\"Documents to ask for if this option is selected\" @model={{obj.documentsRequired}} @itemName=\"document\" as |doc|>\n                  <SettifyTextline @disabled={{@readOnly}} @model={{doc.title}} @label=\"Document name (lower case, and don't include 'the' at the start)\" />\n                </FreeList>\n              </div>\n            </LiquidIf>\n          {{/let}}\n        {{/each}}\n      {{/if}}\n  \n      {{#if (eq @q.type \"grid\")}}\n        {{#if (or @iCan.editGridStructure @q.columns)}}\n          Columns:\n          <br />\n        {{/if}}\n        {{#if @iCan.editGridStructure}}\n          <div class=\"insert-bar clickable {{if @readOnly 'no-display'}}\" {{action \"insertAfter\" @q \"columns\"}}>\n            <span><i class=\"fal fa-plus-circle tight\" />Insert column here</span>\n          </div>\n        {{/if}}\n        {{#each @q.columns as |c columnIndex|}}\n          <span class=\"clickable\" {{action \"toggleExpand\" c}}><i class=\"fal fa-chevron-right {{if c.expand 'fa-rotate-90'}}\" />\n            {{or (parse-text c.columnHeader clientRecord=@client context=@context blueprintMode=true) \"Unnamed column\"}}</span>\n          <LiquidIf @predicate={{c.expand}}>\n            <div class=\"edge\" {{action \"toggleExpand\" c}}></div>\n            <div class=\"content\">\n              <SettifyTextline @disabled={{@readOnly}} @model={{c.columnHeader}} @label=\"Column header\" />\n              {{#if @iCan.editGridStructure}}\n                <SettifySelect\n                  @disabled={{@readOnly}}\n                  @model={{c.width}}\n                  @label=\"Width\"\n                  @name=\"column-width\"\n                  @content={{this.columnWidthTypes}}\n                  @labelPath=\"label\"\n                  @valuePath=\"value\"\n                />\n                <EditQuestion\n                  @minimal={{true}}\n                  @readOnly={{@readOnly}}\n                  @induction={{@induction}}\n                  @chapter={{@chapter}}\n                  @page={{@page}}\n                  @q={{c}}\n                  @parentQuestion={{@q}}\n                  @client={{@client}}\n                  @editMode={{@editMode}}\n                  @questionIndex={{columnIndex}}\n                  @questionCount={{@q.columns.length}}\n                  @iCan={{@iCan}}\n                />\n              {{/if}}\n              <small>\n                <CheckBox @disabled={{@readOnly}} @model={{c.autoTotal}} @text=\"Automatically total this column\" />\n                <CheckBox @disabled={{@readOnly}} @model={{c.sourcedRowsReadOnly}} @text=\"Sourced rows in this column are read only\" />\n                <LiquidIf @predicate={{c.sourcedRowsReadOnly}}>\n                  <SettifyTextarea @disabled={{@readOnly}} @max={{1024}} @model={{c.sourcedRowsContent}} @label=\"Content to display for the sourced rows\" @rows={{2}} />\n                </LiquidIf>\n              </small>\n              <EditCommonTasks @name=\"column\" @object={{c}} @parentObject={{@q}} @parentKey=\"columns\" @index={{columnIndex}} @readOnly={{@readOnly}} @iCan={{@iCan}} />\n            </div>\n          </LiquidIf>\n          {{#if @iCan.editGridStructure}}\n            <div class=\"insert-bar clickable {{if @readOnly 'no-display'}}\" {{action \"insertAfter\" @q \"columns\" columnIndex}}>\n              <span><i class=\"fal fa-plus-circle tight\" />Insert column here</span>\n            </div>\n          {{/if}}\n        {{/each}}\n        <CheckBox @disabled={{@readOnly}} @model={{@q.showColumnHeaders}} @text=\"Show column headers\" />\n        <CheckBox @disabled={{@readOnly}} @model={{@q.hideAddRowButton}} @text=\"Hide 'Add another row' button\" />\n        <SettifyTextline @model={{@q.itemName}} @label=\"What are we adding?\" @placeholder=\"Eg, person, property, car, etc.'\" />\n        <CheckBox @disabled={{@readOnly}} @model={{@q.includeStartingRows}} @text=\"Add starting rows to the table\" />\n        <LiquidIf @predicate={{@q.includeStartingRows}}>\n          <div>\n            {{#if (or @iCan.editGridStructure @q.startingRows.length)}}\n              Starting rows:\n              <br />\n            {{/if}}\n            {{#if @iCan.editGridStructure}}\n              <div class=\"insert-bar clickable {{if @readOnly 'no-display'}}\" {{action \"insertAfter\" @q \"startingRows\"}}>\n                <span><i class=\"fal fa-plus-circle tight\" />Insert starting row here</span>\n              </div>\n            {{/if}}\n            {{#each @q.startingRows as |row rowIndex|}}\n              <span class=\"clickable\" {{action \"toggleExpand\" row}}><i class=\"fal fa-chevron-right {{if row.expand 'fa-rotate-90'}}\" />\n                {{or row.Name row.name row.Title \"Row\"}}</span>\n              <LiquidIf @predicate={{row.expand}}>\n                <div class=\"edge\" {{action \"toggleExpand\" row}}></div>\n                <div class=\"content\">\n                  {{#each @q.columns as |column|}}\n                    <SettifyInputSwitcher\n                      @question={{column}}\n                      @model={{row}}\n                      @headerLabel={{false}}\n                      @clientRecord={{@client}}\n                      @context={{hash induction=@induction.id chapter=@chapter.id page=@page.id repeat=@induction.repeatToken}}\n                      @disabled={{@readOnly}}\n                      @forceDisplay={{true}}\n                      @displayOnly={{not @editMode}}\n                      @editMode={{@editMode}}\n                    />\n                    <CheckBox @disabled={{@readOnly}} @model={{get row (sum column.id \"@readOnly\")}} @text={{sum column.title \" is read only in this row\"}} />\n                  {{/each}}\n                  <CheckBox @disabled={{@readOnly}} @model={{row.noDelete}} @text=\"Prevent this starting row from being deleted by clients\" />\n                  <EditCommonTasks @name=\"starting row\" @object={{row}} @parentObject={{@q}} @parentKey=\"startingRows\" @index={{rowIndex}} @readOnly={{@readOnly}} @iCan={{@iCan}} />\n                </div>\n              </LiquidIf>\n              {{#if @iCan.editGridStructure}}\n                <div class=\"insert-bar clickable {{if @readOnly 'no-display'}}\" {{action \"insertAfter\" @q \"startingRows\" rowIndex}}>\n                  <span><i class=\"fal fa-plus-circle tight\" />Insert starting row here</span>\n                </div>\n              {{/if}}\n            {{/each}}\n          </div>\n        </LiquidIf>\n      {{/if}}\n  \n      {{#if (eq @q.type \"summaryTable\")}}\n        <h3>Table Content</h3>\n        <table class=\"w-100 table-fixed\">\n          <tbody>\n            <tr>\n              <td colspan={{@q.columns.length}}>\n                <div class=\"settify-tab summary-table-editor\">\n                  <b>Columns</b>\n                  <div class=\"settify-tab-top\">\n                    {{#each @q.columns as |column|}}\n                      <button type=\"button\" class=\"settify-tab-item {{if (eq column this.selectedColumn) 'settify-tab-selected' ''}}\" {{action \"toggleColumn\" column}}>\n                        <i class=\"marginright-8 fal fa-chevron-right {{if (eq column this.selectedColumn) 'fa-rotate-90'}}\" />\n                        <span class={{if column.deleted \"disabled-placeholder\"}}>{{or column.value \"Unnamed column\"}}</span>\n                      </button>\n                    {{/each}}\n                  </div>\n                  <div class=\"settify-tab-content\">\n                    <LiquidBind @value={{this.selectedColumn}} @class=\"quickfade\" as |boundSelectedColumn|>\n                      {{#each @q.columns as |column columnIndex|}}\n                        <div class=\"tab-content-container {{if (eq column boundSelectedColumn) 'settify-tab-selected'}}\">\n                          {{#if (eq column boundSelectedColumn)}}\n                            <div class=\"tab-content-item\">\n                              <SettifyTextline @disabled={{@readOnly}} @model={{column.value}} @label=\"Column name\" />\n                              <SettifyTextline @disabled={{@readOnly}} @model={{column.id}} @label=\"Column ID\" />\n                              <span class=\"settify-green\">Width</span>\n                              <div class=\"flex-evenly\">\n                                <RadioButtons @text=\"Smaller\" @model={{column.width}} @value=\"1\" />\n                                <RadioButtons @text=\"Equal\" @model={{column.width}} @value=\"2\" />\n                                <RadioButtons @text=\"Larger\" @model={{column.width}} @value=\"3\" />\n                              </div>\n                              <span class=\"settify-green\">Text align</span>\n                              <div class=\"flex-evenly\">\n                                <RadioButtons @text=\"Left\" @model={{column.textAlign}} @value=\"left\" />\n                                <RadioButtons @text=\"Center\" @model={{column.textAlign}} @value=\"center\" />\n                                <RadioButtons @text=\"Right\" @model={{column.textAlign}} @value=\"right\" />\n                              </div>\n                              <SettifyNumber @model={{column.spanWidth}} @label=\"Cell span width\" @min={{0}} @max={{@q.columns.length}} />\n                              <EditJson @disabled={{@readOnly}} @model={{column.displayIf}} />\n                              <EditCommonTasks\n                                @name=\"column\"\n                                @object={{column}}\n                                @parentObject={{@q}}\n                                @parentKey=\"columns\"\n                                @index={{columnIndex}}\n                                @readOnly={{@readOnly}}\n                                @iCan={{@iCan}}\n                                @isTable=\"column\"\n                                @insertElementLeft={{action \"insertColumnAfter\" @q \"columns\" (sum columnIndex -1)}}\n                                @insertElementRight={{action \"insertColumnAfter\" @q \"columns\" columnIndex}}\n                                @style=\"display: flex; flex-wrap: wrap;\"\n                              />\n                            </div>\n                          {{/if}}\n                        </div>\n                      {{/each}}\n                    </LiquidBind>\n                  </div>\n                </div>\n              </td>\n            </tr>\n            <tr>\n              <td colspan={{@q.columns.length}}>\n                <div class=\"insert-bar clickable {{if this.o.deleted 'disabled-placeholder'}} {{if @readOnly 'no-display'}}\" {{action \"insertRowAfter\" @q \"rows\" -1 @q.columns}}>\n                  <span><i class=\"fal fa-plus-circle tight\" />Insert row here</span>\n                </div>\n              </td>\n            </tr>\n            {{#each @q.rows as |row rowIndex|}}\n              <tr>\n                <td colspan={{@q.columns.length}}>\n                  <span class=\"clickable\" {{action \"toggleExpand\" row}}>\n                    <i class=\"fal fa-chevron-right {{if row.expand 'fa-rotate-90'}}\" />\n                    {{or row.id \"Unnamed row\"}}\n                    <span class=\"greyed-out-text\">\n                      (\n                      {{~#each row.columns as |column idx|~}}\n                        {{parse-text column.value clientRecord=@client context=@context blueprintMode=true}}{{#if (not-eq idx (sum row.columns.length -1))}}, {{/if}}\n                      {{~/each~}}\n                      )\n                    </span>\n                  </span>\n                  <LiquidIf @predicate={{row.expand}}>\n                    <div class=\"edge\" {{action \"toggleExpand\" row}}></div>\n                    <div class=\"content\">\n                      <SettifyTextline @disabled={{@readOnly}} @model={{row.id}} @label=\"rowID\" />\n                      <CheckBox @disabled={{@readOnly}} @model={{row.totalRow}} @text=\"This row is a total row\" />\n                      <LiquidIf @predicate={{row.totalRow}}>\n                        <small>\n                          To calculate the\n                          <code>sum</code>\n                          or\n                          <code>diff</code>\n                          (i.e., difference), provide one or more rowIDs separated by a space, comma or semicolon. For example,\n                          <code>sum FirstID, SecondID</code>\n                        </small>\n                      </LiquidIf>\n                      <LiquidIf @predicate={{not row.totalRow}}>\n                        <SettifyTextline @disabled={{@readOnly}} @model={{row.sourceData}} @label=\"Source Data\" />\n                        {{#if row.sourceData}}\n                          <CheckBox @disabled={{@readOnly}} @model={{row.firstColumnIsHeader}} @text=\"Display the first column as a header\" />\n                        {{/if}}\n                      </LiquidIf>\n                      <div class=\"settify-tab summary-table-editor\">\n                        <b>Cell values</b>\n                        <div class=\"settify-tab-top\">\n                          {{#each row.columns as |column index|}}\n                            <button type=\"button\" class=\"settify-tab-item {{if (eq column this.selectedColumn) 'settify-tab-selected' ''}}\" {{action \"toggleColumn\" column}}>\n                              <i class=\"marginright-8 fal fa-chevron-right {{if (eq column this.selectedColumn) 'fa-rotate-90'}} tight\" />\n                              <span class={{if (get (get @q.columns (concat index \"\")) \"deleted\") \"disabled-placeholder\"}}>{{or\n                                  (get (get @q.columns (concat index \"\")) \"value\")\n                                  \"Unnamed column\"\n                                }}</span>\n                            </button>\n                          {{/each}}\n                        </div>\n                        <div class=\"settify-tab-content\">\n                          <LiquidBind @value={{this.selectedColumn}} @class=\"quickfade\" as |boundSelectedColumn|>\n                            {{#each row.columns as |column|}}\n                              <div class=\"tab-content-container {{if (eq column boundSelectedColumn) 'settify-tab-selected'}}\">\n                                {{#if (eq column boundSelectedColumn)}}\n                                  <div class=\"tab-content-item\">\n                                    <SettifyTextarea @disabled={{@readOnly}} @model={{column.value}} @label=\"Cell value\" @max={{4096}} />\n                                    <SettifyNumber @model={{column.spanWidth}} @label=\"Cell span width\" @min={{0}} @max={{row.column.length}} />\n                                  </div>\n                                {{/if}}\n                              </div>\n                            {{/each}}\n                          </LiquidBind>\n                        </div>\n                      </div>\n                    </div>\n                    <span class=\"clickable content\" {{action \"toggleExpand\" row.styles}}><i class=\"fal fa-chevron-right {{if row.styles.expand 'fa-rotate-90'}}\" />Styles</span>\n                    <LiquidIf @predicate={{row.styles.expand}}>\n                      <table class=\"questionStylesTable\">\n                        <tbody>\n                          <tr>\n                            <td>\n                              <small>\n                                <CheckBox @disabled={{@readOnly}} @model={{row.styles.bold}}>\n                                  <span class=\"bold\">Bold</span>\n                                </CheckBox>\n                              </small>\n                            </td>\n                            <td>\n                              <small>\n                                <CheckBox @disabled={{@readOnly}} @model={{row.styles.filledBG}}>\n                                  <span class=\"bold\">Filled background</span>\n                                </CheckBox>\n                              </small>\n                            </td>\n                            <td>\n                              <small>\n                                <CheckBox @disabled={{@readOnly}} @model={{row.styles.paddingBelow}}>\n                                  <span class=\"bold\">Padding below</span>\n                                </CheckBox>\n                              </small>\n                            </td>\n                            <td>\n                              <small>\n                                <CheckBox @disabled={{@readOnly}} @model={{row.styles.noBorder}}>\n                                  <span class=\"bold\">No border</span>\n                                </CheckBox>\n                              </small>\n                            </td>\n                          </tr>\n                        </tbody>\n                      </table>\n                    </LiquidIf>\n  \n                    <EditJson @model={{row.displayIf}} @class=\"content\" />\n  \n                    <EditCommonTasks\n                      @name=\"row\"\n                      @object={{row}}\n                      @parentObject={{@q}}\n                      @parentKey=\"rows\"\n                      @index={{rowIndex}}\n                      @readOnly={{@readOnly}}\n                      @iCan={{@iCan}}\n                      @class=\"content\"\n                    />\n                  </LiquidIf>\n                </td>\n              </tr>\n              <tr>\n                <td colspan={{@q.columns.length}}>\n                  <div class=\"insert-bar clickable {{if @readOnly 'no-display'}}\" {{action \"insertRowAfter\" @q \"rows\" rowIndex @q.columns}}>\n                    <span><i class=\"fal fa-plus-circle tight\" />Insert row here</span>\n                  </div>\n                </td>\n              </tr>\n            {{/each}}\n          </tbody>\n        </table>\n      {{/if}}\n  \n      {{#if (eq @q.type \"address\")}}\n        <small>\n          <CheckBox @disabled={{@readOnly}} @model={{get @q.addressOptions \"customSuburbInput\"}} @text=\"Customise wording on the suburb input\" />\n          <LiquidIf @predicate={{get @q.addressOptions \"customSuburbInput\"}}>\n            <div class=\"marginleft-2\">\n              <SettifyTextline @disabled={{@readOnly}} @model={{get @q.addressOptions \"suburbText\"}} @label=\"Alternate suburb wording\" />\n            </div>\n          </LiquidIf>\n          <CheckBox @disabled={{@readOnly}} @model={{get @q.addressOptions \"customStateInput\"}} @text=\"Customise wording on the state input\" />\n          <LiquidIf @predicate={{get @q.addressOptions \"customStateInput\"}}>\n            <div class=\"marginleft-2\">\n              <SettifyTextline @disabled={{@readOnly}} @model={{get @q.addressOptions \"stateText\"}} @label=\"Alternate state wording\" />\n            </div>\n          </LiquidIf>\n          <CheckBox @disabled={{@readOnly}} @model={{get @q.addressOptions \"customPostcodeInput\"}} @text=\"Customise wording on the postcode input\" />\n          <LiquidIf @predicate={{get @q.addressOptions \"customPostcodeInput\"}}>\n            <div class=\"marginleft-2\">\n              <SettifyTextline @disabled={{@readOnly}} @model={{get @q.addressOptions \"postcodeText\"}} @label=\"Alternate postcode wording\" />\n            </div>\n          </LiquidIf>\n          <CheckBox @disabled={{@readOnly}} @model={{get @q.addressOptions \"includeLineThree\"}} @text=\"Ask for address line 3\" />\n          <CheckBox @disabled={{@readOnly}} @model={{@q.detailed}} @text=\"Ask for the country\" />\n        </small>\n      {{/if}}\n  \n      {{#if (and (includes this.itemLabelTypes @q.type) @iCan.customiseItemLabelFormat)}}\n        <SettifyTextline\n          @disabled={{@readOnly}}\n          @model={{@q.itemLabelFormat}}\n          @label=\"Custom format for each checkbox\"\n          @placeholder=\"Defaults to 'firstName surname name'\"\n          @helpText=\"If provided, this will pull out the relevant fields from each item, when creating the label in the list of options\"\n        />\n      {{/if}}\n  \n      {{#if (includes this.sourceListTypes @q.type)}}\n        {{#if @iCan.customiseSourceLists}}\n          <SettifyTextarea\n            @disabled={{@readOnly}}\n            @model={{@q.sourceListIDs}}\n            @label={{sum \"What list(s) should be used to create \" (if (eq @q.type \"grid\") \"rows\" \"the list\")}}\n            @placeholder={{if (eq @q.type \"grid\") \"\" \"Defaults to all 'knownEntities'\"}}\n            @helpText={{sum\n              \"If provided, this will pull out the relevant items from the list provided and \"\n              (if (eq @q.type \"checkboxlist\") \"show a checkbox for each\" \"show the content for each\")\n            }}\n          />\n        {{/if}}\n      {{/if}}\n  \n      {{#if (eq @q.type \"inputslider\")}}\n        <SettifyNumber @model={{@q.defaultIndex}} @min={{0}} @max={{sub @q.options.length 1}} @label=\"Sliding scale default location (as option index)\" />\n        <small><CheckBox @disabled={{@readOnly}} @model={{@q.includeSlidingScaleText}} @text=\"Add text to either side of the sliding scale\" /></small>\n        <LiquidIf @predicate={{@q.includeSlidingScaleText}}>\n          <div class=\"marginleft-2\">\n            <SettifyTextline @disabled={{@readOnly}} @model={{@q.slidingScaleLeftText}} @label=\"Text to use on the left side of the slider\" />\n            <SettifyTextline @disabled={{@readOnly}} @model={{@q.slidingScaleRightText}} @label=\"Text to use on the right side of the slider\" />\n          </div>\n        </LiquidIf>\n      {{/if}}\n  \n      {{#if (or (eq @q.type \"selectorcreate\") (eq @q.type \"selectorcreatesingle\") (eq @q.type \"selectorcreatemulti\"))}}\n        {{#if @iCan.customiseSelectOrCreates}}\n          <SettifyTextline @disabled={{@readOnly}} @model={{@q.addNewText}} @label=\"'Add new' text\" @placeholder=\"Defaults to 'Someone else'\" />\n          <SettifyTextline\n            @disabled={{@readOnly}}\n            @model={{@q.itemName}}\n            @label=\"What are we selecting or creating?\"\n            @placeholder=\"Eg, child, shareholder, person, director, trustee, beneficiary, etc.'\"\n          />\n          <SettifyTextline\n            @disabled={{@readOnly}}\n            @model={{@q.itemNamePluralNoun}}\n            @label=\"What is the plural noun of what we are listing?\"\n            @placeholder=\"Eg, children, shareholders, people, director, trustee, beneficiary, etc.'\"\n          />\n        {{/if}}\n        <small>\n          {{#if (and @iCan.customiseSelectOrCreate (eq @q.type \"selectorcreate\"))}}\n            <CheckBox @disabled={{@readOnly}} @model={{@q.multipleSelections}} @text=\"Allow multiple selections\" />\n          {{/if}}\n          <CheckBox @disabled={{@readOnly}} @model={{@q.allowPeople}} @text=\"Allow people to be selected\" />\n          <CheckBox @disabled={{@readOnly}} @model={{@q.allowCorporations}} @text=\"Allow corporations to be selected\" />\n          <CheckBox @disabled={{@readOnly}} @model={{@q.allowDeceased}} @text=\"Allow the deceased to be selected\" />\n  \n          {{!-- This is commented out because it is unused in Estate Disputes\n          {{check-box disabled=@readOnly model=@q.useFamilyTree text=\"Use the family tree in the selection\"}} --}}\n          <LiquidIf @predicate={{or @q.allowPeople @q.allowCorporations}}>\n            <CheckBox @disabled={{@readOnly}} @model={{@q.disableDefaults}} @text=\"Disable the default options\" />\n          </LiquidIf>\n          <LiquidUnless @predicate={{@q.disableDefaults}}>\n            <LiquidIf @predicate={{@q.allowPeople}}>\n              <CheckBox @disabled={{@readOnly}} @model={{@q.askFor.title}} @text=\"Ask for title\" />\n              <LiquidIf @predicate={{@q.askFor.title}}>\n                <CheckBox @disabled={{@readOnly}} @model={{@q.requiredFields.title}} @text=\"Require title\" />\n              </LiquidIf>\n              <CheckBox @disabled={{@readOnly}} @model={{@q.askFor.firstName}} @text=\"Ask for first name\" />\n              <LiquidIf @predicate={{@q.askFor.firstName}}>\n                <CheckBox @disabled={{@readOnly}} @model={{@q.requiredFields.firstName}} @text=\"Require first name\" />\n              </LiquidIf>\n              <CheckBox @disabled={{@readOnly}} @model={{@q.askFor.middleName}} @text=\"Ask for middle name\" />\n              <LiquidIf @predicate={{@q.askFor.middleName}}>\n                <CheckBox @disabled={{@readOnly}} @model={{@q.requiredFields.middleName}} @text=\"Require middle name\" />\n              </LiquidIf>\n              <CheckBox @disabled={{@readOnly}} @model={{@q.askFor.surname}} @text=\"Ask for surname/last name\" />\n              <LiquidIf @predicate={{@q.askFor.surname}}>\n                <div class=\"marginleft-2 align-items-center display-inline-flex\">\n                  Label:\n                  <RadioButtons @text=\"Surname\" @model={{@q.surnameOrLastNameLabel}} @value={{undefined}} />\n                  <RadioButtons @text=\"Last name\" @model={{@q.surnameOrLastNameLabel}} @value=\"lastName\" />\n                </div>\n                <CheckBox @disabled={{@readOnly}} @model={{@q.requiredFields.surname}} @text=\"Require surname/last name\" />\n              </LiquidIf>\n              <CheckBox @disabled={{@readOnly}} @model={{@q.askFor.age}} @text=\"Ask for age\" />\n              <LiquidIf @predicate={{@q.askFor.age}}>\n                <CheckBox @disabled={{@readOnly}} @model={{@q.requiredFields.age}} @text=\"Require age\" />\n              </LiquidIf>\n              <CheckBox @disabled={{@readOnly}} @model={{@q.askFor.dateOfBirth}} @text=\"Ask for date of birth\" />\n              <LiquidIf @predicate={{@q.askFor.dateOfBirth}}>\n                <CheckBox @disabled={{@readOnly}} @model={{@q.requiredFields.dateOfBirth}} @text=\"Require date of birth\" />\n              </LiquidIf>\n              <CheckBox @disabled={{@readOnly}} @model={{@q.askFor.placeOfBirth}} @text=\"Ask for place of birth\" />\n              <LiquidIf @predicate={{@q.askFor.placeOfBirth}}>\n                <CheckBox @disabled={{@readOnly}} @model={{@q.requiredFields.placeOfBirth}} @text=\"Require place of birth\" />\n              </LiquidIf>\n              <CheckBox @disabled={{@readOnly}} @model={{@q.askFor.occupation}} @text=\"Ask for occupation\" />\n              <LiquidIf @predicate={{@q.askFor.occupation}}>\n                <CheckBox @disabled={{@readOnly}} @model={{@q.requiredFields.occupation}} @text=\"Require occupation\" />\n              </LiquidIf>\n              <CheckBox @disabled={{@readOnly}} @model={{@q.askFor.language}} @text=\"Ask for primary language spoken\" />\n              <LiquidIf @predicate={{@q.askFor.language}}>\n                <CheckBox @disabled={{@readOnly}} @model={{@q.requiredFields.language}} @text=\"Require primary language spoken\" />\n              </LiquidIf>\n            </LiquidIf>\n            <LiquidIf @predicate={{@q.allowCorporations}}>\n              <CheckBox @disabled={{@readOnly}} @model={{@q.askFor.chairman}} @text=\"Ask for chairman\" />\n              <LiquidIf @predicate={{@q.askFor.chairman}}>\n                <CheckBox @disabled={{@readOnly}} @model={{@q.requiredFields.chairman}} @text=\"Require chairman\" />\n              </LiquidIf>\n              <CheckBox @disabled={{@readOnly}} @model={{@q.askFor.authorisedRepresentative}} @text=\"Ask for authorised representative\" />\n              <LiquidIf @predicate={{@q.askFor.authorisedRepresentative}}>\n                <CheckBox @disabled={{@readOnly}} @model={{@q.requiredFields.authorisedRepresentative}} @text=\"Require authorised representative\" />\n              </LiquidIf>\n            </LiquidIf>\n            <CheckBox @disabled={{@readOnly}} @model={{@q.askFor.email}} @text=\"Ask for email address\" />\n            <LiquidIf @predicate={{@q.askFor.email}}>\n              <CheckBox @disabled={{@readOnly}} @model={{@q.requiredFields.email}} @text=\"Require email address\" />\n            </LiquidIf>\n            <CheckBox @disabled={{@readOnly}} @model={{@q.askFor.phone}} @text=\"Ask for phone number\" />\n            <LiquidIf @predicate={{@q.askFor.phone}}>\n              <CheckBox @disabled={{@readOnly}} @model={{@q.requiredFields.phone}} @text=\"Require phone number\" />\n            </LiquidIf>\n            <CheckBox @disabled={{@readOnly}} @model={{@q.askFor.fax}} @text=\"Ask for fax number\" />\n            <LiquidIf @predicate={{@q.askFor.fax}}>\n              <CheckBox @disabled={{@readOnly}} @model={{@q.requiredFields.fax}} @text=\"Require fax number\" />\n            </LiquidIf>\n            <CheckBox @disabled={{@readOnly}} @model={{@q.askFor.mobile}} @text=\"Ask for mobile number\" />\n            <LiquidIf @predicate={{@q.askFor.mobile}}>\n              <CheckBox @disabled={{@readOnly}} @model={{@q.requiredFields.mobile}} @text=\"Require mobile number\" />\n            </LiquidIf>\n            <CheckBox @disabled={{@readOnly}} @model={{@q.askFor.address}} @text=\"Ask for postal address\" />\n            <LiquidIf @predicate={{@q.askFor.address}}>\n              <CheckBox @disabled={{@readOnly}} @model={{@q.requiredFields.address}} @text=\"Require postal address\" />\n            </LiquidIf>\n          </LiquidUnless>\n          <span class=\"clickable\" {{action \"copyToClipboard\" \"context.editingExistingItem\"}}>\n            Copy the editingExistingItem context\n            <i class=\"fal fa-copy clickable\" title=\"Copy the editingExistingItem id, for use within the sub-questions\" />\n          </span>\n          <HelpTextIcon\n            @helpText=\"editingExistingItem will be truthy if the user is editing an existing item, or falsey if the user is creating a new item. This can be used to show or hide questions or text appropriately.\"\n            @minimal={{true}}\n          />\n        </small>\n      {{/if}}\n  \n      {{#if (includes this.subContentTypes @q.type)}}\n        {{#if (or @iCan.addOptions @q.content.length)}}\n          {{#if (or (eq @q.type \"selectorcreate\") (eq @q.type \"checkboxlist\"))}}\n            <b>{{if @q.disableDefaults \"Questions\" \"Additional questions\"}} to ask of each selected item</b>\n          {{else}}\n            <b>Questions to ask of each item</b>\n          {{/if}}\n          <br />\n        {{/if}}\n        {{#if @iCan.addOptions}}\n          <div class=\"insert-bar clickable {{if @readOnly 'no-display'}}\" {{action \"insertSubquestionAfter\" @q}}>\n            <span><i class=\"fal fa-plus-circle tight\" />Insert content here</span>\n          </div>\n        {{/if}}\n        {{#each @q.content as |c contentIndex|}}\n          <span class=\"clickable {{if c.deleted 'disabled-placeholder'}}\" {{action \"toggleExpand\" c}}>\n            <i class=\"fal fa-chevron-right {{if c.expand 'fa-rotate-90'}}\" />\n            <TitlePrinter @model={{c}} @titleFor=\"content\" @clientRecord={{@client}} @context={{@context}} />\n          </span>\n          <i\n            class=\"fal fa-link clickable tight\"\n            title=\"Copy the full context ID of this question, for use elswhere in the form definition\"\n            {{action \"copyToClipboard\" (question-context-string @chapter @page @q c)}}\n          />\n          <LiquidIf @predicate={{c.expand}}>\n            <div class=\"edge\" {{action \"toggleExpand\" c}}></div>\n            <div class=\"content\">\n              <CompareFormChanges @model={{c}} />\n              <EditQuestion\n                @readOnly={{@readOnly}}\n                @induction={{@induction}}\n                @chapter={{@chapter}}\n                @page={{@page}}\n                @q={{c}}\n                @parentQuestion={{@q}}\n                @client={{@client}}\n                @editMode={{@editMode}}\n                @questionIndex={{contentIndex}}\n                @questionCount={{@q.content.length}}\n                @iCan={{@iCan}}\n              />\n            </div>\n          </LiquidIf>\n          {{#if @iCan.addOptions}}\n            <div class=\"insert-bar clickable {{if @readOnly 'no-display'}}\" {{action \"insertSubquestionAfter\" @q c}}>\n              <span><i class=\"fal fa-plus-circle tight\" />Insert content here</span>\n            </div>\n          {{/if}}\n        {{/each}}\n        {{#if (and (includes this.subContentPositionChoiceTypes @q.type) (not @q.disableDefaults))}}\n          <small><CheckBox @disabled={{@readOnly}} @model={{@q.customContentFirst}} @text=\"Ask these additional questions first, before the standard questions\" /></small>\n        {{/if}}\n      {{/if}}\n  \n      {{#if (eq @q.type \"list\")}}\n        {{#if @iCan.customiseLists}}\n          <SettifyTextline @disabled={{@readOnly}} @model={{@q.itemName}} @label=\"What are we listing?\" @placeholder=\"Eg, property, car, heirloom, etc.'\" />\n          <small><CheckBox @disabled={{@readOnly}} @model={{@q.tabbedList}} @text=\"Use a tabbed list\" /></small>\n          <LiquidIf @predicate={{not @q.tabbedList}}>\n            <small><CheckBox @disabled={{@readOnly}} @model={{@q.immutableList}} @text=\"Do not allow items to be added or removed\" /></small>\n            <small><CheckBox @disabled={{@readOnly}} @model={{@q.noBorder}} @text=\"Hide the border around each item\" /></small>\n          </LiquidIf>\n          <LiquidIf @predicate={{@q.tabbedList}}>\n            <SettifyTextline\n              @disabled={{@readOnly}}\n              @model={{@q.itemLabelFormat}}\n              @label=\"Custom format for each tabbed title\"\n              @placeholder=\"Defaults to 'firstName surname'\"\n              @helpText=\"If provided, this will pull out the relevant fields from each tabbed title\"\n            />\n          </LiquidIf>\n        {{/if}}\n      {{/if}}\n  \n      {{#if (eq @q.type \"unitsPer\")}}\n        <SettifySelect\n          @disabled={{@readOnly}}\n          @model={{@q.unitType}}\n          @label=\"What type of input?\"\n          @name=\"unit-type\"\n          @content={{this.unitTypesToSelectFrom}}\n          @labelPath=\"label\"\n          @valuePath=\"value\"\n        />\n        <div class=\"display-flex margintop-15\">\n          Select time periods:\n          <small class=\"flex-evenly width-40\">\n            {{#each this.timePeriodOptions as |timePeriod|}}\n              <CheckBox @text={{timePeriod}} @model={{get @q.timePeriodOptions timePeriod}} />\n            {{/each}}\n          </small>\n        </div>\n      {{/if}}\n  \n      {{#if (eq @q.type \"familytreeselect\")}}\n        <CheckBox @disabled={{@readOnly}} @model={{@q.enableDeceased}} @text=\"Allow the deceased to be selected\" />\n        <CheckBox @disabled={{@readOnly}} @model={{@q.enableOrganisations}} @text=\"Allow organisations within other beneficiaries to be selected\" />\n        <CheckBox @disabled={{@readOnly}} @model={{@q.disableDeceasedPeople}} @text=\"Disable deceased family members from being selected\" />\n        <CheckBox @disabled={{@readOnly}} @model={{@q.disableEditing}} @text=\"Just output the family tree (disable editing)\" />\n        <CheckBox @disabled={{@readOnly}} @model={{@q.askForMoreInfo}} @text=\"Ask for more information\" />\n      {{/if}}\n  \n      {{#if (includes this.placeholderTypes @q.type)}}\n        <SettifyTextline @disabled={{@readOnly}} @model={{@q.placeholder}} @label=\"Example answer, shown to the client\" @placeholder=\"(can be left blank)\" />\n        <LiquidIf @predicate={{and (eq @q.type \"money\") @q.placeholder}}>\n          <small><CheckBox @disabled={{@readOnly}} @model={{@q.preventFading}} @text=\"I'm using this placeholder as question text (prevents placeholder from fading)\" /></small>\n        </LiquidIf>\n        {{#if @iCan.hideItemsOnTheBrief}}\n          <small><CheckBox\n              @disabled={{@readOnly}}\n              @model={{@q.displayPlaceholderInSummary}}\n              @text=\"If this question is not answered, display the placeholder in the client brief\"\n            /></small>\n        {{/if}}\n      {{/if}}\n  \n      {{#if (eq @q.type \"number\")}}\n        <small><CheckBox @disabled={{@readOnly}} @model={{@q.noCommas}} @text=\"Do not separate numbers by commas when a value is input\" /></small>\n      {{/if}}\n  \n      {{#if (eq @q.type \"money\")}}\n        <small>\n          <CheckBox @disabled={{@readOnly}} @model={{@q.showConfidenceSlider}} @text=\"Display a confidence slider when a value is input\" />\n          <LiquidIf @predicate={{@q.showConfidenceSlider}}>\n            <SettifyTextline @disabled={{@readOnly}} @model={{@q.confidenceSliderMaxValue}} @label=\"Wording for max confidence value\" @placeholder=\"Defaults to '100% certain'\" />\n          </LiquidIf>\n        </small>\n      {{/if}}\n  \n      {{#if (includes this.defaultTypes @q.type)}}\n        <SettifyTextline @disabled={{@readOnly}} @model={{@q.default}} @label=\"The default answer to be set\" @placeholder=\"(can be left blank)\" />\n      {{/if}}\n  \n      <small>\n        {{#if (and @iCan.editFilters (includes this.objectFilterTypes @q.type))}}\n          {{#if (eq @q.type \"documentsRequiredList\")}}\n            Display documents from previous answers?\n          {{else}}\n            Can users select from previous answers?\n          {{/if}}\n          {{#if (not-eq @q.type \"documentsRequiredList\")}}\n            <RadioButtons @text=\"No, don't offer any previous answers\" @model={{@q.filterType}} @value=\"excludeall\" />\n          {{/if}}\n          <RadioButtons @text=\"Yes, offer all previous answers\" @model={{@q.filterType}} @value={{undefined}} />\n          <RadioButtons @text=\"Yes, but only offer answers from specific questions\" @model={{@q.filterType}} @value=\"whitelist\" />\n          <RadioButtons @text=\"Yes, but don't offer answers from specific questions\" @model={{@q.filterType}} @value=\"blacklist\" />\n  \n          <LiquidIf @predicate={{or (eq @q.filterType \"whitelist\") (eq @q.filterType \"blacklist\")}}>\n            Which questions? (List the IDs one per line)\n            <SettifyTextarea @model={{@q.filterList}} />\n          </LiquidIf>\n        {{/if}}\n        {{#if (eq @q.type \"radio\")}}\n          {{#if @iCan.customiseRadioButtons}}\n            <CheckBox @disabled={{@readOnly}} @model={{@q.unselectable}} @text=\"If an option is selected, hide the others to save space\" />\n          {{/if}}\n        {{/if}}\n        {{#if (and (eq @q.type \"selectorcreate\") (not @q.multipleSelections))}}\n          {{#if @iCan.customiseSelectOrCreates}}\n            <CheckBox @disabled={{@readOnly}} @model={{@q.setAsPrimaryContact}} @text=\"Store this answer as the primary contact\" />\n            {{!-- {{check-box disabled=@readOnly model=@q.hideSelect text=\"Hide the selection controls (just show the content)\"}} --}}\n          {{/if}}\n        {{/if}}\n        {{#if (eq @q.type \"yesno\")}}\n          <CheckBox @disabled={{@readOnly}} @model={{@q.excludeNotSure}} @text=\"Remove the 'Not Sure' option from this question\" />\n        {{/if}}\n        {{#if (eq @q.type \"date\")}}\n          <SettifySelect\n            @disabled={{@readOnly}}\n            @model={{@q.dateLayout}}\n            @label=\"Date layout\"\n            @name=\"date-layout\"\n            @content={{this.dateLayoutOptions}}\n            @labelPath=\"label\"\n            @valuePath=\"value\"\n          />\n          <CheckBox @disabled={{@readOnly}} @model={{@q.allowFuture}} @text=\"Allow future dates to be entered\" />\n        {{/if}}\n        {{#if (includes this.requiredTypes @q.type)}}\n          <CheckBox @disabled={{@readOnly}} @model={{@q.required}} @text=\"This question must be answered\" />\n          <LiquidIf @predicate={{and (eq @q.type \"address\") @q.required}}>\n            <div class=\"marginleft-2\">\n              <CheckBox @disabled={{@readOnly}} @model={{get @q.addressOptions \"suburbInputNotRequired\"}} @text=\"The suburb input is not required\" />\n              <CheckBox @disabled={{@readOnly}} @model={{get @q.addressOptions \"stateInputNotRequired\"}} @text=\"The state input is not required\" />\n            </div>\n          </LiquidIf>\n          <LiquidIf @predicate={{and (eq @q.type \"date\") @q.required}}>\n            <div class=\"date-question marginleft-2\">\n              <RadioButtons @text=\"Day, month and year are all required\" @model={{@q.requiredSpecificity}} @value={{undefined}} />\n              <RadioButtons @text=\"Only the month and year\" @model={{@q.requiredSpecificity}} @value=\"monthAndYear\" />\n              <RadioButtons @text=\"Only the year\" @model={{@q.requiredSpecificity}} @value=\"year\" />\n            </div>\n          </LiquidIf>\n          <LiquidIf @predicate={{and @q.required @iCan.editDisplayIf}}>\n            <div class=\"marginleft-2\">\n              <EditJson @model={{@q.requiredIfLogic}} @label=\"Required if (in JSON format)\" @disabled={{@readOnly}} />\n            </div>\n          </LiquidIf>\n        {{/if}}\n        {{#if (includes this.notSureTypes @q.type)}}\n          <CheckBox\n            @disabled={{@readOnly}}\n            @model={{@q.notSureOption}}\n            @text={{sum \"Include a not sure checkbox for this question (model will be stored at \" @q.id \"-\" (or @q.notSureOptionLocationSuffix \"notsure\") \")\"}}\n          />\n          <LiquidIf @predicate={{@q.notSureOption}}>\n            <div class=\"marginleft-2\">\n              <CheckBox\n                @disabled={{@readOnly}}\n                @model={{@q.notSureOptionDoesNotHideComponent}}\n                @text={{sum \"The not sure checkbox should not hide the \" @q.type \" component if checked\"}}\n              />\n              <SettifyTextline @disabled={{@readOnly}} @model={{@q.notSureOptionText}} @label=\"Alternate wording for the option\" @placeholder=\"Defaults to 'I'm not sure'\" />\n              <SettifyTextline @disabled={{@readOnly}} @model={{@q.notSureOptionLocationSuffix}} @label=\"Alternate storage location suffix for the model\" />\n            </div>\n          </LiquidIf>\n        {{/if}}\n        {{#if (includes this.breadcrumbTypes @q.type)}}\n          {{#if @iCan.editBreadcrumbs}}\n            <CheckBox @disabled={{@readOnly}} @model={{@q.useAnswerAsBreadcrumb}} @text=\"Breadcrumb (use the answer to this question in the title of the @induction)\" />\n          {{/if}}\n        {{/if}}\n        {{#if (includes this.conflictCheckTypes @q.type)}}\n          <CheckBox\n            @disabled={{@readOnly}}\n            @model={{@q.includeInConflictCheck}}\n            @text=\"Conflict check information (provide this answer to the firm before a conflict check has been run)\"\n          />\n        {{/if}}\n        {{#if @iCan.hideItemsOnTheBrief}}\n          <CheckBox @disabled={{@readOnly}} @model={{@q.hideInClientSummary}} @text=\"Hide this question on the client-facing brief\" />\n          <CheckBox @disabled={{@readOnly}} @model={{@q.hideFromFirm}} @text=\"Hide this question on the firm-facing brief\" />\n          <CheckBox @disabled={{@readOnly}} @model={{@q.hideFromFirmIfFalsey}} @text=\"Hide this question on the firm facing brief if it hasn't been answered\" />\n        {{/if}}\n      </small>\n    {{/if}}\n  \n    {{#if (includes this.defaultHiddenOnBriefTypes @q.type)}}\n      {{#if @iCan.hideItemsOnTheBrief}}\n        <small>\n          <CheckBox @disabled={{@readOnly}} @model={{@q.includeInSummary}} @text={{sum \"Include this \" @q.type \" in the client brief\"}} />\n        </small>\n        <small>\n          <CheckBox @disabled={{@readOnly}} @model={{@q.includeInFirmSummary}} @text={{sum \"Include this \" @q.type \" in the firm-facing client brief\"}} />\n        </small>\n      {{/if}}\n    {{/if}}\n  \n    {{#if (and (includes this.askForDocumentTypes @q.type) (not @minimal))}}\n      <LiquidIf @predicate={{or (not @q.documentsRequired.length) @q.showDocumentsRequired}}>\n        <small><CheckBox @model={{@q.showDocumentsRequired}} @text=\"Ask for documents whenever this question is displayed\" /></small>\n      </LiquidIf>\n    {{/if}}\n  \n    {{#if (and this.supportedStyles.length (not @minimal))}}\n      <span class=\"clickable\" {{action \"toggleExpand\" @q.styles}}><i class=\"fal fa-chevron-right {{if @q.styles.expand 'fa-rotate-90'}}\" />Styles</span>\n      <LiquidIf @predicate={{@q.styles.expand}}>\n        <div class=\"question-styles-container\">\n          <table class=\"questionStylesTable\">\n            <tbody>\n              <tr>\n                {{#each this.genericStyles as |style|}}\n                  {{#if (includes this.supportedStyles style.value)}}\n                    <td>\n                      <small>\n                        <CheckBox @disabled={{@readOnly}} @model={{mut (get @q.styles style.value)}}>\n                          <span class={{style.classForEditorDisplay}}>{{style.label}}</span>\n                        </CheckBox>\n                      </small>\n                    </td>\n                  {{/if}}\n                {{/each}}\n                {{#if (includes this.supportedStyles \"borderless\")}}\n                  <td>\n                    <small>\n                      <CheckBox @disabled={{@readOnly}} @model={{@q.styles.borderless}}>\n                        <span>Remove Borders</span>\n                      </CheckBox>\n                    </small>\n                  </td>\n                {{/if}}\n              </tr>\n            </tbody>\n          </table>\n          {{#if (includes this.supportedStyles \"indentation\")}}\n            <SettifyNumber @model={{@q.styles.indentation}} @min={{0}} @max={{4}} @label=\"How indentented should this question be?\" />\n          {{/if}}\n        </div>\n      </LiquidIf>\n    {{/if}}\n  \n    <LiquidIf @predicate={{or @q.showDocumentsRequired @q.documentsRequired.length (eq @q.type \"docupload\")}}>\n      <FreeList @assignUUIDs={{false}} @label=\"Documents to request\" @model={{@q.documentsRequired}} @itemName=\"document\" as |doc|>\n        <SettifyTextline @disabled={{@readOnly}} @model={{doc.title}} @label=\"Document name (lower case, and don't include 'the' at the start)\" />\n      </FreeList>\n    </LiquidIf>\n    {{#unless @minimal}}\n      <EditCommonTasks\n        @name=\"question\"\n        @object={{@q}}\n        @parentObject={{or @parentQuestion @page}}\n        @parentKey={{if @parentQuestion \"content\" \"questions\"}}\n        @index={{@questionIndex}}\n        @readOnly={{@readOnly}}\n        @iCan={{@iCan}}\n      />\n    {{/unless}}\n  </div>\n  \n  {{#unless @minimal}}\n    <b>Preview</b>\n    {{#if (includes this.canResetPreviewTypes @q.type)}}\n      <small><a class=\"clickable\" {{action \"refreshPreview\"}}>(<i class=\"fal fa-redo tight\" /> reset)</a></small>\n    {{/if}}\n  \n    {{#if this.showPreview}}\n      <SettifyInputSwitcher\n        @question={{@q}}\n        @clientRecord={{@client}}\n        @forceDisplay={{true}}\n        @displayOnly={{not @editMode}}\n        @editMode={{@editMode}}\n        @model={{get-answers-from\n          client=@client\n          induction=@induction.id\n          chapter=@chapter.id\n          page=@page.id\n          answersLocation=@page.answersLocation\n          repeatToken=@induction.repeatToken\n          create=true\n        }}\n        @context={{hash induction=@induction.id chapter=@chapter.id page=@page.id repeat=@induction.repeatToken}}\n      />\n    {{/if}}\n  {{/unless}}\n  */\n  {\n    \"id\": \"JgTIY0e9\",\n    \"block\": \"[[[10,0],[12],[1,\\\"\\\\n\\\"],[1,\\\"  \\\"],[8,[39,1],null,[[\\\"@model\\\",\\\"@label\\\",\\\"@name\\\",\\\"@content\\\",\\\"@disabled\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[[30,1,[\\\"type\\\"]],\\\"Question type\\\",\\\"question-type\\\",[30,0,[\\\"questionTypesToSelectFrom\\\"]],[28,[37,2],[[30,2],[28,[37,3],[[30,3,[\\\"editQuestionType\\\"]]],null],[28,[37,4],[[30,0,[\\\"questionTypesToSelectFrom\\\",\\\"length\\\"]],1],null]],null],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,2],[[28,[37,3],[[30,1,[\\\"created\\\"]]],null],[30,3,[\\\"editIDs\\\"]]],null],[[[1,\\\"    \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,2],[30,1,[\\\"id\\\"]],\\\"ID (must be unique among all questions on this page)\\\",\\\"For example, saleofland, registercompany, motorvehicleaccident\\\"]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,7],[[30,3,[\\\"editIDs\\\"]],[30,1,[\\\"created\\\"]]],null],[[[1,\\\"      \\\"],[10,\\\"small\\\"],[12],[10,\\\"b\\\"],[14,0,\\\"negative\\\"],[12],[1,\\\"Warning:\\\"],[13],[1,\\\" Changing an id can break references (eg, displayIf logic or {parsed text})\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[41,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"paragraph\\\"],null],[[[1,\\\"    \\\"],[8,[39,10],null,[[\\\"@disabled\\\",\\\"@max\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],8192,[30,1,[\\\"content\\\"]],\\\"Paragraph content\\\"]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,11],[[30,0,[\\\"helpTextTypes\\\"]],[30,1,[\\\"type\\\"]]],null],[[[1,\\\"      \\\"],[8,[39,10],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@rows\\\"],[[30,2],[30,1,[\\\"helpText\\\"]],\\\"Helpful text if the client is not sure how to answer the question\\\",2]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,3,[\\\"editDisplayIf\\\"]],[[[1,\\\"      \\\"],[8,[39,12],null,[[\\\"@model\\\",\\\"@disabled\\\"],[[30,1,[\\\"displayIf\\\"]],[30,2]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]],[[[41,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"hiddenCalculatedField\\\"],null],[[[1,\\\"    \\\"],[8,[39,10],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,1,[\\\"content\\\"]],\\\"Parse text formula to calculate\\\"]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"heading\\\"],null],[[[1,\\\"    \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,1,[\\\"content\\\"]],\\\"Heading content\\\"]],null],[1,\\\"\\\\n    \\\"],[8,[39,13],null,[[\\\"@assignUUIDS\\\",\\\"@label\\\",\\\"@model\\\",\\\"@itemName\\\"],[false,\\\"Icons to be displayed on the header\\\",[30,1,[\\\"icons\\\"]],\\\"value\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[39,14],null,[[\\\"@model\\\",\\\"@iCan\\\",\\\"@readOnly\\\"],[[30,4,[\\\"icon\\\"]],[30,3],[30,2]]],null],[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"setIconOffset\\\"]],[[[1,\\\"        \\\"],[8,[39,15],null,[[\\\"@model\\\",\\\"@min\\\",\\\"@max\\\",\\\"@label\\\"],[[30,4,[\\\"offset\\\"]],-20,20,\\\"How many px should this icon be offset?\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"]],[4]]]]],[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"editDisplayIf\\\"]],[[[1,\\\"      \\\"],[8,[39,12],null,[[\\\"@model\\\",\\\"@disabled\\\"],[[30,1,[\\\"displayIf\\\"]],[30,2]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]],[[[41,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"image\\\"],null],[[[1,\\\"    \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,1,[\\\"content\\\"]],\\\"Text\\\"]],null],[1,\\\"\\\\n    \\\"],[8,[39,14],null,[[\\\"@model\\\",\\\"@iCan\\\",\\\"@readOnly\\\"],[[30,1,[\\\"icon\\\"]],[30,3],[30,2]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"link\\\"],null],[[[1,\\\"    \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"toggleButton\\\"]],[28,[37,17],[\\\"Change to \\\",[52,[30,1,[\\\"toggleButton\\\"]],\\\"a link\\\",\\\"toggle another value\\\"]],null]]],null],[1,\\\"\\\\n    \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,1,[\\\"content\\\"]],\\\"Link text\\\"]],null],[1,\\\"\\\\n    \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,1,[\\\"toggleButton\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,1,[\\\"alternateContent\\\"]],\\\"Link text when toggled\\\"]],null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[28,[37,3],[[30,1,[\\\"toggleButton\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,1,[\\\"link\\\"]],\\\"Link URL\\\"]],null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"editDisplayIf\\\"]],[[[1,\\\"      \\\"],[8,[39,12],null,[[\\\"@model\\\",\\\"@disabled\\\"],[[30,1,[\\\"displayIf\\\"]],[30,2]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]],[[[41,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"block\\\"],null],[[[41,[30,3,[\\\"editDisplayIf\\\"]],[[[1,\\\"      \\\"],[8,[39,12],null,[[\\\"@model\\\",\\\"@disabled\\\"],[[30,1,[\\\"displayIf\\\"]],[30,2]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,2],[[30,3,[\\\"addOptions\\\"]],[30,1,[\\\"content\\\",\\\"length\\\"]]],null],[[[1,\\\"      \\\"],[10,\\\"b\\\"],[12],[1,\\\"Content held within this block\\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,3,[\\\"addOptions\\\"]],[[[1,\\\"      \\\"],[11,0],[16,0,[29,[\\\"insert-bar clickable \\\",[52,[30,2],\\\"no-display\\\"]]]],[4,[38,20],[[30,0],\\\"insertSubquestionAfter\\\",[30,1]],null],[12],[1,\\\"\\\\n        \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Insert content here\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[42,[28,[37,24],[[28,[37,24],[[30,1,[\\\"content\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[11,1],[16,0,[29,[\\\"clickable \\\",[52,[30,5,[\\\"deleted\\\"]],\\\"disabled-placeholder\\\"]]]],[16,1,[28,[37,17],[[30,7,[\\\"id\\\"]],\\\".\\\",[30,8,[\\\"id\\\"]],\\\".\\\",[30,1,[\\\"id\\\"]],\\\".\\\",[30,5,[\\\"id\\\"]]],null]],[4,[38,20],[[30,0],\\\"toggleExpand\\\",[30,5]],null],[12],[1,\\\"\\\\n        \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-chevron-right \\\",[52,[30,5,[\\\"expand\\\"]],\\\"fa-rotate-90\\\"]]]],[12],[13],[1,\\\"\\\\n        \\\"],[8,[39,25],null,[[\\\"@model\\\",\\\"@titleFor\\\",\\\"@clientRecord\\\",\\\"@context\\\"],[[30,5],\\\"content\\\",[30,9],[30,10]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[11,\\\"i\\\"],[24,0,\\\"fal fa-link clickable tight\\\"],[24,\\\"title\\\",\\\"Copy the full context ID of this question, for use elswhere in the form definition\\\"],[4,[38,20],[[30,0],\\\"copyToClipboard\\\",[28,[37,26],[[30,7],[30,8],[30,1],[30,5]],null]],null],[12],[13],[1,\\\"\\\\n      \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,5,[\\\"expand\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[11,0],[24,0,\\\"edge\\\"],[4,[38,20],[[30,0],\\\"toggleExpand\\\",[30,5]],null],[12],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"content\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,27],null,[[\\\"@model\\\"],[[30,5]]],null],[1,\\\"\\\\n          \\\"],[8,[39,28],null,[[\\\"@readOnly\\\",\\\"@induction\\\",\\\"@chapter\\\",\\\"@page\\\",\\\"@q\\\",\\\"@parentQuestion\\\",\\\"@client\\\",\\\"@editMode\\\",\\\"@questionIndex\\\",\\\"@questionCount\\\",\\\"@iCan\\\"],[[30,2],[30,11],[30,7],[30,8],[30,5],[30,1],[30,9],[30,12],[30,6],[30,1,[\\\"content\\\",\\\"length\\\"]],[30,3]]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"addOptions\\\"]],[[[1,\\\"        \\\"],[11,0],[16,0,[29,[\\\"insert-bar clickable \\\",[52,[30,2],\\\"no-display\\\"]]]],[4,[38,20],[[30,0],\\\"insertSubquestionAfter\\\",[30,1],[30,5]],null],[12],[1,\\\"\\\\n          \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Insert content here\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[5,6]],null]],[]],[[[41,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"divider\\\"],null],[[[1,\\\"    \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"whitespace\\\"]],\\\"Divide sections using whitespace\\\"]],null],[1,\\\"\\\\n      \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"border\\\"]],\\\"Divide sections with a line\\\"]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"button\\\"],null],[[[1,\\\"    \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@maxlength\\\",\\\"@label\\\",\\\"@onblur\\\"],[[30,2],[30,1,[\\\"title\\\"]],4096,\\\"Question text\\\",[28,[37,20],[[30,0],\\\"checkTitleInputType\\\"],null]]],null],[1,\\\"\\\\n    \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,1,[\\\"link\\\"]],\\\"What page should it link to?\\\"]],null],[1,\\\"\\\\n    \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"completeThisChapter\\\"]],\\\"Set this chapter to completed on button trigger\\\"]],null],[1,\\\"\\\\n    \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"hideInClientSummary\\\"]],\\\"Hide this question on the client-facing brief\\\"]],null],[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"editDisplayIf\\\"]],[[[1,\\\"      \\\"],[8,[39,29],null,[[\\\"@model\\\"],[[30,1,[\\\"displayIf\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]],[[[1,\\\"    \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[28,[37,4],[[30,0,[\\\"titleInputType\\\"]],\\\"textarea\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[39,10],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@max\\\",\\\"@label\\\",\\\"@onblur\\\"],[[30,2],[30,1,[\\\"title\\\"]],4096,\\\"Question text\\\",[28,[37,20],[[30,0],\\\"checkTitleInputType\\\"],null]]],null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[28,[37,30],[[30,0,[\\\"titleInputType\\\"]],\\\"textarea\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@maxlength\\\",\\\"@label\\\",\\\"@onblur\\\"],[[30,2],[30,1,[\\\"title\\\"]],4096,\\\"Question text\\\",[28,[37,20],[[30,0],\\\"checkTitleInputType\\\"],null]]],null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"editSimpleFormatting\\\"]],[[[1,\\\"      \\\"],[10,\\\"small\\\"],[12],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"noHeaderLabel\\\"]],\\\"Shrink the question text when an answer has been provided\\\"]],null],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,3,[\\\"editShortTitles\\\"]],[[[1,\\\"      \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,2],[30,1,[\\\"shortTitle\\\"]],\\\"Text to use on the client brief\\\",[28,[37,17],[\\\"(Defaults to \\\",[52,[30,1,[\\\"title\\\"]],[28,[37,17],[\\\"\\\",\\\" @q.title \\\",\\\"\\\"],null],\\\"the text above\\\"],\\\")\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,11],[[30,0,[\\\"promptTypes\\\"]],[30,1,[\\\"type\\\"]]],null],[[[1,\\\"      \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,1,[\\\"prompt\\\"]],\\\"Prompt to display when nothing is selected\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,11],[[30,0,[\\\"helpTextTypes\\\"]],[30,1,[\\\"type\\\"]]],null],[[[1,\\\"      \\\"],[8,[39,10],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@rows\\\"],[[30,2],[30,1,[\\\"helpText\\\"]],\\\"Helpful text if the client is not sure how to answer the question\\\",2]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"editDisplayIf\\\"]],[[[1,\\\"      \\\"],[8,[39,12],null,[[\\\"@model\\\",\\\"@disabled\\\"],[[30,1,[\\\"displayIf\\\"]],[30,2]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"useAnswersLocation\\\"]],[[[1,\\\"      \\\"],[10,2],[14,0,\\\"marginbottom-0\\\"],[12],[1,\\\"\\\\n        Alternative storage location for this question\\\\n        \\\"],[11,\\\"i\\\"],[24,0,\\\"clickable fal fa-question-circle tight\\\"],[4,[38,20],[[30,0],\\\"toggle\\\",\\\"showAnswersLocationHelpText\\\"],null],[12],[13],[1,\\\"\\\\n        \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showAnswersLocationHelpText\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n            This feature's behaviour changes depending on the number of segments in the location path:\\\\n            \\\"],[10,\\\"ul\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"li\\\"],[12],[1,\\\"A location with 1 segment will replace the question's ID as the storage key, but not change where the question is actually stored.\\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"li\\\"],[12],[1,\\\"A location with 2 segments will store the answer with the question's ID as the key, but under a different page (which overrides the page-level answers location).\\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"li\\\"],[12],[1,\\\"A location with 3 segments will be treated as a full alternate chapter.page.question path.\\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"li\\\"],[12],[1,\\\"A location with more than 3 segments will remove the last segment from the path and store the question at that location (eg. for an person object, which would be\\\\n                used something like chapter.page.person.firstName)\\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\"],[[30,2],[30,1,[\\\"answersLocation\\\"]]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,7],[[30,3,[\\\"customiseNumericFields\\\"]],[28,[37,11],[[30,0,[\\\"numericFieldsTypes\\\"]],[30,1,[\\\"type\\\"]]],null]],null],[[[1,\\\"      \\\"],[8,[39,15],null,[[\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,1,[\\\"min\\\"]],\\\"Minimum value\\\",\\\"(can be left blank)\\\"]],null],[1,\\\"\\\\n      \\\"],[8,[39,15],null,[[\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,1,[\\\"max\\\"]],\\\"Maximum value\\\",\\\"(can be left blank)\\\"]],null],[1,\\\"\\\\n      \\\"],[8,[39,15],null,[[\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,1,[\\\"suggestedMillionsThreshold\\\"]],\\\"Millions threshold\\\",\\\"(a number below this will prompt the user to convert it to millions)\\\"]],null],[1,\\\"\\\\n      \\\"],[8,[39,15],null,[[\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,1,[\\\"suggestedThousandsThreshold\\\"]],\\\"Thousands threshold\\\",\\\"(a number below this will prompt the user to convert it to thousands)\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"multiradio\\\"],null],[[[41,[28,[37,2],[[30,3,[\\\"addOptions\\\"]],[30,1,[\\\"multiRadioRows\\\",\\\"length\\\"]]],null],[[[1,\\\"        Rows:\\\\n        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,3,[\\\"addOptions\\\"]],[[[1,\\\"        \\\"],[11,0],[16,0,[29,[\\\"insert-bar clickable \\\",[52,[30,2],\\\"no-display\\\"]]]],[4,[38,20],[[30,0],\\\"insertMultiRadioRowAfter\\\",[30,1]],null],[12],[1,\\\"\\\\n          \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Insert row here\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[42,[28,[37,24],[[28,[37,24],[[30,1,[\\\"multiRadioRows\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[11,1],[16,0,[29,[\\\"clickable \\\",[52,[30,13,[\\\"deleted\\\"]],\\\"disabled-placeholder\\\"]]]],[4,[38,20],[[30,0],\\\"toggleExpand\\\",[30,13]],null],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-chevron-right \\\",[52,[30,13,[\\\"expand\\\"]],\\\"fa-rotate-90\\\"]]]],[12],[13],[1,\\\"\\\\n          \\\"],[8,[39,25],null,[[\\\"@model\\\",\\\"@titleFor\\\",\\\"@clientRecord\\\",\\\"@context\\\"],[[30,13],\\\"row\\\",[30,9],[30,10]]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,13,[\\\"expand\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[11,0],[24,0,\\\"edge\\\"],[4,[38,20],[[30,0],\\\"toggleExpand\\\",[30,13]],null],[12],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"content\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,27],null,[[\\\"@model\\\"],[[30,13]]],null],[1,\\\"\\\\n            \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,13,[\\\"title\\\"]],\\\"Row header text\\\"]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,2],[[28,[37,3],[[30,13,[\\\"created\\\"]]],null],[30,3,[\\\"editIDs\\\"]]],null],[[[1,\\\"              \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,13,[\\\"id\\\"]],\\\"Unique ID to refer to this option\\\"]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,7],[[30,3,[\\\"editIDs\\\"]],[30,13,[\\\"created\\\"]]],null],[[[1,\\\"                \\\"],[10,\\\"small\\\"],[12],[10,\\\"b\\\"],[14,0,\\\"negative\\\"],[12],[1,\\\"Warning:\\\"],[13],[1,\\\" Changing an id can break references (eg, displayIf logic or {parsed text})\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[41,[30,3,[\\\"editDisplayIf\\\"]],[[[1,\\\"              \\\"],[8,[39,12],null,[[\\\"@model\\\"],[[30,13,[\\\"displayIf\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[8,[39,34],null,[[\\\"@name\\\",\\\"@object\\\",\\\"@parentObject\\\",\\\"@parentKey\\\",\\\"@index\\\",\\\"@readOnly\\\",\\\"@iCan\\\"],[\\\"row\\\",[30,13],[30,1],\\\"multiRadioRows\\\",[30,14],[30,2],[30,3]]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"addOptions\\\"]],[[[1,\\\"          \\\"],[11,0],[16,0,[29,[\\\"insert-bar clickable \\\",[52,[30,2],\\\"no-display\\\"]]]],[4,[38,20],[[30,0],\\\"insertMultiRadioRowAfter\\\",[30,1],[30,13]],null],[12],[1,\\\"\\\\n            \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Insert row here\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[13,14]],null]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,11],[[30,0,[\\\"multipleOptionsTypes\\\"]],[30,1,[\\\"type\\\"]]],null],[[[41,[28,[37,2],[[30,3,[\\\"addOptions\\\"]],[30,1,[\\\"options\\\",\\\"length\\\"]]],null],[[[1,\\\"        \\\"],[1,[52,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"officeselect\\\"],null],\\\"Additional options\\\",\\\"Options\\\"]],[1,\\\":\\\\n        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,3,[\\\"addOptions\\\"]],[[[1,\\\"        \\\"],[11,0],[16,0,[29,[\\\"insert-bar clickable \\\",[52,[30,2],\\\"no-display\\\"]]]],[4,[38,20],[[30,0],\\\"insertOptionAfter\\\",[30,1]],null],[12],[1,\\\"\\\\n          \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Insert option here\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[42,[28,[37,24],[[28,[37,24],[[30,1,[\\\"options\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[11,1],[16,0,[29,[\\\"clickable \\\",[52,[30,15,[\\\"deleted\\\"]],\\\"disabled-placeholder\\\"]]]],[16,1,[28,[37,17],[[30,7,[\\\"id\\\"]],\\\".\\\",[30,8,[\\\"id\\\"]],\\\".\\\",[52,[30,17],[28,[37,17],[[30,17,[\\\"id\\\"]],\\\".\\\"],null]],[30,1,[\\\"id\\\"]],\\\".\\\",[30,15,[\\\"id\\\"]]],null]],[4,[38,20],[[30,0],\\\"toggleExpand\\\",[30,15]],null],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-chevron-right \\\",[52,[30,15,[\\\"expand\\\"]],\\\"fa-rotate-90\\\"]]]],[12],[13],[1,\\\"\\\\n          \\\"],[8,[39,25],null,[[\\\"@model\\\",\\\"@titleFor\\\",\\\"@clientRecord\\\",\\\"@context\\\"],[[30,15],\\\"option\\\",[30,9],[30,10]]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,15,[\\\"expand\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[11,0],[24,0,\\\"edge\\\"],[4,[38,20],[[30,0],\\\"toggleExpand\\\",[30,15]],null],[12],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"content\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,27],null,[[\\\"@model\\\"],[[30,15]]],null],[1,\\\"\\\\n            \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@maxlength\\\",\\\"@label\\\"],[[30,2],[30,15,[\\\"title\\\"]],4096,\\\"Option text\\\"]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"inputslider\\\"],null],[[[1,\\\"              \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,15,[\\\"icon\\\"]],\\\"Grain icon (path from /public)\\\"]],null],[1,\\\"\\\\n\\\"],[41,[30,15,[\\\"icon\\\"]],[[[1,\\\"                \\\"],[8,[39,35],null,[[\\\"@src\\\"],[[30,15,[\\\"icon\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[41,[28,[37,7],[[30,3,[\\\"editShortTitles\\\"]],[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"checkbox\\\"],null]],null],[[[1,\\\"              \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,2],[30,15,[\\\"shortTitle\\\"]],\\\"Text to use on the client brief\\\",[28,[37,17],[\\\"(Defaults to \\\",[52,[30,15,[\\\"title\\\"]],[28,[37,17],[\\\"\\\",\\\" o.title \\\",\\\"\\\"],null],\\\"the option text above\\\"],\\\")\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,2],[[28,[37,3],[[30,15,[\\\"created\\\"]]],null],[30,3,[\\\"editIDs\\\"]]],null],[[[1,\\\"              \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,15,[\\\"id\\\"]],\\\"Unique ID to refer to this option\\\"]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,7],[[30,3,[\\\"editIDs\\\"]],[30,15,[\\\"created\\\"]]],null],[[[1,\\\"                \\\"],[10,\\\"small\\\"],[12],[10,\\\"b\\\"],[14,0,\\\"negative\\\"],[12],[1,\\\"Warning:\\\"],[13],[1,\\\" Changing an id can break references (eg, displayIf logic or {parsed text})\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[41,[30,3,[\\\"editDisplayIf\\\"]],[[[1,\\\"              \\\"],[8,[39,12],null,[[\\\"@model\\\"],[[30,15,[\\\"displayIf\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,30],[[30,1,[\\\"type\\\"]],\\\"multiradio\\\"],null],[[[1,\\\"              \\\"],[8,[39,10],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@rows\\\"],[[30,2],[30,15,[\\\"helpText\\\"]],\\\"Helpful text if the client is not sure what this option means\\\",2]],null],[1,\\\"\\\\n              \\\"],[8,[39,10],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@rows\\\"],[[30,2],[30,15,[\\\"feedback\\\"]],\\\"Feedback to the client if they select this option\\\",2]],null],[1,\\\"\\\\n              \\\"],[8,[39,10],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@rows\\\"],[[30,2],[30,15,[\\\"feedbackToLawyer\\\"]],\\\"Information for the lawyer if the client selects this option\\\",2]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"checkbox\\\"],null],[[[1,\\\"                \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,15,[\\\"required\\\"]],\\\"This box must be checked in order to continue\\\"]],null],[1,\\\"\\\\n                \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,15,[\\\"hideIcon\\\"]],\\\"Don't show an icon in the brief if this option is ticked\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,3,[\\\"setOtherQuestions\\\"]],[[[1,\\\"                \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,15,[\\\"setAnotherQuestion\\\"]],\\\"Selecting this option should also set another question to a specific answer\\\"]],null],[1,\\\"\\\\n                \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,15,[\\\"setAnotherQuestion\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  \\\"],[8,[39,13],null,[[\\\"@assignUUIDS\\\",\\\"@label\\\",\\\"@model\\\",\\\"@itemName\\\"],[false,\\\"Value to set if this option is selected\\\",[30,15,[\\\"setValues\\\"]],\\\"value\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    \\\"],[8,[39,10],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,18,[\\\"variableToUpdate\\\"]],\\\"ID of variable to be updated if this option is selected\\\"]],null],[1,\\\"\\\\n                    \\\"],[8,[39,10],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,18,[\\\"valueToSet\\\"]],\\\"Value to set variable if this option is selected\\\"]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,2],[[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"checkbox\\\"],null],[28,[37,7],[[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"radio\\\"],null],[30,1,[\\\"unselectable\\\"]]],null]],null],[[[1,\\\"                      \\\"],[8,[39,10],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,18,[\\\"valueToUnset\\\"]],\\\"Value to set variable if this option is de-selected\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                    \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,18,[\\\"shouldOverrideValue\\\"]],\\\"Should this override any previous answers?\\\"]],null],[1,\\\"\\\\n                  \\\"]],[18]]]]],[1,\\\"\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[8,[39,13],null,[[\\\"@assignUUIDs\\\",\\\"@label\\\",\\\"@model\\\",\\\"@itemName\\\"],[false,\\\"Documents to ask for if this option is selected\\\",[30,15,[\\\"documentsRequired\\\"]],\\\"document\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,19,[\\\"title\\\"]],\\\"Document name (lower case, and don't include 'the' at the start)\\\"]],null],[1,\\\"\\\\n              \\\"]],[19]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[8,[39,34],null,[[\\\"@name\\\",\\\"@object\\\",\\\"@parentObject\\\",\\\"@parentKey\\\",\\\"@index\\\",\\\"@readOnly\\\",\\\"@iCan\\\"],[\\\"option\\\",[30,15],[30,1],\\\"options\\\",[30,16],[30,2],[30,3]]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"addOptions\\\"]],[[[1,\\\"          \\\"],[11,0],[16,0,[29,[\\\"insert-bar clickable \\\",[52,[30,2],\\\"no-display\\\"]]]],[4,[38,20],[[30,0],\\\"insertOptionAfter\\\",[30,1],[30,15]],null],[12],[1,\\\"\\\\n            \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Insert option here\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[15,16]],null]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,11],[[30,0,[\\\"allowFeedbackToLawyerTypes\\\"]],[30,1,[\\\"type\\\"]]],null],[[[1,\\\"      \\\"],[8,[39,10],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@rows\\\"],[[30,2],[30,1,[\\\"feedbackToLawyer\\\"]],\\\"Information for the lawyer if the client answers this question\\\",1]],null],[1,\\\"\\\\n      \\\"],[8,[39,10],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@rows\\\"],[[30,2],[30,1,[\\\"feedbackToLawyerIfNotProvided\\\"]],\\\"Information for the lawyer if the client does not answers this question\\\",1]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"yesno\\\"],null],[[[42,[28,[37,24],[[28,[37,24],[[30,0,[\\\"yesNoObjects\\\"]]],null]],null],null,[[[44,[[28,[37,37],[[30,1],[30,20,[\\\"key\\\"]]],null]],[[[1,\\\"          \\\"],[11,1],[24,0,\\\"clickable\\\"],[4,[38,20],[[30,0],\\\"toggleExpand\\\",[30,21]],null],[12],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-chevron-right \\\",[52,[30,21,[\\\"expand\\\"]],\\\"fa-rotate-90\\\"]]]],[12],[13],[1,\\\" \\\"],[1,[30,20,[\\\"title\\\"]]],[13],[1,\\\"\\\\n          \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,21,[\\\"expand\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[11,0],[24,0,\\\"edge\\\"],[4,[38,20],[[30,0],\\\"toggleExpand\\\",[30,21]],null],[12],[13],[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"content\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,21,[\\\"title\\\"]],\\\"Text to display on the client brief if this option is selected\\\"]],null],[1,\\\"\\\\n              \\\"],[10,\\\"small\\\"],[12],[1,\\\"Icon to display on the client brief if this option is selected\\\"],[13],[1,\\\"\\\\n              \\\"],[8,[39,38],null,[[\\\"@displayAll\\\",\\\"@question\\\",\\\"@key\\\",\\\"@selectIcon\\\"],[true,[30,21],[30,20,[\\\"key\\\"]],[28,[37,20],[[30,0],\\\"toggleIconType\\\"],null]]],null],[1,\\\"\\\\n              \\\"],[8,[39,10],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@rows\\\"],[[30,2],[30,21,[\\\"helpText\\\"]],\\\"Helpful text if the client is not sure what this option means\\\",2]],null],[1,\\\"\\\\n              \\\"],[8,[39,10],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@rows\\\"],[[30,2],[30,21,[\\\"feedback\\\"]],\\\"Feedback to the client if they select this option\\\",2]],null],[1,\\\"\\\\n              \\\"],[8,[39,10],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@rows\\\"],[[30,2],[30,21,[\\\"feedbackToLawyer\\\"]],\\\"Information for the lawyer if the client selects this option\\\",2]],null],[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"setOtherQuestions\\\"]],[[[1,\\\"                \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,21,[\\\"setAnotherQuestion\\\"]],\\\"Selecting this option should also set another question to a specific answer\\\"]],null],[1,\\\"\\\\n                \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,21,[\\\"setAnotherQuestion\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  \\\"],[8,[39,13],null,[[\\\"@assignUUIDS\\\",\\\"@label\\\",\\\"@model\\\",\\\"@itemName\\\"],[false,\\\"Value to set if this option is selected\\\",[30,21,[\\\"setValues\\\"]],\\\"value\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,22,[\\\"variableToUpdate\\\"]],\\\"ID of variable to be updated if this option is selected\\\"]],null],[1,\\\"\\\\n                    \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,22,[\\\"valueToSet\\\"]],\\\"Value to set variable if this option is selected\\\"]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,2],[[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"checkbox\\\"],null],[28,[37,7],[[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"radio\\\"],null],[30,1,[\\\"unselectable\\\"]]],null]],null],[[[1,\\\"                      \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,22,[\\\"valueToUnset\\\"]],\\\"Value to set variable if this option is de-selected\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                    \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,22,[\\\"shouldOverrideValue\\\"]],\\\"Should this override any previous answers?\\\"]],null],[1,\\\"\\\\n                  \\\"]],[22]]]]],[1,\\\"\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[8,[39,13],null,[[\\\"@assignUUIDs\\\",\\\"@label\\\",\\\"@model\\\",\\\"@itemName\\\"],[false,\\\"Documents to ask for if this option is selected\\\",[30,21,[\\\"documentsRequired\\\"]],\\\"document\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,23,[\\\"title\\\"]],\\\"Document name (lower case, and don't include 'the' at the start)\\\"]],null],[1,\\\"\\\\n              \\\"]],[23]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[21]]]],[20]],null]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"grid\\\"],null],[[[41,[28,[37,2],[[30,3,[\\\"editGridStructure\\\"]],[30,1,[\\\"columns\\\"]]],null],[[[1,\\\"        Columns:\\\\n        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,3,[\\\"editGridStructure\\\"]],[[[1,\\\"        \\\"],[11,0],[16,0,[29,[\\\"insert-bar clickable \\\",[52,[30,2],\\\"no-display\\\"]]]],[4,[38,20],[[30,0],\\\"insertAfter\\\",[30,1],\\\"columns\\\"],null],[12],[1,\\\"\\\\n          \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Insert column here\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[42,[28,[37,24],[[28,[37,24],[[30,1,[\\\"columns\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[11,1],[24,0,\\\"clickable\\\"],[4,[38,20],[[30,0],\\\"toggleExpand\\\",[30,24]],null],[12],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-chevron-right \\\",[52,[30,24,[\\\"expand\\\"]],\\\"fa-rotate-90\\\"]]]],[12],[13],[1,\\\"\\\\n          \\\"],[1,[28,[35,2],[[28,[37,39],[[30,24,[\\\"columnHeader\\\"]]],[[\\\"clientRecord\\\",\\\"context\\\",\\\"blueprintMode\\\"],[[30,9],[30,10],true]]],\\\"Unnamed column\\\"],null]],[13],[1,\\\"\\\\n        \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,24,[\\\"expand\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[11,0],[24,0,\\\"edge\\\"],[4,[38,20],[[30,0],\\\"toggleExpand\\\",[30,24]],null],[12],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"content\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,24,[\\\"columnHeader\\\"]],\\\"Column header\\\"]],null],[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"editGridStructure\\\"]],[[[1,\\\"              \\\"],[8,[39,1],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[[30,2],[30,24,[\\\"width\\\"]],\\\"Width\\\",\\\"column-width\\\",[30,0,[\\\"columnWidthTypes\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n              \\\"],[8,[39,28],null,[[\\\"@minimal\\\",\\\"@readOnly\\\",\\\"@induction\\\",\\\"@chapter\\\",\\\"@page\\\",\\\"@q\\\",\\\"@parentQuestion\\\",\\\"@client\\\",\\\"@editMode\\\",\\\"@questionIndex\\\",\\\"@questionCount\\\",\\\"@iCan\\\"],[true,[30,2],[30,11],[30,7],[30,8],[30,24],[30,1],[30,9],[30,12],[30,25],[30,1,[\\\"columns\\\",\\\"length\\\"]],[30,3]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,24,[\\\"autoTotal\\\"]],\\\"Automatically total this column\\\"]],null],[1,\\\"\\\\n              \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,24,[\\\"sourcedRowsReadOnly\\\"]],\\\"Sourced rows in this column are read only\\\"]],null],[1,\\\"\\\\n              \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,24,[\\\"sourcedRowsReadOnly\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[8,[39,10],null,[[\\\"@disabled\\\",\\\"@max\\\",\\\"@model\\\",\\\"@label\\\",\\\"@rows\\\"],[[30,2],1024,[30,24,[\\\"sourcedRowsContent\\\"]],\\\"Content to display for the sourced rows\\\",2]],null],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[8,[39,34],null,[[\\\"@name\\\",\\\"@object\\\",\\\"@parentObject\\\",\\\"@parentKey\\\",\\\"@index\\\",\\\"@readOnly\\\",\\\"@iCan\\\"],[\\\"column\\\",[30,24],[30,1],\\\"columns\\\",[30,25],[30,2],[30,3]]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"editGridStructure\\\"]],[[[1,\\\"          \\\"],[11,0],[16,0,[29,[\\\"insert-bar clickable \\\",[52,[30,2],\\\"no-display\\\"]]]],[4,[38,20],[[30,0],\\\"insertAfter\\\",[30,1],\\\"columns\\\",[30,25]],null],[12],[1,\\\"\\\\n            \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Insert column here\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[24,25]],null],[1,\\\"      \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"showColumnHeaders\\\"]],\\\"Show column headers\\\"]],null],[1,\\\"\\\\n      \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"hideAddRowButton\\\"]],\\\"Hide 'Add another row' button\\\"]],null],[1,\\\"\\\\n      \\\"],[8,[39,6],null,[[\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,1,[\\\"itemName\\\"]],\\\"What are we adding?\\\",\\\"Eg, person, property, car, etc.'\\\"]],null],[1,\\\"\\\\n      \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"includeStartingRows\\\"]],\\\"Add starting rows to the table\\\"]],null],[1,\\\"\\\\n      \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,1,[\\\"includeStartingRows\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,0],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,2],[[30,3,[\\\"editGridStructure\\\"]],[30,1,[\\\"startingRows\\\",\\\"length\\\"]]],null],[[[1,\\\"            Starting rows:\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,3,[\\\"editGridStructure\\\"]],[[[1,\\\"            \\\"],[11,0],[16,0,[29,[\\\"insert-bar clickable \\\",[52,[30,2],\\\"no-display\\\"]]]],[4,[38,20],[[30,0],\\\"insertAfter\\\",[30,1],\\\"startingRows\\\"],null],[12],[1,\\\"\\\\n              \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Insert starting row here\\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[42,[28,[37,24],[[28,[37,24],[[30,1,[\\\"startingRows\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[11,1],[24,0,\\\"clickable\\\"],[4,[38,20],[[30,0],\\\"toggleExpand\\\",[30,26]],null],[12],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-chevron-right \\\",[52,[30,26,[\\\"expand\\\"]],\\\"fa-rotate-90\\\"]]]],[12],[13],[1,\\\"\\\\n              \\\"],[1,[28,[35,2],[[30,26,[\\\"Name\\\"]],[30,26,[\\\"name\\\"]],[30,26,[\\\"Title\\\"]],\\\"Row\\\"],null]],[13],[1,\\\"\\\\n            \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,26,[\\\"expand\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[11,0],[24,0,\\\"edge\\\"],[4,[38,20],[[30,0],\\\"toggleExpand\\\",[30,26]],null],[12],[13],[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"content\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,24],[[28,[37,24],[[30,1,[\\\"columns\\\"]]],null]],null],null,[[[1,\\\"                  \\\"],[8,[39,40],null,[[\\\"@question\\\",\\\"@model\\\",\\\"@headerLabel\\\",\\\"@clientRecord\\\",\\\"@context\\\",\\\"@disabled\\\",\\\"@forceDisplay\\\",\\\"@displayOnly\\\",\\\"@editMode\\\"],[[30,28],[30,26],false,[30,9],[28,[37,41],null,[[\\\"induction\\\",\\\"chapter\\\",\\\"page\\\",\\\"repeat\\\"],[[30,11,[\\\"id\\\"]],[30,7,[\\\"id\\\"]],[30,8,[\\\"id\\\"]],[30,11,[\\\"repeatToken\\\"]]]]],[30,2],true,[28,[37,3],[[30,12]],null],[30,12]]],null],[1,\\\"\\\\n                  \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[28,[37,37],[[30,26],[28,[37,17],[[30,28,[\\\"id\\\"]],\\\"@readOnly\\\"],null]],null],[28,[37,17],[[30,28,[\\\"title\\\"]],\\\" is read only in this row\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[28]],null],[1,\\\"                \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,26,[\\\"noDelete\\\"]],\\\"Prevent this starting row from being deleted by clients\\\"]],null],[1,\\\"\\\\n                \\\"],[8,[39,34],null,[[\\\"@name\\\",\\\"@object\\\",\\\"@parentObject\\\",\\\"@parentKey\\\",\\\"@index\\\",\\\"@readOnly\\\",\\\"@iCan\\\"],[\\\"starting row\\\",[30,26],[30,1],\\\"startingRows\\\",[30,27],[30,2],[30,3]]],null],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"editGridStructure\\\"]],[[[1,\\\"              \\\"],[11,0],[16,0,[29,[\\\"insert-bar clickable \\\",[52,[30,2],\\\"no-display\\\"]]]],[4,[38,20],[[30,0],\\\"insertAfter\\\",[30,1],\\\"startingRows\\\",[30,27]],null],[12],[1,\\\"\\\\n                \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Insert starting row here\\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[26,27]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"summaryTable\\\"],null],[[[1,\\\"      \\\"],[10,\\\"h3\\\"],[12],[1,\\\"Table Content\\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"table\\\"],[14,0,\\\"w-100 table-fixed\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[15,\\\"colspan\\\",[30,1,[\\\"columns\\\",\\\"length\\\"]]],[12],[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"settify-tab summary-table-editor\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"b\\\"],[12],[1,\\\"Columns\\\"],[13],[1,\\\"\\\\n                \\\"],[10,0],[14,0,\\\"settify-tab-top\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,24],[[28,[37,24],[[30,1,[\\\"columns\\\"]]],null]],null],null,[[[1,\\\"                    \\\"],[11,\\\"button\\\"],[16,0,[29,[\\\"settify-tab-item \\\",[52,[28,[37,4],[[30,29],[30,0,[\\\"selectedColumn\\\"]]],null],\\\"settify-tab-selected\\\",\\\"\\\"]]]],[24,4,\\\"button\\\"],[4,[38,20],[[30,0],\\\"toggleColumn\\\",[30,29]],null],[12],[1,\\\"\\\\n                      \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"marginright-8 fal fa-chevron-right \\\",[52,[28,[37,4],[[30,29],[30,0,[\\\"selectedColumn\\\"]]],null],\\\"fa-rotate-90\\\"]]]],[12],[13],[1,\\\"\\\\n                      \\\"],[10,1],[15,0,[52,[30,29,[\\\"deleted\\\"]],\\\"disabled-placeholder\\\"]],[12],[1,[28,[35,2],[[30,29,[\\\"value\\\"]],\\\"Unnamed column\\\"],null]],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n\\\"]],[29]],null],[1,\\\"                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,0],[14,0,\\\"settify-tab-content\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,48],null,[[\\\"@value\\\",\\\"@class\\\"],[[30,0,[\\\"selectedColumn\\\"]],\\\"quickfade\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,24],[[28,[37,24],[[30,1,[\\\"columns\\\"]]],null]],null],null,[[[1,\\\"                      \\\"],[10,0],[15,0,[29,[\\\"tab-content-container \\\",[52,[28,[37,4],[[30,31],[30,30]],null],\\\"settify-tab-selected\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,4],[[30,31],[30,30]],null],[[[1,\\\"                          \\\"],[10,0],[14,0,\\\"tab-content-item\\\"],[12],[1,\\\"\\\\n                            \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,31,[\\\"value\\\"]],\\\"Column name\\\"]],null],[1,\\\"\\\\n                            \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,31,[\\\"id\\\"]],\\\"Column ID\\\"]],null],[1,\\\"\\\\n                            \\\"],[10,1],[14,0,\\\"settify-green\\\"],[12],[1,\\\"Width\\\"],[13],[1,\\\"\\\\n                            \\\"],[10,0],[14,0,\\\"flex-evenly\\\"],[12],[1,\\\"\\\\n                              \\\"],[8,[39,49],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\"],[\\\"Smaller\\\",[30,31,[\\\"width\\\"]],\\\"1\\\"]],null],[1,\\\"\\\\n                              \\\"],[8,[39,49],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\"],[\\\"Equal\\\",[30,31,[\\\"width\\\"]],\\\"2\\\"]],null],[1,\\\"\\\\n                              \\\"],[8,[39,49],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\"],[\\\"Larger\\\",[30,31,[\\\"width\\\"]],\\\"3\\\"]],null],[1,\\\"\\\\n                            \\\"],[13],[1,\\\"\\\\n                            \\\"],[10,1],[14,0,\\\"settify-green\\\"],[12],[1,\\\"Text align\\\"],[13],[1,\\\"\\\\n                            \\\"],[10,0],[14,0,\\\"flex-evenly\\\"],[12],[1,\\\"\\\\n                              \\\"],[8,[39,49],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\"],[\\\"Left\\\",[30,31,[\\\"textAlign\\\"]],\\\"left\\\"]],null],[1,\\\"\\\\n                              \\\"],[8,[39,49],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\"],[\\\"Center\\\",[30,31,[\\\"textAlign\\\"]],\\\"center\\\"]],null],[1,\\\"\\\\n                              \\\"],[8,[39,49],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\"],[\\\"Right\\\",[30,31,[\\\"textAlign\\\"]],\\\"right\\\"]],null],[1,\\\"\\\\n                            \\\"],[13],[1,\\\"\\\\n                            \\\"],[8,[39,15],null,[[\\\"@model\\\",\\\"@label\\\",\\\"@min\\\",\\\"@max\\\"],[[30,31,[\\\"spanWidth\\\"]],\\\"Cell span width\\\",0,[30,1,[\\\"columns\\\",\\\"length\\\"]]]],null],[1,\\\"\\\\n                            \\\"],[8,[39,12],null,[[\\\"@disabled\\\",\\\"@model\\\"],[[30,2],[30,31,[\\\"displayIf\\\"]]]],null],[1,\\\"\\\\n                            \\\"],[8,[39,34],null,[[\\\"@name\\\",\\\"@object\\\",\\\"@parentObject\\\",\\\"@parentKey\\\",\\\"@index\\\",\\\"@readOnly\\\",\\\"@iCan\\\",\\\"@isTable\\\",\\\"@insertElementLeft\\\",\\\"@insertElementRight\\\",\\\"@style\\\"],[\\\"column\\\",[30,31],[30,1],\\\"columns\\\",[30,32],[30,2],[30,3],\\\"column\\\",[28,[37,20],[[30,0],\\\"insertColumnAfter\\\",[30,1],\\\"columns\\\",[28,[37,17],[[30,32],-1],null]],null],[28,[37,20],[[30,0],\\\"insertColumnAfter\\\",[30,1],\\\"columns\\\",[30,32]],null],\\\"display: flex; flex-wrap: wrap;\\\"]],null],[1,\\\"\\\\n                          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                      \\\"],[13],[1,\\\"\\\\n\\\"]],[31,32]],null],[1,\\\"                  \\\"]],[30]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[15,\\\"colspan\\\",[30,1,[\\\"columns\\\",\\\"length\\\"]]],[12],[1,\\\"\\\\n              \\\"],[11,0],[16,0,[29,[\\\"insert-bar clickable \\\",[52,[30,0,[\\\"o\\\",\\\"deleted\\\"]],\\\"disabled-placeholder\\\"],\\\" \\\",[52,[30,2],\\\"no-display\\\"]]]],[4,[38,20],[[30,0],\\\"insertRowAfter\\\",[30,1],\\\"rows\\\",-1,[30,1,[\\\"columns\\\"]]],null],[12],[1,\\\"\\\\n                \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Insert row here\\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,24],[[28,[37,24],[[30,1,[\\\"rows\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[15,\\\"colspan\\\",[30,1,[\\\"columns\\\",\\\"length\\\"]]],[12],[1,\\\"\\\\n                \\\"],[11,1],[24,0,\\\"clickable\\\"],[4,[38,20],[[30,0],\\\"toggleExpand\\\",[30,33]],null],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-chevron-right \\\",[52,[30,33,[\\\"expand\\\"]],\\\"fa-rotate-90\\\"]]]],[12],[13],[1,\\\"\\\\n                  \\\"],[1,[28,[35,2],[[30,33,[\\\"id\\\"]],\\\"Unnamed row\\\"],null]],[1,\\\"\\\\n                  \\\"],[10,1],[14,0,\\\"greyed-out-text\\\"],[12],[1,\\\"\\\\n                    (\\\"],[42,[28,[37,24],[[28,[37,24],[[30,33,[\\\"columns\\\"]]],null]],null],null,[[[1,[28,[35,39],[[30,35,[\\\"value\\\"]]],[[\\\"clientRecord\\\",\\\"context\\\",\\\"blueprintMode\\\"],[[30,9],[30,10],true]]]],[41,[28,[37,30],[[30,36],[28,[37,17],[[30,33,[\\\"columns\\\",\\\"length\\\"]],-1],null]],null],[[[1,\\\", \\\"]],[]],null]],[35,36]],null],[1,\\\")\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,33,[\\\"expand\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  \\\"],[11,0],[24,0,\\\"edge\\\"],[4,[38,20],[[30,0],\\\"toggleExpand\\\",[30,33]],null],[12],[13],[1,\\\"\\\\n                  \\\"],[10,0],[14,0,\\\"content\\\"],[12],[1,\\\"\\\\n                    \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,33,[\\\"id\\\"]],\\\"rowID\\\"]],null],[1,\\\"\\\\n                    \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,33,[\\\"totalRow\\\"]],\\\"This row is a total row\\\"]],null],[1,\\\"\\\\n                    \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,33,[\\\"totalRow\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                      \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                        To calculate the\\\\n                        \\\"],[10,\\\"code\\\"],[12],[1,\\\"sum\\\"],[13],[1,\\\"\\\\n                        or\\\\n                        \\\"],[10,\\\"code\\\"],[12],[1,\\\"diff\\\"],[13],[1,\\\"\\\\n                        (i.e., difference), provide one or more rowIDs separated by a space, comma or semicolon. For example,\\\\n                        \\\"],[10,\\\"code\\\"],[12],[1,\\\"sum FirstID, SecondID\\\"],[13],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n                    \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[28,[37,3],[[30,33,[\\\"totalRow\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                      \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,33,[\\\"sourceData\\\"]],\\\"Source Data\\\"]],null],[1,\\\"\\\\n\\\"],[41,[30,33,[\\\"sourceData\\\"]],[[[1,\\\"                        \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,33,[\\\"firstColumnIsHeader\\\"]],\\\"Display the first column as a header\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                    \\\"]],[]]]]],[1,\\\"\\\\n                    \\\"],[10,0],[14,0,\\\"settify-tab summary-table-editor\\\"],[12],[1,\\\"\\\\n                      \\\"],[10,\\\"b\\\"],[12],[1,\\\"Cell values\\\"],[13],[1,\\\"\\\\n                      \\\"],[10,0],[14,0,\\\"settify-tab-top\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,24],[[28,[37,24],[[30,33,[\\\"columns\\\"]]],null]],null],null,[[[1,\\\"                          \\\"],[11,\\\"button\\\"],[16,0,[29,[\\\"settify-tab-item \\\",[52,[28,[37,4],[[30,37],[30,0,[\\\"selectedColumn\\\"]]],null],\\\"settify-tab-selected\\\",\\\"\\\"]]]],[24,4,\\\"button\\\"],[4,[38,20],[[30,0],\\\"toggleColumn\\\",[30,37]],null],[12],[1,\\\"\\\\n                            \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"marginright-8 fal fa-chevron-right \\\",[52,[28,[37,4],[[30,37],[30,0,[\\\"selectedColumn\\\"]]],null],\\\"fa-rotate-90\\\"],\\\" tight\\\"]]],[12],[13],[1,\\\"\\\\n                            \\\"],[10,1],[15,0,[52,[28,[37,37],[[28,[37,37],[[30,1,[\\\"columns\\\"]],[28,[37,51],[[30,38],\\\"\\\"],null]],null],\\\"deleted\\\"],null],\\\"disabled-placeholder\\\"]],[12],[1,[28,[35,2],[[28,[37,37],[[28,[37,37],[[30,1,[\\\"columns\\\"]],[28,[37,51],[[30,38],\\\"\\\"],null]],null],\\\"value\\\"],null],\\\"Unnamed column\\\"],null]],[13],[1,\\\"\\\\n                          \\\"],[13],[1,\\\"\\\\n\\\"]],[37,38]],null],[1,\\\"                      \\\"],[13],[1,\\\"\\\\n                      \\\"],[10,0],[14,0,\\\"settify-tab-content\\\"],[12],[1,\\\"\\\\n                        \\\"],[8,[39,48],null,[[\\\"@value\\\",\\\"@class\\\"],[[30,0,[\\\"selectedColumn\\\"]],\\\"quickfade\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,24],[[28,[37,24],[[30,33,[\\\"columns\\\"]]],null]],null],null,[[[1,\\\"                            \\\"],[10,0],[15,0,[29,[\\\"tab-content-container \\\",[52,[28,[37,4],[[30,40],[30,39]],null],\\\"settify-tab-selected\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,4],[[30,40],[30,39]],null],[[[1,\\\"                                \\\"],[10,0],[14,0,\\\"tab-content-item\\\"],[12],[1,\\\"\\\\n                                  \\\"],[8,[39,10],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@max\\\"],[[30,2],[30,40,[\\\"value\\\"]],\\\"Cell value\\\",4096]],null],[1,\\\"\\\\n                                  \\\"],[8,[39,15],null,[[\\\"@model\\\",\\\"@label\\\",\\\"@min\\\",\\\"@max\\\"],[[30,40,[\\\"spanWidth\\\"]],\\\"Cell span width\\\",0,[30,33,[\\\"column\\\",\\\"length\\\"]]]],null],[1,\\\"\\\\n                                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                            \\\"],[13],[1,\\\"\\\\n\\\"]],[40]],null],[1,\\\"                        \\\"]],[39]]]]],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[11,1],[24,0,\\\"clickable content\\\"],[4,[38,20],[[30,0],\\\"toggleExpand\\\",[30,33,[\\\"styles\\\"]]],null],[12],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-chevron-right \\\",[52,[30,33,[\\\"styles\\\",\\\"expand\\\"]],\\\"fa-rotate-90\\\"]]]],[12],[13],[1,\\\"Styles\\\"],[13],[1,\\\"\\\\n                  \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,33,[\\\"styles\\\",\\\"expand\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    \\\"],[10,\\\"table\\\"],[14,0,\\\"questionStylesTable\\\"],[12],[1,\\\"\\\\n                      \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n                        \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                          \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                            \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                              \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\"],[[30,2],[30,33,[\\\"styles\\\",\\\"bold\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                                \\\"],[10,1],[14,0,\\\"bold\\\"],[12],[1,\\\"Bold\\\"],[13],[1,\\\"\\\\n                              \\\"]],[]]]]],[1,\\\"\\\\n                            \\\"],[13],[1,\\\"\\\\n                          \\\"],[13],[1,\\\"\\\\n                          \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                            \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                              \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\"],[[30,2],[30,33,[\\\"styles\\\",\\\"filledBG\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                                \\\"],[10,1],[14,0,\\\"bold\\\"],[12],[1,\\\"Filled background\\\"],[13],[1,\\\"\\\\n                              \\\"]],[]]]]],[1,\\\"\\\\n                            \\\"],[13],[1,\\\"\\\\n                          \\\"],[13],[1,\\\"\\\\n                          \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                            \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                              \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\"],[[30,2],[30,33,[\\\"styles\\\",\\\"paddingBelow\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                                \\\"],[10,1],[14,0,\\\"bold\\\"],[12],[1,\\\"Padding below\\\"],[13],[1,\\\"\\\\n                              \\\"]],[]]]]],[1,\\\"\\\\n                            \\\"],[13],[1,\\\"\\\\n                          \\\"],[13],[1,\\\"\\\\n                          \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                            \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                              \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\"],[[30,2],[30,33,[\\\"styles\\\",\\\"noBorder\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                                \\\"],[10,1],[14,0,\\\"bold\\\"],[12],[1,\\\"No border\\\"],[13],[1,\\\"\\\\n                              \\\"]],[]]]]],[1,\\\"\\\\n                            \\\"],[13],[1,\\\"\\\\n                          \\\"],[13],[1,\\\"\\\\n                        \\\"],[13],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n\\\\n                  \\\"],[8,[39,12],null,[[\\\"@model\\\",\\\"@class\\\"],[[30,33,[\\\"displayIf\\\"]],\\\"content\\\"]],null],[1,\\\"\\\\n\\\\n                  \\\"],[8,[39,34],null,[[\\\"@name\\\",\\\"@object\\\",\\\"@parentObject\\\",\\\"@parentKey\\\",\\\"@index\\\",\\\"@readOnly\\\",\\\"@iCan\\\",\\\"@class\\\"],[\\\"row\\\",[30,33],[30,1],\\\"rows\\\",[30,34],[30,2],[30,3],\\\"content\\\"]],null],[1,\\\"\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[15,\\\"colspan\\\",[30,1,[\\\"columns\\\",\\\"length\\\"]]],[12],[1,\\\"\\\\n                \\\"],[11,0],[16,0,[29,[\\\"insert-bar clickable \\\",[52,[30,2],\\\"no-display\\\"]]]],[4,[38,20],[[30,0],\\\"insertRowAfter\\\",[30,1],\\\"rows\\\",[30,34],[30,1,[\\\"columns\\\"]]],null],[12],[1,\\\"\\\\n                  \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Insert row here\\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[33,34]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"address\\\"],null],[[[1,\\\"      \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[28,[37,37],[[30,1,[\\\"addressOptions\\\"]],\\\"customSuburbInput\\\"],null],\\\"Customise wording on the suburb input\\\"]],null],[1,\\\"\\\\n        \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[28,[37,37],[[30,1,[\\\"addressOptions\\\"]],\\\"customSuburbInput\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"marginleft-2\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[28,[37,37],[[30,1,[\\\"addressOptions\\\"]],\\\"suburbText\\\"],null],\\\"Alternate suburb wording\\\"]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[28,[37,37],[[30,1,[\\\"addressOptions\\\"]],\\\"customStateInput\\\"],null],\\\"Customise wording on the state input\\\"]],null],[1,\\\"\\\\n        \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[28,[37,37],[[30,1,[\\\"addressOptions\\\"]],\\\"customStateInput\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"marginleft-2\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[28,[37,37],[[30,1,[\\\"addressOptions\\\"]],\\\"stateText\\\"],null],\\\"Alternate state wording\\\"]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[28,[37,37],[[30,1,[\\\"addressOptions\\\"]],\\\"customPostcodeInput\\\"],null],\\\"Customise wording on the postcode input\\\"]],null],[1,\\\"\\\\n        \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[28,[37,37],[[30,1,[\\\"addressOptions\\\"]],\\\"customPostcodeInput\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"marginleft-2\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[28,[37,37],[[30,1,[\\\"addressOptions\\\"]],\\\"postcodeText\\\"],null],\\\"Alternate postcode wording\\\"]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[28,[37,37],[[30,1,[\\\"addressOptions\\\"]],\\\"includeLineThree\\\"],null],\\\"Ask for address line 3\\\"]],null],[1,\\\"\\\\n        \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"detailed\\\"]],\\\"Ask for the country\\\"]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,7],[[28,[37,11],[[30,0,[\\\"itemLabelTypes\\\"]],[30,1,[\\\"type\\\"]]],null],[30,3,[\\\"customiseItemLabelFormat\\\"]]],null],[[[1,\\\"      \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\",\\\"@helpText\\\"],[[30,2],[30,1,[\\\"itemLabelFormat\\\"]],\\\"Custom format for each checkbox\\\",\\\"Defaults to 'firstName surname name'\\\",\\\"If provided, this will pull out the relevant fields from each item, when creating the label in the list of options\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,11],[[30,0,[\\\"sourceListTypes\\\"]],[30,1,[\\\"type\\\"]]],null],[[[41,[30,3,[\\\"customiseSourceLists\\\"]],[[[1,\\\"        \\\"],[8,[39,10],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\",\\\"@helpText\\\"],[[30,2],[30,1,[\\\"sourceListIDs\\\"]],[28,[37,17],[\\\"What list(s) should be used to create \\\",[52,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"grid\\\"],null],\\\"rows\\\",\\\"the list\\\"]],null],[52,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"grid\\\"],null],\\\"\\\",\\\"Defaults to all 'knownEntities'\\\"],[28,[37,17],[\\\"If provided, this will pull out the relevant items from the list provided and \\\",[52,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"checkboxlist\\\"],null],\\\"show a checkbox for each\\\",\\\"show the content for each\\\"]],null]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"inputslider\\\"],null],[[[1,\\\"      \\\"],[8,[39,15],null,[[\\\"@model\\\",\\\"@min\\\",\\\"@max\\\",\\\"@label\\\"],[[30,1,[\\\"defaultIndex\\\"]],0,[28,[37,52],[[30,1,[\\\"options\\\",\\\"length\\\"]],1],null],\\\"Sliding scale default location (as option index)\\\"]],null],[1,\\\"\\\\n      \\\"],[10,\\\"small\\\"],[12],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"includeSlidingScaleText\\\"]],\\\"Add text to either side of the sliding scale\\\"]],null],[13],[1,\\\"\\\\n      \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,1,[\\\"includeSlidingScaleText\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"marginleft-2\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,1,[\\\"slidingScaleLeftText\\\"]],\\\"Text to use on the left side of the slider\\\"]],null],[1,\\\"\\\\n          \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,1,[\\\"slidingScaleRightText\\\"]],\\\"Text to use on the right side of the slider\\\"]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,2],[[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"selectorcreate\\\"],null],[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"selectorcreatesingle\\\"],null],[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"selectorcreatemulti\\\"],null]],null],[[[41,[30,3,[\\\"customiseSelectOrCreates\\\"]],[[[1,\\\"        \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,2],[30,1,[\\\"addNewText\\\"]],\\\"'Add new' text\\\",\\\"Defaults to 'Someone else'\\\"]],null],[1,\\\"\\\\n        \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,2],[30,1,[\\\"itemName\\\"]],\\\"What are we selecting or creating?\\\",\\\"Eg, child, shareholder, person, director, trustee, beneficiary, etc.'\\\"]],null],[1,\\\"\\\\n        \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,2],[30,1,[\\\"itemNamePluralNoun\\\"]],\\\"What is the plural noun of what we are listing?\\\",\\\"Eg, children, shareholders, people, director, trustee, beneficiary, etc.'\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,7],[[30,3,[\\\"customiseSelectOrCreate\\\"]],[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"selectorcreate\\\"],null]],null],[[[1,\\\"          \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"multipleSelections\\\"]],\\\"Allow multiple selections\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"allowPeople\\\"]],\\\"Allow people to be selected\\\"]],null],[1,\\\"\\\\n        \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"allowCorporations\\\"]],\\\"Allow corporations to be selected\\\"]],null],[1,\\\"\\\\n        \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"allowDeceased\\\"]],\\\"Allow the deceased to be selected\\\"]],null],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"        \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[28,[37,2],[[30,1,[\\\"allowPeople\\\"]],[30,1,[\\\"allowCorporations\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"disableDefaults\\\"]],\\\"Disable the default options\\\"]],null],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,53],null,[[\\\"@predicate\\\"],[[30,1,[\\\"disableDefaults\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,1,[\\\"allowPeople\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"askFor\\\",\\\"title\\\"]],\\\"Ask for title\\\"]],null],[1,\\\"\\\\n            \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,1,[\\\"askFor\\\",\\\"title\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"requiredFields\\\",\\\"title\\\"]],\\\"Require title\\\"]],null],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"askFor\\\",\\\"firstName\\\"]],\\\"Ask for first name\\\"]],null],[1,\\\"\\\\n            \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,1,[\\\"askFor\\\",\\\"firstName\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"requiredFields\\\",\\\"firstName\\\"]],\\\"Require first name\\\"]],null],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"askFor\\\",\\\"middleName\\\"]],\\\"Ask for middle name\\\"]],null],[1,\\\"\\\\n            \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,1,[\\\"askFor\\\",\\\"middleName\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"requiredFields\\\",\\\"middleName\\\"]],\\\"Require middle name\\\"]],null],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"askFor\\\",\\\"surname\\\"]],\\\"Ask for surname/last name\\\"]],null],[1,\\\"\\\\n            \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,1,[\\\"askFor\\\",\\\"surname\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"marginleft-2 align-items-center display-inline-flex\\\"],[12],[1,\\\"\\\\n                Label:\\\\n                \\\"],[8,[39,49],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\"],[\\\"Surname\\\",[30,1,[\\\"surnameOrLastNameLabel\\\"]],[27]]],null],[1,\\\"\\\\n                \\\"],[8,[39,49],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\"],[\\\"Last name\\\",[30,1,[\\\"surnameOrLastNameLabel\\\"]],\\\"lastName\\\"]],null],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"requiredFields\\\",\\\"surname\\\"]],\\\"Require surname/last name\\\"]],null],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"askFor\\\",\\\"age\\\"]],\\\"Ask for age\\\"]],null],[1,\\\"\\\\n            \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,1,[\\\"askFor\\\",\\\"age\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"requiredFields\\\",\\\"age\\\"]],\\\"Require age\\\"]],null],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"askFor\\\",\\\"dateOfBirth\\\"]],\\\"Ask for date of birth\\\"]],null],[1,\\\"\\\\n            \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,1,[\\\"askFor\\\",\\\"dateOfBirth\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"requiredFields\\\",\\\"dateOfBirth\\\"]],\\\"Require date of birth\\\"]],null],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"askFor\\\",\\\"placeOfBirth\\\"]],\\\"Ask for place of birth\\\"]],null],[1,\\\"\\\\n            \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,1,[\\\"askFor\\\",\\\"placeOfBirth\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"requiredFields\\\",\\\"placeOfBirth\\\"]],\\\"Require place of birth\\\"]],null],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"askFor\\\",\\\"occupation\\\"]],\\\"Ask for occupation\\\"]],null],[1,\\\"\\\\n            \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,1,[\\\"askFor\\\",\\\"occupation\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"requiredFields\\\",\\\"occupation\\\"]],\\\"Require occupation\\\"]],null],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"askFor\\\",\\\"language\\\"]],\\\"Ask for primary language spoken\\\"]],null],[1,\\\"\\\\n            \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,1,[\\\"askFor\\\",\\\"language\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"requiredFields\\\",\\\"language\\\"]],\\\"Require primary language spoken\\\"]],null],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,1,[\\\"allowCorporations\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"askFor\\\",\\\"chairman\\\"]],\\\"Ask for chairman\\\"]],null],[1,\\\"\\\\n            \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,1,[\\\"askFor\\\",\\\"chairman\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"requiredFields\\\",\\\"chairman\\\"]],\\\"Require chairman\\\"]],null],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"askFor\\\",\\\"authorisedRepresentative\\\"]],\\\"Ask for authorised representative\\\"]],null],[1,\\\"\\\\n            \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,1,[\\\"askFor\\\",\\\"authorisedRepresentative\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"requiredFields\\\",\\\"authorisedRepresentative\\\"]],\\\"Require authorised representative\\\"]],null],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"askFor\\\",\\\"email\\\"]],\\\"Ask for email address\\\"]],null],[1,\\\"\\\\n          \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,1,[\\\"askFor\\\",\\\"email\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"requiredFields\\\",\\\"email\\\"]],\\\"Require email address\\\"]],null],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"askFor\\\",\\\"phone\\\"]],\\\"Ask for phone number\\\"]],null],[1,\\\"\\\\n          \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,1,[\\\"askFor\\\",\\\"phone\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"requiredFields\\\",\\\"phone\\\"]],\\\"Require phone number\\\"]],null],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"askFor\\\",\\\"fax\\\"]],\\\"Ask for fax number\\\"]],null],[1,\\\"\\\\n          \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,1,[\\\"askFor\\\",\\\"fax\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"requiredFields\\\",\\\"fax\\\"]],\\\"Require fax number\\\"]],null],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"askFor\\\",\\\"mobile\\\"]],\\\"Ask for mobile number\\\"]],null],[1,\\\"\\\\n          \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,1,[\\\"askFor\\\",\\\"mobile\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"requiredFields\\\",\\\"mobile\\\"]],\\\"Require mobile number\\\"]],null],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"askFor\\\",\\\"address\\\"]],\\\"Ask for postal address\\\"]],null],[1,\\\"\\\\n          \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,1,[\\\"askFor\\\",\\\"address\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"requiredFields\\\",\\\"address\\\"]],\\\"Require postal address\\\"]],null],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[11,1],[24,0,\\\"clickable\\\"],[4,[38,20],[[30,0],\\\"copyToClipboard\\\",\\\"context.editingExistingItem\\\"],null],[12],[1,\\\"\\\\n          Copy the editingExistingItem context\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-copy clickable\\\"],[14,\\\"title\\\",\\\"Copy the editingExistingItem id, for use within the sub-questions\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,54],null,[[\\\"@helpText\\\",\\\"@minimal\\\"],[\\\"editingExistingItem will be truthy if the user is editing an existing item, or falsey if the user is creating a new item. This can be used to show or hide questions or text appropriately.\\\",true]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,11],[[30,0,[\\\"subContentTypes\\\"]],[30,1,[\\\"type\\\"]]],null],[[[41,[28,[37,2],[[30,3,[\\\"addOptions\\\"]],[30,1,[\\\"content\\\",\\\"length\\\"]]],null],[[[41,[28,[37,2],[[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"selectorcreate\\\"],null],[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"checkboxlist\\\"],null]],null],[[[1,\\\"          \\\"],[10,\\\"b\\\"],[12],[1,[52,[30,1,[\\\"disableDefaults\\\"]],\\\"Questions\\\",\\\"Additional questions\\\"]],[1,\\\" to ask of each selected item\\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[10,\\\"b\\\"],[12],[1,\\\"Questions to ask of each item\\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,3,[\\\"addOptions\\\"]],[[[1,\\\"        \\\"],[11,0],[16,0,[29,[\\\"insert-bar clickable \\\",[52,[30,2],\\\"no-display\\\"]]]],[4,[38,20],[[30,0],\\\"insertSubquestionAfter\\\",[30,1]],null],[12],[1,\\\"\\\\n          \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Insert content here\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[42,[28,[37,24],[[28,[37,24],[[30,1,[\\\"content\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[11,1],[16,0,[29,[\\\"clickable \\\",[52,[30,41,[\\\"deleted\\\"]],\\\"disabled-placeholder\\\"]]]],[4,[38,20],[[30,0],\\\"toggleExpand\\\",[30,41]],null],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-chevron-right \\\",[52,[30,41,[\\\"expand\\\"]],\\\"fa-rotate-90\\\"]]]],[12],[13],[1,\\\"\\\\n          \\\"],[8,[39,25],null,[[\\\"@model\\\",\\\"@titleFor\\\",\\\"@clientRecord\\\",\\\"@context\\\"],[[30,41],\\\"content\\\",[30,9],[30,10]]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[11,\\\"i\\\"],[24,0,\\\"fal fa-link clickable tight\\\"],[24,\\\"title\\\",\\\"Copy the full context ID of this question, for use elswhere in the form definition\\\"],[4,[38,20],[[30,0],\\\"copyToClipboard\\\",[28,[37,26],[[30,7],[30,8],[30,1],[30,41]],null]],null],[12],[13],[1,\\\"\\\\n        \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,41,[\\\"expand\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[11,0],[24,0,\\\"edge\\\"],[4,[38,20],[[30,0],\\\"toggleExpand\\\",[30,41]],null],[12],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"content\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,27],null,[[\\\"@model\\\"],[[30,41]]],null],[1,\\\"\\\\n            \\\"],[8,[39,28],null,[[\\\"@readOnly\\\",\\\"@induction\\\",\\\"@chapter\\\",\\\"@page\\\",\\\"@q\\\",\\\"@parentQuestion\\\",\\\"@client\\\",\\\"@editMode\\\",\\\"@questionIndex\\\",\\\"@questionCount\\\",\\\"@iCan\\\"],[[30,2],[30,11],[30,7],[30,8],[30,41],[30,1],[30,9],[30,12],[30,42],[30,1,[\\\"content\\\",\\\"length\\\"]],[30,3]]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"addOptions\\\"]],[[[1,\\\"          \\\"],[11,0],[16,0,[29,[\\\"insert-bar clickable \\\",[52,[30,2],\\\"no-display\\\"]]]],[4,[38,20],[[30,0],\\\"insertSubquestionAfter\\\",[30,1],[30,41]],null],[12],[1,\\\"\\\\n            \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Insert content here\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[41,42]],null],[41,[28,[37,7],[[28,[37,11],[[30,0,[\\\"subContentPositionChoiceTypes\\\"]],[30,1,[\\\"type\\\"]]],null],[28,[37,3],[[30,1,[\\\"disableDefaults\\\"]]],null]],null],[[[1,\\\"        \\\"],[10,\\\"small\\\"],[12],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"customContentFirst\\\"]],\\\"Ask these additional questions first, before the standard questions\\\"]],null],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"list\\\"],null],[[[41,[30,3,[\\\"customiseLists\\\"]],[[[1,\\\"        \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,2],[30,1,[\\\"itemName\\\"]],\\\"What are we listing?\\\",\\\"Eg, property, car, heirloom, etc.'\\\"]],null],[1,\\\"\\\\n        \\\"],[10,\\\"small\\\"],[12],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"tabbedList\\\"]],\\\"Use a tabbed list\\\"]],null],[13],[1,\\\"\\\\n        \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[28,[37,3],[[30,1,[\\\"tabbedList\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,\\\"small\\\"],[12],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"immutableList\\\"]],\\\"Do not allow items to be added or removed\\\"]],null],[13],[1,\\\"\\\\n          \\\"],[10,\\\"small\\\"],[12],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"noBorder\\\"]],\\\"Hide the border around each item\\\"]],null],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,1,[\\\"tabbedList\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\",\\\"@helpText\\\"],[[30,2],[30,1,[\\\"itemLabelFormat\\\"]],\\\"Custom format for each tabbed title\\\",\\\"Defaults to 'firstName surname'\\\",\\\"If provided, this will pull out the relevant fields from each tabbed title\\\"]],null],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"unitsPer\\\"],null],[[[1,\\\"      \\\"],[8,[39,1],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[[30,2],[30,1,[\\\"unitType\\\"]],\\\"What type of input?\\\",\\\"unit-type\\\",[30,0,[\\\"unitTypesToSelectFrom\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"display-flex margintop-15\\\"],[12],[1,\\\"\\\\n        Select time periods:\\\\n        \\\"],[10,\\\"small\\\"],[14,0,\\\"flex-evenly width-40\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,24],[[28,[37,24],[[30,0,[\\\"timePeriodOptions\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[8,[39,16],null,[[\\\"@text\\\",\\\"@model\\\"],[[30,43],[28,[37,37],[[30,1,[\\\"timePeriodOptions\\\"]],[30,43]],null]]],null],[1,\\\"\\\\n\\\"]],[43]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"familytreeselect\\\"],null],[[[1,\\\"      \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"enableDeceased\\\"]],\\\"Allow the deceased to be selected\\\"]],null],[1,\\\"\\\\n      \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"enableOrganisations\\\"]],\\\"Allow organisations within other beneficiaries to be selected\\\"]],null],[1,\\\"\\\\n      \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"disableDeceasedPeople\\\"]],\\\"Disable deceased family members from being selected\\\"]],null],[1,\\\"\\\\n      \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"disableEditing\\\"]],\\\"Just output the family tree (disable editing)\\\"]],null],[1,\\\"\\\\n      \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"askForMoreInfo\\\"]],\\\"Ask for more information\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,11],[[30,0,[\\\"placeholderTypes\\\"]],[30,1,[\\\"type\\\"]]],null],[[[1,\\\"      \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,2],[30,1,[\\\"placeholder\\\"]],\\\"Example answer, shown to the client\\\",\\\"(can be left blank)\\\"]],null],[1,\\\"\\\\n      \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[28,[37,7],[[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"money\\\"],null],[30,1,[\\\"placeholder\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,\\\"small\\\"],[12],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"preventFading\\\"]],\\\"I'm using this placeholder as question text (prevents placeholder from fading)\\\"]],null],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"hideItemsOnTheBrief\\\"]],[[[1,\\\"        \\\"],[10,\\\"small\\\"],[12],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"displayPlaceholderInSummary\\\"]],\\\"If this question is not answered, display the placeholder in the client brief\\\"]],null],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"number\\\"],null],[[[1,\\\"      \\\"],[10,\\\"small\\\"],[12],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"noCommas\\\"]],\\\"Do not separate numbers by commas when a value is input\\\"]],null],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"money\\\"],null],[[[1,\\\"      \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"showConfidenceSlider\\\"]],\\\"Display a confidence slider when a value is input\\\"]],null],[1,\\\"\\\\n        \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,1,[\\\"showConfidenceSlider\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,2],[30,1,[\\\"confidenceSliderMaxValue\\\"]],\\\"Wording for max confidence value\\\",\\\"Defaults to '100% certain'\\\"]],null],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,11],[[30,0,[\\\"defaultTypes\\\"]],[30,1,[\\\"type\\\"]]],null],[[[1,\\\"      \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,2],[30,1,[\\\"default\\\"]],\\\"The default answer to be set\\\",\\\"(can be left blank)\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n    \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,7],[[30,3,[\\\"editFilters\\\"]],[28,[37,11],[[30,0,[\\\"objectFilterTypes\\\"]],[30,1,[\\\"type\\\"]]],null]],null],[[[41,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"documentsRequiredList\\\"],null],[[[1,\\\"          Display documents from previous answers?\\\\n\\\"]],[]],[[[1,\\\"          Can users select from previous answers?\\\\n\\\"]],[]]],[41,[28,[37,30],[[30,1,[\\\"type\\\"]],\\\"documentsRequiredList\\\"],null],[[[1,\\\"          \\\"],[8,[39,49],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\"],[\\\"No, don't offer any previous answers\\\",[30,1,[\\\"filterType\\\"]],\\\"excludeall\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[8,[39,49],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\"],[\\\"Yes, offer all previous answers\\\",[30,1,[\\\"filterType\\\"]],[27]]],null],[1,\\\"\\\\n        \\\"],[8,[39,49],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\"],[\\\"Yes, but only offer answers from specific questions\\\",[30,1,[\\\"filterType\\\"]],\\\"whitelist\\\"]],null],[1,\\\"\\\\n        \\\"],[8,[39,49],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\"],[\\\"Yes, but don't offer answers from specific questions\\\",[30,1,[\\\"filterType\\\"]],\\\"blacklist\\\"]],null],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[28,[37,2],[[28,[37,4],[[30,1,[\\\"filterType\\\"]],\\\"whitelist\\\"],null],[28,[37,4],[[30,1,[\\\"filterType\\\"]],\\\"blacklist\\\"],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          Which questions? (List the IDs one per line)\\\\n          \\\"],[8,[39,10],null,[[\\\"@model\\\"],[[30,1,[\\\"filterList\\\"]]]],null],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"radio\\\"],null],[[[41,[30,3,[\\\"customiseRadioButtons\\\"]],[[[1,\\\"          \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"unselectable\\\"]],\\\"If an option is selected, hide the others to save space\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[41,[28,[37,7],[[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"selectorcreate\\\"],null],[28,[37,3],[[30,1,[\\\"multipleSelections\\\"]]],null]],null],[[[41,[30,3,[\\\"customiseSelectOrCreates\\\"]],[[[1,\\\"          \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"setAsPrimaryContact\\\"]],\\\"Store this answer as the primary contact\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[41,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"yesno\\\"],null],[[[1,\\\"        \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"excludeNotSure\\\"]],\\\"Remove the 'Not Sure' option from this question\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"date\\\"],null],[[[1,\\\"        \\\"],[8,[39,1],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[[30,2],[30,1,[\\\"dateLayout\\\"]],\\\"Date layout\\\",\\\"date-layout\\\",[30,0,[\\\"dateLayoutOptions\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n        \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"allowFuture\\\"]],\\\"Allow future dates to be entered\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,11],[[30,0,[\\\"requiredTypes\\\"]],[30,1,[\\\"type\\\"]]],null],[[[1,\\\"        \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"required\\\"]],\\\"This question must be answered\\\"]],null],[1,\\\"\\\\n        \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[28,[37,7],[[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"address\\\"],null],[30,1,[\\\"required\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"marginleft-2\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[28,[37,37],[[30,1,[\\\"addressOptions\\\"]],\\\"suburbInputNotRequired\\\"],null],\\\"The suburb input is not required\\\"]],null],[1,\\\"\\\\n            \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[28,[37,37],[[30,1,[\\\"addressOptions\\\"]],\\\"stateInputNotRequired\\\"],null],\\\"The state input is not required\\\"]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[28,[37,7],[[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"date\\\"],null],[30,1,[\\\"required\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"date-question marginleft-2\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,49],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\"],[\\\"Day, month and year are all required\\\",[30,1,[\\\"requiredSpecificity\\\"]],[27]]],null],[1,\\\"\\\\n            \\\"],[8,[39,49],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\"],[\\\"Only the month and year\\\",[30,1,[\\\"requiredSpecificity\\\"]],\\\"monthAndYear\\\"]],null],[1,\\\"\\\\n            \\\"],[8,[39,49],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\"],[\\\"Only the year\\\",[30,1,[\\\"requiredSpecificity\\\"]],\\\"year\\\"]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[28,[37,7],[[30,1,[\\\"required\\\"]],[30,3,[\\\"editDisplayIf\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"marginleft-2\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,12],null,[[\\\"@model\\\",\\\"@label\\\",\\\"@disabled\\\"],[[30,1,[\\\"requiredIfLogic\\\"]],\\\"Required if (in JSON format)\\\",[30,2]]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,11],[[30,0,[\\\"notSureTypes\\\"]],[30,1,[\\\"type\\\"]]],null],[[[1,\\\"        \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"notSureOption\\\"]],[28,[37,17],[\\\"Include a not sure checkbox for this question (model will be stored at \\\",[30,1,[\\\"id\\\"]],\\\"-\\\",[28,[37,2],[[30,1,[\\\"notSureOptionLocationSuffix\\\"]],\\\"notsure\\\"],null],\\\")\\\"],null]]],null],[1,\\\"\\\\n        \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,1,[\\\"notSureOption\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"marginleft-2\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"notSureOptionDoesNotHideComponent\\\"]],[28,[37,17],[\\\"The not sure checkbox should not hide the \\\",[30,1,[\\\"type\\\"]],\\\" component if checked\\\"],null]]],null],[1,\\\"\\\\n            \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,2],[30,1,[\\\"notSureOptionText\\\"]],\\\"Alternate wording for the option\\\",\\\"Defaults to 'I'm not sure'\\\"]],null],[1,\\\"\\\\n            \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,1,[\\\"notSureOptionLocationSuffix\\\"]],\\\"Alternate storage location suffix for the model\\\"]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,11],[[30,0,[\\\"breadcrumbTypes\\\"]],[30,1,[\\\"type\\\"]]],null],[[[41,[30,3,[\\\"editBreadcrumbs\\\"]],[[[1,\\\"          \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"useAnswerAsBreadcrumb\\\"]],\\\"Breadcrumb (use the answer to this question in the title of the @induction)\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[41,[28,[37,11],[[30,0,[\\\"conflictCheckTypes\\\"]],[30,1,[\\\"type\\\"]]],null],[[[1,\\\"        \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"includeInConflictCheck\\\"]],\\\"Conflict check information (provide this answer to the firm before a conflict check has been run)\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,3,[\\\"hideItemsOnTheBrief\\\"]],[[[1,\\\"        \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"hideInClientSummary\\\"]],\\\"Hide this question on the client-facing brief\\\"]],null],[1,\\\"\\\\n        \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"hideFromFirm\\\"]],\\\"Hide this question on the firm-facing brief\\\"]],null],[1,\\\"\\\\n        \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"hideFromFirmIfFalsey\\\"]],\\\"Hide this question on the firm facing brief if it hasn't been answered\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]],[1,\\\"\\\\n\\\"],[41,[28,[37,11],[[30,0,[\\\"defaultHiddenOnBriefTypes\\\"]],[30,1,[\\\"type\\\"]]],null],[[[41,[30,3,[\\\"hideItemsOnTheBrief\\\"]],[[[1,\\\"      \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"includeInSummary\\\"]],[28,[37,17],[\\\"Include this \\\",[30,1,[\\\"type\\\"]],\\\" in the client brief\\\"],null]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,2],[30,1,[\\\"includeInFirmSummary\\\"]],[28,[37,17],[\\\"Include this \\\",[30,1,[\\\"type\\\"]],\\\" in the firm-facing client brief\\\"],null]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,7],[[28,[37,11],[[30,0,[\\\"askForDocumentTypes\\\"]],[30,1,[\\\"type\\\"]]],null],[28,[37,3],[[30,44]],null]],null],[[[1,\\\"    \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[28,[37,2],[[28,[37,3],[[30,1,[\\\"documentsRequired\\\",\\\"length\\\"]]],null],[30,1,[\\\"showDocumentsRequired\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,\\\"small\\\"],[12],[8,[39,16],null,[[\\\"@model\\\",\\\"@text\\\"],[[30,1,[\\\"showDocumentsRequired\\\"]],\\\"Ask for documents whenever this question is displayed\\\"]],null],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,7],[[30,0,[\\\"supportedStyles\\\",\\\"length\\\"]],[28,[37,3],[[30,44]],null]],null],[[[1,\\\"    \\\"],[11,1],[24,0,\\\"clickable\\\"],[4,[38,20],[[30,0],\\\"toggleExpand\\\",[30,1,[\\\"styles\\\"]]],null],[12],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-chevron-right \\\",[52,[30,1,[\\\"styles\\\",\\\"expand\\\"]],\\\"fa-rotate-90\\\"]]]],[12],[13],[1,\\\"Styles\\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,1,[\\\"styles\\\",\\\"expand\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"question-styles-container\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"table\\\"],[14,0,\\\"questionStylesTable\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,24],[[28,[37,24],[[30,0,[\\\"genericStyles\\\"]]],null]],null],null,[[[41,[28,[37,11],[[30,0,[\\\"supportedStyles\\\"]],[30,45,[\\\"value\\\"]]],null],[[[1,\\\"                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                      \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\"],[[30,2],[28,[37,55],[[28,[37,37],[[30,1,[\\\"styles\\\"]],[30,45,[\\\"value\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                        \\\"],[10,1],[15,0,[30,45,[\\\"classForEditorDisplay\\\"]]],[12],[1,[30,45,[\\\"label\\\"]]],[13],[1,\\\"\\\\n                      \\\"]],[]]]]],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[45]],null],[41,[28,[37,11],[[30,0,[\\\"supportedStyles\\\"]],\\\"borderless\\\"],null],[[[1,\\\"                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                    \\\"],[8,[39,16],null,[[\\\"@disabled\\\",\\\"@model\\\"],[[30,2],[30,1,[\\\"styles\\\",\\\"borderless\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                      \\\"],[10,1],[12],[1,\\\"Remove Borders\\\"],[13],[1,\\\"\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,11],[[30,0,[\\\"supportedStyles\\\"]],\\\"indentation\\\"],null],[[[1,\\\"          \\\"],[8,[39,15],null,[[\\\"@model\\\",\\\"@min\\\",\\\"@max\\\",\\\"@label\\\"],[[30,1,[\\\"styles\\\",\\\"indentation\\\"]],0,4,\\\"How indentented should this question be?\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[28,[37,2],[[30,1,[\\\"showDocumentsRequired\\\"]],[30,1,[\\\"documentsRequired\\\",\\\"length\\\"]],[28,[37,4],[[30,1,[\\\"type\\\"]],\\\"docupload\\\"],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[39,13],null,[[\\\"@assignUUIDs\\\",\\\"@label\\\",\\\"@model\\\",\\\"@itemName\\\"],[false,\\\"Documents to request\\\",[30,1,[\\\"documentsRequired\\\"]],\\\"document\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[39,6],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,2],[30,46,[\\\"title\\\"]],\\\"Document name (lower case, and don't include 'the' at the start)\\\"]],null],[1,\\\"\\\\n    \\\"]],[46]]]]],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[51,[30,44]],[[[1,\\\"    \\\"],[8,[39,34],null,[[\\\"@name\\\",\\\"@object\\\",\\\"@parentObject\\\",\\\"@parentKey\\\",\\\"@index\\\",\\\"@readOnly\\\",\\\"@iCan\\\"],[\\\"question\\\",[30,1],[28,[37,2],[[30,17],[30,8]],null],[52,[30,17],\\\"content\\\",\\\"questions\\\"],[30,47],[30,2],[30,3]]],null],[1,\\\"\\\\n\\\"]],[]],null],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[51,[30,44]],[[[1,\\\"  \\\"],[10,\\\"b\\\"],[12],[1,\\\"Preview\\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,11],[[30,0,[\\\"canResetPreviewTypes\\\"]],[30,1,[\\\"type\\\"]]],null],[[[1,\\\"    \\\"],[10,\\\"small\\\"],[12],[11,3],[24,0,\\\"clickable\\\"],[4,[38,20],[[30,0],\\\"refreshPreview\\\"],null],[12],[1,\\\"(\\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-redo tight\\\"],[12],[13],[1,\\\" reset)\\\"],[13],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showPreview\\\"]],[[[1,\\\"    \\\"],[8,[39,40],null,[[\\\"@question\\\",\\\"@clientRecord\\\",\\\"@forceDisplay\\\",\\\"@displayOnly\\\",\\\"@editMode\\\",\\\"@model\\\",\\\"@context\\\"],[[30,1],[30,9],true,[28,[37,3],[[30,12]],null],[30,12],[28,[37,58],null,[[\\\"client\\\",\\\"induction\\\",\\\"chapter\\\",\\\"page\\\",\\\"answersLocation\\\",\\\"repeatToken\\\",\\\"create\\\"],[[30,9],[30,11,[\\\"id\\\"]],[30,7,[\\\"id\\\"]],[30,8,[\\\"id\\\"]],[30,8,[\\\"answersLocation\\\"]],[30,11,[\\\"repeatToken\\\"]],true]]],[28,[37,41],null,[[\\\"induction\\\",\\\"chapter\\\",\\\"page\\\",\\\"repeat\\\"],[[30,11,[\\\"id\\\"]],[30,7,[\\\"id\\\"]],[30,8,[\\\"id\\\"]],[30,11,[\\\"repeatToken\\\"]]]]]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]],null]],[\\\"@q\\\",\\\"@readOnly\\\",\\\"@iCan\\\",\\\"val\\\",\\\"c\\\",\\\"contentIndex\\\",\\\"@chapter\\\",\\\"@page\\\",\\\"@client\\\",\\\"@context\\\",\\\"@induction\\\",\\\"@editMode\\\",\\\"row\\\",\\\"rowIndex\\\",\\\"o\\\",\\\"optionIndex\\\",\\\"@parentQuestion\\\",\\\"val\\\",\\\"doc\\\",\\\"ynObject\\\",\\\"obj\\\",\\\"val\\\",\\\"doc\\\",\\\"c\\\",\\\"columnIndex\\\",\\\"row\\\",\\\"rowIndex\\\",\\\"column\\\",\\\"column\\\",\\\"boundSelectedColumn\\\",\\\"column\\\",\\\"columnIndex\\\",\\\"row\\\",\\\"rowIndex\\\",\\\"column\\\",\\\"idx\\\",\\\"column\\\",\\\"index\\\",\\\"boundSelectedColumn\\\",\\\"column\\\",\\\"c\\\",\\\"contentIndex\\\",\\\"timePeriod\\\",\\\"@minimal\\\",\\\"style\\\",\\\"doc\\\",\\\"@questionIndex\\\"],false,[\\\"div\\\",\\\"settify-select\\\",\\\"or\\\",\\\"not\\\",\\\"eq\\\",\\\"if\\\",\\\"settify-textline\\\",\\\"and\\\",\\\"small\\\",\\\"b\\\",\\\"settify-textarea\\\",\\\"includes\\\",\\\"edit-json\\\",\\\"free-list\\\",\\\"edit-icon-picker\\\",\\\"settify-number\\\",\\\"check-box\\\",\\\"sum\\\",\\\"liquid-if\\\",\\\"br\\\",\\\"action\\\",\\\"span\\\",\\\"i\\\",\\\"each\\\",\\\"-track-array\\\",\\\"title-printer\\\",\\\"question-context-string\\\",\\\"compare-form-changes\\\",\\\"edit-question\\\",\\\"edit-display-if\\\",\\\"not-eq\\\",\\\"p\\\",\\\"ul\\\",\\\"li\\\",\\\"edit-common-tasks\\\",\\\"line-icon\\\",\\\"let\\\",\\\"get\\\",\\\"yesnomaybe-icon\\\",\\\"parse-text\\\",\\\"settify-input-switcher\\\",\\\"hash\\\",\\\"h3\\\",\\\"table\\\",\\\"tbody\\\",\\\"tr\\\",\\\"td\\\",\\\"button\\\",\\\"liquid-bind\\\",\\\"radio-buttons\\\",\\\"code\\\",\\\"concat\\\",\\\"sub\\\",\\\"liquid-unless\\\",\\\"help-text-icon\\\",\\\"mut\\\",\\\"unless\\\",\\\"a\\\",\\\"get-answers-from\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/edit-question.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend(_editHelpers.default, _questionTypesMixin.default, {\n    tagName: \"\",\n    showPreview: true,\n    selectedColumn: null,\n    // we alias 'model' to 'induction', so that the 'edit-helpers' can access the right variables\n    model: (0, _computed.reads)(\"induction\"),\n    init() {\n      this._super();\n      this.send(\"checkTitleInputType\");\n      this.genericStyles = [{\n        label: \"Bold\",\n        value: \"bold\",\n        classForEditorDisplay: \"bold\"\n      }, {\n        label: \"• Bullet\",\n        value: \"bullet\"\n      }, {\n        label: \"Italics\",\n        value: \"italics\",\n        classForEditorDisplay: \"italics\"\n      }, {\n        label: \"No bottom margin\",\n        value: \"removeLinebreak\"\n      }];\n    },\n    questionTypesToSelectFrom: (0, _object.computed)(\"q.{created,type}\", \"questionGroups\", \"questionTypes\", function () {\n      const allTypes = this.questionTypes;\n      const currentType = this.get(\"q.type\");\n      if (!currentType || !this.get(\"q.created\")) {\n        // no type has been set yet, and/or form has not yet been saved\n        return allTypes;\n      }\n      const groups = this.questionGroups;\n      for (let i = 0; i < groups.length; i++) {\n        const g = groups[i];\n        if (g.includes(currentType)) {\n          return allTypes.filter(t => g.includes(t.value));\n        }\n      }\n\n      // if still here, then we're not allowed to change anything!\n      return allTypes.filter(t => t.value === currentType);\n    }),\n    supportedStyles: (0, _object.computed)(\"allowStylingTypes\", \"q.{styles,type}\", function () {\n      const style = this.allowStylingTypes.find(stylingType => stylingType.type === this.get(\"q.type\"));\n      if (!style) {\n        return [];\n      }\n\n      // Set question styles to empty object if not already defined\n      if (!this.q.styles) {\n        (0, _object.set)(this, \"q.styles\", {});\n      }\n      return style.supportedStyles;\n    }),\n    yesNoObjects: (0, _object.computed)(\"q\", \"q.excludeNotSure\", function () {\n      return this.getYesNoOptions(!this.get(\"q.excludeNotSure\"));\n    }),\n    createDefaultValue: (0, _object.observer)(\"q.type\", \"q.columns.length\", function () {\n      if (this.get(\"q.type\") === \"summaryTable\") {\n        if (this.get(\"q.columns.length\") === 0) {\n          this.send(\"insertColumnAfter\", this.q, \"columns\");\n        }\n      }\n      if (this.get(\"q.type\") === \"unitsPer\") {\n        this.set(\"q.timePeriodOptions\", {});\n      }\n      if (this.get(\"q.type\") === \"address\") {\n        this.set(\"q.addressOptions\", {});\n      }\n    }),\n    questionFullID: (0, _object.computed)(\"induction.id\", \"chapter.id\", \"page.id\", \"q.id\", function () {\n      const inductionID = this.get(\"induction.id\");\n      const chapterID = this.get(\"chapter.id\");\n      const pageID = this.get(\"page.id\");\n      const qID = this.get(\"q.id\");\n      return `${inductionID}.${chapterID}.${pageID}.${qID}`;\n    }),\n    actions: {\n      toggle(key) {\n        this.toggleProperty(key);\n      },\n      refreshPreview() {\n        this.set(\"showPreview\", false);\n        (0, _runloop.next)(() => {\n          // clear the model that was there\n          const answers = this.client.getAnswersFor(this.get(\"induction.id\"), this.get(\"chapter.id\"), this.get(\"page.id\"));\n          (0, _object.set)(answers, this.get(\"q.id\") || this.get(\"q.title\"), null);\n          (0, _runloop.next)(() => {\n            this.set(\"showPreview\", true);\n          });\n        });\n      },\n      copyToClipboard(text) {\n        navigator.clipboard.writeText(text);\n      },\n      checkTitleInputType() {\n        const length = this.get(\"q.title.length\");\n        if (length > 40) {\n          this.set(\"titleInputType\", \"textarea\");\n        } else {\n          this.set(\"titleInputType\", \"textline\");\n        }\n      },\n      toggleColumn(column) {\n        if (this.selectedColumn === column) {\n          this.set(\"selectedColumn\", null);\n        } else {\n          this.set(\"selectedColumn\", column);\n        }\n      }\n    }\n  }));\n});","define(\"settify-mvp/components/email-list\", [\"exports\", \"@ember/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    actions: {\n      addItem() {\n        if (this.model) {\n          this.model.pushObject({\n            email: \"\"\n          });\n        }\n      },\n      removeItem(o) {\n        if (this.model) {\n          this.model.removeObject(o);\n        }\n      }\n    }\n  });\n});","define(\"settify-mvp/components/environment-indicator\", [\"exports\", \"@ember/component\", \"@ember/service\", \"@glimmer/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@glimmer/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.dynamicConfig.localhost}}\n    {{#if this.useLegacyInterface}}\n      <span class=\"environment-indicator\">{{this.dynamicConfig.domain.region}} {{or this.dynamicConfig.firm \"unknown\"}}</span>\n    {{else}}\n      <span class=\"environment-indicator fixed bottom-0 right-0 text-xs rounded-lt-md bg-opacity-75 bg-settify-green p-1\">{{this.dynamicConfig.domain.region}} {{or this.dynamicConfig.firm \"unknown\"}}</span>\n    {{/if}}\n  {{/if}}\n  */\n  {\n    \"id\": \"KZop4AKa\",\n    \"block\": \"[[[41,[30,0,[\\\"dynamicConfig\\\",\\\"localhost\\\"]],[[[41,[30,0,[\\\"useLegacyInterface\\\"]],[[[1,\\\"    \\\"],[10,1],[14,0,\\\"environment-indicator\\\"],[12],[1,[30,0,[\\\"dynamicConfig\\\",\\\"domain\\\",\\\"region\\\"]]],[1,\\\" \\\"],[1,[28,[35,2],[[30,0,[\\\"dynamicConfig\\\",\\\"firm\\\"]],\\\"unknown\\\"],null]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[10,1],[14,0,\\\"environment-indicator fixed bottom-0 right-0 text-xs rounded-lt-md bg-opacity-75 bg-settify-green p-1\\\"],[12],[1,[30,0,[\\\"dynamicConfig\\\",\\\"domain\\\",\\\"region\\\"]]],[1,\\\" \\\"],[1,[28,[35,2],[[30,0,[\\\"dynamicConfig\\\",\\\"firm\\\"]],\\\"unknown\\\"],null]],[13],[1,\\\"\\\\n\\\"]],[]]]],[]],null]],[],false,[\\\"if\\\",\\\"span\\\",\\\"or\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/environment-indicator.hbs\",\n    \"isStrictMode\": false\n  });\n  let EnvironmentIndicator = _exports.default = (_class = class EnvironmentIndicator extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"dynamicConfig\", _descriptor, this);\n    }\n    get useLegacyInterface() {\n      return this.args.legacyUserInterface ?? true;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"dynamicConfig\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, EnvironmentIndicator);\n});","define(\"settify-mvp/components/family-tree-branch-probate\", [\"exports\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{!-- <ul class=\"tree\"> --}}\n  <div class=\"branch {{if @hideLines \"hide-lines\"}} \">\n    {{#each @model as |child|}}\n      {{!-- <li> --}}\n      <div class=\"{{if @hideLines \"\" \"fork\"}} {{if @forceVerticalLine \"fork-line\" \"\"}}\">\n        <FamilyTreeLeafProbate @model={{child}} @adminMode={{@adminMode}} @disableDeceasedPeople={{@disableDeceasedPeople}} @displayOnly={{@displayOnly}} @disableEditing={{@disableEditing}} @disableDeceased={{@disableDeceased}} @horizontalLine={{true}} @checkboxProperty={{@checkboxProperty}} @editingCount={{@editingCount}} @clientRecord={{@clientRecord}} @onChange={{@onChange}} @hideDetail={{@hideDetail}} @previousChildParent={{@previousChildParent}} @practiceAreaSettings={{@practiceAreaSettings}} as |item|>\n          {{yield item}}\n        </FamilyTreeLeafProbate>\n  \n        {{#each child.spouses as |spouse|}}\n          <FamilyTreeLeafProbate @class=\"spouse\" @adminMode={{@adminMode}} @disableDeceasedPeople={{@disableDeceasedPeople}} @spouseCount={{child.spouses.length}} @model={{spouse}} @displayOnly={{@displayOnly}} @disableEditing={{@disableEditing}} @checkboxProperty={{@checkboxProperty}} @editingCount={{@editingCount}} @clientRecord={{@clientRecord}} @hideDetail={{@hideDetail}} @practiceAreaSettings={{@practiceAreaSettings}} as |item|>\n            {{yield item}}\n          </FamilyTreeLeafProbate>\n  \n          <FamilyTreeBranchProbate @model={{spouse.children}} @disableDeceasedPeople={{@disableDeceasedPeople}} @adminMode={{@adminMode}} @displayOnly={{@displayOnly}} @disableEditing={{@disableEditing}} @checkboxProperty={{@checkboxProperty}} @editingCount={{@editingCount}} @clientRecord={{@clientRecord}} @onChange={{@onChange}} @hideDetail={{@hideDetail}} @practiceAreaSettings={{@practiceAreaSettings}} as |item|>\n            {{yield item}}\n          </FamilyTreeBranchProbate>\n  \n          <FamilyTreeBranchProbate @model={{spouse.previousChildren}} @disableDeceasedPeople={{@disableDeceasedPeople}} @adminMode={{@adminMode}} @previousChildParent={{spouse}} @displayOnly={{@displayOnly}} @disableEditing={{@disableEditing}} @checkboxProperty={{@checkboxProperty}} @editingCount={{@editingCount}} @clientRecord={{@clientRecord}} @onChange={{@onChange}} @hideDetail={{@hideDetail}} @practiceAreaSettings={{@practiceAreaSettings}} as |item|>\n            {{yield item}}\n          </FamilyTreeBranchProbate>\n        {{/each}}\n  \n        <FamilyTreeBranchProbate @model={{child.children}} @disableDeceasedPeople={{@disableDeceasedPeople}} @adminMode={{@adminMode}} @displayOnly={{@displayOnly}} @disableEditing={{@disableEditing}} @checkboxProperty={{@checkboxProperty}} @editingCount={{@editingCount}} @clientRecord={{@clientRecord}} @onChange={{@onChange}} @hideDetail={{@hideDetail}} @practiceAreaSettings={{@practiceAreaSettings}} as |item|>\n          {{yield item}}\n        </FamilyTreeBranchProbate>\n  \n        <FamilyTreeBranchProbate @model={{child.previousChildren}} @disableDeceasedPeople={{@disableDeceasedPeople}} @adminMode={{@adminMode}} @previousChildParent={{child}} @displayOnly={{@displayOnly}} @disableEditing={{@disableEditing}} @checkboxProperty={{@checkboxProperty}} @editingCount={{@editingCount}} @clientRecord={{@clientRecord}} @onChange={{@onChange}} @hideDetail={{@hideDetail}} @practiceAreaSettings={{@practiceAreaSettings}} as |item|>\n          {{yield item}}\n        </FamilyTreeBranchProbate>\n      </div>\n      {{!-- </li> --}}\n    {{/each}}\n  </div>\n  {{!-- </ul> --}}\n  \n  */\n  {\n    \"id\": \"2q6S8Umj\",\n    \"block\": \"[[[10,0],[15,0,[29,[\\\"branch \\\",[52,[30,1],\\\"hide-lines\\\"],\\\" \\\"]]],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,3],[[28,[37,3],[[30,2]],null]],null],null,[[[1,\\\"    \\\"],[10,0],[15,0,[29,[[52,[30,1],\\\"\\\",\\\"fork\\\"],\\\" \\\",[52,[30,4],\\\"fork-line\\\",\\\"\\\"]]]],[12],[1,\\\"\\\\n      \\\"],[8,[39,4],null,[[\\\"@model\\\",\\\"@adminMode\\\",\\\"@disableDeceasedPeople\\\",\\\"@displayOnly\\\",\\\"@disableEditing\\\",\\\"@disableDeceased\\\",\\\"@horizontalLine\\\",\\\"@checkboxProperty\\\",\\\"@editingCount\\\",\\\"@clientRecord\\\",\\\"@onChange\\\",\\\"@hideDetail\\\",\\\"@previousChildParent\\\",\\\"@practiceAreaSettings\\\"],[[30,3],[30,5],[30,6],[30,7],[30,8],[30,9],true,[30,10],[30,11],[30,12],[30,13],[30,14],[30,15],[30,16]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[18,24,[[30,17]]],[1,\\\"\\\\n      \\\"]],[17]]]]],[1,\\\"\\\\n\\\\n\\\"],[42,[28,[37,3],[[28,[37,3],[[30,3,[\\\"spouses\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[8,[39,4],null,[[\\\"@class\\\",\\\"@adminMode\\\",\\\"@disableDeceasedPeople\\\",\\\"@spouseCount\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@disableEditing\\\",\\\"@checkboxProperty\\\",\\\"@editingCount\\\",\\\"@clientRecord\\\",\\\"@hideDetail\\\",\\\"@practiceAreaSettings\\\"],[\\\"spouse\\\",[30,5],[30,6],[30,3,[\\\"spouses\\\",\\\"length\\\"]],[30,18],[30,7],[30,8],[30,10],[30,11],[30,12],[30,14],[30,16]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[18,24,[[30,19]]],[1,\\\"\\\\n        \\\"]],[19]]]]],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,6],null,[[\\\"@model\\\",\\\"@disableDeceasedPeople\\\",\\\"@adminMode\\\",\\\"@displayOnly\\\",\\\"@disableEditing\\\",\\\"@checkboxProperty\\\",\\\"@editingCount\\\",\\\"@clientRecord\\\",\\\"@onChange\\\",\\\"@hideDetail\\\",\\\"@practiceAreaSettings\\\"],[[30,18,[\\\"children\\\"]],[30,6],[30,5],[30,7],[30,8],[30,10],[30,11],[30,12],[30,13],[30,14],[30,16]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[18,24,[[30,20]]],[1,\\\"\\\\n        \\\"]],[20]]]]],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,6],null,[[\\\"@model\\\",\\\"@disableDeceasedPeople\\\",\\\"@adminMode\\\",\\\"@previousChildParent\\\",\\\"@displayOnly\\\",\\\"@disableEditing\\\",\\\"@checkboxProperty\\\",\\\"@editingCount\\\",\\\"@clientRecord\\\",\\\"@onChange\\\",\\\"@hideDetail\\\",\\\"@practiceAreaSettings\\\"],[[30,18,[\\\"previousChildren\\\"]],[30,6],[30,5],[30,18],[30,7],[30,8],[30,10],[30,11],[30,12],[30,13],[30,14],[30,16]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[18,24,[[30,21]]],[1,\\\"\\\\n        \\\"]],[21]]]]],[1,\\\"\\\\n\\\"]],[18]],null],[1,\\\"\\\\n      \\\"],[8,[39,6],null,[[\\\"@model\\\",\\\"@disableDeceasedPeople\\\",\\\"@adminMode\\\",\\\"@displayOnly\\\",\\\"@disableEditing\\\",\\\"@checkboxProperty\\\",\\\"@editingCount\\\",\\\"@clientRecord\\\",\\\"@onChange\\\",\\\"@hideDetail\\\",\\\"@practiceAreaSettings\\\"],[[30,3,[\\\"children\\\"]],[30,6],[30,5],[30,7],[30,8],[30,10],[30,11],[30,12],[30,13],[30,14],[30,16]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[18,24,[[30,22]]],[1,\\\"\\\\n      \\\"]],[22]]]]],[1,\\\"\\\\n\\\\n      \\\"],[8,[39,6],null,[[\\\"@model\\\",\\\"@disableDeceasedPeople\\\",\\\"@adminMode\\\",\\\"@previousChildParent\\\",\\\"@displayOnly\\\",\\\"@disableEditing\\\",\\\"@checkboxProperty\\\",\\\"@editingCount\\\",\\\"@clientRecord\\\",\\\"@onChange\\\",\\\"@hideDetail\\\",\\\"@practiceAreaSettings\\\"],[[30,3,[\\\"previousChildren\\\"]],[30,6],[30,5],[30,3],[30,7],[30,8],[30,10],[30,11],[30,12],[30,13],[30,14],[30,16]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[18,24,[[30,23]]],[1,\\\"\\\\n      \\\"]],[23]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[3]],null],[13],[1,\\\"\\\\n\\\"]],[\\\"@hideLines\\\",\\\"@model\\\",\\\"child\\\",\\\"@forceVerticalLine\\\",\\\"@adminMode\\\",\\\"@disableDeceasedPeople\\\",\\\"@displayOnly\\\",\\\"@disableEditing\\\",\\\"@disableDeceased\\\",\\\"@checkboxProperty\\\",\\\"@editingCount\\\",\\\"@clientRecord\\\",\\\"@onChange\\\",\\\"@hideDetail\\\",\\\"@previousChildParent\\\",\\\"@practiceAreaSettings\\\",\\\"item\\\",\\\"spouse\\\",\\\"item\\\",\\\"item\\\",\\\"item\\\",\\\"item\\\",\\\"item\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"each\\\",\\\"-track-array\\\",\\\"family-tree-leaf-probate\\\",\\\"yield\\\",\\\"family-tree-branch-probate\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/family-tree-branch-probate.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({\n    tagName: \"\"\n  }));\n});","define(\"settify-mvp/components/family-tree-branch\", [\"exports\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{!-- <ul class=\"tree\"> --}}\n  <div class=\"branch {{if @hideLines \"hide-lines\"}} \">\n    {{#each this.family as |child|}}\n      {{!-- <li> --}}\n      <div class=\"{{if @hideLines \"\" \"fork\"}} {{if @forceVerticalLine \"fork-line\" \"\"}}\">\n        <FamilyTreeLeaf @clientRecord={{@clientRecord}} @model={{child.id}} @adminMode={{@adminMode}} @disableDeceasedPeople={{@disableDeceasedPeople}} @displayOnly={{@displayOnly}} @disableEditing={{@disableEditing}} @disableDeceased={{@disableDeceased}} @horizontalLine={{true}} @checkboxProperty={{@checkboxProperty}} @editingCount={{@editingCount}} @onChange={{@onChange}} @hideDetail={{@hideDetail}} @previousChildParent={{@previousChildParent}} as |item|>\n          {{yield item}}\n        </FamilyTreeLeaf>\n        \n        <FamilyTreeBranch @clientRecord={{@clientRecord}} @model={{child.spouses}} @class=\"spouse\" @adminMode={{@adminMode}} @disableDeceasedPeople={{@disableDeceasedPeople}} @spouseCount={{child.spouses.length}} @displayOnly={{@displayOnly}} @disableEditing={{@disableEditing}} @checkboxProperty={{@checkboxProperty}} @editingCount={{@editingCount}} @hideDetail={{@hideDetail}} as |item|>\n          {{yield item}}\n        </FamilyTreeBranch>\n  \n        <FamilyTreeBranch @clientRecord={{@clientRecord}} @model={{child.children}} @disableDeceasedPeople={{@disableDeceasedPeople}} @adminMode={{@adminMode}} @displayOnly={{@displayOnly}} @disableEditing={{@disableEditing}} @checkboxProperty={{@checkboxProperty}} @editingCount={{@editingCount}} @onChange={{@onChange}} @hideDetail={{@hideDetail}} as |item|>\n          {{yield item}}\n        </FamilyTreeBranch>\n  \n        <FamilyTreeBranch @clientRecord={{@clientRecord}} @model={{child.previousChildren}} @disableDeceasedPeople={{@disableDeceasedPeople}} @adminMode={{@adminMode}} @previousChildParent={{child}} @displayOnly={{@displayOnly}} @disableEditing={{@disableEditing}} @checkboxProperty={{@checkboxProperty}} @editingCount={{@editingCount}} @onChange={{@onChange}} @hideDetail={{@hideDetail}} as |item|>\n          {{yield item}}\n        </FamilyTreeBranch>\n      </div>\n      {{!-- </li> --}}\n    {{/each}}\n  </div>\n  {{!-- </ul> --}}\n  \n  */\n  {\n    \"id\": \"f2pNDgN2\",\n    \"block\": \"[[[10,0],[15,0,[29,[\\\"branch \\\",[52,[30,1],\\\"hide-lines\\\"],\\\" \\\"]]],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,3],[[28,[37,3],[[30,0,[\\\"family\\\"]]],null]],null],null,[[[1,\\\"    \\\"],[10,0],[15,0,[29,[[52,[30,1],\\\"\\\",\\\"fork\\\"],\\\" \\\",[52,[30,3],\\\"fork-line\\\",\\\"\\\"]]]],[12],[1,\\\"\\\\n      \\\"],[8,[39,4],null,[[\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\",\\\"@disableDeceasedPeople\\\",\\\"@displayOnly\\\",\\\"@disableEditing\\\",\\\"@disableDeceased\\\",\\\"@horizontalLine\\\",\\\"@checkboxProperty\\\",\\\"@editingCount\\\",\\\"@onChange\\\",\\\"@hideDetail\\\",\\\"@previousChildParent\\\"],[[30,4],[30,2,[\\\"id\\\"]],[30,5],[30,6],[30,7],[30,8],[30,9],true,[30,10],[30,11],[30,12],[30,13],[30,14]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[18,19,[[30,15]]],[1,\\\"\\\\n      \\\"]],[15]]]]],[1,\\\"\\\\n      \\\\n      \\\"],[8,[39,6],null,[[\\\"@clientRecord\\\",\\\"@model\\\",\\\"@class\\\",\\\"@adminMode\\\",\\\"@disableDeceasedPeople\\\",\\\"@spouseCount\\\",\\\"@displayOnly\\\",\\\"@disableEditing\\\",\\\"@checkboxProperty\\\",\\\"@editingCount\\\",\\\"@hideDetail\\\"],[[30,4],[30,2,[\\\"spouses\\\"]],\\\"spouse\\\",[30,5],[30,6],[30,2,[\\\"spouses\\\",\\\"length\\\"]],[30,7],[30,8],[30,10],[30,11],[30,13]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[18,19,[[30,16]]],[1,\\\"\\\\n      \\\"]],[16]]]]],[1,\\\"\\\\n\\\\n      \\\"],[8,[39,6],null,[[\\\"@clientRecord\\\",\\\"@model\\\",\\\"@disableDeceasedPeople\\\",\\\"@adminMode\\\",\\\"@displayOnly\\\",\\\"@disableEditing\\\",\\\"@checkboxProperty\\\",\\\"@editingCount\\\",\\\"@onChange\\\",\\\"@hideDetail\\\"],[[30,4],[30,2,[\\\"children\\\"]],[30,6],[30,5],[30,7],[30,8],[30,10],[30,11],[30,12],[30,13]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[18,19,[[30,17]]],[1,\\\"\\\\n      \\\"]],[17]]]]],[1,\\\"\\\\n\\\\n      \\\"],[8,[39,6],null,[[\\\"@clientRecord\\\",\\\"@model\\\",\\\"@disableDeceasedPeople\\\",\\\"@adminMode\\\",\\\"@previousChildParent\\\",\\\"@displayOnly\\\",\\\"@disableEditing\\\",\\\"@checkboxProperty\\\",\\\"@editingCount\\\",\\\"@onChange\\\",\\\"@hideDetail\\\"],[[30,4],[30,2,[\\\"previousChildren\\\"]],[30,6],[30,5],[30,2],[30,7],[30,8],[30,10],[30,11],[30,12],[30,13]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[18,19,[[30,18]]],[1,\\\"\\\\n      \\\"]],[18]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],null],[13],[1,\\\"\\\\n\\\"]],[\\\"@hideLines\\\",\\\"child\\\",\\\"@forceVerticalLine\\\",\\\"@clientRecord\\\",\\\"@adminMode\\\",\\\"@disableDeceasedPeople\\\",\\\"@displayOnly\\\",\\\"@disableEditing\\\",\\\"@disableDeceased\\\",\\\"@checkboxProperty\\\",\\\"@editingCount\\\",\\\"@onChange\\\",\\\"@hideDetail\\\",\\\"@previousChildParent\\\",\\\"item\\\",\\\"item\\\",\\\"item\\\",\\\"item\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"each\\\",\\\"-track-array\\\",\\\"family-tree-leaf\\\",\\\"yield\\\",\\\"family-tree-branch\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/family-tree-branch.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({\n    tagName: \"\",\n    init() {\n      this._super(...arguments);\n      const ids = this.model;\n      if (ids && ids.length) {\n        const objects = ids.map(id => typeof id === \"string\" ? this.clientRecord.getKnownEntity(id) : id);\n        this.set(\"family\", objects);\n      }\n    }\n  }));\n});","define(\"settify-mvp/components/family-tree-leaf-probate\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"leaf {{if @hideDetail 'hide-detail' ''}}\">\n    {{#unless @root}}\n      <div class=\"horizontal-line {{if @horizontalLine '' 'noborder'}}\"> {{#if @horizontalLine}}&mdash;{{/if}}</div>\n    {{/unless}}\n    <div class=\"cell left\">\n      <div>\n        <span\n          class=\"{{if (and @checkboxProperty (not this.disableCheckboxes) (not @displayOnly)) 'clickable' ''}}\n            {{if this.disableCheckboxes '' (if (and @displayOnly (get @model @checkboxProperty)) 'highlight-leaf' 'fade-leaf')}}\n            {{if (and @displayOnly (eq @model.id @clientRecord.deceased.id) (not @adminMode)) 'fade-leaf' ''}}\"\n          {{action (if (and @checkboxProperty (not this.disableCheckboxes) (not @displayOnly)) \"toggleCheckbox\" \"nullAction\")}}\n        >\n          {{#if (and @checkboxProperty (or @displayOnly (not this.disableCheckboxes)))}}\n            <CheckBox @model={{get @model @checkboxProperty}} @disabled={{@displayOnly}} @onChange={{@onChange}} @displayOnly={{@displayOnly}} />\n          {{/if}}\n          {{#if @model.deceased}}\n            <i class=\"fal fa-cross\"></i>\n          {{/if}}\n          {{#if @model.disabled}}\n            <i class=\"fal fa-wheelchair\"></i>\n          {{/if}}\n          {{#if @model.overseas}}\n            <i class=\"fal fa-globe\"></i>\n          {{/if}}\n          <GenderIcon\n            @gender={{get @model \"firstName-gender\"}}\n            @pronouns={{get @model \"firstName-pronouns\"}}\n            @showNonSpecified={{true}}\n            @practiceAreaSettings={{@practiceAreaSettings}}\n          />\n          <span\n            class=\"{{if @model.bloodRelative 'blood-relative' ''}} settify-sensitive\"\n            style={{if (and (eq @model.id @clientRecord.deceased.id) @adminMode) \"font-weight: bold\" \"\"}}\n          >\n            {{#if (or @model.firstName @model.surname)}}\n              <span class=\"settify-sensitive\">{{@model.title}} {{@model.firstName}} {{@model.middleName}} {{@model.surname}}</span>\n            {{else if @model.name}}\n              {{@model.name}}\n            {{else}}\n              No name provided\n            {{/if}}\n          </span>\n  \n          {{#if (and (eq @model.id @clientRecord.deceased.id) @adminMode)}}\n            (the deceased)\n          {{/if}}\n  \n          {{#if (not (or (not @adminMode) @hideDetail (eq @model.id @clientRecord.deceased.id)))}}\n            <span class=\"settify-sensitive\">\n              {{family-tree-relationship\n                this.relationshipToDeceased\n                @model.whatHappened\n                relationshipStarted=this.relationshipStarted\n                relationshipEnded=this.relationshipEnded\n                clientRecord=@clientRecord\n                previousChildParent=@previousChildParent\n                hideStepChild=true\n              }}\n            </span>\n            {{#if (and @adminMode (eq @model.id @clientRecord.primaryContactPersonID))}}\n              (Settify Instructor)\n            {{/if}}\n  \n            {{#if @model.age}}\n              <span class=\"settify-sensitive\">({{age-from-object @model}})</span>\n            {{/if}}\n  \n            {{#if (or (eq @model.relationship \"stepChild\") (eq @model.relationship \"stepSon\") (eq @model.relationship \"stepDaughter\"))}}\n              <span class=\"settify-sensitive\"><small class=\"unseen-changes-bubble\">step-child</small></span>\n            {{/if}}\n          {{/if}}\n        </span>\n      </div>\n    </div>\n    {{#unless @hideDetail}}\n      <div class=\"cell right\">\n        <div class=\"settify-sensitive\">\n          {{#if (eq @model.hasOtherNames \"yes\")}}\n            (aka\n            <span class=\"settify-sensitive\">{{@model.givennames}}, {{@model.surnames}}</span>)\n          {{/if}}\n          <span class=\"settify-sensitive\">{{pretty-date @model.dobday @model.dobmonth @model.dobyear}}</span>\n        </div>\n      </div>\n    {{/unless}}\n  </div>\n  <LiquidIf @predicate={{and @checkboxProperty (get @model @checkboxProperty) (not @disableDeceased)}}>\n    <div class=\"editing-person\">\n      {{yield @model}}\n    </div>\n  </LiquidIf>\n  */\n  {\n    \"id\": \"CajX7vk4\",\n    \"block\": \"[[[10,0],[15,0,[29,[\\\"leaf \\\",[52,[30,1],\\\"hide-detail\\\",\\\"\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[51,[30,2]],[[[1,\\\"    \\\"],[10,0],[15,0,[29,[\\\"horizontal-line \\\",[52,[30,3],\\\"\\\",\\\"noborder\\\"]]]],[12],[1,\\\" \\\"],[41,[30,3],[[[1,\\\"—\\\"]],[]],null],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[10,0],[14,0,\\\"cell left\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[12],[1,\\\"\\\\n      \\\"],[11,1],[16,0,[29,[[52,[28,[37,4],[[30,4],[28,[37,5],[[30,0,[\\\"disableCheckboxes\\\"]]],null],[28,[37,5],[[30,5]],null]],null],\\\"clickable\\\",\\\"\\\"],\\\"\\\\n          \\\",[52,[30,0,[\\\"disableCheckboxes\\\"]],\\\"\\\",[52,[28,[37,4],[[30,5],[28,[37,6],[[30,6],[30,4]],null]],null],\\\"highlight-leaf\\\",\\\"fade-leaf\\\"]],\\\"\\\\n          \\\",[52,[28,[37,4],[[30,5],[28,[37,7],[[30,6,[\\\"id\\\"]],[30,7,[\\\"deceased\\\",\\\"id\\\"]]],null],[28,[37,5],[[30,8]],null]],null],\\\"fade-leaf\\\",\\\"\\\"]]]],[4,[38,8],[[30,0],[52,[28,[37,4],[[30,4],[28,[37,5],[[30,0,[\\\"disableCheckboxes\\\"]]],null],[28,[37,5],[[30,5]],null]],null],\\\"toggleCheckbox\\\",\\\"nullAction\\\"]],null],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,4],[[30,4],[28,[37,9],[[30,5],[28,[37,5],[[30,0,[\\\"disableCheckboxes\\\"]]],null]],null]],null],[[[1,\\\"          \\\"],[8,[39,10],null,[[\\\"@model\\\",\\\"@disabled\\\",\\\"@onChange\\\",\\\"@displayOnly\\\"],[[28,[37,6],[[30,6],[30,4]],null],[30,5],[30,9],[30,5]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,6,[\\\"deceased\\\"]],[[[1,\\\"          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-cross\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,6,[\\\"disabled\\\"]],[[[1,\\\"          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-wheelchair\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,6,[\\\"overseas\\\"]],[[[1,\\\"          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-globe\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[8,[39,12],null,[[\\\"@gender\\\",\\\"@pronouns\\\",\\\"@showNonSpecified\\\",\\\"@practiceAreaSettings\\\"],[[28,[37,6],[[30,6],\\\"firstName-gender\\\"],null],[28,[37,6],[[30,6],\\\"firstName-pronouns\\\"],null],true,[30,10]]],null],[1,\\\"\\\\n        \\\"],[10,1],[15,0,[29,[[52,[30,6,[\\\"bloodRelative\\\"]],\\\"blood-relative\\\",\\\"\\\"],\\\" settify-sensitive\\\"]]],[15,5,[52,[28,[37,4],[[28,[37,7],[[30,6,[\\\"id\\\"]],[30,7,[\\\"deceased\\\",\\\"id\\\"]]],null],[30,8]],null],\\\"font-weight: bold\\\",\\\"\\\"]],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,9],[[30,6,[\\\"firstName\\\"]],[30,6,[\\\"surname\\\"]]],null],[[[1,\\\"            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,6,[\\\"title\\\"]]],[1,\\\" \\\"],[1,[30,6,[\\\"firstName\\\"]]],[1,\\\" \\\"],[1,[30,6,[\\\"middleName\\\"]]],[1,\\\" \\\"],[1,[30,6,[\\\"surname\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,6,[\\\"name\\\"]],[[[1,\\\"            \\\"],[1,[30,6,[\\\"name\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"            No name provided\\\\n          \\\"]],[]]]],[]]],[1,\\\"        \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,4],[[28,[37,7],[[30,6,[\\\"id\\\"]],[30,7,[\\\"deceased\\\",\\\"id\\\"]]],null],[30,8]],null],[[[1,\\\"          (the deceased)\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[28,[37,9],[[28,[37,5],[[30,8]],null],[30,1],[28,[37,7],[[30,6,[\\\"id\\\"]],[30,7,[\\\"deceased\\\",\\\"id\\\"]]],null]],null]],null],[[[1,\\\"          \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[28,[35,13],[[30,0,[\\\"relationshipToDeceased\\\"]],[30,6,[\\\"whatHappened\\\"]]],[[\\\"relationshipStarted\\\",\\\"relationshipEnded\\\",\\\"clientRecord\\\",\\\"previousChildParent\\\",\\\"hideStepChild\\\"],[[30,0,[\\\"relationshipStarted\\\"]],[30,0,[\\\"relationshipEnded\\\"]],[30,7],[30,11],true]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,4],[[30,8],[28,[37,7],[[30,6,[\\\"id\\\"]],[30,7,[\\\"primaryContactPersonID\\\"]]],null]],null],[[[1,\\\"            (Settify Instructor)\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,6,[\\\"age\\\"]],[[[1,\\\"            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,\\\"(\\\"],[1,[28,[35,14],[[30,6]],null]],[1,\\\")\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,9],[[28,[37,7],[[30,6,[\\\"relationship\\\"]],\\\"stepChild\\\"],null],[28,[37,7],[[30,6,[\\\"relationship\\\"]],\\\"stepSon\\\"],null],[28,[37,7],[[30,6,[\\\"relationship\\\"]],\\\"stepDaughter\\\"],null]],null],[[[1,\\\"            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[10,\\\"small\\\"],[14,0,\\\"unseen-changes-bubble\\\"],[12],[1,\\\"step-child\\\"],[13],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[41,[51,[30,1]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"cell right\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"settify-sensitive\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,7],[[30,6,[\\\"hasOtherNames\\\"]],\\\"yes\\\"],null],[[[1,\\\"          (aka\\\\n          \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,6,[\\\"givennames\\\"]]],[1,\\\", \\\"],[1,[30,6,[\\\"surnames\\\"]]],[13],[1,\\\")\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[28,[35,16],[[30,6,[\\\"dobday\\\"]],[30,6,[\\\"dobmonth\\\"]],[30,6,[\\\"dobyear\\\"]]],null]],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[13],[1,\\\"\\\\n\\\"],[8,[39,17],null,[[\\\"@predicate\\\"],[[28,[37,4],[[30,4],[28,[37,6],[[30,6],[30,4]],null],[28,[37,5],[[30,12]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"editing-person\\\"],[12],[1,\\\"\\\\n    \\\"],[18,13,[[30,6]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"@hideDetail\\\",\\\"@root\\\",\\\"@horizontalLine\\\",\\\"@checkboxProperty\\\",\\\"@displayOnly\\\",\\\"@model\\\",\\\"@clientRecord\\\",\\\"@adminMode\\\",\\\"@onChange\\\",\\\"@practiceAreaSettings\\\",\\\"@previousChildParent\\\",\\\"@disableDeceased\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"unless\\\",\\\"span\\\",\\\"and\\\",\\\"not\\\",\\\"get\\\",\\\"eq\\\",\\\"action\\\",\\\"or\\\",\\\"check-box\\\",\\\"i\\\",\\\"gender-icon\\\",\\\"family-tree-relationship\\\",\\\"age-from-object\\\",\\\"small\\\",\\\"pretty-date\\\",\\\"liquid-if\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/family-tree-leaf-probate.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({\n    init() {\n      this._super();\n      this.set(\"relationshipToDeceased\", this.get(\"model.relationship\") || this.get(\"model.affiliation\") || this.previousChildParent);\n      const relationshipStarted = this.get(\"model.relationshipStart\") || this.get(\"model.engagedYear\") || this.get(\"model.marriedYear\") || this.get(\"model.relationshipStartDateyear\") || this.get(\"model.relationshipStartYear\");\n      this.set(\"relationshipStarted\", relationshipStarted);\n      const relationshipEnded = this.get(\"model.yearRelationshipEnded\") || this.get(\"model.yearSeparated\") || this.get(\"model.yearDivorced\");\n      this.set(\"relationshipEnded\", relationshipEnded);\n    },\n    updateRelationship: (0, _object.observer)(\"model.relationship\", \"model.affiliation\", \"previousChildParent\", function () {\n      // Need this observer to support the run.next in family-tree.createRelationships\n      this.set(\"relationshipToDeceased\", this.get(\"model.relationship\") || this.get(\"model.affiliation\") || this.previousChildParent);\n    }),\n    disableCheckboxes: (0, _object.computed)(\"disableEditing\", \"disableDeceased\", \"disableDeceasedPeople\", \"model.deceased\", function () {\n      return this.disableEditing || this.disableDeceased || this.disableDeceasedPeople && this.get(\"model.deceased\");\n    }),\n    tagName: \"\",\n    actions: {\n      toggleCheckbox() {\n        const newval = !this.get(`model.${this.checkboxProperty}`);\n        this.set(`model.${this.checkboxProperty}`, newval);\n        if (newval) {\n          this.incrementProperty(\"editingCount\");\n        } else {\n          this.decrementProperty(\"editingCount\");\n        }\n      },\n      nullAction() {}\n    }\n  }));\n});","define(\"settify-mvp/components/family-tree-leaf\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"leaf {{if @hideDetail 'hide-detail' ''}}\">\n    {{#unless @root}}\n      <div class=\"horizontal-line {{if @horizontalLine '' 'noborder'}}\"> {{#if @horizontalLine}}&mdash;{{/if}}</div>\n    {{/unless}}\n    <div class=\"cell left\">\n      <div>\n        <span\n          class=\"{{if (and @checkboxProperty (not this.disableCheckboxes) (not @displayOnly)) 'clickable' ''}}\n            {{if this.disableCheckboxes '' (if (and @displayOnly (get this.person @checkboxProperty)) 'highlight-leaf' 'fade-leaf')}}\n            {{if (and @displayOnly (eq this.person.id @clientRecord.deceased.id) (not @adminMode)) 'fade-leaf' ''}}\"\n          {{action (if (and @checkboxProperty (not this.disableCheckboxes) (not @displayOnly)) \"toggleCheckbox\" \"nullAction\")}}\n        >\n          {{#if (and @checkboxProperty (or @displayOnly (not this.disableCheckboxes)))}}\n            <CheckBox @model={{get this.person @checkboxProperty}} @disabled={{@displayOnly}} @onChange={{@onChange}} @displayOnly={{@displayOnly}} />\n          {{/if}}\n          {{#if this.person.deceased}}\n            <i class=\"fal fa-cross\"></i>\n          {{/if}}\n          {{#if this.person.disabled}}\n            <i class=\"fal fa-wheelchair\"></i>\n          {{/if}}\n          {{#if this.person.overseas}}\n            <i class=\"fal fa-globe\"></i>\n          {{/if}}\n          {{#unless @adminMode}}\n            {{#if this.person.financiallyDependent}}\n              <i class=\"fal fa-hand-holding-usd\"></i>\n            {{/if}}\n            {{#if this.person.receivesProvision}}\n              <i class=\"fal fa-gift\"></i>\n            {{/if}}\n            {{#if this.person.maintainedDeceased}}\n              <i class=\"fal fa-usd-circle\"></i>\n            {{/if}}\n            {{#if this.person.registeredCarer}}\n              <i class=\"fal fa-heart\"></i>\n            {{/if}}\n            {{#if this.person.deceasedHousemates}}\n              <i class=\"fal fa-home\"></i>\n            {{/if}}\n          {{/unless}}\n          <GenderIcon\n            @gender={{get this.person \"firstName-gender\"}}\n            @pronouns={{get this.person \"firstName-pronouns\"}}\n            @showNonSpecified={{true}}\n            @practiceAreaSettings={{@practiceAreaSettings}}\n          />\n          <span\n            class=\"{{if this.person.bloodRelative 'blood-relative' ''}} settify-sensitive\"\n            style={{if (and (eq this.person.id @clientRecord.deceased.id) @adminMode) '\"font-weight: bold\"' '\"\"'}}\n          >\n            {{#if (or this.person.firstName this.person.surname)}}\n              <span class=\"settify-sensitive\">{{this.person.title}} {{this.person.firstName}} {{this.person.middleName}} {{this.person.surname}}</span>\n            {{else if this.person.name}}\n              {{this.person.name}}\n            {{else}}\n              No name provided\n            {{/if}}\n          </span>\n  \n          {{#if (and (eq this.person.id @clientRecord.deceased.id) @adminMode)}}\n            (the deceased)\n          {{/if}}\n  \n          {{#if (not (or (not @adminMode) @hideDetail (eq this.person.id @clientRecord.deceased.id)))}}\n            <span class=\"settify-sensitive\">\n              {{family-tree-relationship\n                this.relationshipToDeceased\n                this.person.whatHappened\n                relationshipStarted=this.relationshipStarted\n                relationshipEnded=this.relationshipEnded\n                clientRecord=@clientRecord\n                previousChildParent=@previousChildParent\n                hideStepChild=true\n              }}\n            </span>\n            {{#if (and @adminMode (eq this.person.id @clientRecord.primaryContactPersonID))}}\n              (Settify Instructor)\n            {{/if}}\n  \n            {{#if this.person.age}}\n              <span class=\"settify-sensitive\">({{age-from-object this.person}})</span>\n            {{/if}}\n  \n            {{#if (or (eq this.person.relationship \"stepChild\") (eq this.person.relationship \"stepSon\") (eq this.person.relationship \"stepDaughter\"))}}\n              <span class=\"settify-sensitive\"><small class=\"unseen-changes-bubble\">step-child</small></span>\n            {{/if}}\n          {{/if}}\n        </span>\n      </div>\n    </div>\n    {{#unless @hideDetail}}\n      <div class=\"cell right\">\n        <div class=\"settify-sensitive\">\n          {{#if (eq this.person.hasOtherNames \"yes\")}}\n            (aka\n            <span class=\"settify-sensitive\">{{this.person.givennames}}, {{this.person.surnames}}</span>)\n          {{/if}}\n          <span class=\"settify-sensitive\">{{pretty-date this.person.dobday this.person.dobmonth this.person.dobyear}}</span>\n        </div>\n      </div>\n    {{/unless}}\n  </div>\n  <LiquidIf @predicate={{and @checkboxProperty (get this.person @checkboxProperty) (not @disableDeceased)}}>\n    <div class=\"editing-person\">\n      {{yield @model}}\n    </div>\n  </LiquidIf>\n  */\n  {\n    \"id\": \"VxXmOPq+\",\n    \"block\": \"[[[10,0],[15,0,[29,[\\\"leaf \\\",[52,[30,1],\\\"hide-detail\\\",\\\"\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[51,[30,2]],[[[1,\\\"    \\\"],[10,0],[15,0,[29,[\\\"horizontal-line \\\",[52,[30,3],\\\"\\\",\\\"noborder\\\"]]]],[12],[1,\\\" \\\"],[41,[30,3],[[[1,\\\"—\\\"]],[]],null],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[10,0],[14,0,\\\"cell left\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[12],[1,\\\"\\\\n      \\\"],[11,1],[16,0,[29,[[52,[28,[37,4],[[30,4],[28,[37,5],[[30,0,[\\\"disableCheckboxes\\\"]]],null],[28,[37,5],[[30,5]],null]],null],\\\"clickable\\\",\\\"\\\"],\\\"\\\\n          \\\",[52,[30,0,[\\\"disableCheckboxes\\\"]],\\\"\\\",[52,[28,[37,4],[[30,5],[28,[37,6],[[30,0,[\\\"person\\\"]],[30,4]],null]],null],\\\"highlight-leaf\\\",\\\"fade-leaf\\\"]],\\\"\\\\n          \\\",[52,[28,[37,4],[[30,5],[28,[37,7],[[30,0,[\\\"person\\\",\\\"id\\\"]],[30,6,[\\\"deceased\\\",\\\"id\\\"]]],null],[28,[37,5],[[30,7]],null]],null],\\\"fade-leaf\\\",\\\"\\\"]]]],[4,[38,8],[[30,0],[52,[28,[37,4],[[30,4],[28,[37,5],[[30,0,[\\\"disableCheckboxes\\\"]]],null],[28,[37,5],[[30,5]],null]],null],\\\"toggleCheckbox\\\",\\\"nullAction\\\"]],null],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,4],[[30,4],[28,[37,9],[[30,5],[28,[37,5],[[30,0,[\\\"disableCheckboxes\\\"]]],null]],null]],null],[[[1,\\\"          \\\"],[8,[39,10],null,[[\\\"@model\\\",\\\"@disabled\\\",\\\"@onChange\\\",\\\"@displayOnly\\\"],[[28,[37,6],[[30,0,[\\\"person\\\"]],[30,4]],null],[30,5],[30,8],[30,5]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"person\\\",\\\"deceased\\\"]],[[[1,\\\"          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-cross\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"person\\\",\\\"disabled\\\"]],[[[1,\\\"          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-wheelchair\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"person\\\",\\\"overseas\\\"]],[[[1,\\\"          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-globe\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[51,[30,7]],[[[41,[30,0,[\\\"person\\\",\\\"financiallyDependent\\\"]],[[[1,\\\"            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-hand-holding-usd\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"person\\\",\\\"receivesProvision\\\"]],[[[1,\\\"            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-gift\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"person\\\",\\\"maintainedDeceased\\\"]],[[[1,\\\"            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-usd-circle\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"person\\\",\\\"registeredCarer\\\"]],[[[1,\\\"            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-heart\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"person\\\",\\\"deceasedHousemates\\\"]],[[[1,\\\"            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-home\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"        \\\"],[8,[39,12],null,[[\\\"@gender\\\",\\\"@pronouns\\\",\\\"@showNonSpecified\\\",\\\"@practiceAreaSettings\\\"],[[28,[37,6],[[30,0,[\\\"person\\\"]],\\\"firstName-gender\\\"],null],[28,[37,6],[[30,0,[\\\"person\\\"]],\\\"firstName-pronouns\\\"],null],true,[30,9]]],null],[1,\\\"\\\\n        \\\"],[10,1],[15,0,[29,[[52,[30,0,[\\\"person\\\",\\\"bloodRelative\\\"]],\\\"blood-relative\\\",\\\"\\\"],\\\" settify-sensitive\\\"]]],[15,5,[52,[28,[37,4],[[28,[37,7],[[30,0,[\\\"person\\\",\\\"id\\\"]],[30,6,[\\\"deceased\\\",\\\"id\\\"]]],null],[30,7]],null],\\\"\\\\\\\"font-weight: bold\\\\\\\"\\\",\\\"\\\\\\\"\\\\\\\"\\\"]],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,9],[[30,0,[\\\"person\\\",\\\"firstName\\\"]],[30,0,[\\\"person\\\",\\\"surname\\\"]]],null],[[[1,\\\"            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"person\\\",\\\"title\\\"]]],[1,\\\" \\\"],[1,[30,0,[\\\"person\\\",\\\"firstName\\\"]]],[1,\\\" \\\"],[1,[30,0,[\\\"person\\\",\\\"middleName\\\"]]],[1,\\\" \\\"],[1,[30,0,[\\\"person\\\",\\\"surname\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"person\\\",\\\"name\\\"]],[[[1,\\\"            \\\"],[1,[30,0,[\\\"person\\\",\\\"name\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"            No name provided\\\\n          \\\"]],[]]]],[]]],[1,\\\"        \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,4],[[28,[37,7],[[30,0,[\\\"person\\\",\\\"id\\\"]],[30,6,[\\\"deceased\\\",\\\"id\\\"]]],null],[30,7]],null],[[[1,\\\"          (the deceased)\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[28,[37,9],[[28,[37,5],[[30,7]],null],[30,1],[28,[37,7],[[30,0,[\\\"person\\\",\\\"id\\\"]],[30,6,[\\\"deceased\\\",\\\"id\\\"]]],null]],null]],null],[[[1,\\\"          \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[28,[35,13],[[30,0,[\\\"relationshipToDeceased\\\"]],[30,0,[\\\"person\\\",\\\"whatHappened\\\"]]],[[\\\"relationshipStarted\\\",\\\"relationshipEnded\\\",\\\"clientRecord\\\",\\\"previousChildParent\\\",\\\"hideStepChild\\\"],[[30,0,[\\\"relationshipStarted\\\"]],[30,0,[\\\"relationshipEnded\\\"]],[30,6],[30,10],true]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,4],[[30,7],[28,[37,7],[[30,0,[\\\"person\\\",\\\"id\\\"]],[30,6,[\\\"primaryContactPersonID\\\"]]],null]],null],[[[1,\\\"            (Settify Instructor)\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"person\\\",\\\"age\\\"]],[[[1,\\\"            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,\\\"(\\\"],[1,[28,[35,14],[[30,0,[\\\"person\\\"]]],null]],[1,\\\")\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,9],[[28,[37,7],[[30,0,[\\\"person\\\",\\\"relationship\\\"]],\\\"stepChild\\\"],null],[28,[37,7],[[30,0,[\\\"person\\\",\\\"relationship\\\"]],\\\"stepSon\\\"],null],[28,[37,7],[[30,0,[\\\"person\\\",\\\"relationship\\\"]],\\\"stepDaughter\\\"],null]],null],[[[1,\\\"            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[10,\\\"small\\\"],[14,0,\\\"unseen-changes-bubble\\\"],[12],[1,\\\"step-child\\\"],[13],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[41,[51,[30,1]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"cell right\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"settify-sensitive\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,7],[[30,0,[\\\"person\\\",\\\"hasOtherNames\\\"]],\\\"yes\\\"],null],[[[1,\\\"          (aka\\\\n          \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"person\\\",\\\"givennames\\\"]]],[1,\\\", \\\"],[1,[30,0,[\\\"person\\\",\\\"surnames\\\"]]],[13],[1,\\\")\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[28,[35,16],[[30,0,[\\\"person\\\",\\\"dobday\\\"]],[30,0,[\\\"person\\\",\\\"dobmonth\\\"]],[30,0,[\\\"person\\\",\\\"dobyear\\\"]]],null]],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[13],[1,\\\"\\\\n\\\"],[8,[39,17],null,[[\\\"@predicate\\\"],[[28,[37,4],[[30,4],[28,[37,6],[[30,0,[\\\"person\\\"]],[30,4]],null],[28,[37,5],[[30,11]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"editing-person\\\"],[12],[1,\\\"\\\\n    \\\"],[18,13,[[30,12]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"@hideDetail\\\",\\\"@root\\\",\\\"@horizontalLine\\\",\\\"@checkboxProperty\\\",\\\"@displayOnly\\\",\\\"@clientRecord\\\",\\\"@adminMode\\\",\\\"@onChange\\\",\\\"@practiceAreaSettings\\\",\\\"@previousChildParent\\\",\\\"@disableDeceased\\\",\\\"@model\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"unless\\\",\\\"span\\\",\\\"and\\\",\\\"not\\\",\\\"get\\\",\\\"eq\\\",\\\"action\\\",\\\"or\\\",\\\"check-box\\\",\\\"i\\\",\\\"gender-icon\\\",\\\"family-tree-relationship\\\",\\\"age-from-object\\\",\\\"small\\\",\\\"pretty-date\\\",\\\"liquid-if\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/family-tree-leaf.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({\n    init() {\n      this._super();\n      const personObject = this.clientRecord.getKnownEntity(this.model);\n      this.set(\"person\", personObject);\n      this.set(\"relationshipToDeceased\", this.get(\"person.relationship\") || this.get(\"person.affiliation\") || this.previousChildParent);\n      const relationshipStarted = this.get(\"person.relationshipStart\") || this.get(\"person.engagedYear\") || this.get(\"person.marriedYear\") || this.get(\"person.relationshipStartDateyear\") || this.get(\"person.relationshipStartYear\");\n      this.set(\"relationshipStarted\", relationshipStarted);\n      const relationshipEnded = this.get(\"person.yearRelationshipEnded\") || this.get(\"person.yearSeparated\") || this.get(\"person.yearDivorced\");\n      this.set(\"relationshipEnded\", relationshipEnded);\n    },\n    updateRelationship: (0, _object.observer)(\"person.relationship\", \"person.affiliation\", \"previousChildParent\", function () {\n      // Need this observer to support the run.next in family-tree.createRelationships\n      this.set(\"relationshipToDeceased\", this.get(\"person.relationship\") || this.get(\"person.affiliation\") || this.previousChildParent);\n    }),\n    disableCheckboxes: (0, _object.computed)(\"disableEditing\", \"disableDeceased\", \"disableDeceasedPeople\", \"person.deceased\", function () {\n      return this.disableEditing || this.disableDeceased || this.disableDeceasedPeople && this.get(\"person.deceased\");\n    }),\n    tagName: \"\",\n    actions: {\n      toggleCheckbox() {\n        const newval = !this.get(`person.${this.checkboxProperty}`);\n        this.set(`person.${this.checkboxProperty}`, newval);\n        if (newval) {\n          this.incrementProperty(\"editingCount\");\n        } else {\n          this.decrementProperty(\"editingCount\");\n        }\n      },\n      nullAction() {}\n    }\n  }));\n});","define(\"settify-mvp/components/family-tree-probate\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember/runloop\", \"settify-mvp/mixins/family-tree-generator\", \"@ember/template-factory\"], function (_exports, _component, _object, _runloop, _familyTreeGenerator, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/runloop\",0,\"@ember/component\",0,\"settify-mvp/mixins/family-tree-generator\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    \n  <div class=\"family-tree\">\n    {{#if @label}}\n      <p>{{@label}}</p>\n    {{/if}}\n    <FamilyTreeBranchProbate @model={{this.grandParentsList}} @adminMode={{@adminMode}} @disableDeceasedPeople={{@disableDeceasedPeople}} @disableEditing={{@disableEditing}} @displayOnly={{@displayOnly}} @checkboxProperty={{@checkboxProperty}} @editingCount={{this.editingCount}} @clientRecord={{@clientRecord}} @onChange={{@onChange}} @hideLines={{true}} @hideDetail={{@hideDetail}} @practiceAreaSettings={{@practiceAreaSettings}} as |item|>\n      {{yield item}}\n    </FamilyTreeBranchProbate>\n    <div style={{if (and this.grandParentsList this.grandParentsList.length) \"margin-left: 16px; margin-bottom: 8px;\" \"\"}}>\n      <div class={{if (and this.parentsList this.parentsList.length) \"branch hide-lines\" \"\"}}>\n        {{#each this.parentsList as |parent|}}\n          <div>\n            <FamilyTreeLeafProbate @model={{parent}} @adminMode={{@adminMode}} @disableDeceasedPeople={{@disableDeceasedPeople}} @disableEditing={{@disableEditing}} @displayOnly={{@displayOnly}} @horizontalLine={{true}} @checkboxProperty={{@checkboxProperty}} @editingCount={{this.editingCount}} @clientRecord={{@clientRecord}} @onChange={{@onChange}} @hideDetail={{@hideDetail}} @practiceAreaSettings={{@practiceAreaSettings}} @previousChildParent={{@previousChildParent}} as |item|>\n              {{yield item}}\n            </FamilyTreeLeafProbate>\n          </div>\n        {{/each}}\n        {{#if @excludeTopLevel}}\n          {{#each this.topLevelParents as |parent|}}\n            {{#if parent.children.length}}\n              <FamilyTreeBranchProbate @model={{parent.children}} @adminMode={{@adminMode}} @disableDeceasedPeople={{@disableDeceasedPeople}} @disableEditing={{@disableEditing}} @displayOnly={{@displayOnly}} @checkboxProperty={{@checkboxProperty}} @editingCount={{this.editingCount}} @clientRecord={{@clientRecord}} @hideDetail={{@hideDetail}} @practiceAreaSettings={{@practiceAreaSettings}} as |item|>\n                {{yield item}}\n              </FamilyTreeBranchProbate>\n            {{/if}}\n            {{#each parent.spouses as |spouse|}}\n              <FamilyTreeBranchProbate @model={{spouse.children}} @adminMode={{@adminMode}} @disableDeceasedPeople={{@disableDeceasedPeople}} @disableEditing={{@disableEditing}} @displayOnly={{@displayOnly}} @checkboxProperty={{@checkboxProperty}} @editingCount={{this.editingCount}} @clientRecord={{@clientRecord}} @hideDetail={{@hideDetail}} @practiceAreaSettings={{@practiceAreaSettings}} as |item|>\n                {{yield item}}\n              </FamilyTreeBranchProbate>\n            {{/each}}\n          {{/each}}\n        {{else}}\n          <FamilyTreeBranchProbate @model={{this.topLevelParents}} @adminMode={{@adminMode}} @disableDeceasedPeople={{@disableDeceasedPeople}} @disableEditing={{@disableEditing}} @disableDeceased={{not @enableDeceased}} @displayOnly={{@displayOnly}} @checkboxProperty={{@checkboxProperty}} @editingCount={{this.editingCount}} @clientRecord={{@clientRecord}} @hideDetail={{@hideDetail}} @practiceAreaSettings={{@practiceAreaSettings}} @hideLines={{not this.parentsList.length}} @forceVerticalLine={{this.parentsList.length}} @onChange={{@onChange}} as |item|>\n            {{yield item}}\n          </FamilyTreeBranchProbate>\n        {{/if}}\n      </div>\n      <div class={{if (and this.parentsList this.parentsList.length) \"branch\" \"\"}}>\n        <FamilyTreeBranchProbate @model={{this.siblingsList}} @adminMode={{@adminMode}} @disableDeceasedPeople={{@disableDeceasedPeople}} @disableEditing={{@disableEditing}} @displayOnly={{@displayOnly}} @checkboxProperty={{@checkboxProperty}} @editingCount={{this.editingCount}} @clientRecord={{@clientRecord}} @hideDetail={{@hideDetail}} @practiceAreaSettings={{@practiceAreaSettings}} @hideLines={{not this.parentsList.length}} @onChange={{@onChange}} as |item|>\n          {{yield item}}\n        </FamilyTreeBranchProbate>\n      </div>\n  \n      <FamilyTreeBranchProbate @model={{this.auntsAndUnclesList}} @adminMode={{@adminMode}} @disableDeceasedPeople={{@disableDeceasedPeople}} @disableEditing={{@disableEditing}} @displayOnly={{@displayOnly}} @checkboxProperty={{@checkboxProperty}} @editingCount={{this.editingCount}} @clientRecord={{@clientRecord}} @onChange={{@onChange}} @hideLines={{true}} @hideDetail={{@hideDetail}} @practiceAreaSettings={{@practiceAreaSettings}} as |item|>\n        {{yield item}}\n      </FamilyTreeBranchProbate>\n    </div>\n  \n    {{#each this.otherBeneficiariesList as |beneficiary|}}\n      {{#if (or (not-eq beneficiary.type \"organisation\") @enableOrganisations)}}\n        <div>\n          <FamilyTreeLeafProbate @model={{beneficiary}} @adminMode={{@adminMode}} @disableDeceasedPeople={{@disableDeceasedPeople}} @disableEditing={{@disableEditing}} @displayOnly={{@displayOnly}} @checkboxProperty={{@checkboxProperty}} @editingCount={{this.editingCount}} @clientRecord={{@clientRecord}} @onChange={{@onChange}} @hideDetail={{@hideDetail}} @practiceAreaSettings={{@practiceAreaSettings}} as |item|>\n            {{yield item}}\n          </FamilyTreeLeafProbate>\n        </div>\n      {{/if}}\n    {{/each}}\n  </div>\n  \n  */\n  {\n    \"id\": \"fgAsGxoe\",\n    \"block\": \"[[[1,\\\"\\\\n\\\"],[10,0],[14,0,\\\"family-tree\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1],[[[1,\\\"    \\\"],[10,2],[12],[1,[30,1]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[8,[39,3],null,[[\\\"@model\\\",\\\"@adminMode\\\",\\\"@disableDeceasedPeople\\\",\\\"@disableEditing\\\",\\\"@displayOnly\\\",\\\"@checkboxProperty\\\",\\\"@editingCount\\\",\\\"@clientRecord\\\",\\\"@onChange\\\",\\\"@hideLines\\\",\\\"@hideDetail\\\",\\\"@practiceAreaSettings\\\"],[[30,0,[\\\"grandParentsList\\\"]],[30,2],[30,3],[30,4],[30,5],[30,6],[30,0,[\\\"editingCount\\\"]],[30,7],[30,8],true,[30,9],[30,10]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[18,27,[[30,11]]],[1,\\\"\\\\n  \\\"]],[11]]]]],[1,\\\"\\\\n  \\\"],[10,0],[15,5,[52,[28,[37,5],[[30,0,[\\\"grandParentsList\\\"]],[30,0,[\\\"grandParentsList\\\",\\\"length\\\"]]],null],\\\"margin-left: 16px; margin-bottom: 8px;\\\",\\\"\\\"]],[12],[1,\\\"\\\\n    \\\"],[10,0],[15,0,[52,[28,[37,5],[[30,0,[\\\"parentsList\\\"]],[30,0,[\\\"parentsList\\\",\\\"length\\\"]]],null],\\\"branch hide-lines\\\",\\\"\\\"]],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,7],[[28,[37,7],[[30,0,[\\\"parentsList\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[10,0],[12],[1,\\\"\\\\n          \\\"],[8,[39,8],null,[[\\\"@model\\\",\\\"@adminMode\\\",\\\"@disableDeceasedPeople\\\",\\\"@disableEditing\\\",\\\"@displayOnly\\\",\\\"@horizontalLine\\\",\\\"@checkboxProperty\\\",\\\"@editingCount\\\",\\\"@clientRecord\\\",\\\"@onChange\\\",\\\"@hideDetail\\\",\\\"@practiceAreaSettings\\\",\\\"@previousChildParent\\\"],[[30,12],[30,2],[30,3],[30,4],[30,5],true,[30,6],[30,0,[\\\"editingCount\\\"]],[30,7],[30,8],[30,9],[30,10],[30,13]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[18,27,[[30,14]]],[1,\\\"\\\\n          \\\"]],[14]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[12]],null],[41,[30,15],[[[42,[28,[37,7],[[28,[37,7],[[30,0,[\\\"topLevelParents\\\"]]],null]],null],null,[[[41,[30,16,[\\\"children\\\",\\\"length\\\"]],[[[1,\\\"            \\\"],[8,[39,3],null,[[\\\"@model\\\",\\\"@adminMode\\\",\\\"@disableDeceasedPeople\\\",\\\"@disableEditing\\\",\\\"@displayOnly\\\",\\\"@checkboxProperty\\\",\\\"@editingCount\\\",\\\"@clientRecord\\\",\\\"@hideDetail\\\",\\\"@practiceAreaSettings\\\"],[[30,16,[\\\"children\\\"]],[30,2],[30,3],[30,4],[30,5],[30,6],[30,0,[\\\"editingCount\\\"]],[30,7],[30,9],[30,10]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[18,27,[[30,17]]],[1,\\\"\\\\n            \\\"]],[17]]]]],[1,\\\"\\\\n\\\"]],[]],null],[42,[28,[37,7],[[28,[37,7],[[30,16,[\\\"spouses\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[8,[39,3],null,[[\\\"@model\\\",\\\"@adminMode\\\",\\\"@disableDeceasedPeople\\\",\\\"@disableEditing\\\",\\\"@displayOnly\\\",\\\"@checkboxProperty\\\",\\\"@editingCount\\\",\\\"@clientRecord\\\",\\\"@hideDetail\\\",\\\"@practiceAreaSettings\\\"],[[30,18,[\\\"children\\\"]],[30,2],[30,3],[30,4],[30,5],[30,6],[30,0,[\\\"editingCount\\\"]],[30,7],[30,9],[30,10]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[18,27,[[30,19]]],[1,\\\"\\\\n            \\\"]],[19]]]]],[1,\\\"\\\\n\\\"]],[18]],null]],[16]],null]],[]],[[[1,\\\"        \\\"],[8,[39,3],null,[[\\\"@model\\\",\\\"@adminMode\\\",\\\"@disableDeceasedPeople\\\",\\\"@disableEditing\\\",\\\"@disableDeceased\\\",\\\"@displayOnly\\\",\\\"@checkboxProperty\\\",\\\"@editingCount\\\",\\\"@clientRecord\\\",\\\"@hideDetail\\\",\\\"@practiceAreaSettings\\\",\\\"@hideLines\\\",\\\"@forceVerticalLine\\\",\\\"@onChange\\\"],[[30,0,[\\\"topLevelParents\\\"]],[30,2],[30,3],[30,4],[28,[37,9],[[30,20]],null],[30,5],[30,6],[30,0,[\\\"editingCount\\\"]],[30,7],[30,9],[30,10],[28,[37,9],[[30,0,[\\\"parentsList\\\",\\\"length\\\"]]],null],[30,0,[\\\"parentsList\\\",\\\"length\\\"]],[30,8]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[18,27,[[30,21]]],[1,\\\"\\\\n        \\\"]],[21]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[15,0,[52,[28,[37,5],[[30,0,[\\\"parentsList\\\"]],[30,0,[\\\"parentsList\\\",\\\"length\\\"]]],null],\\\"branch\\\",\\\"\\\"]],[12],[1,\\\"\\\\n      \\\"],[8,[39,3],null,[[\\\"@model\\\",\\\"@adminMode\\\",\\\"@disableDeceasedPeople\\\",\\\"@disableEditing\\\",\\\"@displayOnly\\\",\\\"@checkboxProperty\\\",\\\"@editingCount\\\",\\\"@clientRecord\\\",\\\"@hideDetail\\\",\\\"@practiceAreaSettings\\\",\\\"@hideLines\\\",\\\"@onChange\\\"],[[30,0,[\\\"siblingsList\\\"]],[30,2],[30,3],[30,4],[30,5],[30,6],[30,0,[\\\"editingCount\\\"]],[30,7],[30,9],[30,10],[28,[37,9],[[30,0,[\\\"parentsList\\\",\\\"length\\\"]]],null],[30,8]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[18,27,[[30,22]]],[1,\\\"\\\\n      \\\"]],[22]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[8,[39,3],null,[[\\\"@model\\\",\\\"@adminMode\\\",\\\"@disableDeceasedPeople\\\",\\\"@disableEditing\\\",\\\"@displayOnly\\\",\\\"@checkboxProperty\\\",\\\"@editingCount\\\",\\\"@clientRecord\\\",\\\"@onChange\\\",\\\"@hideLines\\\",\\\"@hideDetail\\\",\\\"@practiceAreaSettings\\\"],[[30,0,[\\\"auntsAndUnclesList\\\"]],[30,2],[30,3],[30,4],[30,5],[30,6],[30,0,[\\\"editingCount\\\"]],[30,7],[30,8],true,[30,9],[30,10]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[18,27,[[30,23]]],[1,\\\"\\\\n    \\\"]],[23]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[42,[28,[37,7],[[28,[37,7],[[30,0,[\\\"otherBeneficiariesList\\\"]]],null]],null],null,[[[41,[28,[37,10],[[28,[37,11],[[30,24,[\\\"type\\\"]],\\\"organisation\\\"],null],[30,25]],null],[[[1,\\\"      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[8,[39,8],null,[[\\\"@model\\\",\\\"@adminMode\\\",\\\"@disableDeceasedPeople\\\",\\\"@disableEditing\\\",\\\"@displayOnly\\\",\\\"@checkboxProperty\\\",\\\"@editingCount\\\",\\\"@clientRecord\\\",\\\"@onChange\\\",\\\"@hideDetail\\\",\\\"@practiceAreaSettings\\\"],[[30,24],[30,2],[30,3],[30,4],[30,5],[30,6],[30,0,[\\\"editingCount\\\"]],[30,7],[30,8],[30,9],[30,10]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[18,27,[[30,26]]],[1,\\\"\\\\n        \\\"]],[26]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[24]],null],[13],[1,\\\"\\\\n\\\"]],[\\\"@label\\\",\\\"@adminMode\\\",\\\"@disableDeceasedPeople\\\",\\\"@disableEditing\\\",\\\"@displayOnly\\\",\\\"@checkboxProperty\\\",\\\"@clientRecord\\\",\\\"@onChange\\\",\\\"@hideDetail\\\",\\\"@practiceAreaSettings\\\",\\\"item\\\",\\\"parent\\\",\\\"@previousChildParent\\\",\\\"item\\\",\\\"@excludeTopLevel\\\",\\\"parent\\\",\\\"item\\\",\\\"spouse\\\",\\\"item\\\",\\\"@enableDeceased\\\",\\\"item\\\",\\\"item\\\",\\\"item\\\",\\\"beneficiary\\\",\\\"@enableOrganisations\\\",\\\"item\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"p\\\",\\\"family-tree-branch-probate\\\",\\\"yield\\\",\\\"and\\\",\\\"each\\\",\\\"-track-array\\\",\\\"family-tree-leaf-probate\\\",\\\"not\\\",\\\"or\\\",\\\"not-eq\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/family-tree-probate.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend(_familyTreeGenerator.default, {\n    init() {\n      this._super();\n      const deceased = this.get(\"clientRecord.deceased\"); // this.createFamilyTreeStructure(this.get('model'), this.get('familyTreeFilters'), true);\n\n      if (deceased) {\n        this.createRelationship(deceased);\n        if (deceased.parentOne && deceased.parentOne.length) {\n          this.set(\"parentsList\", [deceased.parentOne[0]]);\n          if (deceased.parentTwo && deceased.parentTwo.length) {\n            this.parentsList.pushObject(deceased.parentTwo[0]);\n          }\n        }\n        this.set(\"siblingsList\", deceased.siblings);\n        this.set(\"auntsAndUnclesList\", deceased.auntsAndUncles);\n        this.set(\"grandParentsList\", deceased.grandparents);\n        this.set(\"otherBeneficiariesList\", deceased.otherBeneficiaries);\n        this.set(\"topLevelParents\", [deceased]);\n      }\n      const property = this.checkboxProperty;\n      if (property) {\n        const count = this.getEditingCount([deceased], property);\n        (0, _runloop.next)(() => {\n          this.set(\"editingCount\", count);\n        });\n      }\n    },\n    createRelationship(deceased) {\n      if (!deceased) {\n        return;\n      }\n\n      // Add any spouses/children/grandchildren relationships\n      for (let i = 0; deceased.spouses && i < deceased.spouses.length; i++) {\n        const spouse = deceased.spouses[i];\n        if (!spouse.relationship) {\n          (0, _runloop.next)(() => {\n            // jshint ignore:line\n            // Review screen breaks unless this is here (more than one family tree on a page) //\n            (0, _object.set)(spouse, \"relationship\", \"spouse\");\n          });\n        }\n        for (let c = 0; spouse.children && c < spouse.children.length; c++) {\n          const child = spouse.children[c];\n          if (!child.relationship) {\n            (0, _runloop.next)(() => {\n              // jshint ignore:line\n              (0, _object.set)(child, \"relationship\", \"child\");\n            });\n          }\n          for (let gc = 0; child.children && gc < child.children.length; gc++) {\n            const grandchild = child.children[gc];\n            if (!grandchild.relationship) {\n              (0, _runloop.next)(() => {\n                // jshint ignore:line\n                (0, _object.set)(grandchild, \"relationship\", \"grandchild\");\n              });\n            }\n          }\n          for (let cp = 0; child.spouses && cp < child.spouses.length; cp++) {\n            const inLaw = child.spouses[cp];\n            if (!inLaw.relationship) {\n              let relationshipString = ``;\n              if (child.firstName) {\n                relationshipString += `${child.firstName}`;\n              }\n              if (child.surname) {\n                if (child.firstName) {\n                  relationshipString += ` `;\n                }\n                relationshipString += `${child.surname}`;\n              }\n              if (child.firstName || child.surname) {\n                relationshipString += `'s `;\n              }\n              relationshipString += `spouse`;\n              (0, _runloop.next)(() => {\n                // jshint ignore:line\n                (0, _object.set)(inLaw, \"relationship\", relationshipString);\n              });\n            }\n          }\n        }\n        for (let pc = 0; spouse.previousChildren && pc < spouse.previousChildren.length; pc++) {\n          const previousChild = spouse.previousChildren[pc];\n          for (let pgc = 0; previousChild.children && pgc < previousChild.children; pgc++) {\n            const previousGrandChild = previousChild.children[pgc];\n            if (!previousGrandChild.relationship) {\n              (0, _runloop.next)(() => {\n                // jshint ignore:line\n                (0, _object.set)(previousGrandChild, \"relationship\", `grandchild from ${spouse.firstName}'s previous relationship`);\n              });\n            }\n          }\n        }\n      }\n\n      // Add any sibling relationships\n      for (let i = 0; deceased.siblings && i < deceased.siblings.length; i++) {\n        const sibling = deceased.siblings[i];\n        if (!sibling.relationship) {\n          (0, _runloop.next)(() => {\n            // jshint ignore:line\n            sibling.relationship = \"sibling\";\n          });\n        }\n        for (let c = 0; sibling.children && c < sibling.children.length; c++) {\n          const child = sibling.children[c];\n          if (!child.relationship) {\n            (0, _runloop.next)(() => {\n              // jshint ignore:line\n              (0, _object.set)(child, \"relationship\", \"nibling\");\n            });\n          }\n        }\n      }\n\n      // Add any granparents relationships\n      for (let i = 0; deceased.grandparents && i < deceased.grandparents.length; i++) {\n        const grandparent = deceased.grandparents[i];\n        if (!grandparent.relationship) {\n          (0, _runloop.next)(() => {\n            // jshint ignore:line\n            grandparent.relationship = \"grandparent\";\n          });\n        }\n      }\n\n      // Add any aunt or uncle relationships\n      for (let i = 0; deceased.auntsAndUncles && i < deceased.auntsAndUncles.length; i++) {\n        const auntOrUncle = deceased.auntsAndUncles[i];\n        if (!auntOrUncle.relationship || auntOrUncle.relationship === \"aunt or uncle\") {\n          (0, _runloop.next)(() => {\n            // jshint ignore:line\n            const isAuntOrUncle = auntOrUncle[\"firstName-gender\"] === \"male\" ? \"uncle\" : auntOrUncle[\"firstName-gender\"] === \"female\" ? \"aunt\" : \"aunt or uncle\";\n            auntOrUncle.relationship = isAuntOrUncle;\n          });\n        }\n        for (let c = 0; auntOrUncle.children && c < auntOrUncle.children.length; c++) {\n          const child = auntOrUncle.children[c];\n          if (!child.relationship) {\n            (0, _runloop.next)(() => {\n              // jshint ignore:line\n              (0, _object.set)(child, \"relationship\", \"cousin\");\n            });\n          }\n        }\n      }\n\n      // Add any parent relationships\n      if (deceased.parentOne && deceased.parentOne[0]) {\n        (0, _runloop.next)(() => {\n          // jshint ignore:line\n          (0, _object.set)(deceased.parentOne[0], \"relationship\", \"parent\");\n        });\n      }\n      if (deceased.parentTwo && deceased.parentTwo[0]) {\n        (0, _runloop.next)(() => {\n          // jshint ignore:line\n          (0, _object.set)(deceased.parentTwo[0], \"relationship\", \"parent\");\n        });\n      }\n    }\n  }));\n});","define(\"settify-mvp/components/family-tree\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember/runloop\", \"settify-mvp/mixins/family-tree-generator\", \"@ember/template-factory\"], function (_exports, _component, _object, _runloop, _familyTreeGenerator, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/runloop\",0,\"@ember/component\",0,\"settify-mvp/mixins/family-tree-generator\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    \n  <div class=\"family-tree\">\n    {{#if @label}}\n      <p class=\"family-tree-label\">{{@label}}</p>\n    {{/if}}\n    <div class=\"family-tree-indent\">\n      <div style={{if (and this.grandParentsList this.grandParentsList.length) \"margin-left: 16px; margin-bottom: 8px;\"}}>\n        <div class={{if (and this.parentsList this.parentsList.length) \"branch hide-lines\" \"\"}}>\n          {{#each this.parentsList as |parent|}}\n            <div>\n              <FamilyTreeLeaf @clientRecord={{@clientRecord}} @model={{parent}} @adminMode={{@adminMode}} @disableDeceasedPeople={{@disableDeceasedPeople}} @disableEditing={{@disableEditing}} @displayOnly={{@displayOnly}} @horizontalLine={{true}} @checkboxProperty={{@checkboxProperty}} @editingCount={{this.editingCount}} @onChange={{@onChange}} @hideDetail={{@hideDetail}} @previousChildParent={{@previousChildParent}} as |item|>\n                {{yield item}}\n              </FamilyTreeLeaf>\n            </div>\n          {{/each}}\n          {{#if @excludeTopLevel}}\n            {{#each this.topLevelParents as |parent|}}\n              {{#if parent.children.length}}\n                <FamilyTreeBranch @clientRecord={{@clientRecord}} @model={{parent.children}} @adminMode={{@adminMode}} @disableDeceasedPeople={{@disableDeceasedPeople}} @disableEditing={{@disableEditing}} @displayOnly={{@displayOnly}} @checkboxProperty={{@checkboxProperty}} @editingCount={{this.editingCount}} @hideDetail={{@hideDetail}} as |item|>\n                  {{yield item}}\n                </FamilyTreeBranch>\n              {{/if}}\n              {{#each parent.spouses as |spouse|}}\n                <FamilyTreeBranch @clientRecord={{@clientRecord}} @model={{spouse.children}} @adminMode={{@adminMode}} @disableDeceasedPeople={{@disableDeceasedPeople}} @disableEditing={{@disableEditing}} @displayOnly={{@displayOnly}} @checkboxProperty={{@checkboxProperty}} @editingCount={{this.editingCount}} @hideDetail={{@hideDetail}} as |item|>\n                  {{yield item}}\n                </FamilyTreeBranch>\n              {{/each}}\n            {{/each}}\n          {{else}}\n            <FamilyTreeBranch @clientRecord={{@clientRecord}} @model={{this.topLevelParents}} @adminMode={{@adminMode}} @disableDeceasedPeople={{@disableDeceasedPeople}} @disableEditing={{@disableEditing}} @disableDeceased={{not @enableDeceased}} @displayOnly={{@displayOnly}} @checkboxProperty={{@checkboxProperty}} @editingCount={{this.editingCount}} @hideDetail={{@hideDetail}} @hideLines={{not this.parentsList.length}} @forceVerticalLine={{this.parentsList.length-1}} @onChange={{@onChange}} as |item|>\n              {{yield item}}\n            </FamilyTreeBranch>\n          {{/if}}\n        </div>\n        <div class={{if (and this.parentsList this.parentsList.length) \"branch\" \"\"}}>\n          <FamilyTreeBranch @clientRecord={{@clientRecord}} @model={{this.siblingsList}} @adminMode={{@adminMode}} @disableDeceasedPeople={{@disableDeceasedPeople}} @disableEditing={{@disableEditing}} @displayOnly={{@displayOnly}} @checkboxProperty={{@checkboxProperty}} @editingCount={{this.editingCount}} @hideDetail={{@hideDetail}} @hideLines={{not this.parentsList.length}} @onChange={{@onChange}} as |item|>\n            {{yield item}}\n          </FamilyTreeBranch>\n        </div>\n      </div>\n      {{#if this.otherBeneficiariesList.length}}\n        <br>\n        <p class=\"family-tree-beneficiary\">\n          Other relevant people:\n        </p>\n      {{/if}}\n      {{#each this.otherBeneficiariesList as |beneficiary|}}\n        {{#if (or (not-eq beneficiary.type \"organisation\") @enableOrganisations)}}\n          <div>\n            <FamilyTreeLeaf @clientRecord={{@clientRecord}} @model={{beneficiary}} @adminMode={{@adminMode}} @disableDeceasedPeople={{@disableDeceasedPeople}} @disableEditing={{@disableEditing}} @displayOnly={{@displayOnly}} @checkboxProperty={{@checkboxProperty}} @editingCount={{this.editingCount}} @onChange={{@onChange}} @hideDetail={{@hideDetail}} as |item|>\n              {{yield item}}\n            </FamilyTreeLeaf>\n          </div>\n        {{/if}}\n      {{/each}}\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"DZ4xvFlc\",\n    \"block\": \"[[[1,\\\"\\\\n\\\"],[10,0],[14,0,\\\"family-tree\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1],[[[1,\\\"    \\\"],[10,2],[14,0,\\\"family-tree-label\\\"],[12],[1,[30,1]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[10,0],[14,0,\\\"family-tree-indent\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[15,5,[52,[28,[37,3],[[30,0,[\\\"grandParentsList\\\"]],[30,0,[\\\"grandParentsList\\\",\\\"length\\\"]]],null],\\\"margin-left: 16px; margin-bottom: 8px;\\\"]],[12],[1,\\\"\\\\n      \\\"],[10,0],[15,0,[52,[28,[37,3],[[30,0,[\\\"parentsList\\\"]],[30,0,[\\\"parentsList\\\",\\\"length\\\"]]],null],\\\"branch hide-lines\\\",\\\"\\\"]],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,5],[[28,[37,5],[[30,0,[\\\"parentsList\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[10,0],[12],[1,\\\"\\\\n            \\\"],[8,[39,6],null,[[\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\",\\\"@disableDeceasedPeople\\\",\\\"@disableEditing\\\",\\\"@displayOnly\\\",\\\"@horizontalLine\\\",\\\"@checkboxProperty\\\",\\\"@editingCount\\\",\\\"@onChange\\\",\\\"@hideDetail\\\",\\\"@previousChildParent\\\"],[[30,3],[30,2],[30,4],[30,5],[30,6],[30,7],true,[30,8],[30,0,[\\\"editingCount\\\"]],[30,9],[30,10],[30,11]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[18,24,[[30,12]]],[1,\\\"\\\\n            \\\"]],[12]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],null],[41,[30,13],[[[42,[28,[37,5],[[28,[37,5],[[30,0,[\\\"topLevelParents\\\"]]],null]],null],null,[[[41,[30,14,[\\\"children\\\",\\\"length\\\"]],[[[1,\\\"              \\\"],[8,[39,8],null,[[\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\",\\\"@disableDeceasedPeople\\\",\\\"@disableEditing\\\",\\\"@displayOnly\\\",\\\"@checkboxProperty\\\",\\\"@editingCount\\\",\\\"@hideDetail\\\"],[[30,3],[30,14,[\\\"children\\\"]],[30,4],[30,5],[30,6],[30,7],[30,8],[30,0,[\\\"editingCount\\\"]],[30,10]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[18,24,[[30,15]]],[1,\\\"\\\\n              \\\"]],[15]]]]],[1,\\\"\\\\n\\\"]],[]],null],[42,[28,[37,5],[[28,[37,5],[[30,14,[\\\"spouses\\\"]]],null]],null],null,[[[1,\\\"              \\\"],[8,[39,8],null,[[\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\",\\\"@disableDeceasedPeople\\\",\\\"@disableEditing\\\",\\\"@displayOnly\\\",\\\"@checkboxProperty\\\",\\\"@editingCount\\\",\\\"@hideDetail\\\"],[[30,3],[30,16,[\\\"children\\\"]],[30,4],[30,5],[30,6],[30,7],[30,8],[30,0,[\\\"editingCount\\\"]],[30,10]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[18,24,[[30,17]]],[1,\\\"\\\\n              \\\"]],[17]]]]],[1,\\\"\\\\n\\\"]],[16]],null]],[14]],null]],[]],[[[1,\\\"          \\\"],[8,[39,8],null,[[\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\",\\\"@disableDeceasedPeople\\\",\\\"@disableEditing\\\",\\\"@disableDeceased\\\",\\\"@displayOnly\\\",\\\"@checkboxProperty\\\",\\\"@editingCount\\\",\\\"@hideDetail\\\",\\\"@hideLines\\\",\\\"@forceVerticalLine\\\",\\\"@onChange\\\"],[[30,3],[30,0,[\\\"topLevelParents\\\"]],[30,4],[30,5],[30,6],[28,[37,9],[[30,18]],null],[30,7],[30,8],[30,0,[\\\"editingCount\\\"]],[30,10],[28,[37,9],[[30,0,[\\\"parentsList\\\",\\\"length\\\"]]],null],[30,0,[\\\"parentsList\\\",\\\"length-1\\\"]],[30,9]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[18,24,[[30,19]]],[1,\\\"\\\\n          \\\"]],[19]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,0],[15,0,[52,[28,[37,3],[[30,0,[\\\"parentsList\\\"]],[30,0,[\\\"parentsList\\\",\\\"length\\\"]]],null],\\\"branch\\\",\\\"\\\"]],[12],[1,\\\"\\\\n        \\\"],[8,[39,8],null,[[\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\",\\\"@disableDeceasedPeople\\\",\\\"@disableEditing\\\",\\\"@displayOnly\\\",\\\"@checkboxProperty\\\",\\\"@editingCount\\\",\\\"@hideDetail\\\",\\\"@hideLines\\\",\\\"@onChange\\\"],[[30,3],[30,0,[\\\"siblingsList\\\"]],[30,4],[30,5],[30,6],[30,7],[30,8],[30,0,[\\\"editingCount\\\"]],[30,10],[28,[37,9],[[30,0,[\\\"parentsList\\\",\\\"length\\\"]]],null],[30,9]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[18,24,[[30,20]]],[1,\\\"\\\\n        \\\"]],[20]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"otherBeneficiariesList\\\",\\\"length\\\"]],[[[1,\\\"      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,2],[14,0,\\\"family-tree-beneficiary\\\"],[12],[1,\\\"\\\\n        Other relevant people:\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[42,[28,[37,5],[[28,[37,5],[[30,0,[\\\"otherBeneficiariesList\\\"]]],null]],null],null,[[[41,[28,[37,11],[[28,[37,12],[[30,21,[\\\"type\\\"]],\\\"organisation\\\"],null],[30,22]],null],[[[1,\\\"        \\\"],[10,0],[12],[1,\\\"\\\\n          \\\"],[8,[39,6],null,[[\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\",\\\"@disableDeceasedPeople\\\",\\\"@disableEditing\\\",\\\"@displayOnly\\\",\\\"@checkboxProperty\\\",\\\"@editingCount\\\",\\\"@onChange\\\",\\\"@hideDetail\\\"],[[30,3],[30,21],[30,4],[30,5],[30,6],[30,7],[30,8],[30,0,[\\\"editingCount\\\"]],[30,9],[30,10]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[18,24,[[30,23]]],[1,\\\"\\\\n          \\\"]],[23]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[21]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@label\\\",\\\"parent\\\",\\\"@clientRecord\\\",\\\"@adminMode\\\",\\\"@disableDeceasedPeople\\\",\\\"@disableEditing\\\",\\\"@displayOnly\\\",\\\"@checkboxProperty\\\",\\\"@onChange\\\",\\\"@hideDetail\\\",\\\"@previousChildParent\\\",\\\"item\\\",\\\"@excludeTopLevel\\\",\\\"parent\\\",\\\"item\\\",\\\"spouse\\\",\\\"item\\\",\\\"@enableDeceased\\\",\\\"item\\\",\\\"item\\\",\\\"beneficiary\\\",\\\"@enableOrganisations\\\",\\\"item\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"p\\\",\\\"and\\\",\\\"each\\\",\\\"-track-array\\\",\\\"family-tree-leaf\\\",\\\"yield\\\",\\\"family-tree-branch\\\",\\\"not\\\",\\\"br\\\",\\\"or\\\",\\\"not-eq\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/family-tree.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend(_familyTreeGenerator.default, {\n    init() {\n      this._super();\n      const deceased = this.get(\"clientRecord.deceased\");\n      const knownEntities = this.get(\"clientRecord.knownEntities\");\n      if (deceased) {\n        this.createRelationship(deceased, knownEntities);\n        if (deceased.parentOne) {\n          this.set(\"parentsList\", [deceased.parentOne]);\n          if (deceased.parentTwo) {\n            this.parentsList.pushObject(deceased.parentTwo);\n          }\n        }\n        this.set(\"siblingsList\", deceased.siblings);\n        this.set(\"otherBeneficiariesList\", deceased.otherBeneficiaries);\n        this.set(\"topLevelParents\", [deceased]);\n      }\n      const property = this.checkboxProperty;\n      if (property) {\n        const count = this.getEditingCount([deceased], property);\n        (0, _runloop.next)(() => {\n          this.set(\"editingCount\", count);\n        });\n      }\n    },\n    createRelationship(deceased) {\n      const {\n        clientRecord\n      } = this;\n      if (!deceased) {\n        return;\n      }\n      // Add any spouses/children/grandchildren relationships\n      for (let i = 0; deceased.spouses && i < deceased.spouses.length; i++) {\n        const spouseID = deceased.spouses[i];\n        const spouse = clientRecord.getKnownEntity(spouseID);\n        if (!spouse.relationship) {\n          (0, _runloop.next)(() => {\n            // Review screen breaks unless this is here (more than one family tree on a page) //\n            (0, _object.set)(spouse, \"relationship\", \"partner\");\n          });\n        }\n        for (let c = 0; spouse.children && c < spouse.children.length; c++) {\n          const childID = spouse.children[c];\n          const child = clientRecord.getKnownEntity(childID);\n          if (!child.relationship) {\n            (0, _runloop.next)(() => {\n              (0, _object.set)(child, \"relationship\", \"child\");\n            });\n          }\n          for (let gc = 0; child.children && gc < child.children.length; gc++) {\n            const grandchildID = child.children[gc];\n            const grandchild = clientRecord.getKnownEntity(grandchildID);\n            if (!grandchild.relationship) {\n              (0, _runloop.next)(() => {\n                (0, _object.set)(grandchild, \"relationship\", \"grandchild\");\n              });\n            }\n          }\n          for (let cp = 0; child.spouses && cp < child.spouses.length; cp++) {\n            const inLawID = child.spouses[cp];\n            const inLaw = clientRecord.getKnownEntity(inLawID);\n            if (!inLaw.relationship) {\n              let relationshipString = ``;\n              if (child.firstName) {\n                relationshipString += `${child.firstName}`;\n              }\n              if (child.surname) {\n                if (child.firstName) {\n                  relationshipString += ` `;\n                }\n                relationshipString += `${child.surname}`;\n              }\n              if (child.firstName || child.surname) {\n                relationshipString += `'s `;\n              }\n              relationshipString += `partner`;\n              (0, _runloop.next)(() => {\n                (0, _object.set)(inLaw, \"relationship\", relationshipString);\n              });\n            }\n          }\n        }\n        for (let pc = 0; spouse.previousChildren && pc < spouse.previousChildren.length; pc++) {\n          const previousChildID = spouse.previousChildren[pc];\n          const previousChild = clientRecord.getKnownEntity(previousChildID);\n          for (let pgc = 0; previousChild.children && pgc < previousChild.children; pgc++) {\n            const previousGrandChildID = previousChild.children[pgc];\n            const previousGrandChild = clientRecord.getKnownEntity(previousGrandChildID);\n            if (!previousGrandChild.relationship) {\n              (0, _runloop.next)(() => {\n                (0, _object.set)(previousGrandChild, \"relationship\", `grandchild from ${spouse.firstName}'s previous relationship`);\n              });\n            }\n          }\n        }\n      }\n\n      // Add any sibling relationships]\n      for (let i = 0; deceased.siblings && i < deceased.siblings.length; i++) {\n        const siblingID = deceased.siblings[i];\n        const sibling = clientRecord.getKnownEntity(siblingID);\n        if (!sibling.relationship) {\n          (0, _runloop.next)(() => {\n            sibling.relationship = \"sibling\";\n          });\n        }\n      }\n\n      // Add any parent relationships\n      if (deceased.parentOne && deceased.parentOne) {\n        const parentOne = clientRecord.getKnownEntity(deceased.parentOne);\n        (0, _runloop.next)(() => {\n          (0, _object.set)(parentOne, \"relationship\", \"parent\");\n        });\n      }\n      if (deceased.parentTwo && deceased.parentTwo) {\n        const parentTwo = clientRecord.getKnownEntity(deceased.parentTwo);\n        (0, _runloop.next)(() => {\n          (0, _object.set)(parentTwo, \"relationship\", \"parent\");\n        });\n      }\n    }\n  }));\n});","define(\"settify-mvp/components/file-type-thumbnail\", [\"exports\", \"@ember/component\", \"@ember/service\", \"@glimmer/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@glimmer/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.imageUrl}}\n    <img src={{this.imageUrl}} alt=\"{{@extension}} file icon\" ...attributes />\n  {{/if}}\n  */\n  {\n    \"id\": \"Qzea7iqK\",\n    \"block\": \"[[[41,[30,0,[\\\"imageUrl\\\"]],[[[1,\\\"  \\\"],[11,\\\"img\\\"],[16,\\\"src\\\",[30,0,[\\\"imageUrl\\\"]]],[16,\\\"alt\\\",[29,[[30,1],\\\" file icon\\\"]]],[17,2],[12],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@extension\\\",\\\"&attrs\\\"],false,[\\\"if\\\",\\\"img\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/file-type-thumbnail.hbs\",\n    \"isStrictMode\": false\n  });\n  let FileTypeThumbnailComponent = _exports.default = (_class = class FileTypeThumbnailComponent extends _component2.default {\n    constructor() {\n      super(...arguments);\n      _initializerDefineProperty(this, \"dynamicConfig\", _descriptor, this);\n      this._supportedExtensions = [\"pdf\", \"docx\", \"xlsx\", \"doc\", \"xls\", \"csv\", \"jpg\", \"jpeg\", \"png\", \"gif\", \"tif\", \"tiff\", \"mp3\", \"mp4\", \"mov\"];\n    }\n    get imageUrl() {\n      if (this._supportedExtensions.includes(this.args?.extension)) {\n        return this.dynamicConfig.getS3UrlForBucket(\"assets\", `icons/fileicons/${this.args.extension}.png`);\n      }\n      return false;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"dynamicConfig\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, FileTypeThumbnailComponent);\n});","define(\"settify-mvp/components/file-virus-scan-status\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember/service\", \"@ember/template-factory\"], function (_exports, _component, _object, _service, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\",0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"malware-scan-wrapper\">\n    {{#if (has-block)}}\n      {{yield this.displayStatus.fileIsSafe}}\n    {{/if}}\n  \n    {{#if this.displayStatus.message}}\n      <small class=\"malware-scan-status\">\n        {{#if this.displayStatus.icon}}\n          <i class=\"tight fal {{this.displayStatus.icon}}\" aria-hidden=\"true\"/>\n        {{/if}}\n        {{this.displayStatus.message}}\n      </small>\n    {{/if}}\n  </div>\n  \n  */\n  {\n    \"id\": \"L8drCQ6T\",\n    \"block\": \"[[[10,0],[14,0,\\\"malware-scan-wrapper\\\"],[12],[1,\\\"\\\\n\\\"],[41,[48,[30,1]],[[[1,\\\"    \\\"],[18,1,[[30,0,[\\\"displayStatus\\\",\\\"fileIsSafe\\\"]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"displayStatus\\\",\\\"message\\\"]],[[[1,\\\"    \\\"],[10,\\\"small\\\"],[14,0,\\\"malware-scan-status\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"displayStatus\\\",\\\"icon\\\"]],[[[1,\\\"        \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"tight fal \\\",[30,0,[\\\"displayStatus\\\",\\\"icon\\\"]]]]],[14,\\\"aria-hidden\\\",\\\"true\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[1,[30,0,[\\\"displayStatus\\\",\\\"message\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[13],[1,\\\"\\\\n\\\"]],[\\\"&default\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"has-block\\\",\\\"yield\\\",\\\"small\\\",\\\"i\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/file-virus-scan-status.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({\n    firm: (0, _service.inject)(),\n    lambda: (0, _service.inject)(),\n    eventLogging: (0, _service.inject)(),\n    // Component configuration properties\n    maxRetries: 3,\n    retryBackoffIntervalMs: 5000,\n    // didReceiveAttrs is called every time the component's attributes are updated\n    didReceiveAttrs() {\n      this._super(...arguments);\n      return this.scanFile();\n    },\n    scanFile(retryCount = 0) {\n      const {\n        bucket,\n        key\n      } = this;\n      if (!bucket || !key) {\n        return;\n      }\n      this.set(\"scanStatus\", \"scanning\");\n      this.lambda.invoke(this.get(\"lambda.getFileUploadVirusStatusLambda\"), {\n        firmID: this.get(\"firm.id\"),\n        s3Data: [{\n          bucketName: bucket,\n          key\n        }]\n      }).then(this.lambda.processResponse).then(({\n        s3Result\n      }) => {\n        const {\n          virusScanStatus\n        } = s3Result.find(result => result.key === key) || {};\n        this.handleScanResult(virusScanStatus, retryCount);\n      }).catch(err => {\n        // Error checking virus status. Let's assume it isn't safe\n        this.eventLogging.logError(`Failed to fetch virus status`, err);\n        this.set(\"scanStatus\", \"unknown\");\n      });\n    },\n    handleScanResult(virusScanStatus, retryCount) {\n      if (virusScanStatus === \"unknown\" && retryCount < this.maxRetries) {\n        // If virus status is \"unknown\" and within the retry limit, initiate a retry\n        return this.retryScanFile(retryCount);\n      }\n\n      // Set the scanStatus to the received virusScanStatus\n      this.set(\"scanStatus\", virusScanStatus);\n    },\n    retryScanFile(retryCount) {\n      // Retry with an increased retry count and backoff time\n      return this.set(\"retryScanFileTimeout\", setTimeout(() => this.scanFile(retryCount + 1), this.retryBackoffIntervalMs * (retryCount + 1)));\n    },\n    displayStatus: (0, _object.computed)(\"scanStatus\", function () {\n      const statusMap = {\n        scanning: {\n          icon: \"fa-file-shield\",\n          message: \"We're currently scanning this file for malware. This may take a few minutes.\",\n          fileIsSafe: false\n        },\n        infected: {\n          icon: \"fa-shield-virus\",\n          message: \"This file is compromised by malware. Please upload a different file.\",\n          fileIsSafe: false\n        },\n        unknown: {\n          icon: \"fa-file-shield\",\n          message: \"File malware status unknown. Check back later or consider an alternative upload.\",\n          fileIsSafe: false\n        },\n        clean: {\n          fileIsSafe: true\n        },\n        default: {\n          fileIsSafe: false\n        }\n      };\n      return statusMap[this.scanStatus] || statusMap.default;\n    }),\n    willDestroyElement() {\n      this._super(...arguments);\n\n      // Cleanup the timer when the component is destroyed or when the client leaves the route\n      const retryTimeout = this.retryScanFileTimeout;\n      if (retryTimeout) {\n        clearTimeout(retryTimeout);\n      }\n    }\n  }));\n});","define(\"settify-mvp/components/form-safety-check\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/utils\", \"@ember/object\", \"settify-mvp/helpers/parse-text\", \"@ember/template-factory\"], function (_exports, _component, _component2, _tracking, _utils, _object, _parseText, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@glimmer/tracking\",0,\"@ember/utils\",0,\"@ember/object\",0,\"settify-mvp/helpers/parse-text\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <LiquidIf @predicate={{or this.safetyCheckLoading this.questionsToCheck.length}}>\n    <h2 class=\"clickable\" {{on \"click\" this.toggleSafetyCheck}}>\n      <i class=\"fal fa-chevron-right {{if this.openSafetyCheck 'fa-rotate-90'}}\" />\n      Safety check\n      <small>({{this.questionsToCheck.length}} missing questions)</small>\n    </h2>\n  \n    <LiquidIf @predicate={{this.openSafetyCheck}}>\n      <div class=\"index-focusarea\">\n        <p>\n          The following questions from the induction do not appear to be included in the firm-facing brief. Accordingly, it is possible that information supplied by a client might\n          not be shown to a lawyer. You can quickly add a question to the brief by clicking \"Add\", or if you've omitted it on purpose, simply click \"Ignore\". Once you've marked each\n          question, click \"Confirm safety check and apply changes\n        </p>\n        <LiquidIf @predicate={{this.safetyCheckLoading}}>\n          <LoadingSpinner />\n        </LiquidIf>\n        <LiquidIf @predicate={{and (not this.safetyCheckLoading) this.questionsToCheck.length}}>\n          <table class=\"custom-summary-safety-check\">\n            <tbody>\n              {{#each this.questionsToCheck as |question|}}\n                <tr>\n                  <td>\n                    {{question.contextID}}\n                  </td>\n                  <td>\n                    <RadioButtons @unselectable={{true}} @value=\"add\" @model={{question.addOrIgnore}}>\n                      Add\n                      <i class=\"fal fa-plus tight\" />\n                    </RadioButtons>\n                  </td>\n                  <td>\n                    <RadioButtons @unselectable={{true}} @value=\"ignore\" @model={{question.addOrIgnore}}>\n                      Ignore\n                      <i class=\"fal fa-trash-alt tight\" />\n                    </RadioButtons>\n                  </td>\n                </tr>\n              {{/each}}\n            </tbody>\n          </table>\n          <button type=\"button\" class=\"next-button\" {{on \"click\" this.confirmCheckCompleted}}>\n            Confirm safety check and apply changes\n            <i class=\"fal fa-check\"></i>\n          </button>\n        </LiquidIf>\n      </div>\n    </LiquidIf>\n  </LiquidIf>\n  */\n  {\n    \"id\": \"SoCtV/4g\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@predicate\\\"],[[28,[37,1],[[30,0,[\\\"safetyCheckLoading\\\"]],[30,0,[\\\"questionsToCheck\\\",\\\"length\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[11,\\\"h2\\\"],[24,0,\\\"clickable\\\"],[4,[38,3],[\\\"click\\\",[30,0,[\\\"toggleSafetyCheck\\\"]]],null],[12],[1,\\\"\\\\n    \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-chevron-right \\\",[52,[30,0,[\\\"openSafetyCheck\\\"]],\\\"fa-rotate-90\\\"]]]],[12],[13],[1,\\\"\\\\n    Safety check\\\\n    \\\"],[10,\\\"small\\\"],[12],[1,\\\"(\\\"],[1,[30,0,[\\\"questionsToCheck\\\",\\\"length\\\"]]],[1,\\\" missing questions)\\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[8,[39,0],null,[[\\\"@predicate\\\"],[[30,0,[\\\"openSafetyCheck\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"index-focusarea\\\"],[12],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        The following questions from the induction do not appear to be included in the firm-facing brief. Accordingly, it is possible that information supplied by a client might\\\\n        not be shown to a lawyer. You can quickly add a question to the brief by clicking \\\\\\\"Add\\\\\\\", or if you've omitted it on purpose, simply click \\\\\\\"Ignore\\\\\\\". Once you've marked each\\\\n        question, click \\\\\\\"Confirm safety check and apply changes\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,0],null,[[\\\"@predicate\\\"],[[30,0,[\\\"safetyCheckLoading\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[39,9],null,null,null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[39,0],null,[[\\\"@predicate\\\"],[[28,[37,10],[[28,[37,11],[[30,0,[\\\"safetyCheckLoading\\\"]]],null],[30,0,[\\\"questionsToCheck\\\",\\\"length\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,\\\"table\\\"],[14,0,\\\"custom-summary-safety-check\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,15],[[28,[37,15],[[30,0,[\\\"questionsToCheck\\\"]]],null]],null],null,[[[1,\\\"              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[1,[30,1,[\\\"contextID\\\"]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,18],null,[[\\\"@unselectable\\\",\\\"@value\\\",\\\"@model\\\"],[true,\\\"add\\\",[30,1,[\\\"addOrIgnore\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    Add\\\\n                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus tight\\\"],[12],[13],[1,\\\"\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,18],null,[[\\\"@unselectable\\\",\\\"@value\\\",\\\"@model\\\"],[true,\\\"ignore\\\",[30,1,[\\\"addOrIgnore\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    Ignore\\\\n                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-trash-alt tight\\\"],[12],[13],[1,\\\"\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[11,\\\"button\\\"],[24,0,\\\"next-button\\\"],[24,4,\\\"button\\\"],[4,[38,3],[\\\"click\\\",[30,0,[\\\"confirmCheckCompleted\\\"]]],null],[12],[1,\\\"\\\\n          Confirm safety check and apply changes\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"question\\\"],false,[\\\"liquid-if\\\",\\\"or\\\",\\\"h2\\\",\\\"on\\\",\\\"i\\\",\\\"if\\\",\\\"small\\\",\\\"div\\\",\\\"p\\\",\\\"loading-spinner\\\",\\\"and\\\",\\\"not\\\",\\\"table\\\",\\\"tbody\\\",\\\"each\\\",\\\"-track-array\\\",\\\"tr\\\",\\\"td\\\",\\\"radio-buttons\\\",\\\"button\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/form-safety-check.hbs\",\n    \"isStrictMode\": false\n  });\n  let FormSafetyCheckComponent = _exports.default = (_class = class FormSafetyCheckComponent extends _component2.default {\n    constructor(owner, args) {\n      super(owner, args);\n      _defineProperty(this, \"questionTypesToIgnore\", [\"paragraph\", \"heading\", \"link\", \"divider\", \"documentsRequiredList\"]);\n      _defineProperty(this, \"extraInformationHeading\", {\n        id: \"extraInformationHeading\",\n        type: \"heading\",\n        title: \"Extra Information\",\n        content: \"Extra Information\",\n        includeInFirmSummary: true\n      });\n      _initializerDefineProperty(this, \"safetyCheckLoading\", _descriptor, this);\n      _initializerDefineProperty(this, \"questionsToCheck\", _descriptor2, this);\n      _initializerDefineProperty(this, \"openSafetyCheck\", _descriptor3, this);\n      this.safetyCheck();\n    }\n    safetyCheck() {\n      this.safetyCheckLoading = true;\n      let inductionQuestionsToCheck = [];\n      for (const induction of this.args.inductions) {\n        if (induction.useCustomDefinition && induction.firmSummary && induction.firmSummary.customDefinition) {\n          inductionQuestionsToCheck = inductionQuestionsToCheck.concat(this.inductionSafetyCheck(induction));\n        }\n      }\n      this.questionsToCheck = inductionQuestionsToCheck;\n      this.safetyCheckLoading = false;\n    }\n    inductionSafetyCheck(induction) {\n      let questionsMissingFromCustomSummary = [];\n      const customFirmSummary = induction.firmSummary.customDefinition;\n      const idLookup = this.buildIDLookup(induction, customFirmSummary);\n      for (const chapter of induction.chapters) {\n        for (const page of chapter.pages) {\n          for (const question of page.questions) {\n            const questionsMissing = this.questionSafetyCheck(induction, chapter, page, question, idLookup);\n            questionsMissingFromCustomSummary = questionsMissingFromCustomSummary.concat(questionsMissing);\n          }\n        }\n      }\n      return questionsMissingFromCustomSummary;\n    }\n    questionSafetyCheck(induction, chapter, page, question, idLookup) {\n      let questionsMissing = [];\n      if (question.lastSafetyCheckRun && question.lastSafetyCheckRun > question.created || this.questionTypesToIgnore.includes(question.type) || question.deleted) {\n        // We have previously ignored this question, or it's a paragraph so no need for it to be in the summary, or its disabled\n        return questionsMissing;\n      }\n      if (question.content && Array.isArray(question.content)) {\n        // Check the content of questions that have it\n        for (const content of question.content) {\n          if (question.type !== \"block\") {\n            content.listID = question.id;\n          }\n          const questionsInContent = this.questionSafetyCheck(induction, chapter, page, content, idLookup);\n          questionsMissing = questionsMissing.concat(questionsInContent);\n        }\n      }\n      if (question.askFor) {\n        // For S-or-C's\n        for (const key of Object.keys(question.askFor)) {\n          const contextID = this.buildContextID(chapter.id, page.id, question.id, question.askFor[key], page.answersLocation);\n          if (!idLookup[contextID] && !idLookup[question.id]) {\n            questionsMissing.push({\n              question,\n              contextID,\n              induction: induction.id\n            });\n          }\n        }\n      }\n      if (![\"selectorcreate\", \"block\"].includes(question.type)) {\n        // No need to check the ID of a select or create (we should be referencing inner properties somewhere)\n        const contextID = this.buildContextID(chapter.id, page.id, question.id, null, page.answersLocation, question.listID);\n        if (!idLookup[contextID] && !idLookup[question.id]) {\n          questionsMissing.push({\n            question,\n            contextID,\n            induction: induction.id\n          });\n        }\n      }\n      if (question.notSureOption) {\n        const notSureSuffix = `-${question.notSureOptionLocationSuffix || \"notsure\"}`;\n        const contextID = this.buildContextID(chapter.id, page.id, question.id, null, page.answersLocation, question.listID) + notSureSuffix;\n        if (!idLookup[contextID] && !idLookup[question.id + notSureSuffix]) {\n          questionsMissing.push({\n            question,\n            contextID,\n            induction: induction.id\n          });\n        }\n      }\n      return questionsMissing;\n    }\n    buildContextID(chapter, page, question, subquestion, answersLocation, listID) {\n      const components = [answersLocation, answersLocation ? \"\" : chapter, answersLocation ? \"\" : page, listID, question, subquestion];\n      return components.filter(e => e).join(\".\");\n    }\n    buildIDLookup(induction, customSummary) {\n      let idLookup = {};\n      for (let elIdx = 0; elIdx < customSummary.length; elIdx++) {\n        let customElement = customSummary[elIdx];\n        const customElementType = this.getElementType(customElement);\n        if ([\"loopedPage\", \"page\"].includes(customElementType)) {\n          // Get the actual page from the induction\n          const pageElement = this.findElementInInduction(induction, customElement.id);\n          // Need to check each question on the page\n          if (pageElement) {\n            const pageLookup = this.buildIDLookupForPage(pageElement);\n            idLookup = Object.assign(idLookup, pageLookup);\n          }\n        } else if ([\"question\", \"questionDefinition\"].includes(customElementType)) {\n          if (customElementType === \"question\") {\n            // Get the actual question object\n            customElement = this.findElementInInduction(induction, customElement.id);\n          }\n          const questionLookup = this.buildIDLookupForQuestion(customElement);\n          idLookup = Object.assign(idLookup, questionLookup);\n        }\n        // Ignore elementTypes: newSummaryElement, chapterHeading, pageHeading\n      }\n      return idLookup;\n    }\n    findElementInInduction(induction, elementID) {\n      let output;\n      const [chapter, page, question] = elementID.split(\".\");\n      if (chapter && induction.chapters) {\n        output = induction.chapters.find(c => c.id === chapter);\n      }\n      if (output && output.pages && page) {\n        output = output.pages.find(p => p.id === page);\n      }\n      if (output && output.questions && question) {\n        output = output.questions.find(q => q.id === question);\n      }\n      return output;\n    }\n    buildIDLookupForPage(page) {\n      let idLookup = {};\n      for (const question of page.questions) {\n        const questionLookup = this.buildIDLookupForQuestion(question);\n        idLookup = Object.assign(idLookup, questionLookup);\n      }\n      return idLookup;\n    }\n    buildIDLookupForQuestion(question) {\n      let idLookup = {};\n      // There may be IDs in displayIfs that we want to mark as 'in the summary'\n      // There may be PT blocks in the question text/content, we want to mark those as 'In the summary'\n      // Since we often hack sections using paragraphs with PTs in them.\n      // There may also be references to variables in summaryTables we want to capture\n\n      idLookup[question.id] = true; // Mark the question itself as true\n\n      // Check it's displayIf\n      if (question.displayIf && !(0, _utils.isEmpty)(question.displayIf)) {\n        const displayIfLookup = this.buildIDLookupDisplayIf(question.displayIf);\n        idLookup = Object.assign(idLookup, displayIfLookup);\n      }\n\n      // Check summaryTables\n      if (question.type === \"summaryTable\") {\n        for (let colIdx = 0; colIdx < question.columns.length; colIdx++) {\n          // Check any PTs in column headings\n          const column = question.columns[colIdx];\n          if (column.value && column.value.match(/{[^}]+}/gi)) {\n            const columnLookup = this.buildIDLookupForText(column.value);\n            idLookup = Object.assign(idLookup, columnLookup);\n          }\n        }\n        for (let rowIdx = 0; rowIdx < question.rows.length; rowIdx++) {\n          // Check sourceData as well as PT values\n          const row = question.rows[rowIdx];\n          if (row.sourceData) {\n            idLookup[row.sourceData] = true;\n          }\n          if (row.displayIf) {\n            const displayIfLookup = this.buildIDLookupDisplayIf(row.displayIf);\n            idLookup = Object.assign(idLookup, displayIfLookup);\n          }\n          for (let colIdx = 0; colIdx < row.columns.length; colIdx++) {\n            const rowCol = row.columns[colIdx];\n            if (rowCol.value) {\n              if (row.sourceData && rowCol.value.includes(\"model\")) {\n                rowCol.value = rowCol.value.replace(/model/g, row.sourceData); // Change model.firstName to sourceData.firstName\n              }\n              const rowColLookup = this.buildIDLookupForText(rowCol.value);\n              idLookup = Object.assign(idLookup, rowColLookup);\n            }\n          }\n        }\n      }\n\n      // Check any PTs in parts of the question\n      if (question.content && typeof question.content === \"string\") {\n        const textLookup = this.buildIDLookupForText(question.content);\n        idLookup = Object.assign(idLookup, textLookup);\n      }\n      if (question.title) {\n        const textLookup = this.buildIDLookupForText(question.title);\n        idLookup = Object.assign(idLookup, textLookup);\n      }\n      return idLookup;\n    }\n    buildIDLookupForText(text) {\n      const idLookup = {};\n      const expressions = text.match(/{[^}]+}/gi);\n      for (let eIdx = 0; expressions && eIdx < expressions.length; eIdx++) {\n        const originalExpression = expressions[eIdx];\n        // Trim the curly braces\n        const expression = originalExpression.replace(/(^{)|(}$)/g, \"\");\n\n        // Split into filters\n        const blocks = expression.split(/\\s*\\|\\s*/g);\n        const firstSection = blocks[0];\n        const allowedFilters = [\"get\", \"filterby\"];\n        for (let bIdx = 0; blocks && bIdx < blocks.length; bIdx++) {\n          const section = blocks[bIdx];\n          const pt = _parseText.default.create();\n          const filters = pt.compute([], {\n            getFilters: true\n          }).map(f => f.reference).filter(ref => !allowedFilters.includes(ref));\n          if (!filters.includes(section) && !section.match(/^if/)) {\n            if (section.split(\" \").any(text => allowedFilters.includes(text))) {\n              // Get and filterby are always formatted as get/filterby ID\n              idLookup[`${firstSection}.${section.split(\" \")[1]}`] = true;\n            }\n            // It's not a filter, assume it's an ID\n            // TODO: Filter out NonIDs via a regex? This is kinda tricky since they are just text, and could theoretically just be {text}\n            idLookup[section] = true;\n          }\n        }\n      }\n      return idLookup;\n    }\n    buildIDLookupDisplayIf(displayIf) {\n      let idLookup = {};\n      for (let dIdx = 0; dIdx < Object.keys(displayIf).length; dIdx++) {\n        let key = Object.keys(displayIf)[dIdx];\n        if (typeof displayIf[key] === \"object\") {\n          const innerLookup = this.buildIDLookupDisplayIf(displayIf[key]);\n          idLookup = Object.assign(idLookup, innerLookup);\n        } else {\n          // Strip off shortcut codes, peopleOperators, and any helpers on the displayIf key\n          const shortcutCode = key.match(/(.*):(and|or|not|any|all|notany|lessthan|greaterthan|lessthanorequal|greaterthanorequal)$/);\n          if (shortcutCode) {\n            key = shortcutCode[1];\n          }\n          const peopleOperator = key.match(/(.*):(@every|@all|@any|@some|@this)/);\n          if (peopleOperator) {\n            // We have an operator to look through knownEntities for values\n            key = key.replace(/:(@every|@all|@any|@some|@this)/, \"\");\n          }\n          const shouldCalculateAge = key.match(/(\\w+(?:\\.\\w+)*)\\.calculateAge/);\n          if (shouldCalculateAge) {\n            key = key.replace(/(\\w+(?:\\.\\w+)*)\\.calculateAge/, \"\");\n          }\n          const calculateTimeSinceMatches = key.match(/(\\w+(?:\\.\\w+)*)\\.yearsSince/);\n          if (calculateTimeSinceMatches) {\n            key = key.replace(/(\\w+(?:\\.\\w+)*)\\.yearsSince/, \"\");\n          }\n          const referencingDisplayIf = key.match(/(.*):shouldDisplay$/);\n          if (referencingDisplayIf) {\n            key = key.replace(/(.*):shouldDisplay$/, \"\");\n          }\n          idLookup[key] = true;\n        }\n      }\n      return idLookup;\n    }\n    getElementType(element) {\n      if (element.isNewElement) {\n        return \"newSummaryElement\";\n      }\n      if (element.type) {\n        return \"questionDefinition\";\n      }\n      if (element.loopedPage) {\n        return \"loopedPage\";\n      }\n      if (/^standalone\\..+/.test(element.id)) {\n        return \"page\";\n      }\n      const numberOfPartsInId = element.id.split(\".\").length;\n      if (numberOfPartsInId === 1) {\n        return \"chapterHeading\";\n      } else if (numberOfPartsInId === 2) {\n        return \"pageHeading\";\n      }\n      return \"question\";\n    }\n    addQuestionToSummary(question, inductionID) {\n      const inductionToAddTo = this.args.inductions.find(i => i.id === inductionID);\n      let customSummary = inductionToAddTo.firmSummary.customDefinition;\n      const hasExtraInformationHeading = customSummary.some(el => el.id === this.extraInformationHeading.id);\n      if (hasExtraInformationHeading) {\n        customSummary.push({\n          id: question,\n          isNewElement: false\n        });\n      } else {\n        customSummary = customSummary.concat([this.extraInformationHeading, {\n          id: question,\n          isNewElement: false\n        }]);\n      }\n      (0, _object.set)(inductionToAddTo, \"firmSummary.customDefinition\", customSummary);\n    }\n    ignoreQuestionFromSummary(question) {\n      (0, _object.set)(question, \"lastSafetyCheckRun\", Date.now());\n    }\n    confirmCheckCompleted() {\n      const toCheck = this.questionsToCheck;\n      const notMarkedAddOrIgnore = [];\n      while (toCheck && toCheck.length) {\n        const question = toCheck.shift();\n        if (question.addOrIgnore === \"add\") {\n          this.addQuestionToSummary(question.contextID, question.induction);\n        } else if (question.addOrIgnore === \"ignore\") {\n          this.ignoreQuestionFromSummary(question.question);\n        } else {\n          notMarkedAddOrIgnore.push(question);\n        }\n      }\n      this.questionsToCheck = notMarkedAddOrIgnore;\n    }\n    toggleSafetyCheck() {\n      this.openSafetyCheck = !this.openSafetyCheck;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"safetyCheckLoading\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"questionsToCheck\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return [];\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"openSafetyCheck\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"confirmCheckCompleted\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"confirmCheckCompleted\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"toggleSafetyCheck\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleSafetyCheck\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, FormSafetyCheckComponent);\n});","define(\"settify-mvp/components/formatted-number\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember/runloop\", \"@ember/utils\", \"settify-mvp/utils/clamp-value\", \"@ember/object/internals\"], function (_exports, _component, _object, _runloop, _utils, _clampValue, _internals) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\",0,\"@ember/object\",0,\"@ember/runloop\",0,\"@ember/utils\",0,\"settify-mvp/utils/clamp-value\",0,\"@ember/object/internals\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    originalValue: \"\",\n    tagName: \"\",\n    uniqueID: null,\n    init() {\n      this._super(...arguments);\n      this.set(\"value\", this.numberToString(this.realValue));\n      this.set(\"rangeWarningSuggestion\", undefined);\n      this.set(\"uniqueID\", this.id ?? `formatted-number-${(0, _internals.guidFor)(this)}`);\n    },\n    numberToString(value) {\n      if (isNaN(value) || (0, _utils.isNone)(value)) {\n        return \"\";\n      }\n      let prefix = this.money ? \"$\" : \"\";\n      if (value < 0) {\n        prefix = `-${prefix}`;\n      }\n      const stringVal = prefix + Math.abs(value).toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n      return stringVal;\n    },\n    didInsertElement() {\n      this._super(...arguments);\n      document.querySelector(`#${this.uniqueID}`).addEventListener(\"blur\", event => {\n        event.stopPropagation();\n        this.copyValueToRealValue();\n      });\n    },\n    willDestroyElement() {\n      this._super(...arguments);\n      const db = this.debounceID;\n      (0, _runloop.cancel)(db);\n    },\n    copyValueToRealValue() {\n      const {\n        value\n      } = this;\n      if (typeof value !== \"string\") {\n        if ((0, _utils.isNone)(value)) {\n          this.set(\"realValue\", undefined);\n        }\n        return;\n      }\n      let numberValue = parseInt(value.toString().replace(/[,$]/g, \"\"), 10);\n      if (isNaN(numberValue)) {\n        this.set(\"realValue\", undefined);\n        this.set(\"rangeWarningSuggestion\", undefined);\n      } else {\n        numberValue = (0, _clampValue.default)(numberValue, this.min, this.max, this.assumeTwoDigitYears);\n        this.set(\"realValue\", numberValue);\n        if (numberValue < this.suggestedMillionsThreshold) {\n          this.set(\"rangeWarningSuggestion\", numberValue * 1000000);\n        } else if (numberValue < this.suggestedThousandsThreshold) {\n          this.set(\"rangeWarningSuggestion\", numberValue * 1000);\n        } else {\n          // valid!\n          this.set(\"rangeWarningSuggestion\", undefined);\n        }\n      }\n      this.set(\"value\", this.numberToString(this.realValue));\n    },\n    debounceHandler() {\n      if (this.displayWarning === false) {\n        this.copyValueToRealValue();\n      }\n    },\n    onInputChanged: (0, _object.observer)(\"value\", function () {\n      const v = this.value;\n      if (!v || !v.toString) {\n        return;\n      }\n      const numberValue = Number(v.toString().replace(/[,$]/g, \"\"));\n      if (isNaN(numberValue)) {\n        this.set(\"displayWarning\", true);\n      } else {\n        this.set(\"displayWarning\", false);\n      }\n      (0, _runloop.next)(() => {\n        const db = (0, _runloop.debounce)(this, \"debounceHandler\", 1500);\n        this.set(\"debounceID\", db);\n      });\n    }),\n    onRealValueChanged: (0, _object.observer)(\"realValue\", function () {\n      this.set(\"value\", this.numberToString(this.realValue));\n    }),\n    resetField: (0, _object.observer)(\"parentObject\", function () {\n      if (this.realValue === undefined) {\n        this.set(\"value\", undefined);\n      }\n    })\n  });\n});","define(\"settify-mvp/components/free-list\", [\"exports\", \"@ember/component\", \"@ember/object/computed\", \"@ember/object\", \"settify-mvp/utils/defaults-object-initializer\", \"settify-mvp/mixins/settify-input-mixin\", \"settify-mvp/mixins/remove-empty-items\", \"@ember/template-factory\"], function (_exports, _component, _computed, _object, _defaultsObjectInitializer, _settifyInputMixin, _removeEmptyItems, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object/computed\",0,\"@ember/component\",0,\"@ember/object\",0,\"settify-mvp/utils/defaults-object-initializer\",0,\"settify-mvp/mixins/settify-input-mixin\",0,\"settify-mvp/mixins/remove-empty-items\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (non-empty-string @label)}}\n    <p style={{unless @displayOnly '\"margin-bottom: -0.5em;\"'}}>\n      {{@label}}\n      <HelpTextIcon @helpText={{@helpText}} @displayOnly={{@displayOnly}} @lawyerName={{@clientRecord.helpTextIconLawyerName}} />\n      <br />\n    </p>\n  {{/if}}\n  \n  {{#if @displayOnly}}\n    {{#each this.allItems as |item index|}}\n      {{yield item index}}\n    {{/each}}\n  {{else}}\n    <LiquidSpacer>\n      {{#each this.allItems as |item index|}}\n        {{#if (has-block)}}\n          <div class={{unless @noBorder \"free-list-block\"}} style={{if (eq index this.lastIndex) \"margin-bottom: 0.3em;\"}}>\n            {{yield item index}}\n            {{#unless @immutableList}}\n              <LiquidIf @predicate={{or (gt this.allItems.length 1) (not @preventEmptyLists)}}>\n                <a class=\"clickable free-list-remove\" {{action \"showDeleteConfirmation\" item}}>\n                  <i class=\"fal fa-times-circle clickable icon-delete\" />\n                  Remove this\n                  {{#if @itemName}}\n                    {{@itemName}}\n                  {{else}}\n                    item\n                  {{/if}}\n                </a>\n              </LiquidIf>\n              <LiquidIf @predicate={{eq this.showDeleteConfirmationObject item}}>\n                Are you sure you want to remove this\n                {{#if @itemName}}\n                  {{@itemName}}?\n                {{else}}\n                  item?\n                {{/if}}\n                <br />\n                <a class=\"clickable\" {{action \"removeItem\" item}}>Yes</a>\n                <br />\n                <a class=\"clickable\" {{action \"hideDeleteConfirmation\"}}>No</a>\n              </LiquidIf>\n            {{/unless}}\n          </div>\n        {{else}}\n          <div class=\"free-list-placeholder\">\n            <SettifyTextline @model={{item.name}} @placeholder={{or @placeholder \"Describe the item\"}} @displayOnly={{@displayOnly}} />\n          </div>\n          <i class=\"fal fa-times-circle clickable icon-delete align-middle\" {{action \"removeItem\" item}} />\n        {{/if}}\n      {{/each}}\n    </LiquidSpacer>\n  {{/if}}\n  \n  {{#unless (or @immutableList @displayOnly)}}\n    <div>\n      <button type=\"button\" {{action \"addItem\"}} class=\"clickable plain-button free-list-add\">\n        <i class=\"fal fa-plus-circle\"></i>\n        Add another\n        {{#if @itemName}}\n          {{@itemName}}\n        {{else}}\n          item\n        {{/if}}\n      </button>\n    </div>\n  {{/unless}}\n  */\n  {\n    \"id\": \"0ICz4rKx\",\n    \"block\": \"[[[41,[28,[37,1],[[30,1]],null],[[[1,\\\"  \\\"],[10,2],[15,5,[52,[51,[30,2]],\\\"\\\\\\\"margin-bottom: -0.5em;\\\\\\\"\\\"]],[12],[1,\\\"\\\\n    \\\"],[1,[30,1]],[1,\\\"\\\\n    \\\"],[8,[39,4],null,[[\\\"@helpText\\\",\\\"@displayOnly\\\",\\\"@lawyerName\\\"],[[30,3],[30,2],[30,4,[\\\"helpTextIconLawyerName\\\"]]]],null],[1,\\\"\\\\n    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,2],[[[42,[28,[37,7],[[28,[37,7],[[30,0,[\\\"allItems\\\"]]],null]],null],null,[[[1,\\\"    \\\"],[18,14,[[30,5],[30,6]]],[1,\\\"\\\\n\\\"]],[5,6]],null]],[]],[[[1,\\\"  \\\"],[8,[39,9],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,7],[[28,[37,7],[[30,0,[\\\"allItems\\\"]]],null]],null],null,[[[41,[48,[30,14]],[[[1,\\\"        \\\"],[10,0],[15,0,[52,[51,[30,9]],\\\"free-list-block\\\"]],[15,5,[52,[28,[37,12],[[30,8],[30,0,[\\\"lastIndex\\\"]]],null],\\\"margin-bottom: 0.3em;\\\"]],[12],[1,\\\"\\\\n          \\\"],[18,14,[[30,7],[30,8]]],[1,\\\"\\\\n\\\"],[41,[51,[30,10]],[[[1,\\\"            \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[28,[37,14],[[28,[37,15],[[30,0,[\\\"allItems\\\",\\\"length\\\"]],1],null],[28,[37,16],[[30,11]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[11,3],[24,0,\\\"clickable free-list-remove\\\"],[4,[38,18],[[30,0],\\\"showDeleteConfirmation\\\",[30,7]],null],[12],[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-times-circle clickable icon-delete\\\"],[12],[13],[1,\\\"\\\\n                Remove this\\\\n\\\"],[41,[30,12],[[[1,\\\"                  \\\"],[1,[30,12]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                  item\\\\n\\\"]],[]]],[1,\\\"              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[28,[37,12],[[30,0,[\\\"showDeleteConfirmationObject\\\"]],[30,7]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              Are you sure you want to remove this\\\\n\\\"],[41,[30,12],[[[1,\\\"                \\\"],[1,[30,12]],[1,\\\"?\\\\n\\\"]],[]],[[[1,\\\"                item?\\\\n\\\"]],[]]],[1,\\\"              \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,18],[[30,0],\\\"removeItem\\\",[30,7]],null],[12],[1,\\\"Yes\\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,18],[[30,0],\\\"hideDeleteConfirmation\\\"],null],[12],[1,\\\"No\\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"free-list-placeholder\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,20],null,[[\\\"@model\\\",\\\"@placeholder\\\",\\\"@displayOnly\\\"],[[30,7,[\\\"name\\\"]],[28,[37,14],[[30,13],\\\"Describe the item\\\"],null],[30,2]]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[11,\\\"i\\\"],[24,0,\\\"fal fa-times-circle clickable icon-delete align-middle\\\"],[4,[38,18],[[30,0],\\\"removeItem\\\",[30,7]],null],[12],[13],[1,\\\"\\\\n\\\"]],[]]]],[7,8]],null],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n\\\"],[41,[51,[28,[37,14],[[30,10],[30,2]],null]],[[[1,\\\"  \\\"],[10,0],[12],[1,\\\"\\\\n    \\\"],[11,\\\"button\\\"],[24,0,\\\"clickable plain-button free-list-add\\\"],[24,4,\\\"button\\\"],[4,[38,18],[[30,0],\\\"addItem\\\"],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle\\\"],[12],[13],[1,\\\"\\\\n      Add another\\\\n\\\"],[41,[30,12],[[[1,\\\"        \\\"],[1,[30,12]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        item\\\\n\\\"]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@label\\\",\\\"@displayOnly\\\",\\\"@helpText\\\",\\\"@clientRecord\\\",\\\"item\\\",\\\"index\\\",\\\"item\\\",\\\"index\\\",\\\"@noBorder\\\",\\\"@immutableList\\\",\\\"@preventEmptyLists\\\",\\\"@itemName\\\",\\\"@placeholder\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"non-empty-string\\\",\\\"p\\\",\\\"unless\\\",\\\"help-text-icon\\\",\\\"br\\\",\\\"each\\\",\\\"-track-array\\\",\\\"yield\\\",\\\"liquid-spacer\\\",\\\"has-block\\\",\\\"div\\\",\\\"eq\\\",\\\"liquid-if\\\",\\\"or\\\",\\\"gt\\\",\\\"not\\\",\\\"a\\\",\\\"action\\\",\\\"i\\\",\\\"settify-textline\\\",\\\"button\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/free-list.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend(_settifyInputMixin.default, _removeEmptyItems.default, {\n    assignUUIDs: true,\n    showDeleteConfirmationObject: null,\n    dereferencedModel: null,\n    init() {\n      this._super();\n      this.defaultsObjectInitializer = new _defaultsObjectInitializer.DefaultsObjectInitializer(this.defaults, this.assignUUIDs);\n      const {\n        model\n      } = this;\n      if (!model) {\n        // improperly prepared list - fix it\n        this.set(\"model\", [this.defaultsObjectInitializer.createDefaultItem()]);\n      } else if (!model.length) {\n        this.model.push(this.defaultsObjectInitializer.createDefaultItem());\n      } else {\n        // check if this is actually an array of people, that we should be dereferencing\n        if (this.immutableList && model.every(o => typeof o === \"string\" && o.length === 36)) {\n          this.set(\"dereferencedModel\", model.map(o => this.clientRecord.getKnownEntity(o)));\n        } else {\n          // assign default properties to any item that doesn't have them\n          for (let i = 0; i < model.length; i++) {\n            this.defaultsObjectInitializer.setDefaults(model[i]);\n          }\n        }\n      }\n    },\n    willDestroyElement() {\n      this._super(...arguments);\n      if (!this.noDestory) {\n        this.removeEmptyModelItems();\n      }\n    },\n    allItems: (0, _computed.or)(\"dereferencedModel\", \"model\"),\n    lastIndex: (0, _object.computed)(\"allItems.length\", function () {\n      return this.get(\"allItems.length\") - 1;\n    }),\n    actions: {\n      addItem() {\n        if (this.model) {\n          this.model.pushObject(this.defaultsObjectInitializer.createDefaultItem());\n        }\n      },\n      removeItem(o) {\n        if (this.model) {\n          this.model.removeObject(o);\n        }\n      },\n      showDeleteConfirmation(o) {\n        this.set(\"showDeleteConfirmationObject\", o);\n      },\n      hideDeleteConfirmation() {\n        this.set(\"showDeleteConfirmationObject\", null);\n      }\n    }\n  }));\n});","define(\"settify-mvp/components/gender-icon\", [\"exports\", \"@ember/component\", \"@ember/service\", \"settify-mvp/mixins/gender-mixin\", \"@ember/template-factory\"], function (_exports, _component, _service, _genderMixin, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@ember/component\",0,\"settify-mvp/mixins/gender-mixin\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.allowGenderPronouns}}\n    <div class=\"letterCircle smallCircle\">{{this.genderLetter}}</div>\n    {{#if @pronouns}}\n      ({{@pronouns}})\n    {{/if}}\n  {{else}}\n    <img class=\"gender-icon\" src={{this.genderIconUrl}} alt=\"{{@gender}} gender icon\">\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"eTQkD1An\",\n    \"block\": \"[[[41,[30,0,[\\\"allowGenderPronouns\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"letterCircle smallCircle\\\"],[12],[1,[30,0,[\\\"genderLetter\\\"]]],[13],[1,\\\"\\\\n\\\"],[41,[30,1],[[[1,\\\"    (\\\"],[1,[30,1]],[1,\\\")\\\\n\\\"]],[]],null]],[]],[[[1,\\\"  \\\"],[10,\\\"img\\\"],[14,0,\\\"gender-icon\\\"],[15,\\\"src\\\",[30,0,[\\\"genderIconUrl\\\"]]],[15,\\\"alt\\\",[29,[[30,2],\\\" gender icon\\\"]]],[12],[13],[1,\\\"\\\\n\\\"]],[]]]],[\\\"@pronouns\\\",\\\"@gender\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"img\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/gender-icon.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend(_genderMixin.default, {\n    firm: (0, _service.inject)(),\n    tagName: \"\",\n    allowGenderPronouns: false,\n    init() {\n      this._super(...arguments);\n      if (this.get(\"practiceAreaSettings.settings.induction.allowGenderPronouns\")) {\n        this.set(\"allowGenderPronouns\", true);\n      }\n    },\n    didReceiveAttrs() {\n      this._super(...arguments);\n      this.updateGender(this.gender);\n    }\n  }));\n});","define(\"settify-mvp/components/help-text-icon\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@glimmer/tracking\", \"@glimmer/component\", \"@ember/template\", \"@ember/template-factory\"], function (_exports, _component, _object, _tracking, _component2, _template, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@glimmer/tracking\",0,\"@glimmer/component\",0,\"@ember/template\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#unless @displayOnly~}}\n    {{~#if (or this.helpText (has-block))~}}\n      {{! MVPTODO: proper implmentation of help text }}\n      <div class=\"help-text-condensed-wrapper\">\n        <CheckBox @class={{sum \"toggle-box inline \" (if this.showHelpText \"selected\")}} @model={{this.showHelpText}}>\n          <span class=\"help-text-icon\">\n            <i class=\"fal fa-question-circle tight\" />\n          </span>\n        </CheckBox>\n      </div>\n      <LiquidIf @predicate={{this.showHelpText}}>\n        <div class=\"help-text-container\">\n          <span class=\"help-text-close-icon\">\n            <i class=\"fal fa-times-circle tight clickable\" {{on \"click\" this.toggle}} />\n          </span>\n          <span class=\"helpText\">{{html-safe this.helpText}}{{yield}}</span>\n        </div>\n      </LiquidIf>\n    {{~/if~}}\n  {{/unless}}\n  */\n  {\n    \"id\": \"hNTGFkhS\",\n    \"block\": \"[[[41,[51,[30,1]],[[[41,[28,[37,2],[[30,0,[\\\"helpText\\\"]],[48,[30,2]]],null],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"help-text-condensed-wrapper\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,5],null,[[\\\"@class\\\",\\\"@model\\\"],[[28,[37,6],[\\\"toggle-box inline \\\",[52,[30,0,[\\\"showHelpText\\\"]],\\\"selected\\\"]],null],[30,0,[\\\"showHelpText\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"help-text-icon\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-question-circle tight\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showHelpText\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"help-text-container\\\"],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"help-text-close-icon\\\"],[12],[1,\\\"\\\\n          \\\"],[11,\\\"i\\\"],[24,0,\\\"fal fa-times-circle tight clickable\\\"],[4,[38,10],[\\\"click\\\",[30,0,[\\\"toggle\\\"]]],null],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"helpText\\\"],[12],[1,[28,[35,11],[[30,0,[\\\"helpText\\\"]]],null]],[18,2,null],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]]],[]],null]],[]],null]],[\\\"@displayOnly\\\",\\\"&default\\\"],false,[\\\"unless\\\",\\\"if\\\",\\\"or\\\",\\\"has-block\\\",\\\"div\\\",\\\"check-box\\\",\\\"sum\\\",\\\"span\\\",\\\"i\\\",\\\"liquid-if\\\",\\\"on\\\",\\\"html-safe\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/help-text-icon.hbs\",\n    \"isStrictMode\": false\n  });\n  let HelpTextIconComponent = _exports.default = (_class = class HelpTextIconComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"showHelpText\", _descriptor, this);\n    }\n    get helpText() {\n      const {\n        helpText\n      } = this.args;\n      if ((0, _template.isHTMLSafe)(helpText)) {\n        return helpText.toHTML();\n      }\n      return typeof helpText === \"string\" ? helpText : \"\";\n    }\n    toggle() {\n      this.showHelpText = !this.showHelpText;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"showHelpText\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"toggle\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggle\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, HelpTextIconComponent);\n});","define(\"settify-mvp/components/help-toggle\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@glimmer/tracking\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _tracking, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@glimmer/tracking\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <button type=\"button\" role=\"switch\" aria-checked={{if this.showHelp \"true\" \"false\"}} {{on \"click\" this.toggleHelp}}>\n    <span class=\"fal fa-question-circle help-toggle\" aria-hidden=\"true\"></span>\n    <span class=\"sr-only\">Toggle Help</span>\n  </button>\n  <LiquidIf @predicate={{this.showHelp}}>\n    {{yield}}\n  </LiquidIf>\n  */\n  {\n    \"id\": \"m1ew/ubt\",\n    \"block\": \"[[[11,\\\"button\\\"],[24,\\\"role\\\",\\\"switch\\\"],[16,\\\"aria-checked\\\",[52,[30,0,[\\\"showHelp\\\"]],\\\"true\\\",\\\"false\\\"]],[24,4,\\\"button\\\"],[4,[38,2],[\\\"click\\\",[30,0,[\\\"toggleHelp\\\"]]],null],[12],[1,\\\"\\\\n  \\\"],[10,1],[14,0,\\\"fal fa-question-circle help-toggle\\\"],[14,\\\"aria-hidden\\\",\\\"true\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Toggle Help\\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"],[8,[39,4],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showHelp\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[18,1,null],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"&default\\\"],false,[\\\"button\\\",\\\"if\\\",\\\"on\\\",\\\"span\\\",\\\"liquid-if\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/help-toggle.hbs\",\n    \"isStrictMode\": false\n  });\n  let HelpToggleComponent = _exports.default = (_class = class HelpToggleComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"showHelp\", _descriptor, this);\n    }\n    toggleHelp() {\n      this.showHelp = !this.showHelp;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"showHelp\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"toggleHelp\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleHelp\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, HelpToggleComponent);\n});","define(\"settify-mvp/components/illiquid-model\", [\"exports\", \"liquid-fire/components/illiquid-model\"], function (_exports, _illiquidModel) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _illiquidModel.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/components/illiquid-model\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/invitation-email-history\", [\"exports\", \"@ember/component\", \"@ember/service\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _service, _component2, _tracking, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _dec2, _dec3, _dec4, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@glimmer/component\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <LiquidIf @predicate={{this.isLoadingData}}>\n    <LoadingSpinner />\n  </LiquidIf>\n  <LiquidIf @predicate={{not this.isLoadingData}}>\n    <table class=\"invitation-email-history\" data-test-invitation-history>\n      <tbody>\n        {{#if (eq this.model \"423\")}}\n          <tr>\n            <td>\n              This record is frozen:\n            </td>\n            <td>\n              <LinkTo @route=\"help.frozenrecord\" @query={{hash clientID=@clientID}}>Unfreeze the record to view the invitation history</LinkTo>\n            </td>\n          </tr>\n        {{else}}\n          {{#if\n            (and\n              (not this.metadata.invitationEmails.length)\n              (eq this.firm.practiceArea \"Wills\")\n              (or (eq this.metadata.referral \"family-separation\") (eq this.metadata.referral \"family-bfa\"))\n            )\n          }}\n            <tr>\n              <td colspan=\"2\" class=\"no-bold\">\n                <span class=\"settify-sensitive\">{{this.model.firstName}}</span>\n                used the Family Law version of Settify, then continued to provide instructions for Wills & Estates. Their Family Law appointment time and lawyer have been copied over\n                below, although no email has been sent yet in relation to estate planning.\n                <LinkTo @route=\"admin.invite\" @query={{hash clientID=this.metadata.clientID mode=\"\"}}>Click here to send\n                  <span class=\"settify-sensitive\">{{this.model.firstName}}</span>\n                  a Wills & Estates appointment confirmation email</LinkTo>\n                (the existing family law appointment will not be amended in any way).\n              </td>\n            </tr>\n          {{/if}}\n          <tr>\n            <td>\n              To:\n            </td>\n            <td>\n              <span class=\"settify-sensitive\">{{this.model.email}}</span>\n              (\n              <PracticeAreaLink @inviteType={{if @showEmailUpdateButton \"changeemail\" \"change\"}} @clientID={{this.metadata.clientID}} @practiceArea={{@clientPracticeArea}}>\n                <i class=\"fal fa-pencil\" />\n                {{if @showEmailUpdateButton \"resend to a different email address\" \"change\"}}\n              </PracticeAreaLink>\n              )\n            </td>\n          </tr>\n          <tr>\n            <td>\n              Last sent:\n            </td>\n            <td>\n              {{#if this.metadata.invitationEmails.length}}\n                {{pretty-date (get this.metadata.invitationEmails \"0\") includeTime=true zuluTime=true}}\n                (\n                <PracticeAreaLink @inviteType=\"view\" @clientID={{this.metadata.clientID}} @practiceArea={{@clientPracticeArea}}>\n                  <i class=\"fal fa-search\" />view\n                </PracticeAreaLink>\n                or\n                <PracticeAreaLink @inviteType=\"resend\" @clientID={{this.metadata.clientID}} @practiceArea={{@clientPracticeArea}}>\n                  <i class=\"fal fa-redo-alt\" />resend\n                </PracticeAreaLink>\n                )\n              {{else}}\n                <Admin::Nil />\n                (<LinkTo @route=\"admin.invite\" @query={{hash clientID=this.metadata.clientID mode=\"\"}}><i class=\"fal fa-paper-plane\" />send one now</LinkTo>)\n              {{/if}}\n            </td>\n          </tr>\n          <tr>\n            <td>\n              Appointment time:\n            </td>\n            <td>\n              {{#if\n                (and this.model.firmAppointmentDate this.model.firmAppointmentTime (not (or (eq this.model.firmAppointmentDate \"True\") (eq this.model.firmAppointmentTime \"True\"))))\n              }}\n                {{this.model.firmAppointmentDate}}\n                at\n                {{this.model.firmAppointmentTime}}\n                (\n                <PracticeAreaLink @inviteType=\"change\" @clientID={{this.metadata.clientID}} @practiceArea={{@clientPracticeArea}}>\n                  <i class=\"fal fa-pencil\" />change\n                </PracticeAreaLink>\n                )\n              {{else}}\n                <Admin::Nil />\n                (\n                <PracticeAreaLink @inviteType=\"change\" @clientID={{this.metadata.clientID}} @practiceArea={{@clientPracticeArea}}>\n                  <i class=\"fal fa-pencil\" />add an appointment\n                </PracticeAreaLink>\n                )\n              {{/if}}\n            </td>\n          </tr>\n          <tr>\n            <td>\n              Lawyer:\n            </td>\n            <td>\n              {{#if this.model.firmPartnerName}}\n                {{this.model.firmPartnerName}}\n                (\n                <PracticeAreaLink @inviteType=\"change\" @clientID={{this.metadata.clientID}} @practiceArea={{@clientPracticeArea}}>\n                  <i class=\"fal fa-pencil\" />change\n                </PracticeAreaLink>\n                )\n              {{else}}\n                <Admin::Nil />\n                (\n                <PracticeAreaLink @inviteType=\"change\" @clientID={{this.metadata.clientID}} @practiceArea={{@clientPracticeArea}}>\n                  <i class=\"fal fa-pencil\" />assign a lawyer and resend\n                </PracticeAreaLink>\n                )\n              {{/if}}\n            </td>\n          </tr>\n          <tr>\n            <td>\n              Automatic Reminders:\n            </td>\n            <td>\n              {{#if this.metadata.unsubscribed}}\n                Off\n              {{else}}\n                On (<a class=\"clickable\" {{action \"toggleUnsubscribeConfirmation\"}}>switch off</a>)\n              {{/if}}\n              <LiquidIf @predicate={{this.showUnsubscribeConfirmation}}>\n                Are you sure you want to unsubscribe\n                <span class=\"settify-sensitive\">{{this.model.firstName}}</span>\n                <span class=\"settify-sensitive\">{{this.model.surname}}</span>\n                from automatic reminders?\n                <br />\n                <a class=\"clickable\" {{action \"unsubsribe\"}}>Yes</a>\n                <br />\n                <a class=\"clickable\" {{action \"toggleUnsubscribeConfirmation\"}}>No</a>\n              </LiquidIf>\n              {{#if this.unsubsribing}}\n                <LoadingSpinner />\n              {{/if}}\n            </td>\n          </tr>\n          {{#if @showReminderEmails}}\n            <tr>\n              <td>\n                Reminder emails sent so far:\n              </td>\n              <td>\n                {{#each this.metadata.reminderEmails as |emailDate|}}\n                  {{pretty-date emailDate zuluTime=true}}\n                  <br />\n                {{else}}\n                  <Admin::Nil />\n                {{/each}}\n              </td>\n            </tr>\n          {{/if}}\n        {{/if}}\n      </tbody>\n    </table>\n  </LiquidIf>\n  */\n  {\n    \"id\": \"dREC7yyX\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@predicate\\\"],[[30,0,[\\\"isLoadingData\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[39,1],null,null,null],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"],[8,[39,0],null,[[\\\"@predicate\\\"],[[28,[37,2],[[30,0,[\\\"isLoadingData\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,\\\"table\\\"],[14,0,\\\"invitation-email-history\\\"],[14,\\\"data-test-invitation-history\\\",\\\"\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,6],[[30,0,[\\\"model\\\"]],\\\"423\\\"],null],[[[1,\\\"        \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n            This record is frozen:\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,9],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"help.frozenrecord\\\",[28,[37,10],null,[[\\\"clientID\\\"],[[30,1]]]]]],[[\\\"default\\\"],[[[[1,\\\"Unfreeze the record to view the invitation history\\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,11],[[28,[37,2],[[30,0,[\\\"metadata\\\",\\\"invitationEmails\\\",\\\"length\\\"]]],null],[28,[37,6],[[30,0,[\\\"firm\\\",\\\"practiceArea\\\"]],\\\"Wills\\\"],null],[28,[37,12],[[28,[37,6],[[30,0,[\\\"metadata\\\",\\\"referral\\\"]],\\\"family-separation\\\"],null],[28,[37,6],[[30,0,[\\\"metadata\\\",\\\"referral\\\"]],\\\"family-bfa\\\"],null]],null]],null],[[[1,\\\"          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[14,\\\"colspan\\\",\\\"2\\\"],[14,0,\\\"no-bold\\\"],[12],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"firstName\\\"]]],[13],[1,\\\"\\\\n              used the Family Law version of Settify, then continued to provide instructions for Wills & Estates. Their Family Law appointment time and lawyer have been copied over\\\\n              below, although no email has been sent yet in relation to estate planning.\\\\n              \\\"],[8,[39,9],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.invite\\\",[28,[37,10],null,[[\\\"clientID\\\",\\\"mode\\\"],[[30,0,[\\\"metadata\\\",\\\"clientID\\\"]],\\\"\\\"]]]]],[[\\\"default\\\"],[[[[1,\\\"Click here to send\\\\n                \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"firstName\\\"]]],[13],[1,\\\"\\\\n                a Wills & Estates appointment confirmation email\\\"]],[]]]]],[1,\\\"\\\\n              (the existing family law appointment will not be amended in any way).\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n            To:\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"email\\\"]]],[13],[1,\\\"\\\\n            (\\\\n            \\\"],[8,[39,14],null,[[\\\"@inviteType\\\",\\\"@clientID\\\",\\\"@practiceArea\\\"],[[52,[30,2],\\\"changeemail\\\",\\\"change\\\"],[30,0,[\\\"metadata\\\",\\\"clientID\\\"]],[30,3]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-pencil\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[1,[52,[30,2],\\\"resend to a different email address\\\",\\\"change\\\"]],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n            )\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n            Last sent:\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"metadata\\\",\\\"invitationEmails\\\",\\\"length\\\"]],[[[1,\\\"              \\\"],[1,[28,[35,16],[[28,[37,17],[[30,0,[\\\"metadata\\\",\\\"invitationEmails\\\"]],\\\"0\\\"],null]],[[\\\"includeTime\\\",\\\"zuluTime\\\"],[true,true]]]],[1,\\\"\\\\n              (\\\\n              \\\"],[8,[39,14],null,[[\\\"@inviteType\\\",\\\"@clientID\\\",\\\"@practiceArea\\\"],[\\\"view\\\",[30,0,[\\\"metadata\\\",\\\"clientID\\\"]],[30,3]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-search\\\"],[12],[13],[1,\\\"view\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n              or\\\\n              \\\"],[8,[39,14],null,[[\\\"@inviteType\\\",\\\"@clientID\\\",\\\"@practiceArea\\\"],[\\\"resend\\\",[30,0,[\\\"metadata\\\",\\\"clientID\\\"]],[30,3]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-redo-alt\\\"],[12],[13],[1,\\\"resend\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n              )\\\\n\\\"]],[]],[[[1,\\\"              \\\"],[8,[39,18],null,null,null],[1,\\\"\\\\n              (\\\"],[8,[39,9],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.invite\\\",[28,[37,10],null,[[\\\"clientID\\\",\\\"mode\\\"],[[30,0,[\\\"metadata\\\",\\\"clientID\\\"]],\\\"\\\"]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-paper-plane\\\"],[12],[13],[1,\\\"send one now\\\"]],[]]]]],[1,\\\")\\\\n\\\"]],[]]],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n            Appointment time:\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,11],[[30,0,[\\\"model\\\",\\\"firmAppointmentDate\\\"]],[30,0,[\\\"model\\\",\\\"firmAppointmentTime\\\"]],[28,[37,2],[[28,[37,12],[[28,[37,6],[[30,0,[\\\"model\\\",\\\"firmAppointmentDate\\\"]],\\\"True\\\"],null],[28,[37,6],[[30,0,[\\\"model\\\",\\\"firmAppointmentTime\\\"]],\\\"True\\\"],null]],null]],null]],null],[[[1,\\\"              \\\"],[1,[30,0,[\\\"model\\\",\\\"firmAppointmentDate\\\"]]],[1,\\\"\\\\n              at\\\\n              \\\"],[1,[30,0,[\\\"model\\\",\\\"firmAppointmentTime\\\"]]],[1,\\\"\\\\n              (\\\\n              \\\"],[8,[39,14],null,[[\\\"@inviteType\\\",\\\"@clientID\\\",\\\"@practiceArea\\\"],[\\\"change\\\",[30,0,[\\\"metadata\\\",\\\"clientID\\\"]],[30,3]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-pencil\\\"],[12],[13],[1,\\\"change\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n              )\\\\n\\\"]],[]],[[[1,\\\"              \\\"],[8,[39,18],null,null,null],[1,\\\"\\\\n              (\\\\n              \\\"],[8,[39,14],null,[[\\\"@inviteType\\\",\\\"@clientID\\\",\\\"@practiceArea\\\"],[\\\"change\\\",[30,0,[\\\"metadata\\\",\\\"clientID\\\"]],[30,3]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-pencil\\\"],[12],[13],[1,\\\"add an appointment\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n              )\\\\n\\\"]],[]]],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n            Lawyer:\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"firmPartnerName\\\"]],[[[1,\\\"              \\\"],[1,[30,0,[\\\"model\\\",\\\"firmPartnerName\\\"]]],[1,\\\"\\\\n              (\\\\n              \\\"],[8,[39,14],null,[[\\\"@inviteType\\\",\\\"@clientID\\\",\\\"@practiceArea\\\"],[\\\"change\\\",[30,0,[\\\"metadata\\\",\\\"clientID\\\"]],[30,3]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-pencil\\\"],[12],[13],[1,\\\"change\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n              )\\\\n\\\"]],[]],[[[1,\\\"              \\\"],[8,[39,18],null,null,null],[1,\\\"\\\\n              (\\\\n              \\\"],[8,[39,14],null,[[\\\"@inviteType\\\",\\\"@clientID\\\",\\\"@practiceArea\\\"],[\\\"change\\\",[30,0,[\\\"metadata\\\",\\\"clientID\\\"]],[30,3]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-pencil\\\"],[12],[13],[1,\\\"assign a lawyer and resend\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n              )\\\\n\\\"]],[]]],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n            Automatic Reminders:\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"metadata\\\",\\\"unsubscribed\\\"]],[[[1,\\\"              Off\\\\n\\\"]],[]],[[[1,\\\"              On (\\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,20],[[30,0],\\\"toggleUnsubscribeConfirmation\\\"],null],[12],[1,\\\"switch off\\\"],[13],[1,\\\")\\\\n\\\"]],[]]],[1,\\\"            \\\"],[8,[39,0],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showUnsubscribeConfirmation\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              Are you sure you want to unsubscribe\\\\n              \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"firstName\\\"]]],[13],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"surname\\\"]]],[13],[1,\\\"\\\\n              from automatic reminders?\\\\n              \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,20],[[30,0],\\\"unsubsribe\\\"],null],[12],[1,\\\"Yes\\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,20],[[30,0],\\\"toggleUnsubscribeConfirmation\\\"],null],[12],[1,\\\"No\\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"unsubsribing\\\"]],[[[1,\\\"              \\\"],[8,[39,1],null,null,null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,4],[[[1,\\\"          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n              Reminder emails sent so far:\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,23],[[28,[37,23],[[30,0,[\\\"metadata\\\",\\\"reminderEmails\\\"]]],null]],null],null,[[[1,\\\"                \\\"],[1,[28,[35,16],[[30,5]],[[\\\"zuluTime\\\"],[true]]]],[1,\\\"\\\\n                \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[5]],[[[1,\\\"                \\\"],[8,[39,18],null,null,null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"@clientID\\\",\\\"@showEmailUpdateButton\\\",\\\"@clientPracticeArea\\\",\\\"@showReminderEmails\\\",\\\"emailDate\\\"],false,[\\\"liquid-if\\\",\\\"loading-spinner\\\",\\\"not\\\",\\\"table\\\",\\\"tbody\\\",\\\"if\\\",\\\"eq\\\",\\\"tr\\\",\\\"td\\\",\\\"link-to\\\",\\\"hash\\\",\\\"and\\\",\\\"or\\\",\\\"span\\\",\\\"practice-area-link\\\",\\\"i\\\",\\\"pretty-date\\\",\\\"get\\\",\\\"admin/nil\\\",\\\"a\\\",\\\"action\\\",\\\"br\\\",\\\"each\\\",\\\"-track-array\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/invitation-email-history.hbs\",\n    \"isStrictMode\": false\n  });\n  let InvitationEmailHistoryComponent = _exports.default = (_dec = (0, _service.inject)(), _dec2 = (0, _service.inject)(), _dec3 = (0, _service.inject)(), _dec4 = (0, _service.inject)(), _class = class InvitationEmailHistoryComponent extends _component2.default {\n    constructor() {\n      super(...arguments);\n      _initializerDefineProperty(this, \"clientRecords\", _descriptor, this);\n      _initializerDefineProperty(this, \"lambda\", _descriptor2, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor3, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor4, this);\n      _initializerDefineProperty(this, \"unsubsribing\", _descriptor5, this);\n      _initializerDefineProperty(this, \"showUnsubscribeConfirmation\", _descriptor6, this);\n      _initializerDefineProperty(this, \"loadingModel\", _descriptor7, this);\n      _initializerDefineProperty(this, \"loadingMetadata\", _descriptor8, this);\n      this.setModel();\n      this.setMetadata();\n    }\n    get isLoadingData() {\n      return this.loadingModel || this.loadingMetadata;\n    }\n    async setModel() {\n      this.model = this.args.model ?? (await this.getModel());\n    }\n    async setMetadata() {\n      this.metadata = this.args.metadata ?? (await this.getMetadata());\n    }\n    async getModel() {\n      this.loadingModel = true;\n      try {\n        return await this.clientRecords.getClientByID(this.args.clientID);\n      } catch (error) {\n        this.eventLogging.logError(\"Error loading client\", error);\n        throw new Error(`Error loading client ${error}`);\n      } finally {\n        this.loadingModel = false;\n      }\n    }\n    async getMetadata() {\n      if (!this.args.clientID) {\n        throw new Error(\"clientID not found\");\n      }\n      const payload = {\n        firmID: this.firm.id,\n        clientID: this.args.clientID\n      };\n      this.loadingMetadata = true;\n      try {\n        const metadata = await this.lambda.invoke(this.lambda.getClientMetadataLambda, payload);\n        return this.lambda.processResponse(metadata);\n      } catch (error) {\n        this.eventLogging.logError(\"Error loading metadata\", error);\n        throw new Error(`Error loading metadata ${error}`);\n      } finally {\n        this.loadingMetadata = false;\n      }\n    }\n    unsubsribe() {\n      this.unsubsribing = true;\n      this.eventLogging.log(this.metadata.clientID, this.eventLogging.IDs.Unsubscribed, true).then(() => {\n        (0, _object.set)(this.metadata, \"unsubscribed\", true);\n      }).finally(() => {\n        this.unsubsribing = false;\n        this.showUnsubscribeConfirmation = false;\n      });\n    }\n    toggleUnsubscribeConfirmation() {\n      this.showUnsubscribeConfirmation = !this.showUnsubscribeConfirmation;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"clientRecords\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_dec2], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_dec3], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_dec4], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"unsubsribing\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"showUnsubscribeConfirmation\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"loadingModel\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"loadingMetadata\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"unsubsribe\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"unsubsribe\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"toggleUnsubscribeConfirmation\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleUnsubscribeConfirmation\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, InvitationEmailHistoryComponent);\n});","define(\"settify-mvp/components/invitation-lawyer-bio\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (and @lawyerBio (not @noLawyerBios))}}\n    <div id={{@id}} class=\"inviteEmailLawyerBio {{if @isSecondLawyer \"second-lawyer-bio\"}}\">\n      {{#if @lawyerPhotoURL}}\n        <table border=\"0\" class=\"lawyer-bio-table\">\n          <tbody>\n            <tr>\n              <td valign=\"top\" class=\"lawyer-bio-heading\">\n                <p class=\"purple\">\n                  <strong>{{@lawyerBioHeading}}</strong>\n                </p>\n                <p class=\"lawyer-bio-text\">\n                  {{@lawyerBio}}\n                </p>\n                {{#if @lawyerReadMoreURL}}\n                  <p>\n                    <a href={{@lawyerReadMoreURL}} target=\"_blank\" rel=\"noopener noreferrer\">Read more...</a>\n                  </p>\n                {{/if}}\n              </td>\n              <td valign=\"top\" class=\"width-40\">\n                <img src={{@lawyerPhotoURL}} width=\"200\" alt=\"{{@lawyerName}}\">\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      {{else}}\n        <p class=\"purple\">\n          <strong>{{@lawyerBioHeading}}</strong>\n        </p>\n        <p class=\"lawyer-bio-text\">\n          {{@lawyerBio}}\n        </p>\n        {{#if @lawyerReadMoreURL}}\n          <p>\n            <a href={{@lawyerReadMoreURL}} target=\"_blank\" rel=\"noopener noreferrer\">Read more...</a>\n          </p>\n        {{/if}}\n      {{/if}}\n    </div>\n  {{/if}}\n  */\n  {\n    \"id\": \"/TsXeoQC\",\n    \"block\": \"[[[41,[28,[37,1],[[30,1],[28,[37,2],[[30,2]],null]],null],[[[1,\\\"  \\\"],[10,0],[15,1,[30,3]],[15,0,[29,[\\\"inviteEmailLawyerBio \\\",[52,[30,4],\\\"second-lawyer-bio\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[30,5],[[[1,\\\"      \\\"],[10,\\\"table\\\"],[14,\\\"border\\\",\\\"0\\\"],[14,0,\\\"lawyer-bio-table\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[14,\\\"valign\\\",\\\"top\\\"],[14,0,\\\"lawyer-bio-heading\\\"],[12],[1,\\\"\\\\n              \\\"],[10,2],[14,0,\\\"purple\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"strong\\\"],[12],[1,[30,6]],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,2],[14,0,\\\"lawyer-bio-text\\\"],[12],[1,\\\"\\\\n                \\\"],[1,[30,1]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,7],[[[1,\\\"                \\\"],[10,2],[12],[1,\\\"\\\\n                  \\\"],[10,3],[15,6,[30,7]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"Read more...\\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[14,\\\"valign\\\",\\\"top\\\"],[14,0,\\\"width-40\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"img\\\"],[15,\\\"src\\\",[30,5]],[14,\\\"width\\\",\\\"200\\\"],[15,\\\"alt\\\",[29,[[30,8]]]],[12],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,2],[14,0,\\\"purple\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"strong\\\"],[12],[1,[30,6]],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,2],[14,0,\\\"lawyer-bio-text\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[30,1]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,7],[[[1,\\\"        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[10,3],[15,6,[30,7]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"Read more...\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@lawyerBio\\\",\\\"@noLawyerBios\\\",\\\"@id\\\",\\\"@isSecondLawyer\\\",\\\"@lawyerPhotoURL\\\",\\\"@lawyerBioHeading\\\",\\\"@lawyerReadMoreURL\\\",\\\"@lawyerName\\\"],false,[\\\"if\\\",\\\"and\\\",\\\"not\\\",\\\"div\\\",\\\"table\\\",\\\"tbody\\\",\\\"tr\\\",\\\"td\\\",\\\"p\\\",\\\"strong\\\",\\\"a\\\",\\\"img\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/invitation-lawyer-bio.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/invitation/email/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/service\", \"rsvp\", \"settify-mvp/lib/invitations/email_payload\", \"settify-mvp/helpers/load-async-data\", \"@ember/template-factory\"], function (_exports, _component, _component2, _service, _rsvp, _email_payload, _loadAsyncData, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/service\",0,\"rsvp\",0,\"settify-mvp/lib/invitations/email_payload\",0,\"settify-mvp/helpers/load-async-data\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.templateContent.isLoaded}}\n    {{#each this.templateContent.value.content as |row|}}\n      <Invitation::RowWrapper @row={{row}} @attributes={{get-row-attributes row}}>\n        {{#each row.content as |rowContent|}}\n          <Invitation::SegmentContent\n            @segment={{rowContent}}\n            @clientFirstName={{@clientFirstName}}\n            @lawyerName={{@lawyerName}}\n            @lawyerBio={{@lawyerBio}}\n            @noLawyerBios={{this.templateContent.value.noLawyerBios}}\n            @lawyerPhotoURL={{@lawyerPhotoURL}}\n            @lawyerBioHeading={{@lawyerBioHeading}}\n            @lawyerReadMoreURL={{@lawyerReadMoreURL}}\n            @secondLawyerName={{@secondLawyerName}}\n            @secondLawyerBio={{@secondLawyerBio}}\n            @secondLawyerPhotoURL={{@secondLawyerPhotoURL}}\n            @secondLawyerBioHeading={{@secondLawyerBioHeading}}\n            @secondLawyerReadMoreURL={{@secondLawyerReadMoreURL}}\n            @firmName={{@firm.name}}\n            @appointmentDate={{@appointmentDate}}\n            @formattedAppointmentDate={{@formattedAppointmentDate}}\n            @appointmentTime={{@appointmentTime}}\n            @selectedOffice={{@selectedOffice}}\n            @initialPhoneMeeting={{@initialPhoneMeeting}}\n            @includePhoneMeetingMessage={{@includePhoneMeetingMessage}}\n            @phoneMeetingMessage={{@phoneMeetingMessage}}\n            @formattedPhoneMeetingMessage={{@formattedPhoneMeetingMessage}}\n            @hyperlinkParsed={{@hyperlinkParsed}}\n            @hyperlinkText={{@hyperlinkText}}\n            @model={{@model}}\n            @inductions={{@inductions}}\n            @forceIncludeSettifyButton={{@forceIncludeSettifyButton}}\n            @buttonLabel={{@buttonLabel}}\n            @showOptionalExtra={{@showOptionalExtra}}\n            @formattedOptionalMessage={{@formattedOptionalMessage}}\n            @optionalExtraMessage={{@optionalExtraMessage}}\n            @toggleOptionalExtraAction={{@toggleOptionalExtra}}\n            @previewOptionalExtraAction={{@previewOptionalExtra}}\n            @emailSenderName={{@emailSenderName}}\n            @emailSenderTitle={{@emailSenderTitle}}\n            @emailSenderEmail={{@emailSenderEmail}}\n            @emailSenderPhone={{@emailSenderPhone}}\n            @lawyerDetails={{@lawyerDetails}}\n          />\n        {{/each}}\n      </Invitation::RowWrapper>\n    {{/each}}\n  {{/if}}\n  */\n  {\n    \"id\": \"2saeWKw7\",\n    \"block\": \"[[[41,[30,0,[\\\"templateContent\\\",\\\"isLoaded\\\"]],[[[42,[28,[37,2],[[28,[37,2],[[30,0,[\\\"templateContent\\\",\\\"value\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"    \\\"],[8,[39,3],null,[[\\\"@row\\\",\\\"@attributes\\\"],[[30,1],[28,[37,4],[[30,1]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,2],[[28,[37,2],[[30,1,[\\\"content\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[8,[39,5],null,[[\\\"@segment\\\",\\\"@clientFirstName\\\",\\\"@lawyerName\\\",\\\"@lawyerBio\\\",\\\"@noLawyerBios\\\",\\\"@lawyerPhotoURL\\\",\\\"@lawyerBioHeading\\\",\\\"@lawyerReadMoreURL\\\",\\\"@secondLawyerName\\\",\\\"@secondLawyerBio\\\",\\\"@secondLawyerPhotoURL\\\",\\\"@secondLawyerBioHeading\\\",\\\"@secondLawyerReadMoreURL\\\",\\\"@firmName\\\",\\\"@appointmentDate\\\",\\\"@formattedAppointmentDate\\\",\\\"@appointmentTime\\\",\\\"@selectedOffice\\\",\\\"@initialPhoneMeeting\\\",\\\"@includePhoneMeetingMessage\\\",\\\"@phoneMeetingMessage\\\",\\\"@formattedPhoneMeetingMessage\\\",\\\"@hyperlinkParsed\\\",\\\"@hyperlinkText\\\",\\\"@model\\\",\\\"@inductions\\\",\\\"@forceIncludeSettifyButton\\\",\\\"@buttonLabel\\\",\\\"@showOptionalExtra\\\",\\\"@formattedOptionalMessage\\\",\\\"@optionalExtraMessage\\\",\\\"@toggleOptionalExtraAction\\\",\\\"@previewOptionalExtraAction\\\",\\\"@emailSenderName\\\",\\\"@emailSenderTitle\\\",\\\"@emailSenderEmail\\\",\\\"@emailSenderPhone\\\",\\\"@lawyerDetails\\\"],[[30,2],[30,3],[30,4],[30,5],[30,0,[\\\"templateContent\\\",\\\"value\\\",\\\"noLawyerBios\\\"]],[30,6],[30,7],[30,8],[30,9],[30,10],[30,11],[30,12],[30,13],[30,14,[\\\"name\\\"]],[30,15],[30,16],[30,17],[30,18],[30,19],[30,20],[30,21],[30,22],[30,23],[30,24],[30,25],[30,26],[30,27],[30,28],[30,29],[30,30],[30,31],[30,32],[30,33],[30,34],[30,35],[30,36],[30,37],[30,38]]],null],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[1]],null]],[]],null]],[\\\"row\\\",\\\"rowContent\\\",\\\"@clientFirstName\\\",\\\"@lawyerName\\\",\\\"@lawyerBio\\\",\\\"@lawyerPhotoURL\\\",\\\"@lawyerBioHeading\\\",\\\"@lawyerReadMoreURL\\\",\\\"@secondLawyerName\\\",\\\"@secondLawyerBio\\\",\\\"@secondLawyerPhotoURL\\\",\\\"@secondLawyerBioHeading\\\",\\\"@secondLawyerReadMoreURL\\\",\\\"@firm\\\",\\\"@appointmentDate\\\",\\\"@formattedAppointmentDate\\\",\\\"@appointmentTime\\\",\\\"@selectedOffice\\\",\\\"@initialPhoneMeeting\\\",\\\"@includePhoneMeetingMessage\\\",\\\"@phoneMeetingMessage\\\",\\\"@formattedPhoneMeetingMessage\\\",\\\"@hyperlinkParsed\\\",\\\"@hyperlinkText\\\",\\\"@model\\\",\\\"@inductions\\\",\\\"@forceIncludeSettifyButton\\\",\\\"@buttonLabel\\\",\\\"@showOptionalExtra\\\",\\\"@formattedOptionalMessage\\\",\\\"@optionalExtraMessage\\\",\\\"@toggleOptionalExtra\\\",\\\"@previewOptionalExtra\\\",\\\"@emailSenderName\\\",\\\"@emailSenderTitle\\\",\\\"@emailSenderEmail\\\",\\\"@emailSenderPhone\\\",\\\"@lawyerDetails\\\"],false,[\\\"if\\\",\\\"each\\\",\\\"-track-array\\\",\\\"invitation/row-wrapper\\\",\\\"get-row-attributes\\\",\\\"invitation/segment-content\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/invitation/email/index.hbs\",\n    \"isStrictMode\": false\n  });\n  let InvitationEmailComponent = _exports.default = (_class = class InvitationEmailComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"awsService\", _descriptor, this);\n    }\n    get templateContent() {\n      const inductionPA = this.args.inductions?.[0]?.practiceArea?.toLowerCase();\n      if (!inductionPA) {\n        // Induction not selected, use default wording\n        return (0, _loadAsyncData.load)(_rsvp.Promise.resolve(this.defaultInvitationObject()));\n      }\n      const key = this.getInvitationTemplateKey(inductionPA);\n      return (0, _loadAsyncData.load)(this.getS3Object(key));\n    }\n\n    // Returns the S3 key for the appropriate invitation template\n    getInvitationTemplateKey(inductionPA) {\n      const {\n        firm,\n        lawyerName,\n        appointmentDate,\n        appointmentTime,\n        initialPhoneMeeting,\n        model\n      } = this.args;\n      if (lawyerName && appointmentDate && appointmentTime) {\n        return initialPhoneMeeting ? `firms/${firm.id}/${inductionPA}_invitationtemplate_confirmation_phonemeeting.json` : `firms/${firm.id}/${inductionPA}_invitationtemplate_confirmation.json`;\n      }\n      if (model) {\n        return `firms/${firm.id}/${inductionPA}_invitationtemplate_followup.json`;\n      }\n      return `firms/${firm.id}/${inductionPA}_invitationtemplate_generalenquiry.json`;\n    }\n\n    // Method to fetch the S3 object based on the key\n    async getS3Object(key) {\n      try {\n        const s3Client = await this.awsService.getS3ByType(\"assets\");\n        const {\n          Body\n        } = await s3Client.getObject({\n          Key: key\n        }).promise();\n        return JSON.parse(Body);\n      } catch (err) {\n        return this.defaultInvitationObject();\n      }\n    }\n\n    // Default invitation object if no other template is selected\n    defaultInvitationObject() {\n      const {\n        lawyerName,\n        appointmentDate,\n        appointmentTime,\n        initialPhoneMeeting,\n        model\n      } = this.args;\n      if (lawyerName && appointmentDate && appointmentTime) {\n        return initialPhoneMeeting ? (0, _email_payload.getInitialPhoneMeetingPayload)() : (0, _email_payload.getAppointmentConfirmationPayload)();\n      }\n      if (model) {\n        return (0, _email_payload.getFollowUpPayload)();\n      }\n      return (0, _email_payload.getGeneralEnquiryPayload)();\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"awsService\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, InvitationEmailComponent);\n});","define(\"settify-mvp/components/invitation/lawyer-bio/index\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (and @lawyerBio (not @noLawyerBios))}}\n    <div id={{@id}} class=\"inviteEmailLawyerBio {{if @isSecondLawyer 'second-lawyer-bio'}}\">\n      {{#if @lawyerPhotoURL}}\n        <table border=\"0\" class=\"lawyer-bio-table\">\n          <tbody>\n            <tr>\n              <td valign=\"top\" class=\"lawyer-bio-heading\">\n                <p class=\"purple\">\n                  <strong>{{@lawyerBioHeading}}</strong>\n                </p>\n                <p class=\"lawyer-bio-text\">\n                  {{@lawyerBio}}\n                </p>\n                {{#if @lawyerReadMoreURL}}\n                  <p>\n                    <a href={{@lawyerReadMoreURL}} target=\"_blank\" rel=\"noopener noreferrer\">Read more...</a>\n                  </p>\n                {{/if}}\n              </td>\n              <td valign=\"top\" class=\"width-40\">\n                <img src={{@lawyerPhotoURL}} width=\"200\" alt=\"{{@lawyerName}}\" />\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      {{else}}\n        <p class=\"purple\">\n          <strong>{{@lawyerBioHeading}}</strong>\n        </p>\n        <p class=\"lawyer-bio-text\">\n          {{@lawyerBio}}\n        </p>\n        {{#if @lawyerReadMoreURL}}\n          <p>\n            <a href={{@lawyerReadMoreURL}} target=\"_blank\" rel=\"noopener noreferrer\">Read more...</a>\n          </p>\n        {{/if}}\n      {{/if}}\n    </div>\n  {{/if}}\n  */\n  {\n    \"id\": \"jljTyCKN\",\n    \"block\": \"[[[41,[28,[37,1],[[30,1],[28,[37,2],[[30,2]],null]],null],[[[1,\\\"  \\\"],[10,0],[15,1,[30,3]],[15,0,[29,[\\\"inviteEmailLawyerBio \\\",[52,[30,4],\\\"second-lawyer-bio\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[30,5],[[[1,\\\"      \\\"],[10,\\\"table\\\"],[14,\\\"border\\\",\\\"0\\\"],[14,0,\\\"lawyer-bio-table\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[14,\\\"valign\\\",\\\"top\\\"],[14,0,\\\"lawyer-bio-heading\\\"],[12],[1,\\\"\\\\n              \\\"],[10,2],[14,0,\\\"purple\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"strong\\\"],[12],[1,[30,6]],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,2],[14,0,\\\"lawyer-bio-text\\\"],[12],[1,\\\"\\\\n                \\\"],[1,[30,1]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,7],[[[1,\\\"                \\\"],[10,2],[12],[1,\\\"\\\\n                  \\\"],[10,3],[15,6,[30,7]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"Read more...\\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[14,\\\"valign\\\",\\\"top\\\"],[14,0,\\\"width-40\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"img\\\"],[15,\\\"src\\\",[30,5]],[14,\\\"width\\\",\\\"200\\\"],[15,\\\"alt\\\",[29,[[30,8]]]],[12],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,2],[14,0,\\\"purple\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"strong\\\"],[12],[1,[30,6]],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,2],[14,0,\\\"lawyer-bio-text\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[30,1]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,7],[[[1,\\\"        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[10,3],[15,6,[30,7]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"Read more...\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@lawyerBio\\\",\\\"@noLawyerBios\\\",\\\"@id\\\",\\\"@isSecondLawyer\\\",\\\"@lawyerPhotoURL\\\",\\\"@lawyerBioHeading\\\",\\\"@lawyerReadMoreURL\\\",\\\"@lawyerName\\\"],false,[\\\"if\\\",\\\"and\\\",\\\"not\\\",\\\"div\\\",\\\"table\\\",\\\"tbody\\\",\\\"tr\\\",\\\"td\\\",\\\"p\\\",\\\"strong\\\",\\\"a\\\",\\\"img\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/invitation/lawyer-bio/index.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/invitation/optional-extra/index\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div id=\"optionalExtra\">\n    {{#if @showOptionalExtra}}\n      <SettifyTextarea @model={{@optionalExtraMessage}} @max={{16384}} />\n      <button type=\"button\" class=\"optionalExtraButton\" {{on \"click\" @previewOptionalExtraAction}}>\n        <i class=\"fal fa-eye\" />\n        Preview\n      </button>\n      <button type=\"button\" class=\"optionalExtraButton\" {{on \"click\" @toggleOptionalExtraAction}}>\n        <i class=\"fal fa-times-circle\" />\n        Remove custom message\n      </button>\n    {{else}}\n      {{#if @formattedOptionalMessage}}\n        {{@formattedOptionalMessage}}\n      {{/if}}\n      <button type=\"button\" class=\"optionalExtraButton underlined\" {{on \"click\" @toggleOptionalExtraAction}}>\n        <i class=\"fal fa-pencil\" />\n        {{#if @optionalExtraMessage}}\n          Edit custom message\n        {{else}}\n          Click here to add a custom message\n        {{/if}}\n      </button>\n    {{/if}}\n  </div>\n  */\n  {\n    \"id\": \"vg4fnr2p\",\n    \"block\": \"[[[10,0],[14,1,\\\"optionalExtra\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1],[[[1,\\\"    \\\"],[8,[39,2],null,[[\\\"@model\\\",\\\"@max\\\"],[[30,2],16384]],null],[1,\\\"\\\\n    \\\"],[11,\\\"button\\\"],[24,0,\\\"optionalExtraButton\\\"],[24,4,\\\"button\\\"],[4,[38,4],[\\\"click\\\",[30,3]],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-eye\\\"],[12],[13],[1,\\\"\\\\n      Preview\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[11,\\\"button\\\"],[24,0,\\\"optionalExtraButton\\\"],[24,4,\\\"button\\\"],[4,[38,4],[\\\"click\\\",[30,4]],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-times-circle\\\"],[12],[13],[1,\\\"\\\\n      Remove custom message\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,5],[[[1,\\\"      \\\"],[1,[30,5]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[11,\\\"button\\\"],[24,0,\\\"optionalExtraButton underlined\\\"],[24,4,\\\"button\\\"],[4,[38,4],[\\\"click\\\",[30,4]],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-pencil\\\"],[12],[13],[1,\\\"\\\\n\\\"],[41,[30,2],[[[1,\\\"        Edit custom message\\\\n\\\"]],[]],[[[1,\\\"        Click here to add a custom message\\\\n\\\"]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[13]],[\\\"@showOptionalExtra\\\",\\\"@optionalExtraMessage\\\",\\\"@previewOptionalExtraAction\\\",\\\"@toggleOptionalExtraAction\\\",\\\"@formattedOptionalMessage\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"settify-textarea\\\",\\\"button\\\",\\\"on\\\",\\\"i\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/invitation/optional-extra/index.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/invitation/row-wrapper/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/template\", \"@ember/template-factory\"], function (_exports, _component, _component2, _template, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/template\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#let (element this.tagName) as |Tag|}}\n    <Tag style={{this.styles}} class={{this.classes}}>\n      {{yield}}\n    </Tag>\n  {{/let}}\n  */\n  {\n    \"id\": \"FFF/6g1f\",\n    \"block\": \"[[[44,[[28,[37,1],[[30,0,[\\\"tagName\\\"]]],null]],[[[1,\\\"  \\\"],[8,[30,1],[[16,5,[30,0,[\\\"styles\\\"]]],[16,0,[30,0,[\\\"classes\\\"]]]],null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[18,2,null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[1]]]],[\\\"Tag\\\",\\\"&default\\\"],false,[\\\"let\\\",\\\"element\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/invitation/row-wrapper/index.hbs\",\n    \"isStrictMode\": false\n  });\n  class InvitationRowWrapperComponent extends _component2.default {\n    get styles() {\n      return (0, _template.htmlSafe)(this.args.attributes);\n    }\n    get tagName() {\n      const {\n        row\n      } = this.args;\n      let HTMLTag = row.attrs?.HTMLTag;\n      if (row.type === \"heading\") {\n        HTMLTag = `h${row.attrs.level ? row.attrs.level : 3}`;\n      }\n      return HTMLTag ?? \"\";\n    }\n    get classes() {\n      if (this.args.row.type === \"heading\") {\n        const headingClasses = {\n          1: \"text-4xl mb-2\",\n          2: \"text-3xl mb-2\",\n          3: \"text-2xl mb-2\",\n          4: \"text-xl mb-2\"\n        };\n        return headingClasses?.[this.args?.row?.attrs?.level] || headingClasses[3];\n      }\n      return \"\";\n    }\n  }\n  _exports.default = InvitationRowWrapperComponent;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, InvitationRowWrapperComponent);\n});","define(\"settify-mvp/components/invitation/segment-content/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/template\", \"@ember/template-factory\"], function (_exports, _component, _component2, _template, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/template\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (eq (get @segment.content \"0.text\") \"CLIENT_FIRST_NAME,\")}}\n    <span class=\"settify-sensitive\">{{@clientFirstName}}</span>,\n  {{else if (eq (get @segment.content \"0.text\") \"APPOINTMENT_DATE \")}}\n    {{@formattedAppointmentDate~}}\n  {{else if (eq (get @segment.content \"0.text\") \"APPOINTMENT_TIME. \")}}\n    {{~@appointmentTime~}}.\n  {{else if (eq (get @segment.content \"0.text\") \"OFFICE_SUBURB \")}}\n    {{@selectedOffice.suburb}}\n  {{~else if (eq (get @segment.content \"0.text\") \"APPOINTMENT_LOCATION. \")~}}\n    {{address-string @selectedOffice}}.\n  {{else if (eq (get @segment.content \"0.text\") \"FIRM_NAME\")}}\n    {{@firmName~}}\n  {{else if (eq (get @segment.content \"0.text\") \"LAWYER_NAME\")}}\n    {{@lawyerName}}\n  {{else if (eq @segment.text \"PHONE_MEETING_MESSAGE\")}}\n    {{#if (and @initialPhoneMeeting @includePhoneMeetingMessage @phoneMeetingMessage)}}\n      {{@formattedPhoneMeetingMessage}}\n    {{/if}}\n  {{else if (eq @segment.text \"PHONE_MEETING_HYPERLINK\")}}\n    <a href={{@hyperlinkParsed}} target=\"_blank\" rel=\"noopener noreferrer\">\n      {{or @hyperlinkText @hyperlinkParsed}}\n    </a>\n  {{else if (eq @segment.text \"SELECTED_INDUCTIONS\")}}\n    {{#if (or (not @model) (and @appointmentDate @appointmentTime @lawyerName (not @model.detailedInductionComplete)))}}\n      {{#each @inductions as |induction|}}\n        <li>\n          {{induction.title}}\n          {{#if induction.repeatBreadcrumb}}\n            (<span class=\"settify-sensitive\">{{induction.repeatBreadcrumb}}</span>)\n          {{/if}}\n          {{#if induction.blurb}}\n            <br />\n            {{induction.blurb}}\n          {{/if}}\n        </li>\n      {{/each}}\n    {{/if}}\n  {{else if (eq @segment.text \"SETTIFY_BUTTON\")}}\n    {{#if (or (not @model.detailedInductionComplete) @forceIncludeSettifyButton (and @model (not @appointmentDate)))}}\n      <div id=\"email_button\" class=\"text-center\">\n        <div class=\"validationbutton\"><p>{{@buttonLabel}}</p></div>\n      </div>\n    {{/if}}\n  {{else if (eq @segment.text \"OPTIONAL_EXTRA\")}}\n    <Invitation::OptionalExtra\n      @showOptionalExtra={{@showOptionalExtra}}\n      @formattedOptionalMessage={{@formattedOptionalMessage}}\n      @optionalExtraMessage={{@optionalExtraMessage}}\n      @toggleOptionalExtraAction={{@toggleOptionalExtraAction}}\n      @previewOptionalExtraAction={{@previewOptionalExtraAction}}\n    />\n  {{else if (eq @segment.text \"LAWYER_BIO\")}}\n    <Invitation::LawyerBio\n      @lawyerBio={{@lawyerBio}}\n      @lawyerPhotoURL={{@lawyerPhotoURL}}\n      @lawyerBioHeading={{@lawyerBioHeading}}\n      @lawyerReadMoreURL={{@lawyerReadMoreURL}}\n      @lawyerName={{@lawyerName}}\n      @id=\"inviteEmailLawyerBio\"\n    />\n  \n    {{! If we have a second lawyer, we'll always show them below the first lawyer }}\n    <Invitation::LawyerBio\n      @lawyerBio={{@secondLawyerBio}}\n      @lawyerPhotoURL={{@secondLawyerPhotoURL}}\n      @lawyerBioHeading={{@secondLawyerBioHeading}}\n      @lawyerReadMoreURL={{@secondLawyerReadMoreURL}}\n      @lawyerName={{@secondLawyerName}}\n      @id=\"inviteEmailSecondLawyerBio\"\n      @isSecondLawyer={{true}}\n    />\n  {{else if (eq @segment.text \"SIGNATURE\")}}\n    {{#if (not-eq @emailSenderName @firmName)}}\n      <p>\n        {{@emailSenderName}}\n        {{#if @emailSenderTitle}}\n          <br />\n          {{@emailSenderTitle}}\n        {{/if}}\n  \n        {{#if (and (eq @emailSenderName @lawyerName) @lawyerDetails.accreditedSpecialist)}}\n          <p>\n            <img src=\"https://cdn.settify.com.au/accredited-specialist-{{@lawyerDetails.accreditedSpecialist}}.png\" alt=\"Accredited Specialist\" />\n          </p>\n        {{/if}}\n      </p>\n    {{/if}}\n  \n    <p>\n      <strong>{{@firmName}}</strong>\n      <br />\n      <small>\n        {{#if @emailSenderEmail}}\n          {{@emailSenderEmail}}\n          <br />\n        {{/if}}\n        {{#if @emailSenderPhone}}\n          {{@emailSenderPhone}}\n          <br />\n        {{/if}}\n        {{#if (and @lawyerName @appointmentDate @appointmentTime)}}\n          <AddressPrinter @address={{@selectedOffice}} />\n        {{/if}}\n      </small>\n    </p>\n  {{else}}\n    {{#let (element this.tagName) as |Tag|}}\n      <Tag style={{this.segmentStyles}}>\n        {{~@segment.text~}}\n      </Tag>\n    {{/let}}\n  {{/if}}\n  */\n  {\n    \"id\": \"ncXYCgh+\",\n    \"block\": \"[[[41,[28,[37,1],[[28,[37,2],[[30,1,[\\\"content\\\"]],\\\"0.text\\\"],null],\\\"CLIENT_FIRST_NAME,\\\"],null],[[[1,\\\"  \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,2]],[13],[1,\\\",\\\\n\\\"]],[]],[[[41,[28,[37,1],[[28,[37,2],[[30,1,[\\\"content\\\"]],\\\"0.text\\\"],null],\\\"APPOINTMENT_DATE \\\"],null],[[[1,\\\"  \\\"],[1,[30,3]]],[]],[[[41,[28,[37,1],[[28,[37,2],[[30,1,[\\\"content\\\"]],\\\"0.text\\\"],null],\\\"APPOINTMENT_TIME. \\\"],null],[[[1,[30,4]],[1,\\\".\\\\n\\\"]],[]],[[[41,[28,[37,1],[[28,[37,2],[[30,1,[\\\"content\\\"]],\\\"0.text\\\"],null],\\\"OFFICE_SUBURB \\\"],null],[[[1,\\\"  \\\"],[1,[30,5,[\\\"suburb\\\"]]]],[]],[[[41,[28,[37,1],[[28,[37,2],[[30,1,[\\\"content\\\"]],\\\"0.text\\\"],null],\\\"APPOINTMENT_LOCATION. \\\"],null],[[[1,[28,[35,4],[[30,5]],null]],[1,\\\".\\\\n\\\"]],[]],[[[41,[28,[37,1],[[28,[37,2],[[30,1,[\\\"content\\\"]],\\\"0.text\\\"],null],\\\"FIRM_NAME\\\"],null],[[[1,\\\"  \\\"],[1,[30,6]]],[]],[[[41,[28,[37,1],[[28,[37,2],[[30,1,[\\\"content\\\"]],\\\"0.text\\\"],null],\\\"LAWYER_NAME\\\"],null],[[[1,\\\"  \\\"],[1,[30,7]],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,1],[[30,1,[\\\"text\\\"]],\\\"PHONE_MEETING_MESSAGE\\\"],null],[[[41,[28,[37,5],[[30,8],[30,9],[30,10]],null],[[[1,\\\"    \\\"],[1,[30,11]],[1,\\\"\\\\n\\\"]],[]],null]],[]],[[[41,[28,[37,1],[[30,1,[\\\"text\\\"]],\\\"PHONE_MEETING_HYPERLINK\\\"],null],[[[1,\\\"  \\\"],[10,3],[15,6,[30,12]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"\\\\n    \\\"],[1,[28,[35,7],[[30,13],[30,12]],null]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,1],[[30,1,[\\\"text\\\"]],\\\"SELECTED_INDUCTIONS\\\"],null],[[[41,[28,[37,7],[[28,[37,8],[[30,14]],null],[28,[37,5],[[30,15],[30,4],[30,7],[28,[37,8],[[30,14,[\\\"detailedInductionComplete\\\"]]],null]],null]],null],[[[42,[28,[37,10],[[28,[37,10],[[30,16]],null]],null],null,[[[1,\\\"      \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[30,17,[\\\"title\\\"]]],[1,\\\"\\\\n\\\"],[41,[30,17,[\\\"repeatBreadcrumb\\\"]],[[[1,\\\"          (\\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,17,[\\\"repeatBreadcrumb\\\"]]],[13],[1,\\\")\\\\n\\\"]],[]],null],[41,[30,17,[\\\"blurb\\\"]],[[[1,\\\"          \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[1,[30,17,[\\\"blurb\\\"]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"]],[17]],null]],[]],null]],[]],[[[41,[28,[37,1],[[30,1,[\\\"text\\\"]],\\\"SETTIFY_BUTTON\\\"],null],[[[41,[28,[37,7],[[28,[37,8],[[30,14,[\\\"detailedInductionComplete\\\"]]],null],[30,18],[28,[37,5],[[30,14],[28,[37,8],[[30,15]],null]],null]],null],[[[1,\\\"    \\\"],[10,0],[14,1,\\\"email_button\\\"],[14,0,\\\"text-center\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"validationbutton\\\"],[12],[10,2],[12],[1,[30,19]],[13],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],[[[41,[28,[37,1],[[30,1,[\\\"text\\\"]],\\\"OPTIONAL_EXTRA\\\"],null],[[[1,\\\"  \\\"],[8,[39,15],null,[[\\\"@showOptionalExtra\\\",\\\"@formattedOptionalMessage\\\",\\\"@optionalExtraMessage\\\",\\\"@toggleOptionalExtraAction\\\",\\\"@previewOptionalExtraAction\\\"],[[30,20],[30,21],[30,22],[30,23],[30,24]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,1],[[30,1,[\\\"text\\\"]],\\\"LAWYER_BIO\\\"],null],[[[1,\\\"  \\\"],[8,[39,16],null,[[\\\"@lawyerBio\\\",\\\"@lawyerPhotoURL\\\",\\\"@lawyerBioHeading\\\",\\\"@lawyerReadMoreURL\\\",\\\"@lawyerName\\\",\\\"@id\\\"],[[30,25],[30,26],[30,27],[30,28],[30,7],\\\"inviteEmailLawyerBio\\\"]],null],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"  \\\"],[8,[39,16],null,[[\\\"@lawyerBio\\\",\\\"@lawyerPhotoURL\\\",\\\"@lawyerBioHeading\\\",\\\"@lawyerReadMoreURL\\\",\\\"@lawyerName\\\",\\\"@id\\\",\\\"@isSecondLawyer\\\"],[[30,29],[30,30],[30,31],[30,32],[30,33],\\\"inviteEmailSecondLawyerBio\\\",true]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,1],[[30,1,[\\\"text\\\"]],\\\"SIGNATURE\\\"],null],[[[41,[28,[37,17],[[30,34],[30,6]],null],[[[1,\\\"    \\\"],[10,2],[12],[1,\\\"\\\\n      \\\"],[1,[30,34]],[1,\\\"\\\\n\\\"],[41,[30,35],[[[1,\\\"        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[1,[30,35]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[28,[37,1],[[30,34],[30,7]],null],[30,36,[\\\"accreditedSpecialist\\\"]]],null],[[[1,\\\"        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[10,\\\"img\\\"],[15,\\\"src\\\",[29,[\\\"https://cdn.settify.com.au/accredited-specialist-\\\",[30,36,[\\\"accreditedSpecialist\\\"]],\\\".png\\\"]]],[14,\\\"alt\\\",\\\"Accredited Specialist\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[10,2],[12],[1,\\\"\\\\n    \\\"],[10,\\\"strong\\\"],[12],[1,[30,6]],[13],[1,\\\"\\\\n    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,37],[[[1,\\\"        \\\"],[1,[30,37]],[1,\\\"\\\\n        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,38],[[[1,\\\"        \\\"],[1,[30,38]],[1,\\\"\\\\n        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,5],[[30,7],[30,15],[30,4]],null],[[[1,\\\"        \\\"],[8,[39,21],null,[[\\\"@address\\\"],[[30,5]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[44,[[28,[37,23],[[30,0,[\\\"tagName\\\"]]],null]],[[[1,\\\"    \\\"],[8,[30,39],[[16,5,[30,0,[\\\"segmentStyles\\\"]]]],null,[[\\\"default\\\"],[[[[1,[30,1,[\\\"text\\\"]]]],[]]]]],[1,\\\"\\\\n\\\"]],[39]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[\\\"@segment\\\",\\\"@clientFirstName\\\",\\\"@formattedAppointmentDate\\\",\\\"@appointmentTime\\\",\\\"@selectedOffice\\\",\\\"@firmName\\\",\\\"@lawyerName\\\",\\\"@initialPhoneMeeting\\\",\\\"@includePhoneMeetingMessage\\\",\\\"@phoneMeetingMessage\\\",\\\"@formattedPhoneMeetingMessage\\\",\\\"@hyperlinkParsed\\\",\\\"@hyperlinkText\\\",\\\"@model\\\",\\\"@appointmentDate\\\",\\\"@inductions\\\",\\\"induction\\\",\\\"@forceIncludeSettifyButton\\\",\\\"@buttonLabel\\\",\\\"@showOptionalExtra\\\",\\\"@formattedOptionalMessage\\\",\\\"@optionalExtraMessage\\\",\\\"@toggleOptionalExtraAction\\\",\\\"@previewOptionalExtraAction\\\",\\\"@lawyerBio\\\",\\\"@lawyerPhotoURL\\\",\\\"@lawyerBioHeading\\\",\\\"@lawyerReadMoreURL\\\",\\\"@secondLawyerBio\\\",\\\"@secondLawyerPhotoURL\\\",\\\"@secondLawyerBioHeading\\\",\\\"@secondLawyerReadMoreURL\\\",\\\"@secondLawyerName\\\",\\\"@emailSenderName\\\",\\\"@emailSenderTitle\\\",\\\"@lawyerDetails\\\",\\\"@emailSenderEmail\\\",\\\"@emailSenderPhone\\\",\\\"Tag\\\"],false,[\\\"if\\\",\\\"eq\\\",\\\"get\\\",\\\"span\\\",\\\"address-string\\\",\\\"and\\\",\\\"a\\\",\\\"or\\\",\\\"not\\\",\\\"each\\\",\\\"-track-array\\\",\\\"li\\\",\\\"br\\\",\\\"div\\\",\\\"p\\\",\\\"invitation/optional-extra\\\",\\\"invitation/lawyer-bio\\\",\\\"not-eq\\\",\\\"img\\\",\\\"strong\\\",\\\"small\\\",\\\"address-printer\\\",\\\"let\\\",\\\"element\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/invitation/segment-content/index.hbs\",\n    \"isStrictMode\": false\n  });\n  class InvitationSegmentContentComponent extends _component2.default {\n    get tagName() {\n      if (this.args.segment?.marks) {\n        return \"span\";\n      }\n      return \"\";\n    }\n    get segmentStyles() {\n      let stringWithStyles = \"\";\n      this.args.segment?.marks.forEach(mark => {\n        if (mark.type === \"bold\") {\n          stringWithStyles = stringWithStyles.concat(\"font-weight: bold; \");\n        }\n        if (mark.type === \"italic\") {\n          stringWithStyles = stringWithStyles.concat(\"font-style: italic; \");\n        }\n      });\n      return (0, _template.htmlSafe)(stringWithStyles);\n    }\n    get isAppointmentLocationSegment() {\n      return (this.args.segment?.content && this.args.segment?.content?.firstObject?.text.includes(\"APPOINTMENT_LOCATION.\")) ?? false;\n    }\n  }\n  _exports.default = InvitationSegmentContentComponent;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, InvitationSegmentContentComponent);\n});","define(\"settify-mvp/components/invoice-item\", [\"exports\", \"@ember/runloop\", \"@ember/object\", \"@ember/service\", \"@ember/component\", \"moment\"], function (_exports, _runloop, _object, _service, _component, _moment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/component\",0,\"moment\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    lambda: (0, _service.inject)(),\n    isExpanded: false,\n    showEmailBox: false,\n    showSuccessMessage: false,\n    showFailureMessage: false,\n    requestSentOlderThan7Days: (0, _object.computed)(\"invoice.requestSent\", function () {\n      let requestSent = this.get(\"invoice.requestSent\");\n      return (0, _moment.default)(requestSent).isBefore((0, _moment.default)().subtract(7, \"day\"));\n    }),\n    dateSent: (0, _object.computed)(\"invoice.requestSent\", function () {\n      return (0, _moment.default)(this.get(\"invoice.requestSent\")).format(\"DD/MM/YYYY\");\n    }),\n    dateCompleted: (0, _object.computed)(\"invoice.requestCompleted\", function () {\n      if (!this.get(\"invoice.requestCompleted\")) {\n        return \"Not completed\";\n      }\n      return (0, _moment.default)(this.get(\"invoice.requestCompleted\")).format(\"DD/MM/YYYY\");\n    }),\n    dateUnsubscribed: (0, _object.computed)(\"invoice.unsubscribed\", function () {\n      if (!this.get(\"invoice.unsubscribed\")) {\n        return \"N/A\";\n      }\n      return (0, _moment.default)(this.get(\"invoice.unsubscribed\")).format(\"DD/MM/YYYY\");\n    }),\n    billingPortalURL: (0, _object.computed)(\"invoice.{startDate,endDate,requestType}\", \"firm.settifyURL\", function () {\n      const baseURL = `${this.get(\"firm.settifyURL\")}/admin/reviewinvoice`;\n      if (this.get(\"invoice.requestType\") === \"sweep\") {\n        return `${baseURL}?historical=true`;\n      }\n      const startDate = (0, _moment.default)(this.get(\"invoice.startDate\")).utc().format(\"YYYY-MM-DD\");\n      const endDate = (0, _moment.default)(this.get(\"invoice.endDate\")).utc().format(\"YYYY-MM-DD\");\n      return `${baseURL}?startDate=${startDate}&endDate=${endDate}`;\n    }),\n    actions: {\n      displayInvoiceDetails() {\n        this.toggleProperty(\"isExpanded\");\n      },\n      enterEmails() {\n        this.toggleProperty(\"showEmailBox\");\n      },\n      hideEmailBox() {\n        this.set(\"showEmailBox\", false);\n      },\n      undoInvoice() {\n        this.set(\"loading\", true);\n        let startDate = (0, _moment.default)(this.get(\"invoice.startDate\")).utc().format(\"YYYY-MM-DD\");\n        let endDate = (0, _moment.default)(this.get(\"invoice.endDate\")).utc().format(\"YYYY-MM-DD\");\n        let sweep = false;\n        if (this.get(\"invoice.requestType\") === \"sweep\") {\n          sweep = true;\n        }\n        return this.lambda.invoke(this.get(\"lambda.voidXeroInvoiceLambda\"), {\n          adminUsername: this.get(\"session.data.authenticated.username\"),\n          firmID: this.firmID,\n          startDate: startDate,\n          endDate: endDate,\n          sweep: sweep,\n          notifyEmails: this.emails,\n          notifyNames: this.names,\n          xeroInvoiceNumber: this.get(\"invoice.xeroInvoiceNumber\"),\n          xeroInvoiceUUID: this.get(\"invoice.xeroInvoiceUUID\")\n        }).then(this.lambda.processResponse).then(data => {\n          if (data.error) {\n            this.set(\"showFailureMessage\", `This invoice cannot be undone, probably because it has already been paid. \n          Instead, you will need to add a credit line item, to be included on future invoices. \n          (This feature is not yet implemented but is coming soon - in the meantime, contact Matt Weston directly.)`);\n          } else {\n            this.set(\"showSuccessMessage\", true);\n          }\n          this.set(\"loading\", false);\n        }).then(() => {\n          if (this.showSuccessMessage) {\n            (0, _runloop.later)(() => {\n              this.reload();\n            }, 7000);\n          }\n        });\n      }\n    }\n  });\n});","define(\"settify-mvp/components/lawyer-photo\", [\"exports\", \"@ember/component\", \"@ember/service\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/template-factory\"], function (_exports, _component, _service, _component2, _tracking, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@glimmer/component\",0,\"@glimmer/tracking\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.photoURL}}\n    <p>\n      <img class=\"personphoto medium\" src={{this.photoURL}} alt=\"{{@name}}\">\n    </p>\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"Yqm/BhJb\",\n    \"block\": \"[[[41,[30,0,[\\\"photoURL\\\"]],[[[1,\\\"  \\\"],[10,2],[12],[1,\\\"\\\\n    \\\"],[10,\\\"img\\\"],[14,0,\\\"personphoto medium\\\"],[15,\\\"src\\\",[30,0,[\\\"photoURL\\\"]]],[15,\\\"alt\\\",[29,[[30,1]]]],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@name\\\"],false,[\\\"if\\\",\\\"p\\\",\\\"img\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/lawyer-photo.hbs\",\n    \"isStrictMode\": false\n  });\n  let LawyerPhotoComponent = _exports.default = (_class = class LawyerPhotoComponent extends _component2.default {\n    constructor() {\n      super(...arguments);\n      _initializerDefineProperty(this, \"lawyerList\", _descriptor, this);\n      _initializerDefineProperty(this, \"lawyers\", _descriptor2, this);\n      if (this.args.name) {\n        this._loadLawyers();\n      }\n    }\n    get photoURL() {\n      if (this.args?.name) {\n        const lawyer = this.lawyers.find(lawyer => lawyer.name && lawyer.name.toLowerCase() === this.args.name.toLowerCase());\n        if (lawyer) {\n          return lawyer.photoURL;\n        }\n      }\n      return null;\n    }\n    async _loadLawyers() {\n      this.lawyers = await this.lawyerList.load();\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"lawyerList\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"lawyers\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return [];\n    }\n  }), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, LawyerPhotoComponent);\n});","define(\"settify-mvp/components/lawyer-select\", [\"exports\", \"@ember/component\", \"@ember/runloop\", \"@ember/object\", \"@ember/utils\", \"@ember/service\", \"@ember/template-factory\"], function (_exports, _component, _runloop, _object, _utils, _service, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/utils\",0,\"@ember/service\",0,\"@ember/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <LiquidIf @predicate={{this.lawyerListLoading}}>\n    Loading lawyers...\n    <LoadingSpinner />\n  </LiquidIf>\n  <LiquidIf @predicate={{not this.lawyerListLoading}}>\n    <p class=\"lawyer-select-wrapper\">\n      <table width=\"100%\" class=\"width-100\">\n        <tbody>\n          <tr>\n            <td class=\"align-top\">\n              <SettifySelect\n                @label={{@label}}\n                @model={{this.selectedLawyer}}\n                @name=\"lawyer\"\n                @content={{this.lawyerSelect}}\n                @labelPath=\"label\"\n                @valuePath=\"value\"\n                @prompt={{@prompt}}\n                @selectablePrompt={{@selectablePrompt}}\n                @onChange={{@onChange}}\n                @required={{@required}}\n              />\n            </td>\n            <td class=\"lawyer-select-photo\">\n              <img class=\"personphoto medium\" src={{if @lawyerDetails.photoURL @lawyerDetails.photoURL \"/assets/images/nophoto.png\"}} alt=\"{{@lawyerName}}\" />\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </p>\n    {{#unless @hideConfigLink}}\n      <p>\n        <small><b>Note:</b> you can manage your lawyers and assistants from the <LinkTo @route=\"admin.config\">configuration menu</LinkTo></small>\n      </p>\n    {{/unless}}\n    <LiquidIf @predicate={{eq this.selectedLawyer \"addnewlawyer\"}}>\n      <p><SettifyTextline @label=\"Lawyer's full name\" @placeholder=\"eg, Laura O'Lawyer\" @model={{this.newLawyerName}} @required={{true}} /></p>\n      <p><SettifyEmailInput\n          @label=\"Lawyer's email address\"\n          @placeholder=\"eg, laura.olawyer@lawfirm.com.au\"\n          @model={{this.newLawyerEmail}}\n          @required={{true}}\n          @validation={{this.newLawyerEmailValid}}\n        /></p>\n    </LiquidIf>\n  \n  </LiquidIf>\n  */\n  {\n    \"id\": \"iC08cTNC\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@predicate\\\"],[[30,0,[\\\"lawyerListLoading\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  Loading lawyers...\\\\n  \\\"],[8,[39,1],null,null,null],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"],[8,[39,0],null,[[\\\"@predicate\\\"],[[28,[37,2],[[30,0,[\\\"lawyerListLoading\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,2],[14,0,\\\"lawyer-select-wrapper\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"table\\\"],[14,\\\"width\\\",\\\"100%\\\"],[14,0,\\\"width-100\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[14,0,\\\"align-top\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,8],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\",\\\"@prompt\\\",\\\"@selectablePrompt\\\",\\\"@onChange\\\",\\\"@required\\\"],[[30,1],[30,0,[\\\"selectedLawyer\\\"]],\\\"lawyer\\\",[30,0,[\\\"lawyerSelect\\\"]],\\\"label\\\",\\\"value\\\",[30,2],[30,3],[30,4],[30,5]]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[14,0,\\\"lawyer-select-photo\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"img\\\"],[14,0,\\\"personphoto medium\\\"],[15,\\\"src\\\",[52,[30,6,[\\\"photoURL\\\"]],[30,6,[\\\"photoURL\\\"]],\\\"/assets/images/nophoto.png\\\"]],[15,\\\"alt\\\",[29,[[30,7]]]],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[41,[51,[30,8]],[[[1,\\\"    \\\"],[10,2],[12],[1,\\\"\\\\n      \\\"],[10,\\\"small\\\"],[12],[10,\\\"b\\\"],[12],[1,\\\"Note:\\\"],[13],[1,\\\" you can manage your lawyers and assistants from the \\\"],[8,[39,14],null,[[\\\"@route\\\"],[\\\"admin.config\\\"]],[[\\\"default\\\"],[[[[1,\\\"configuration menu\\\"]],[]]]]],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[8,[39,0],null,[[\\\"@predicate\\\"],[[28,[37,15],[[30,0,[\\\"selectedLawyer\\\"]],\\\"addnewlawyer\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,2],[12],[8,[39,16],null,[[\\\"@label\\\",\\\"@placeholder\\\",\\\"@model\\\",\\\"@required\\\"],[\\\"Lawyer's full name\\\",\\\"eg, Laura O'Lawyer\\\",[30,0,[\\\"newLawyerName\\\"]],true]],null],[13],[1,\\\"\\\\n    \\\"],[10,2],[12],[8,[39,17],null,[[\\\"@label\\\",\\\"@placeholder\\\",\\\"@model\\\",\\\"@required\\\",\\\"@validation\\\"],[\\\"Lawyer's email address\\\",\\\"eg, laura.olawyer@lawfirm.com.au\\\",[30,0,[\\\"newLawyerEmail\\\"]],true,[30,0,[\\\"newLawyerEmailValid\\\"]]]],null],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"]],[]]]]]],[\\\"@label\\\",\\\"@prompt\\\",\\\"@selectablePrompt\\\",\\\"@onChange\\\",\\\"@required\\\",\\\"@lawyerDetails\\\",\\\"@lawyerName\\\",\\\"@hideConfigLink\\\"],false,[\\\"liquid-if\\\",\\\"loading-spinner\\\",\\\"not\\\",\\\"p\\\",\\\"table\\\",\\\"tbody\\\",\\\"tr\\\",\\\"td\\\",\\\"settify-select\\\",\\\"img\\\",\\\"if\\\",\\\"unless\\\",\\\"small\\\",\\\"b\\\",\\\"link-to\\\",\\\"eq\\\",\\\"settify-textline\\\",\\\"settify-email-input\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/lawyer-select.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({\n    lawyerList: (0, _service.inject)(),\n    newLawyerName: \"\",\n    newLawyerEmail: \"\",\n    newLawyerEmailValid: false,\n    cookies: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    init() {\n      this._super(...arguments);\n      this.set(\"lawyerListLoading\", true);\n      this.lawyerList.load(true, this.firmID).then(() => {\n        // Check if component is destroyed. If we have situation that component is destroyed, \"this\" is unavailable.\n        // WHERE IT HAPPENS: Get Pdf / Get CSV-Excel functionality. Say we have opened CSV tab, after clicking on Get PDF\n        // tab, CSV select component is destroyed after some time and we don't have acces to \"this\" in then() and finally() promise\n        // TO DO: Try to find alternative solution for this.\n\n        const allowLawyers = !this?.noLawyers;\n        const allowPAs = !this?.noPAs;\n        if (!this.isDestroyed) {\n          // create appropriate POJO for use in <select> field\n          // make sure it includes an \"add new lawyer\"\n          // note that we map before filtering, so that our index points back to the original lawyer list correctly\n          let selects = this.lawyerList.list.map((elt, idx) => {\n            let label = elt.name;\n            if (!label) {\n              if (elt.personType === \"lawyer\") {\n                label = \"Unnamed Lawyer\";\n              } else {\n                label = \"Unnamed Assistant\";\n              }\n            }\n            if (elt.tag) {\n              label += ` ${elt.tag}`;\n            }\n            if (elt.email) {\n              label += ` (${elt.email})`;\n            }\n            return {\n              label: label,\n              value: idx,\n              personType: elt.personType,\n              practiceAreas: elt.practiceAreas,\n              disabled: elt.disabled\n            };\n          }).filter(p => {\n            if (p.personType === \"lawyer\" && !allowLawyers) {\n              return false;\n            }\n            if (p.personType === \"pa\" && !allowPAs) {\n              return false;\n            }\n            if (!this?.allPracticeAreas && p.practiceAreas && !p.practiceAreas[this.get(\"firm.practiceArea\")]) {\n              return false;\n            }\n            if (p.disabled) {\n              return false;\n            }\n            return true;\n          });\n          if (this.prompt && this.selectablePrompt) {\n            selects = [{\n              label: this.prompt,\n              value: null\n            }].concat(selects);\n          }\n          this.set(\"lawyerSelect\", selects);\n          let desiredLawyer = \"\";\n          if (!this.noDefaultSelection) {\n            // read cookie for this user's preferred selection\n            desiredLawyer = this.cookies.read(\"inviteLawyer\");\n          }\n          // forceLawyer can override the cookie preference\n          if (this.forceLawyer) {\n            desiredLawyer = this.forceLawyer;\n          } else if (this.forceLawyer === 0) {\n            desiredLawyer = undefined;\n            this.set(\"selectedLawyer\", undefined);\n            this.set(\"lawyerName\", undefined);\n            this.set(\"lawyerEmail\", undefined);\n            this.set(\"lawyerBCCs\", undefined);\n            this.set(\"lawyerCCs\", undefined);\n            this.set(\"lawyerBio\", undefined);\n            this.set(\"lawyerPhotoURL\", undefined);\n            this.set(\"lawyerReadMoreURL\", undefined);\n            this.set(\"lawyerDetails\", undefined);\n            this.set(\"lawyerEmailValid\", undefined);\n          }\n          if (allowLawyers && desiredLawyer) {\n            // select this user's preferred selection\n            // note that we only save this for lawyer lists, not PA lists\n            const lawyers = this.lawyerList.list;\n            for (let i = 0; i < selects.length; i++) {\n              const masterIndex = selects[i].value;\n              if (!(0, _utils.isNone)(masterIndex) && lawyers[masterIndex].name === desiredLawyer) {\n                this.set(\"selectedLawyer\", masterIndex);\n                this.set(\"lawyerName\", lawyers[masterIndex].name);\n                this.set(\"lawyerEmail\", lawyers[masterIndex].email);\n                this.set(\"lawyerBCCs\", lawyers[masterIndex].BCCs);\n                this.set(\"lawyerCCs\", lawyers[masterIndex].CCs);\n                this.set(\"lawyerBio\", lawyers[masterIndex].bio);\n                this.set(\"lawyerPhotoURL\", lawyers[masterIndex].photoURL);\n                this.set(\"lawyerReadMoreURL\", lawyers[masterIndex].readMoreURL);\n                this.set(\"lawyerDetails\", lawyers[masterIndex]);\n                this.set(\"lawyerEmailValid\", true);\n                break;\n              }\n            }\n          }\n          if (!this.selectedLawyer && this.forceLawyer) {\n            if (this.lawyerDetails) {\n              this.refreshSelectionIndex();\n            } else if (selects.length > 1) {\n              const idx = selects[0].value;\n              this.set(\"selectedLawyer\", idx);\n              if (!(0, _utils.isNone)(idx)) {\n                const lawyers = this.lawyerList.list;\n                this.set(\"lawyerName\", lawyers[idx].name);\n                this.set(\"lawyerEmail\", lawyers[idx].email);\n                this.set(\"lawyerBCCs\", lawyers[idx].BCCs);\n                this.set(\"lawyerCCs\", lawyers[idx].CCs);\n                this.set(\"lawyerBio\", lawyers[idx].bio);\n                this.set(\"lawyerPhotoURL\", lawyers[idx].photoURL);\n                this.set(\"lawyerReadMoreURL\", lawyers[idx].readMoreURL);\n                this.set(\"lawyerDetails\", lawyers[idx]);\n                this.set(\"lawyerEmailValid\", true);\n              }\n            } else {\n              this.set(\"selectedLawyer\", \"addnewlawyer\");\n            }\n          }\n        }\n      }).finally(() => {\n        if (!this.isDestroyed) {\n          this.set(\"lawyerListLoading\", false);\n        }\n      });\n    },\n    updateSelectedLawyer: (0, _object.observer)(\"selectedLawyer\", \"newLawyerName\", \"newLawyerEmail\", \"newLawyerEmailValid\", function () {\n      const sl = this.selectedLawyer;\n      if (sl === \"addnewlawyer\") {\n        this.set(\"lawyerName\", this.newLawyerName);\n        this.set(\"lawyerEmail\", this.newLawyerEmail);\n        this.set(\"lawyerEmailValid\", this.newLawyerEmailValid);\n        this.set(\"lawyerBCCs\", undefined);\n        this.set(\"lawyerCCs\", undefined);\n        this.set(\"lawyerBio\", undefined);\n        this.set(\"lawyerPhotoURL\", undefined);\n        this.set(\"lawyerReadMoreURL\", undefined);\n        this.set(\"lawyerDetails\", undefined);\n      } else {\n        const idx = parseInt(sl);\n        if (this.updateRecipients) {\n          this.updateRecipients(idx, this.compIndex);\n        }\n        if (isNaN(idx)) {\n          this.set(\"lawyerName\", undefined);\n          this.set(\"lawyerEmail\", undefined);\n          this.set(\"lawyerEmailValid\", undefined);\n          this.set(\"lawyerBCCs\", undefined);\n          this.set(\"lawyerCCs\", undefined);\n          this.set(\"lawyerBio\", undefined);\n          this.set(\"lawyerPhotoURL\", undefined);\n          this.set(\"lawyerReadMoreURL\", undefined);\n          this.set(\"lawyerDetails\", undefined);\n        } else {\n          const lawyer = this.lawyerList.list[idx];\n          this.set(\"lawyerName\", lawyer.name);\n          this.set(\"lawyerEmail\", lawyer.email);\n          this.set(\"lawyerBCCs\", lawyer.BCCs);\n          this.set(\"lawyerCCs\", lawyer.CCs);\n          this.set(\"lawyerBio\", lawyer.bio);\n          this.set(\"lawyerPhotoURL\", lawyer.photoURL);\n          this.set(\"lawyerReadMoreURL\", lawyer.readMoreURL);\n          this.set(\"lawyerEmailValid\", true);\n          this.set(\"lawyerDetails\", lawyer);\n        }\n      }\n      if (!this.noLawyers) {\n        (0, _runloop.later)(this, () => {\n          // update the 'last selected' cookie, but only if this is a lawyer (not a PA)\n          this.cookies.write(\"inviteLawyer\", this.lawyerName, {\n            path: \"/\",\n            expires: new Date(Date.now() + 1000 * 60 * 60 * 24 * 90)\n          });\n        }, 100);\n      }\n    }),\n    onRefreshRequired: (0, _object.observer)(\"refreshToggle\", function () {\n      this.refreshSelectionIndex();\n    }),\n    refreshSelectionIndex() {\n      // called when someone else updates the lawyerDetails on us, so that we can keep the selected item up-to-date\n      const selected = this.lawyerDetails;\n      if (!selected) {\n        this.set(\"selectedLawyer\", undefined);\n        return;\n      }\n      const lawyers = this.get(\"lawyerList.list\");\n      for (let i = 0; i < lawyers.length; i++) {\n        if (lawyers[i].personID === selected.personID) {\n          this.set(\"selectedLawyer\", i);\n          return;\n        }\n      }\n      // no match!\n      this.set(\"selectedLawyer\", undefined);\n    },\n    actions: {\n      removeLawyer() {\n        this.remove(this, this.compIndex);\n      }\n    }\n  }));\n});","define(\"settify-mvp/components/lead-billing-options\", [\"exports\", \"@ember/component\", \"@ember/object/computed\", \"@ember/object\", \"@ember/service\", \"settify-mvp/mixins/firm-notes\", \"@ember/template-factory\"], function (_exports, _component, _computed, _object, _service, _firmNotes, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object/computed\",0,\"@ember/component\",0,\"@ember/object\",0,\"@ember/service\",0,\"settify-mvp/mixins/firm-notes\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <LiquidIf @predicate={{this.showBillingStatusOptions}}>\n    {{#if @displayOnly}}\n      <span class=\"conversion-bubble clickable\" {{action (if @lead.editingNotes \"cancelEditClientNotes\" \"editClientNotes\") @lead}}>\n        <i class=\"fal fa-{{this.leadsBillingType.icon}}\" />\n        {{this.leadsBillingType.displayName}}\n      </span>\n    {{else}}\n      <div class=\"lead-billing\">\n        <p>\n          <small>Billing Status:</small>\n          {{#if this.isBillingStatusLocked}}\n            <span class=\"conversion-bubble\"><i class=\"fal fa-lock\" />{{this.leadsBillingType.displayName}}</span>\n          {{else if (and this.billingInvoiceType (not this.editingBilling))}}\n            <span class=\"conversion-bubble\">\n              <i class=\"fal fa-{{this.leadsBillingType.icon}}\" />\n              {{this.leadsBillingType.displayName}}\n            </span>\n            <button type=\"button\" title=\"Discard changes\" {{action \"editLeadType\"}}>(edit)</button>\n          {{else}}\n            {{#each this.conversionTypesForLead as |type|}}\n              <span title={{type.description}} {{action \"setInvoiceType\" @lead type}} class=\"conversion-bubble clickable\">\n                <i class=\"fal fa-{{type.fontawesome}}\" />\n                {{type.longName}}\n              </span>\n            {{/each}}\n            {{#if this.editingBilling}}\n              <button type=\"button\" title=\"Discard changes\" {{action \"editLeadType\"}}>(cancel)</button>\n            {{/if}}\n            {{#if this.updatingLeadBilling}}\n              <i class=\"fal fa-spinner fa-spin lead-billing-spinner\" />\n            {{/if}}\n          {{/if}}\n        </p>\n      </div>\n    {{/if}}\n  </LiquidIf>\n  */\n  {\n    \"id\": \"qg+M3VAr\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showBillingStatusOptions\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1],[[[1,\\\"    \\\"],[11,1],[24,0,\\\"conversion-bubble clickable\\\"],[4,[38,3],[[30,0],[52,[30,2,[\\\"editingNotes\\\"]],\\\"cancelEditClientNotes\\\",\\\"editClientNotes\\\"],[30,2]],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-\\\",[30,0,[\\\"leadsBillingType\\\",\\\"icon\\\"]]]]],[12],[13],[1,\\\"\\\\n      \\\"],[1,[30,0,[\\\"leadsBillingType\\\",\\\"displayName\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"lead-billing\\\"],[12],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        \\\"],[10,\\\"small\\\"],[12],[1,\\\"Billing Status:\\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"isBillingStatusLocked\\\"]],[[[1,\\\"          \\\"],[10,1],[14,0,\\\"conversion-bubble\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-lock\\\"],[12],[13],[1,[30,0,[\\\"leadsBillingType\\\",\\\"displayName\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,0,[\\\"billingInvoiceType\\\"]],[28,[37,9],[[30,0,[\\\"editingBilling\\\"]]],null]],null],[[[1,\\\"          \\\"],[10,1],[14,0,\\\"conversion-bubble\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-\\\",[30,0,[\\\"leadsBillingType\\\",\\\"icon\\\"]]]]],[12],[13],[1,\\\"\\\\n            \\\"],[1,[30,0,[\\\"leadsBillingType\\\",\\\"displayName\\\"]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[11,\\\"button\\\"],[24,\\\"title\\\",\\\"Discard changes\\\"],[24,4,\\\"button\\\"],[4,[38,3],[[30,0],\\\"editLeadType\\\"],null],[12],[1,\\\"(edit)\\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[42,[28,[37,12],[[28,[37,12],[[30,0,[\\\"conversionTypesForLead\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[11,1],[16,\\\"title\\\",[30,3,[\\\"description\\\"]]],[24,0,\\\"conversion-bubble clickable\\\"],[4,[38,3],[[30,0],\\\"setInvoiceType\\\",[30,2],[30,3]],null],[12],[1,\\\"\\\\n              \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-\\\",[30,3,[\\\"fontawesome\\\"]]]]],[12],[13],[1,\\\"\\\\n              \\\"],[1,[30,3,[\\\"longName\\\"]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[3]],null],[41,[30,0,[\\\"editingBilling\\\"]],[[[1,\\\"            \\\"],[11,\\\"button\\\"],[24,\\\"title\\\",\\\"Discard changes\\\"],[24,4,\\\"button\\\"],[4,[38,3],[[30,0],\\\"editLeadType\\\"],null],[12],[1,\\\"(cancel)\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"updatingLeadBilling\\\"]],[[[1,\\\"            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-spinner fa-spin lead-billing-spinner\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"]],[]]]],[]]],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[]]]]]],[\\\"@displayOnly\\\",\\\"@lead\\\",\\\"type\\\"],false,[\\\"liquid-if\\\",\\\"if\\\",\\\"span\\\",\\\"action\\\",\\\"i\\\",\\\"div\\\",\\\"p\\\",\\\"small\\\",\\\"and\\\",\\\"not\\\",\\\"button\\\",\\\"each\\\",\\\"-track-array\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/lead-billing-options.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend(_firmNotes.default, {\n    lambda: (0, _service.inject)(),\n    eventLogging: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    showBillingStatusOptions: (0, _computed.reads)(\"lead.conflictCheckCompleted\"),\n    isBillingStatusLocked: (0, _computed.reads)(\"lead.billingLocked\"),\n    conversionTypesForLead: (0, _object.computed)(\"lead\", \"conversionTypes\", function () {\n      const {\n        lead\n      } = this;\n      return this.conversionTypes.filter(c => c.allowedPracticeArea === lead.practiceArea).filter(type => type.allowedForInvites && lead.referral === \"invitation\" || type.allowedForWebsites && lead.referral !== \"invitation\").filter(type => lead.billingFlag === type.requiredBillingFlags || !type.requiredBillingFlags);\n    }),\n    // allows us to show right value depending on when client was marked (billable/non-billable)\n    billingInvoiceType: (0, _computed.or)(\"lead.billingSweepInvoiceType\", \"lead.invoiceType\"),\n    leadsBillingType: (0, _object.computed)(\"lead.conversionTypeAtReferralDate\", \"billingInvoiceType\", function () {\n      const leadConversionGroup = this.get(\"lead.conversionTypeAtReferralDate\");\n      // get billing name and icon from a hardcode list of possible values\n      return this.determineBillingDisplayNameAndIcon(this.billingInvoiceType, leadConversionGroup);\n    }),\n    determineBillingDisplayNameAndIcon(invoiceType, groupName) {\n      if (groupName && groupName.startsWith(\"LEADS_\")) {\n        // hardcoded possible leads billing types\n        const billingTypes = {\n          Billable: {\n            displayName: \"Billable lead\",\n            icon: \"check\"\n          },\n          NonBillable: {\n            displayName: \"Non-billable lead\",\n            icon: \"times\"\n          },\n          Unknown: {\n            displayName: \"Unknown\",\n            icon: \"question-circle\"\n          }\n        };\n        return billingTypes[invoiceType] || billingTypes.Unknown;\n      }\n      // hardcoded possible non-leads billing types\n      const billingTypes = {\n        Normal: {\n          displayName: \"Became a client\",\n          icon: \"check\"\n        },\n        NonBillable: {\n          displayName: \"Did not become a client\",\n          icon: \"times\"\n        },\n        WillSingle: {\n          displayName: \"Became a client (single)\",\n          icon: \"check\"\n        },\n        WillCouple: {\n          displayName: \"Became a client (couple)\",\n          icon: \"check\"\n        },\n        WillHalfCouple: {\n          displayName: \"Became a client (couple)\",\n          icon: \"check\"\n        },\n        TooSoon: {\n          displayName: \"Too soon to tell\",\n          icon: \"clock\"\n        },\n        Test: {\n          displayName: \"Just a test\",\n          icon: \"cog\"\n        },\n        NonProceeding: {\n          displayName: \"Did not proceed beyond first meeting\",\n          icon: \"times\"\n        },\n        PseudoInvite: {\n          displayName: \"Existing relationship\",\n          icon: \"check\"\n        },\n        NonPayingHalf: {\n          displayName: \"Second party to a mediation\",\n          icon: \"check\"\n        },\n        LowFee: {\n          displayName: \"Low-fee matter (less than £500)\",\n          icon: \"check\"\n        },\n        InitialConference: {\n          displayName: \"Initial conference only\",\n          icon: \"star-half-alt\"\n        },\n        Ongoing: {\n          displayName: \"Became an ongoing client\",\n          icon: \"star-exclamation\"\n        },\n        OngoingClient: {\n          displayName: \"Became an ongoing client\",\n          icon: \"star-exclamation\"\n        },\n        NonAttending: {\n          displayName: \"Did not attend first meeting\",\n          icon: \"times\"\n        },\n        LegalAid: {\n          displayName: \"Legal aid / pro-bono\",\n          icon: \"heart\"\n        },\n        Free: {\n          displayName: \"Non-billable lead (free)\",\n          icon: \"check\"\n        },\n        Unknown: {\n          displayName: \"Unknown\",\n          icon: \"question-circle\"\n        }\n      };\n      return billingTypes[invoiceType] || billingTypes.TooSoon;\n    },\n    actions: {\n      editLeadType() {\n        if (this.isBillingStatusLocked) {\n          // do not allow editing locked leads\n          return;\n        }\n        // toggles lead billing editing on/off\n        this.set(\"editingBilling\", !this.editingBilling);\n      },\n      setInvoiceType(lead, type) {\n        if (this.isBillingStatusLocked || this.updatingLeadBilling) {\n          // do not set invoice type on locked lead or while lead is updating\n          return;\n        }\n        const payload = {\n          firmID: this.get(\"firm.id\"),\n          clientID: lead.clientID,\n          invoiceType: type.shortName,\n          conversionGroup: type.groupName,\n          invoiceAmountCents: type.invoiceAmountCents,\n          description: type.invoiceNarration,\n          displayDate: lead.referredToFirmDate || lead.becameLeadDate,\n          practiceArea: lead.practiceArea\n        };\n        this.set(\"updatingLeadBilling\", true);\n        return this.lambda.invoke(this.get(\"lambda.setBillingInformationLambda\"), payload).then(() => {\n          (0, _object.set)(lead, \"conversionTypeAtReferralDate\", type.groupName);\n          (0, _object.set)(lead, \"invoiceType\", type.shortName);\n        }).then(() => {\n          // TODO: surely event logging like this could be done AWS side instead of on the client?\n          // trigger an admin eventLogging\n          this.eventLogging.adminLog(lead.clientID, this.eventLogging.adminIDs.clientBillingStatusChanged, type.shortName);\n        }).finally(() => {\n          // update status and clear editing flag\n          this.set(\"updatingLeadBilling\", null);\n          this.set(\"editingBilling\", false);\n        });\n      }\n    }\n  }));\n});","define(\"settify-mvp/components/lf-get-outlet-state\", [\"exports\", \"liquid-fire/components/lf-get-outlet-state\"], function (_exports, _lfGetOutletState) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _lfGetOutletState.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/components/lf-get-outlet-state\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/line-icon\", [\"exports\", \"@ember/template\", \"@ember/object\", \"@ember/component\"], function (_exports, _template, _object, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template\",0,\"@ember/object\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    tagName: \"\",\n    remoteURL: (0, _object.computed)(\"src\", function () {\n      const isBrowserIE = window.document.documentMode;\n      return this?.src?.match(/^http/i) || isBrowserIE;\n    }),\n    style: (0, _object.computed)(\"src\", \"remoteURL\", function () {\n      let style = \"\";\n      if (this?.remoteURL) {\n        style = \"background: transparent;\";\n      } else if (this?.src) {\n        const {\n          src\n        } = this;\n        style = (0, _template.htmlSafe)(`\n      -webkit-mask-image: url('${src}');\n      mask-image: url('${src}');\n      filter: none;\n      `);\n      }\n      return (0, _template.htmlSafe)(style);\n    }),\n    imgSrc: (0, _object.computed)(\"src\", \"remoteURL\", function () {\n      if (this?.remoteURL) return this.src;\n      return \"/assets/images/transparent.png\";\n    })\n  });\n});","define(\"settify-mvp/components/linked-record-display\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/service\", \"@glimmer/tracking\", \"@ember/template-factory\"], function (_exports, _component, _component2, _service, _tracking, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/service\",0,\"@glimmer/tracking\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <LiquidIf @predicate={{this.loading}}>\n    <LoadingSpinner />\n  </LiquidIf>\n  <LiquidIf @predicate={{this.noLinks}}>\n    Sorry, no other records found\n  </LiquidIf>\n  <LiquidIf @predicate={{this.loaded}}>\n    {{#each this.links as |link|}}\n      {{#if link.metadata.differentFirm}}\n        {{@client.name}}\n        has a linked record at a different firm\n      {{else}}\n        <PracticeAreaIcon @practiceArea={{link.practiceArea}} />\n        {{#if link.metadata.referredToFirm}}\n          <PracticeAreaLink @practiceArea={{link.practiceArea}} @clientID={{link.clientID}}>\n            View\n            {{@client.name}}'s\n            {{link.practiceArea}}\n            record\n          </PracticeAreaLink>\n        {{else}}\n          {{@client.name}}\n          is in the process of completing a\n          {{link.practiceArea}}\n          record\n          {{! \n            Because we only display this component after a conflict check has been performed AND because we link the conflict results, \n            it is safe to provide a link to the WIP record \n          }}\n          <PracticeAreaLink @practiceArea={{link.practiceArea}} @clientID={{link.clientID}}>\n            (view their progress so far)\n          </PracticeAreaLink>\n        {{/if}}\n      {{/if}}\n    {{/each}}\n  </LiquidIf>\n  */\n  {\n    \"id\": \"Sz4Aogr2\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@predicate\\\"],[[30,0,[\\\"loading\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[39,1],null,null,null],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"],[8,[39,0],null,[[\\\"@predicate\\\"],[[30,0,[\\\"noLinks\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  Sorry, no other records found\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"],[8,[39,0],null,[[\\\"@predicate\\\"],[[30,0,[\\\"loaded\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,3],[[28,[37,3],[[30,0,[\\\"links\\\"]]],null]],null],null,[[[41,[30,1,[\\\"metadata\\\",\\\"differentFirm\\\"]],[[[1,\\\"      \\\"],[1,[30,2,[\\\"name\\\"]]],[1,\\\"\\\\n      has a linked record at a different firm\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[39,5],null,[[\\\"@practiceArea\\\"],[[30,1,[\\\"practiceArea\\\"]]]],null],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"metadata\\\",\\\"referredToFirm\\\"]],[[[1,\\\"        \\\"],[8,[39,6],null,[[\\\"@practiceArea\\\",\\\"@clientID\\\"],[[30,1,[\\\"practiceArea\\\"]],[30,1,[\\\"clientID\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          View\\\\n          \\\"],[1,[30,2,[\\\"name\\\"]]],[1,\\\"'s\\\\n          \\\"],[1,[30,1,[\\\"practiceArea\\\"]]],[1,\\\"\\\\n          record\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[1,[30,2,[\\\"name\\\"]]],[1,\\\"\\\\n        is in the process of completing a\\\\n        \\\"],[1,[30,1,[\\\"practiceArea\\\"]]],[1,\\\"\\\\n        record\\\\n\\\"],[1,\\\"        \\\"],[8,[39,6],null,[[\\\"@practiceArea\\\",\\\"@clientID\\\"],[[30,1,[\\\"practiceArea\\\"]],[30,1,[\\\"clientID\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          (view their progress so far)\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]],[]]]],[1]],null]],[]]]]]],[\\\"link\\\",\\\"@client\\\"],false,[\\\"liquid-if\\\",\\\"loading-spinner\\\",\\\"each\\\",\\\"-track-array\\\",\\\"if\\\",\\\"practice-area-icon\\\",\\\"practice-area-link\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/linked-record-display.hbs\",\n    \"isStrictMode\": false\n  });\n  let LinkedRecordDisplayComponent = _exports.default = (_class = class LinkedRecordDisplayComponent extends _component2.default {\n    constructor(owner, args) {\n      super(owner, args);\n      _initializerDefineProperty(this, \"clientRecords\", _descriptor, this);\n      _initializerDefineProperty(this, \"lambda\", _descriptor2, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor3, this);\n      _initializerDefineProperty(this, \"loading\", _descriptor4, this);\n      _initializerDefineProperty(this, \"loaded\", _descriptor5, this);\n      _initializerDefineProperty(this, \"noLinks\", _descriptor6, this);\n      _initializerDefineProperty(this, \"links\", _descriptor7, this);\n      this.getLinkedClientRecord();\n    }\n    async getLinkedClientRecord() {\n      const sourceID = this.args.client.clientID;\n      if (!sourceID) {\n        this.noLinks = true;\n        return;\n      }\n      this.loading = true;\n      try {\n        const client = await this.clientRecords.getClientByID(sourceID);\n        if (client?.clientID !== sourceID) {\n          throw new Error(\"Couldn't load client record, even as admin\");\n        }\n\n        // extract the settifyLinks property, for us to display\n        this.links = client.settifyLinks;\n        const promises = this.links.map(async link => {\n          if (link.firmID !== this.firm.id) {\n            link.metadata = {\n              differentFirm: true\n            };\n            return;\n          }\n          try {\n            const metadata = await this.lambda.invoke(this.lambda.getClientMetadataLambda, {\n              firmID: this.firm.id,\n              clientID: link.clientID\n            });\n            link.metadata = this.lambda.processResponse(metadata);\n          } catch (error) {\n            link.metadata = {\n              error\n            };\n          }\n        });\n        await Promise.allSettled(promises);\n        this.loaded = true;\n      } catch (error) {\n        console.error(error);\n        this.noLinks = true;\n      } finally {\n        this.loading = false;\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"clientRecords\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"loading\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"loaded\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"noLinks\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"links\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, LinkedRecordDisplayComponent);\n});","define(\"settify-mvp/components/liquid-bind\", [\"exports\", \"liquid-fire/components/liquid-bind\"], function (_exports, _liquidBind) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _liquidBind.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/components/liquid-bind\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/liquid-child\", [\"exports\", \"liquid-fire/components/liquid-child\"], function (_exports, _liquidChild) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _liquidChild.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/components/liquid-child\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/liquid-container\", [\"exports\", \"liquid-fire/components/liquid-container\"], function (_exports, _liquidContainer) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _liquidContainer.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/components/liquid-container\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/liquid-if\", [\"exports\", \"liquid-fire/components/liquid-if\"], function (_exports, _liquidIf) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _liquidIf.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/components/liquid-if\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/liquid-measured\", [\"exports\", \"liquid-fire/components/liquid-measured\"], function (_exports, _liquidMeasured) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _liquidMeasured.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/components/liquid-measured\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/liquid-outlet\", [\"exports\", \"liquid-fire/components/liquid-outlet\"], function (_exports, _liquidOutlet) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _liquidOutlet.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/components/liquid-outlet\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/liquid-spacer\", [\"exports\", \"liquid-fire/components/liquid-spacer\"], function (_exports, _liquidSpacer) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _liquidSpacer.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/components/liquid-spacer\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/liquid-sync\", [\"exports\", \"liquid-fire/components/liquid-sync\"], function (_exports, _liquidSync) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _liquidSync.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/components/liquid-sync\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/liquid-unless\", [\"exports\", \"liquid-fire/components/liquid-unless\"], function (_exports, _liquidUnless) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _liquidUnless.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/components/liquid-unless\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/liquid-versions\", [\"exports\", \"liquid-fire/components/liquid-versions\"], function (_exports, _liquidVersions) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _liquidVersions.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/components/liquid-versions\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/components/loading-display\", [\"exports\", \"@ember/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({});\n});","define(\"settify-mvp/components/monitor-changes\", [\"exports\", \"@ember/component\", \"settify-mvp/mixins/settify-input-mixin\", \"@ember/template-factory\"], function (_exports, _component, _settifyInputMixin, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\",0,\"settify-mvp/mixins/settify-input-mixin\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{yield}}\n  \n  */\n  {\n    \"id\": \"VELjpegU\",\n    \"block\": \"[[[18,1,null],[1,\\\"\\\\n\\\"]],[\\\"&default\\\"],false,[\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/monitor-changes.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend(_settifyInputMixin.default, {\n    tagName: \"\"\n  }));\n});","define(\"settify-mvp/components/month-select\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/template-factory\"], function (_exports, _component, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class={{@class}}>\n    <SettifySelect @label=\"Month\" @model={{@model}} @name=\"month\" @content={{this.months}} @labelPath=\"label\" @valuePath=\"value\" @displayOnly={{@displayOnly}} @onChange={{@onChange}} @tabindex={{@tabindex}} @required={{@required}} />\n  </div>\n  \n  */\n  {\n    \"id\": \"w5AmgAWZ\",\n    \"block\": \"[[[10,0],[15,0,[30,1]],[12],[1,\\\"\\\\n  \\\"],[8,[39,1],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\",\\\"@displayOnly\\\",\\\"@onChange\\\",\\\"@tabindex\\\",\\\"@required\\\"],[\\\"Month\\\",[30,2],\\\"month\\\",[30,0,[\\\"months\\\"]],\\\"label\\\",\\\"value\\\",[30,3],[30,4],[30,5],[30,6]]],null],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[\\\"@class\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@onChange\\\",\\\"@tabindex\\\",\\\"@required\\\"],false,[\\\"div\\\",\\\"settify-select\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/month-select.hbs\",\n    \"isStrictMode\": false\n  });\n  class MonthSelectComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _defineProperty(this, \"months\", [{\n        label: \"January\",\n        value: 1\n      }, {\n        label: \"February\",\n        value: 2\n      }, {\n        label: \"March\",\n        value: 3\n      }, {\n        label: \"April\",\n        value: 4\n      }, {\n        label: \"May\",\n        value: 5\n      }, {\n        label: \"June\",\n        value: 6\n      }, {\n        label: \"July\",\n        value: 7\n      }, {\n        label: \"August\",\n        value: 8\n      }, {\n        label: \"September\",\n        value: 9\n      }, {\n        label: \"October\",\n        value: 10\n      }, {\n        label: \"November\",\n        value: 11\n      }, {\n        label: \"December\",\n        value: 12\n      }]);\n    }\n  }\n  _exports.default = MonthSelectComponent;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, MonthSelectComponent);\n});","define(\"settify-mvp/components/multi-radio-buttons\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember/service\", \"@ember/template-factory\"], function (_exports, _component, _object, _service, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/component\",0,\"@ember/service\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @displayOnly}}\n    {{@label}}{{yield}}\n    {{#if this.displayOnlyPrettyAnswers.length}}\n      {{!--\n      <table>\n        {{#each displayOnlyPrettyAnswers as |answerPair|}}\n          <tr>\n            <td style=\"width:50%\">{{answerPair.question}}</td>\n            <td>{{answerPair.answer}}</td>\n          </tr>\n        {{/each}}\n      </table>\n      --}}\n      <ul>\n        {{#each this.displayOnlyPrettyAnswers as |answerPair|}}\n          <li>{{answerPair.question}} ({{answerPair.answer}})</li>\n        {{/each}}\n      </ul>\n    {{else}}\n      <NoInformation />\n    {{/if}}\n  {{else}}\n    {{#if (non-empty-string @label)}}\n      {{@label}}\n    {{else if (has-block)}}\n      {{yield}}\n    {{/if}}\n    <table class=\"multi-radio-table\">\n      <thead>\n        <tr>\n          <th></th>\n          {{#each this.filteredOptions as |option|}}\n            <th class=\"multi-radio-column-header\">\n              {{option.title}}\n            </th>\n          {{/each}}\n        </tr>\n      </thead>\n      <tbody>\n        {{#each this.filteredRows as |row|}}\n          <tr>\n            <td>\n              {{row.title}}\n            </td>\n            {{#each this.filteredOptions as |option|}}\n              <td class=\"multi-radio-button\">\n                <RadioButtons @text=\"\" @value={{option.id}} @model={{mut (get @model row.id)}} />\n              </td>\n            {{/each}}\n            {{#if (get @model row.id)}}\n              <td>\n                <i class=\"fal fa-times-circle icon-delete clickable\" {{action \"clearModel\" row.id}}></i>\n              </td>\n            {{else}}\n              <td></td>\n            {{/if}}\n          </tr>\n        {{/each}}\n      </tbody>\n    </table>\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"80gT+LNi\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[1,[30,2]],[18,8,null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"displayOnlyPrettyAnswers\\\",\\\"length\\\"]],[[[1,\\\"    \\\"],[10,\\\"ul\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,4],[[28,[37,4],[[30,0,[\\\"displayOnlyPrettyAnswers\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[10,\\\"li\\\"],[12],[1,[30,3,[\\\"question\\\"]]],[1,\\\" (\\\"],[1,[30,3,[\\\"answer\\\"]]],[1,\\\")\\\"],[13],[1,\\\"\\\\n\\\"]],[3]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[8,[39,6],null,null,null],[1,\\\"\\\\n\\\"]],[]]]],[]],[[[41,[28,[37,7],[[30,2]],null],[[[1,\\\"    \\\"],[1,[30,2]],[1,\\\"\\\\n\\\"]],[]],[[[41,[48,[30,8]],[[[1,\\\"    \\\"],[18,8,null],[1,\\\"\\\\n  \\\"]],[]],null]],[]]],[1,\\\"  \\\"],[10,\\\"table\\\"],[14,0,\\\"multi-radio-table\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"th\\\"],[12],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,4],[[28,[37,4],[[30,0,[\\\"filteredOptions\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[10,\\\"th\\\"],[14,0,\\\"multi-radio-column-header\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[30,4,[\\\"title\\\"]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[4]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,4],[[28,[37,4],[[30,0,[\\\"filteredRows\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[30,5,[\\\"title\\\"]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,4],[[28,[37,4],[[30,0,[\\\"filteredOptions\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[10,\\\"td\\\"],[14,0,\\\"multi-radio-button\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,15],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\"],[\\\"\\\",[30,6,[\\\"id\\\"]],[28,[37,16],[[28,[37,17],[[30,7],[30,5,[\\\"id\\\"]]],null]],null]]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[6]],null],[41,[28,[37,17],[[30,7],[30,5,[\\\"id\\\"]]],null],[[[1,\\\"            \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n              \\\"],[11,\\\"i\\\"],[24,0,\\\"fal fa-times-circle icon-delete clickable\\\"],[4,[38,19],[[30,0],\\\"clearModel\\\",[30,5,[\\\"id\\\"]]],null],[12],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"            \\\"],[10,\\\"td\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"        \\\"],[13],[1,\\\"\\\\n\\\"]],[5]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[\\\"@displayOnly\\\",\\\"@label\\\",\\\"answerPair\\\",\\\"option\\\",\\\"row\\\",\\\"option\\\",\\\"@model\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"yield\\\",\\\"ul\\\",\\\"each\\\",\\\"-track-array\\\",\\\"li\\\",\\\"no-information\\\",\\\"non-empty-string\\\",\\\"has-block\\\",\\\"table\\\",\\\"thead\\\",\\\"tr\\\",\\\"th\\\",\\\"tbody\\\",\\\"td\\\",\\\"radio-buttons\\\",\\\"mut\\\",\\\"get\\\",\\\"i\\\",\\\"action\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/multi-radio-buttons.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({\n    questionnaireLogic: (0, _service.service)(),\n    filteredOptions: (0, _object.computed)(\"options\", \"clientRecord.touch\", function () {\n      return this.filterObjectsInArrayByDisplayIf(this.options || []);\n    }),\n    filteredRows: (0, _object.computed)(\"rows\", \"clientRecord.touch\", function () {\n      return this.filterObjectsInArrayByDisplayIf(this.rows || []);\n    }),\n    filterObjectsInArrayByDisplayIf(inputArray) {\n      return inputArray.filter(obj => this.questionnaireLogic.computeDisplayIf(obj, this.clientRecord, this.context, this.model));\n    },\n    displayOnlyPrettyAnswers: (0, _object.computed)(\"clientRecord.touch\", \"model\", \"options\", \"rows\", function () {\n      const rows = this.rows || [];\n      const options = this.options || [];\n      const results = [];\n      for (const row of rows) {\n        const selectedOptionID = this.model[row.id];\n        if (selectedOptionID) {\n          const selectedOption = options.find(option => option.id === selectedOptionID);\n          results.push({\n            question: row.title,\n            answer: selectedOption.title\n          });\n        }\n      }\n      return results;\n    }),\n    clearSelectedFilteredOptions: (0, _object.observer)(\"filteredOptions\", function () {\n      const filteredOptions = this.filteredOptions || [];\n      const options = this.options || [];\n      const {\n        model\n      } = this;\n      for (const option of options) {\n        const optionExistsInFilteredOptions = !!filteredOptions.find(filteredOption => filteredOption.id === option.id);\n        if (!optionExistsInFilteredOptions) {\n          for (const key of Object.keys(model)) {\n            if (model[key] === option.id) {\n              (0, _object.set)(model, key, undefined);\n            }\n          }\n        }\n      }\n    }),\n    clearSelectedFilteredRows: (0, _object.observer)(\"filteredRows\", function () {\n      const filteredRows = this.filteredRows || [];\n      const rows = this.rows || [];\n      const {\n        model\n      } = this;\n      for (const row of rows) {\n        const rowExistsInFilteredRows = !!filteredRows.find(filteredRow => filteredRow.id === row.id);\n        if (!rowExistsInFilteredRows) {\n          for (const key of Object.keys(model)) {\n            if (model[key] && key === row.id) {\n              (0, _object.set)(model, key, undefined);\n            }\n          }\n        }\n      }\n    }),\n    actions: {\n      clearModel(rowToClear) {\n        (0, _object.set)(this.model, rowToClear, undefined);\n      }\n    }\n  }));\n});","define(\"settify-mvp/components/other-asset-list\", [\"exports\", \"settify-mvp/components/free-list\"], function (_exports, _freeList) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/components/free-list\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _freeList.default.extend({});\n});","define(\"settify-mvp/components/page-from-form\", [\"exports\", \"@ember/service\", \"@ember/component\", \"settify-mvp/helpers/get-answers-from\", \"settify-mvp/config/environment\"], function (_exports, _service, _component, _getAnswersFrom, _environment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@ember/component\",0,\"settify-mvp/helpers/get-answers-from\",0,\"settify-mvp/config/environment\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    questionnaireLogic: (0, _service.inject)(),\n    classNames: [\"page-from-form\"],\n    init() {\n      this._super();\n      // If we already have a page object we dont need to do anything.\n      if (!this.page) {\n        // Otherwise we should get the page to show from the context\n        if (this.get(\"context.induction\") && this.get(\"context.chapter\") && this.get(\"context.page\")) {\n          this.getPageFromContext();\n        } else if (_environment.default.environment === \"development\") {\n          const missingIds = [this.get(\"context.induction\") ? \"\" : \"formID\", this.get(\"context.chapter\") ? \"\" : \"chapterID\", this.get(\"context.page\") ? \"\" : \"pageID\"].filter(e => e).join(\" and \");\n          this.set(\"missingError\", missingIds);\n        }\n      }\n    },\n    getPageFromContext() {\n      this.questionnaireLogic.getPage(this.client, this.get(\"context.induction\"), this.get(\"context.chapter\"), this.get(\"context.page\"), this.get(\"context.repeat\") || 1).then(definition => {\n        this.set(\"page\", definition.page);\n        if (!this.model) {\n          // If no model was passed down we need to go get right answers object\n          this.set(\"model\", (0, _getAnswersFrom.getAnswersFrom)([], {\n            client: this.client,\n            induction: definition.induction.id,\n            chapter: definition.chapter.id,\n            page: definition.page.id,\n            answersLocation: definition.page.answersLocation,\n            repeatToken: definition.repeat,\n            create: true\n          }));\n        }\n      });\n    }\n  });\n});","define(\"settify-mvp/components/periodic-payment\", [\"exports\", \"@ember/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    init() {\n      this._super(...arguments);\n      this.timePeriods = [{\n        label: \"week\",\n        value: \"week\"\n      }, {\n        label: \"fortnight\",\n        value: \"fortnight\"\n      }, {\n        label: \"month\",\n        value: \"month\"\n      }, {\n        label: \"year\",\n        value: \"year\"\n      }];\n    }\n  });\n});","define(\"settify-mvp/components/pms-settings-config\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"firm-details\">\n    <LiquidIf @predicate={{@loadingPmsSettings}}>\n      <LoadingSpinner />\n    </LiquidIf>\n    <LiquidIf @predicate={{and (not @loadingPmsSettings) @getSendToPmsMetadata}}>\n      {{#if (and (eq @getSendToPmsMetadata.id \"clio\") @getSendToPmsMetadata.onClientAppointmentRequestedArn)}}\n        <h1 class=\"centertext\">Clio Grow settings</h1>\n        <SettifyTextline @label=\"Clio Grow Inbox Token\" @required={{false}} @model={{@firm.settings.admin.integrations.crmAuthToken}} />\n        <CheckBox @text=\"Send partner details as well as clients details to Clio Grow\" @model={{@firm.settings.admin.integrations.clio.defaults.sendPartnerDetails}} />\n        <br />\n      {{/if}}\n      <h1 class=\"centertext\">\n        {{@getSendToPmsMetadata.name}}\n        Settings\n      </h1>\n      {{#if (not (get @getSendToPmsMetadata.submitButtons \"0.shouldSubmitWithoutShowingOptions\"))}}\n        <p>Default settings for each client (these can be changed on a client-by-client basis when using the integration).</p>\n      {{/if}}\n      <PmsSettingsInputsSelector @metadata={{@getSendToPmsMetadata}} @modelObject={{mut @settingsModel}} @includeSettingsPrefix={{true}} @includeSpouseOptions={{true}} />\n    </LiquidIf>\n  </div>\n  \n  */\n  {\n    \"id\": \"kXGrsvyC\",\n    \"block\": \"[[[10,0],[14,0,\\\"firm-details\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[39,1],null,[[\\\"@predicate\\\"],[[30,1]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[39,2],null,null,null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[39,1],null,[[\\\"@predicate\\\"],[[28,[37,3],[[28,[37,4],[[30,1]],null],[30,2]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[28,[37,3],[[28,[37,6],[[30,2,[\\\"id\\\"]],\\\"clio\\\"],null],[30,2,[\\\"onClientAppointmentRequestedArn\\\"]]],null],[[[1,\\\"      \\\"],[10,\\\"h1\\\"],[14,0,\\\"centertext\\\"],[12],[1,\\\"Clio Grow settings\\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,8],null,[[\\\"@label\\\",\\\"@required\\\",\\\"@model\\\"],[\\\"Clio Grow Inbox Token\\\",false,[30,3,[\\\"settings\\\",\\\"admin\\\",\\\"integrations\\\",\\\"crmAuthToken\\\"]]]],null],[1,\\\"\\\\n      \\\"],[8,[39,9],null,[[\\\"@text\\\",\\\"@model\\\"],[\\\"Send partner details as well as clients details to Clio Grow\\\",[30,3,[\\\"settings\\\",\\\"admin\\\",\\\"integrations\\\",\\\"clio\\\",\\\"defaults\\\",\\\"sendPartnerDetails\\\"]]]],null],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[10,\\\"h1\\\"],[14,0,\\\"centertext\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[30,2,[\\\"name\\\"]]],[1,\\\"\\\\n      Settings\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,4],[[28,[37,11],[[30,2,[\\\"submitButtons\\\"]],\\\"0.shouldSubmitWithoutShowingOptions\\\"],null]],null],[[[1,\\\"      \\\"],[10,2],[12],[1,\\\"Default settings for each client (these can be changed on a client-by-client basis when using the integration).\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[8,[39,13],null,[[\\\"@metadata\\\",\\\"@modelObject\\\",\\\"@includeSettingsPrefix\\\",\\\"@includeSpouseOptions\\\"],[[30,2],[28,[37,14],[[30,4]],null],true,true]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[\\\"@loadingPmsSettings\\\",\\\"@getSendToPmsMetadata\\\",\\\"@firm\\\",\\\"@settingsModel\\\"],false,[\\\"div\\\",\\\"liquid-if\\\",\\\"loading-spinner\\\",\\\"and\\\",\\\"not\\\",\\\"if\\\",\\\"eq\\\",\\\"h1\\\",\\\"settify-textline\\\",\\\"check-box\\\",\\\"br\\\",\\\"get\\\",\\\"p\\\",\\\"pms-settings-inputs-selector\\\",\\\"mut\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/pms-settings-config.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/pms-settings-inputs-actionstep\", [\"exports\", \"@ember/component\", \"settify-mvp/mixins/pms-settings-inputs\"], function (_exports, _component, _pmsSettingsInputs) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\",0,\"settify-mvp/mixins/pms-settings-inputs\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend(_pmsSettingsInputs.default, {});\n});","define(\"settify-mvp/components/pms-settings-inputs-clio\", [\"exports\", \"@ember/component\", \"@ember/object\", \"settify-mvp/mixins/pms-settings-inputs\", \"@ember/template-factory\"], function (_exports, _component, _object, _pmsSettingsInputs, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/component\",0,\"settify-mvp/mixins/pms-settings-inputs\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <SettifySelect @label=\"Practice area\" @required={{@includeRequiredAttribute}} @model={{mut (get @pmsSettingsModel \"matterInstance\")}} @content={{@options.matterInstance}} @labelPath=\"label\" @valuePath=\"value\" />\n  <SettifySelect @label=\"Originating attorney\" @model={{mut (get @pmsSettingsModel \"staffCredit\")}} @content={{@options.staff}} @labelPath=\"label\" @valuePath=\"value\" />\n  <SettifySelect @label=\"Responsible attorney\" @required={{@includeRequiredAttribute}} @model={{mut (get @pmsSettingsModel \"staffResponsible\")}} @content={{@options.staff}} @labelPath=\"label\" @valuePath=\"value\" />\n  */\n  {\n    \"id\": \"GR3910+p\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@label\\\",\\\"@required\\\",\\\"@model\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"Practice area\\\",[30,1],[28,[37,1],[[28,[37,2],[[30,2],\\\"matterInstance\\\"],null]],null],[30,3,[\\\"matterInstance\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n\\\"],[8,[39,0],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"Originating attorney\\\",[28,[37,1],[[28,[37,2],[[30,2],\\\"staffCredit\\\"],null]],null],[30,3,[\\\"staff\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n\\\"],[8,[39,0],null,[[\\\"@label\\\",\\\"@required\\\",\\\"@model\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"Responsible attorney\\\",[30,1],[28,[37,1],[[28,[37,2],[[30,2],\\\"staffResponsible\\\"],null]],null],[30,3,[\\\"staff\\\"]],\\\"label\\\",\\\"value\\\"]],null]],[\\\"@includeRequiredAttribute\\\",\\\"@pmsSettingsModel\\\",\\\"@options\\\"],false,[\\\"settify-select\\\",\\\"mut\\\",\\\"get\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/pms-settings-inputs-clio.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend(_pmsSettingsInputs.default, {\n    updateCanSubmitOnModelChange: (0, _object.observer)(\"pmsSettingsModel.matterInstance\", \"pmsSettingsModel.staffResponsible\", function () {\n      this.set(\"canSubmit\", this.checkCanSubmit());\n    }),\n    checkCanSubmit() {\n      return !!(this?.pmsSettingsModel.matterInstance && this?.pmsSettingsModel.staffResponsible);\n    },\n    // For safety, override computed property only used by Smokeball & Leap.\n    matterTypeIdOptionsFilteredByState: (0, _object.computed)(\"\", function () {\n      return null;\n    })\n  }));\n});","define(\"settify-mvp/components/pms-settings-inputs-leap\", [\"exports\", \"@ember/component\", \"@ember/object\", \"settify-mvp/mixins/pms-settings-inputs\", \"@ember/template-factory\"], function (_exports, _component, _object, _pmsSettingsInputs, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/component\",0,\"settify-mvp/mixins/pms-settings-inputs\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <LiquidIf @predicate={{not (get @pmsSettingsModel \"recurringMatterTypeId\")}}>\n    <SettifySelect\n      @label=\"State\"\n      @required={{@useRequiredAttribute}}\n      @model={{mut (get @pmsSettingsModel \"state\")}}\n      @content={{@options.state}}\n      @labelPath=\"label\"\n      @valuePath=\"value\"\n    />\n    <SettifySelect\n      @label=\"Matter type\"\n      @required={{@useRequiredAttribute}}\n      @model={{mut (get @pmsSettingsModel \"matterTypeId\")}}\n      @content={{this.matterTypeIdOptionsFilteredByState}}\n      @labelPath=\"label\"\n      @valuePath=\"value\"\n    />\n  </LiquidIf>\n  {{#if @options.recurringMatterTypeId.length}}\n    <SettifySelect\n      @label={{if (get @pmsSettingsModel \"recurringMatterTypeId\") \"Recurring matter type\" \"Or, specify a recurring matter type\"}}\n      @model={{mut (get @pmsSettingsModel \"recurringMatterTypeId\")}}\n      @content={{@options.recurringMatterTypeId}}\n      @labelPath=\"label\"\n      @valuePath=\"value\"\n    />\n  {{/if}}\n  {{#if @options.allowFirmToSpecifyMatterNumber}}\n    <SettifyTextline @label=\"Matter number\" @required={{@useRequiredAttribute}} @model={{mut (get @pmsSettingsModel \"matterNumber\")}} />\n  {{/if}}\n  <SettifySelect @label=\"Staff credit\" @model={{mut (get @pmsSettingsModel \"staffCredit\")}} @content={{@options.staff}} @labelPath=\"label\" @valuePath=\"value\" />\n  <SettifySelect\n    @label=\"Staff responsible\"\n    @required={{@useRequiredAttribute}}\n    @model={{mut (get @pmsSettingsModel \"staffResponsible\")}}\n    @content={{@options.staff}}\n    @labelPath=\"label\"\n    @valuePath=\"value\"\n  />\n  <SettifySelect\n    @label=\"Staff acting\"\n    @required={{@useRequiredAttribute}}\n    @model={{mut (get @pmsSettingsModel \"staffActing\")}}\n    @content={{@options.staff}}\n    @labelPath=\"label\"\n    @valuePath=\"value\"\n  />\n  <SettifySelect @label=\"Staff assisting\" @model={{mut (get @pmsSettingsModel \"staffAssisting\")}} @content={{@options.staff}} @labelPath=\"label\" @valuePath=\"value\" />\n  */\n  {\n    \"id\": \"naoROMxi\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@predicate\\\"],[[28,[37,1],[[28,[37,2],[[30,1],\\\"recurringMatterTypeId\\\"],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[39,3],null,[[\\\"@label\\\",\\\"@required\\\",\\\"@model\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"State\\\",[30,2],[28,[37,4],[[28,[37,2],[[30,1],\\\"state\\\"],null]],null],[30,3,[\\\"state\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n  \\\"],[8,[39,3],null,[[\\\"@label\\\",\\\"@required\\\",\\\"@model\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"Matter type\\\",[30,2],[28,[37,4],[[28,[37,2],[[30,1],\\\"matterTypeId\\\"],null]],null],[30,0,[\\\"matterTypeIdOptionsFilteredByState\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"recurringMatterTypeId\\\",\\\"length\\\"]],[[[1,\\\"  \\\"],[8,[39,3],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[[52,[28,[37,2],[[30,1],\\\"recurringMatterTypeId\\\"],null],\\\"Recurring matter type\\\",\\\"Or, specify a recurring matter type\\\"],[28,[37,4],[[28,[37,2],[[30,1],\\\"recurringMatterTypeId\\\"],null]],null],[30,3,[\\\"recurringMatterTypeId\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,3,[\\\"allowFirmToSpecifyMatterNumber\\\"]],[[[1,\\\"  \\\"],[8,[39,6],null,[[\\\"@label\\\",\\\"@required\\\",\\\"@model\\\"],[\\\"Matter number\\\",[30,2],[28,[37,4],[[28,[37,2],[[30,1],\\\"matterNumber\\\"],null]],null]]],null],[1,\\\"\\\\n\\\"]],[]],null],[8,[39,3],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"Staff credit\\\",[28,[37,4],[[28,[37,2],[[30,1],\\\"staffCredit\\\"],null]],null],[30,3,[\\\"staff\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n\\\"],[8,[39,3],null,[[\\\"@label\\\",\\\"@required\\\",\\\"@model\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"Staff responsible\\\",[30,2],[28,[37,4],[[28,[37,2],[[30,1],\\\"staffResponsible\\\"],null]],null],[30,3,[\\\"staff\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n\\\"],[8,[39,3],null,[[\\\"@label\\\",\\\"@required\\\",\\\"@model\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"Staff acting\\\",[30,2],[28,[37,4],[[28,[37,2],[[30,1],\\\"staffActing\\\"],null]],null],[30,3,[\\\"staff\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n\\\"],[8,[39,3],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"Staff assisting\\\",[28,[37,4],[[28,[37,2],[[30,1],\\\"staffAssisting\\\"],null]],null],[30,3,[\\\"staff\\\"]],\\\"label\\\",\\\"value\\\"]],null]],[\\\"@pmsSettingsModel\\\",\\\"@useRequiredAttribute\\\",\\\"@options\\\"],false,[\\\"liquid-if\\\",\\\"not\\\",\\\"get\\\",\\\"settify-select\\\",\\\"mut\\\",\\\"if\\\",\\\"settify-textline\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/pms-settings-inputs-leap.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend(_pmsSettingsInputs.default, {\n    updateCanSubmitOnModelChange: (0, _object.observer)(\"pmsSettingsModel.state\", \"pmsSettingsModel.recurringMatterTypeId\", \"pmsSettingsModel.matterTypeId\", \"pmsSettingsModel.staffResponsible\", \"pmsSettingsModel.staffActing\", \"pmsSettingsModel.matterNumber\", function () {\n      this.set(\"canSubmit\", this.checkCanSubmit());\n    }),\n    checkCanSubmit() {\n      const {\n        pmsSettingsModel\n      } = this;\n      return !!((pmsSettingsModel.state && pmsSettingsModel.matterTypeId || pmsSettingsModel.recurringMatterTypeId) && pmsSettingsModel.staffResponsible && pmsSettingsModel.staffActing && (!this.get(\"options.allowFirmToSpecifyMatterNumber\") || pmsSettingsModel.matterNumber));\n    }\n  }));\n});","define(\"settify-mvp/components/pms-settings-inputs-selector\", [\"exports\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (eq @metadata.id \"leap\")}}\n    <PmsSettingsInputsLeap @pmsSettingsModel={{this.pmsSettingsModel}} @options={{this.options}} @canSubmit={{@canSubmit}} @useRequiredAttribute={{@useRequiredAttribute}} @matterInformation={{this.matterInformation}} />\n  {{else if (eq @metadata.id \"smokeball\")}}\n    <PmsSettingsInputsSmokeball @pmsSettingsModel={{this.pmsSettingsModel}} @options={{this.options}} @canSubmit={{@canSubmit}} @useRequiredAttribute={{@useRequiredAttribute}} @matterInformation={{this.matterInformation}} />\n  {{else if (eq @metadata.id \"clio\")}}\n    <PmsSettingsInputsClio @pmsSettingsModel={{this.pmsSettingsModel}} @options={{this.options}} @canSubmit={{@canSubmit}} @useRequiredAttribute={{@useRequiredAttribute}} @matterInformation={{this.matterInformation}} />\n  {{else if (eq @metadata.id \"webhook\")}}\n    <PmsSettingsInputsWebhook @pmsSettingsModel={{this.pmsSettingsModel}} @options={{this.options}} @canSubmit={{@canSubmit}} />\n  {{else if (eq @metadata.id \"actionstep\")}}\n    <PmsSettingsInputsActionstep @pmsSettingsModel={{this.pmsSettingsModel}} @options={{this.options}} @canSubmit={{@canSubmit}} />\n  {{/if}}\n  */\n  {\n    \"id\": \"6NtnBTj7\",\n    \"block\": \"[[[41,[28,[37,1],[[30,1,[\\\"id\\\"]],\\\"leap\\\"],null],[[[1,\\\"  \\\"],[8,[39,2],null,[[\\\"@pmsSettingsModel\\\",\\\"@options\\\",\\\"@canSubmit\\\",\\\"@useRequiredAttribute\\\",\\\"@matterInformation\\\"],[[30,0,[\\\"pmsSettingsModel\\\"]],[30,0,[\\\"options\\\"]],[30,2],[30,3],[30,0,[\\\"matterInformation\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,1],[[30,1,[\\\"id\\\"]],\\\"smokeball\\\"],null],[[[1,\\\"  \\\"],[8,[39,3],null,[[\\\"@pmsSettingsModel\\\",\\\"@options\\\",\\\"@canSubmit\\\",\\\"@useRequiredAttribute\\\",\\\"@matterInformation\\\"],[[30,0,[\\\"pmsSettingsModel\\\"]],[30,0,[\\\"options\\\"]],[30,2],[30,3],[30,0,[\\\"matterInformation\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,1],[[30,1,[\\\"id\\\"]],\\\"clio\\\"],null],[[[1,\\\"  \\\"],[8,[39,4],null,[[\\\"@pmsSettingsModel\\\",\\\"@options\\\",\\\"@canSubmit\\\",\\\"@useRequiredAttribute\\\",\\\"@matterInformation\\\"],[[30,0,[\\\"pmsSettingsModel\\\"]],[30,0,[\\\"options\\\"]],[30,2],[30,3],[30,0,[\\\"matterInformation\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,1],[[30,1,[\\\"id\\\"]],\\\"webhook\\\"],null],[[[1,\\\"  \\\"],[8,[39,5],null,[[\\\"@pmsSettingsModel\\\",\\\"@options\\\",\\\"@canSubmit\\\"],[[30,0,[\\\"pmsSettingsModel\\\"]],[30,0,[\\\"options\\\"]],[30,2]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,1],[[30,1,[\\\"id\\\"]],\\\"actionstep\\\"],null],[[[1,\\\"  \\\"],[8,[39,6],null,[[\\\"@pmsSettingsModel\\\",\\\"@options\\\",\\\"@canSubmit\\\"],[[30,0,[\\\"pmsSettingsModel\\\"]],[30,0,[\\\"options\\\"]],[30,2]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]]]],[]]]],[]]]],[]]]],[\\\"@metadata\\\",\\\"@canSubmit\\\",\\\"@useRequiredAttribute\\\"],false,[\\\"if\\\",\\\"eq\\\",\\\"pms-settings-inputs-leap\\\",\\\"pms-settings-inputs-smokeball\\\",\\\"pms-settings-inputs-clio\\\",\\\"pms-settings-inputs-webhook\\\",\\\"pms-settings-inputs-actionstep\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/pms-settings-inputs-selector.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({\n    init() {\n      this._super(...arguments);\n      let modelLocation = \"modelObject\";\n      if (this.includeSettingsPrefix) {\n        modelLocation = `${modelLocation}.${this?.metadata?.defaultSettingsPath}`;\n      }\n      this.set(\"pmsSettingsModel\", this.get(modelLocation));\n      const options = this?.metadata?.options;\n      if (options.matterTypeId) {\n        options.matterTypeId = options.matterTypeId.map(option => {\n          const optionValueAsInt = this.filterInt(option.value);\n          if (!isNaN(optionValueAsInt)) {\n            option.value = optionValueAsInt;\n          }\n          return option;\n        });\n      }\n      this.set(\"options\", options);\n      const matterInformation = {\n        includeSpouseOptions: this.includeSpouseOptions\n      };\n      this.set(\"matterInformation\", matterInformation);\n    },\n    filterInt(value) {\n      if (/^(-|\\+)?([0-9]+|Infinity)$/.test(value)) {\n        return Number(value);\n      }\n      return NaN;\n    }\n  }));\n});","define(\"settify-mvp/components/pms-settings-inputs-smokeball\", [\"exports\", \"@ember/component\", \"@ember/object\", \"settify-mvp/mixins/pms-settings-inputs\", \"@ember/template-factory\"], function (_exports, _component, _object, _pmsSettingsInputs, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/component\",0,\"settify-mvp/mixins/pms-settings-inputs\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <SettifySelect @label=\"State\" @required={{@useRequiredAttribute}} @model={{mut (get @pmsSettingsModel \"state\")}} @content={{@options.state}} @labelPath=\"label\" @valuePath=\"value\" />\n  <SettifySelect @label=\"Matter type\" @required={{@useRequiredAttribute}} @model={{mut (get @pmsSettingsModel \"matterTypeId\")}} @content={{this.matterTypeIdOptionsFilteredByState}} @labelPath=\"label\" @valuePath=\"value\" />\n  <SettifySelect @label=\"The user's role in Smokeball\" @required={{@useRequiredAttribute}} @model={{mut (get @pmsSettingsModel \"userRole\")}} @content={{this.userRolesFilteredByMatterTypeId}} @labelPath=\"label\" @valuePath=\"value\" />\n  {{#if @matterInformation.includeSpouseOptions}}\n    <SettifySelect @label=\"The spouse's role in Smokeball\" @required={{@useRequiredAttribute}} @model={{mut (get @pmsSettingsModel \"spouseRole\")}} @content={{this.spouseRolesFilteredByMatterTypeId}} @labelPath=\"label\" @valuePath=\"value\" />\n  {{/if}}\n  <SettifySelect @label=\"Staff responsible\" @required={{@useRequiredAttribute}} @model={{mut (get @pmsSettingsModel \"staffResponsible\")}} @content={{@options.staff}} @labelPath=\"label\" @valuePath=\"value\" />\n  <SettifySelect @label=\"Staff assisting\" @required={{@useRequiredAttribute}} @model={{mut (get @pmsSettingsModel \"staffAssisting\")}} @content={{@options.staff}} @labelPath=\"label\" @valuePath=\"value\" />\n  */\n  {\n    \"id\": \"9IMDZCPK\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@label\\\",\\\"@required\\\",\\\"@model\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"State\\\",[30,1],[28,[37,1],[[28,[37,2],[[30,2],\\\"state\\\"],null]],null],[30,3,[\\\"state\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n\\\"],[8,[39,0],null,[[\\\"@label\\\",\\\"@required\\\",\\\"@model\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"Matter type\\\",[30,1],[28,[37,1],[[28,[37,2],[[30,2],\\\"matterTypeId\\\"],null]],null],[30,0,[\\\"matterTypeIdOptionsFilteredByState\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n\\\"],[8,[39,0],null,[[\\\"@label\\\",\\\"@required\\\",\\\"@model\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"The user's role in Smokeball\\\",[30,1],[28,[37,1],[[28,[37,2],[[30,2],\\\"userRole\\\"],null]],null],[30,0,[\\\"userRolesFilteredByMatterTypeId\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n\\\"],[41,[30,4,[\\\"includeSpouseOptions\\\"]],[[[1,\\\"  \\\"],[8,[39,0],null,[[\\\"@label\\\",\\\"@required\\\",\\\"@model\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"The spouse's role in Smokeball\\\",[30,1],[28,[37,1],[[28,[37,2],[[30,2],\\\"spouseRole\\\"],null]],null],[30,0,[\\\"spouseRolesFilteredByMatterTypeId\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[8,[39,0],null,[[\\\"@label\\\",\\\"@required\\\",\\\"@model\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"Staff responsible\\\",[30,1],[28,[37,1],[[28,[37,2],[[30,2],\\\"staffResponsible\\\"],null]],null],[30,3,[\\\"staff\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n\\\"],[8,[39,0],null,[[\\\"@label\\\",\\\"@required\\\",\\\"@model\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"Staff assisting\\\",[30,1],[28,[37,1],[[28,[37,2],[[30,2],\\\"staffAssisting\\\"],null]],null],[30,3,[\\\"staff\\\"]],\\\"label\\\",\\\"value\\\"]],null]],[\\\"@useRequiredAttribute\\\",\\\"@pmsSettingsModel\\\",\\\"@options\\\",\\\"@matterInformation\\\"],false,[\\\"settify-select\\\",\\\"mut\\\",\\\"get\\\",\\\"if\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/pms-settings-inputs-smokeball.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend(_pmsSettingsInputs.default, {\n    userRolesFilteredByMatterTypeId: (0, _object.computed)(\"options.userRole\", \"pmsSettingsModel.matterTypeId\", function () {\n      const userRoleOptions = this.get(\"options.userRole\");\n      const possibleUserRoleOptions = userRoleOptions.filter(userRoleOption => userRoleOption.applicableMatterTypeIds ? userRoleOption.applicableMatterTypeIds.includes(this.get(\"pmsSettingsModel.matterTypeId\")) : true);\n      this.clearPropertyIfInvalid(possibleUserRoleOptions, \"userRole\");\n      return possibleUserRoleOptions;\n    }),\n    spouseRolesFilteredByMatterTypeId: (0, _object.computed)(\"options.spouseRole\", \"pmsSettingsModel.matterTypeId\", function () {\n      const spouseRoleOptions = this.get(\"options.spouseRole\");\n      const possibleSpouseRoleOptions = spouseRoleOptions.filter(spouseRoleOption => spouseRoleOption.applicableMatterTypeIds ? spouseRoleOption.applicableMatterTypeIds.includes(this.get(\"pmsSettingsModel.matterTypeId\")) : true);\n      this.clearPropertyIfInvalid(possibleSpouseRoleOptions, \"spouseRole\");\n      return possibleSpouseRoleOptions;\n    }),\n    updateCanSubmitOnModelChange: (0, _object.observer)(\"pmsSettingsModel.state\", \"pmsSettingsModel.matterTypeId\", \"pmsSettingsModel.userRole\", \"pmsSettingsModel.spouseRole\", \"pmsSettingsModel.staffResponsible\", \"pmsSettingsModel.staffAssisting\", function () {\n      this.set(\"canSubmit\", this.checkCanSubmit());\n    }),\n    checkCanSubmit() {\n      const {\n        pmsSettingsModel,\n        matterInformation\n      } = this;\n      return !!(pmsSettingsModel.state && pmsSettingsModel.matterTypeId && pmsSettingsModel.userRole && (pmsSettingsModel.spouseRole || !matterInformation?.includeSpouseOptions) && pmsSettingsModel.staffResponsible && pmsSettingsModel.staffAssisting);\n    }\n  }));\n});","define(\"settify-mvp/components/pms-settings-inputs-webhook\", [\"exports\", \"@ember/component\", \"@ember/object\", \"settify-mvp/mixins/pms-settings-inputs\", \"settify-mvp/validators/url-validator\", \"@ember/template-factory\"], function (_exports, _component, _object, _pmsSettingsInputs, _urlValidator, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\",0,\"@ember/object\",0,\"settify-mvp/mixins/pms-settings-inputs\",0,\"settify-mvp/validators/url-validator\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <SettifyTextline @label=\"Short name\" @model={{mut @pmsSettingsModel.name}} @placeholder=\"somedomain\" />\n  <LiquidIf @predicate={{gt @pmsSettingsModel.name.length 10}}>\n    <p><small>Short name validation failed. Maximum of 10 characters allowed.</small></p>\n  </LiquidIf>\n  <SettifyTextline @label=\"Domain (include the 'https://' prefix)\" @model={{mut @pmsSettingsModel.URL}} @placeholder=\"https://somedomain.com/endpoint\" />\n  <LiquidIf @predicate={{and @pmsSettingsModel.URL (not this.isValidURL)}}>\n    <p><small>Invalid URL</small></p>\n  </LiquidIf>\n  <SettifySelect @label=\"Content type\" @model={{mut @pmsSettingsModel.type}} @content={{@options.type}} @labelPath=\"label\" @valuePath=\"value\" />\n  */\n  {\n    \"id\": \"ADn3D0Ue\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@placeholder\\\"],[\\\"Short name\\\",[28,[37,1],[[30,1,[\\\"name\\\"]]],null],\\\"somedomain\\\"]],null],[1,\\\"\\\\n\\\"],[8,[39,2],null,[[\\\"@predicate\\\"],[[28,[37,3],[[30,1,[\\\"name\\\",\\\"length\\\"]],10],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[1,\\\"Short name validation failed. Maximum of 10 characters allowed.\\\"],[13],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"],[8,[39,0],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@placeholder\\\"],[\\\"Domain (include the 'https://' prefix)\\\",[28,[37,1],[[30,1,[\\\"URL\\\"]]],null],\\\"https://somedomain.com/endpoint\\\"]],null],[1,\\\"\\\\n\\\"],[8,[39,2],null,[[\\\"@predicate\\\"],[[28,[37,6],[[30,1,[\\\"URL\\\"]],[28,[37,7],[[30,0,[\\\"isValidURL\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[1,\\\"Invalid URL\\\"],[13],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"],[8,[39,8],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"Content type\\\",[28,[37,1],[[30,1,[\\\"type\\\"]]],null],[30,2,[\\\"type\\\"]],\\\"label\\\",\\\"value\\\"]],null]],[\\\"@pmsSettingsModel\\\",\\\"@options\\\"],false,[\\\"settify-textline\\\",\\\"mut\\\",\\\"liquid-if\\\",\\\"gt\\\",\\\"p\\\",\\\"small\\\",\\\"and\\\",\\\"not\\\",\\\"settify-select\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/pms-settings-inputs-webhook.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend(_pmsSettingsInputs.default, {\n    isValidURL: (0, _object.computed)(\"pmsSettingsModel.URL\", function () {\n      const URL = this.get(\"pmsSettingsModel.URL\");\n      return (0, _urlValidator.default)(URL);\n    })\n  }));\n});","define(\"settify-mvp/components/postal-address-select\", [\"exports\", \"@ember/runloop\", \"@ember/object\", \"@ember/component\", \"settify-mvp/helpers/address-string\", \"uuid\"], function (_exports, _runloop, _object, _component, _addressString, _uuid) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/component\",0,\"settify-mvp/helpers/address-string\",0,\"uuid\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    content: null,\n    // passed in\n    prompt: \"-- select --\",\n    // passed in\n    valuePath: null,\n    labelPath: null,\n    currentSelectID: null,\n    hasEditedThisAddress: false,\n    whichAddress: null,\n    init() {\n      this._super();\n      this.set(\"recentSelectedAddressLabel\", this.currentAddressLabel);\n      this.checkForCurrentSelection();\n    },\n    recursivelyScanForAddresses(answers, addressesArray) {\n      for (const key in answers) {\n        if (Object.prototype.hasOwnProperty.call(answers, key)) {\n          if (key[0] === \"_\") {\n            // secret properties we don't care about\n            continue;\n          }\n          const element = answers[key];\n          if (element && typeof element === \"object\") {\n            if ((element.lineOne || element.lineTwo) && (element.suburb || element.state || element.postcode || element.country)) {\n              // this is an address\n              addressesArray.push({\n                label: this.generateAddressLabel(element),\n                value: element,\n                id: addressesArray.length + 1\n              });\n            } else {\n              // this is not an address\n              this.recursivelyScanForAddresses(element, addressesArray);\n            }\n          }\n        }\n      }\n    },\n    linearlyScanForAddresses(entities, addressesArray) {\n      for (let i = 0; entities && i < entities.length; i++) {\n        const e = entities[i];\n        this.recursivelyScanForAddresses(e, addressesArray);\n      }\n    },\n    userAddresses: (0, _object.computed)(\"filterList\", \"filterType\", \"clientRecord.{answers,knownEntities}\", function () {\n      let addressesArray = [];\n      if (this.filterType !== \"excludeall\") {\n        // get all potential addresses\n        const answers = this.get(\"clientRecord.answers\");\n        this.recursivelyScanForAddresses(answers, addressesArray);\n        this.linearlyScanForAddresses(this.get(\"clientRecord.knownEntities\"), addressesArray);\n\n        // filter list by filterType and remove duplicates\n        addressesArray = this.filterByType(addressesArray, this.filterType, this.filterList).filter(e => {\n          // want to remove IF there are multiple entries with the same label\n          const firstMatch = addressesArray.find(f => f.label === e.label);\n          return firstMatch === e;\n        });\n      }\n      return addressesArray;\n    }),\n    checkForCurrentSelection() {\n      const addressesArray = this.userAddresses;\n      const selectedAddressLabel = this.generateAddressLabel(this.postalAddress);\n      if (selectedAddressLabel !== this.recentSelectedAddressLabel) {\n        this.set(\"hasEditedThisAddress\", true);\n      }\n      // check if one of these is our current selection\n      const selectedAddressInList = addressesArray.find(f => f.label === selectedAddressLabel);\n      if (selectedAddressInList && this.whichAddress !== \"addnew\") {\n        // Ember.run.next(() => {\n        this.set(\"whichAddress\", selectedAddressInList.id);\n        if (!this.allFieldsProvided) {\n          // If all fields are not yet provided we set showEditAddress to true so client can see what is missing more easily\n          this.set(\"showEditAddress\", true);\n        }\n        // });\n      } else if (!this.hasEditedThisAddress) {\n        if (addressesArray.length === 0) {\n          this.set(\"whichAddress\", \"addnew\");\n        } else {\n          if (!this.hasSelectedAnAddress) {\n            this.set(\"whichAddress\", null);\n          }\n        }\n      }\n    },\n    onAddressSelected() {\n      const addresses = this.userAddresses;\n      const filteredAddress = addresses.filter(address => address.id === parseInt(this.whichAddress));\n      if (filteredAddress.length) {\n        let output = {};\n        if (filteredAddress.length) {\n          const filteredValue = filteredAddress[0].value;\n          output = JSON.parse(JSON.stringify(filteredValue));\n          // Give this selection its own ID\n          output.id = (0, _uuid.v4)();\n        }\n        (0, _runloop.next)(() => {\n          this.set(\"postalAddress\", output);\n        });\n      } else {\n        this.set(\"showEditAddress\", false);\n      }\n      if (!this.whichAddress) {\n        // clear whatever's currently there\n        if (this.hasSelectedAnAddress) {\n          (0, _runloop.next)(() => {\n            this.set(\"postalAddress\", {});\n          });\n        }\n      } else if (this.whichAddress && this.get(\"userAddresses.length\")) {\n        this.set(\"hasSelectedAnAddress\", true);\n      }\n    },\n    currentAddressLabel: (0, _object.computed)(\"postalAddress.lineOne\", \"postalAddress.lineTwo\", \"postalAddress.lineThree\", \"postalAddress.suburb\", \"postalAddress.state\", \"postalAddress.postcode\", \"postalAddress.country\", function () {\n      return this.generateAddressLabel(this.postalAddress);\n    }),\n    effectivelyEmptyAddressList: (0, _object.computed)(\"currentAddressLabel\", \"userAddresses.length\", function () {\n      return this.currentAddressLabel && this.get(\"userAddresses.length\") === 1;\n    }),\n    allFieldsProvided: (0, _object.computed)(\"addressOptions.{stateInputNotRequired,suburbInputNotRequired}\", \"postalAddress.{lineOne,postcode,state,suburb}\", function () {\n      return Boolean(this.get(\"postalAddress.lineOne\") && (this.get(\"addressOptions.suburbInputNotRequired\") ? true : this.get(\"postalAddress.suburb\")) && (this.get(\"addressOptions.stateInputNotRequired\") ? true : this.get(\"postalAddress.state\")) && this.get(\"postalAddress.postcode\"));\n    }),\n    generateAddressLabel(address) {\n      return (0, _addressString.addressString)([address], {\n        detailed: true\n      });\n    },\n    filterByType(list, filterType, filterList) {\n      if (filterType === \"blacklist\" && filterList && filterList.length) {\n        list = list.filter(l => !filterList.includes(l.value.id));\n      } else if (filterType === \"whitelist\" && filterList && filterList.length) {\n        list = list.filter(l => filterList.includes(l.value.id));\n      }\n      return list;\n    },\n    actions: {\n      toggleEditAddress() {\n        this.toggleProperty(\"showEditAddress\");\n      },\n      selectAddress() {\n        this.onAddressSelected();\n        if (this.onChange && typeof this.onChange === \"function\") {\n          this.onChange();\n        }\n      }\n    }\n  });\n});","define(\"settify-mvp/components/practice-area-icon\", [\"exports\", \"@ember/component\", \"@ember/service\", \"@glimmer/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@glimmer/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.firm.otherSettifyURLs}}\n    <div class=\"practice-area-icon {{@practiceArea}}\">\n      {{#if (eq @practiceArea \"Family\")}}\n        FL\n      {{else if (eq @practiceArea \"Wills\")}}\n        W\n      {{else if (eq @practiceArea \"Forms\")}}\n        GF\n      {{else if (eq @practiceArea \"Probate\")}}\n        P\n      {{else if (eq @practiceArea \"Estates\")}}\n        ED\n      {{/if}}\n    </div>\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"P0/JvKJG\",\n    \"block\": \"[[[41,[30,0,[\\\"firm\\\",\\\"otherSettifyURLs\\\"]],[[[1,\\\"  \\\"],[10,0],[15,0,[29,[\\\"practice-area-icon \\\",[30,1]]]],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,2],[[30,1],\\\"Family\\\"],null],[[[1,\\\"      FL\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,1],\\\"Wills\\\"],null],[[[1,\\\"      W\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,1],\\\"Forms\\\"],null],[[[1,\\\"      GF\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,1],\\\"Probate\\\"],null],[[[1,\\\"      P\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,1],\\\"Estates\\\"],null],[[[1,\\\"      ED\\\\n    \\\"]],[]],null]],[]]]],[]]]],[]]]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@practiceArea\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"eq\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/practice-area-icon.hbs\",\n    \"isStrictMode\": false\n  });\n  let PracticeAreaIconComponent = _exports.default = (_class = class PracticeAreaIconComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, PracticeAreaIconComponent);\n});","define(\"settify-mvp/components/practice-area-link\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @reportConflict}}\n    <LinkTo @route=\"admin.reportconflict\" @query={{hash clientID=@clientID conflict=@reportConflict}} target={{@target}}>\n      {{yield}}\n    </LinkTo>\n  {{else if @resetConflict}}\n    <LinkTo @route=\"admin.resetconflict\" @query={{hash clientID=@clientID conflict=@resetConflict}}>\n      {{yield}}\n    </LinkTo>\n  {{else}}\n    <LinkTo @route=\"admin.clients\" @model={{@clientID}} target={{@target}}>\n      {{yield}}\n    </LinkTo>\n  {{/if}}\n  */\n  {\n    \"id\": \"NvnKqy61\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[8,[39,1],[[16,\\\"target\\\",[30,2]]],[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.reportconflict\\\",[28,[37,2],null,[[\\\"clientID\\\",\\\"conflict\\\"],[[30,3],[30,1]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[18,5,null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,4],[[[1,\\\"  \\\"],[8,[39,1],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.resetconflict\\\",[28,[37,2],null,[[\\\"clientID\\\",\\\"conflict\\\"],[[30,3],[30,4]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[18,5,null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"  \\\"],[8,[39,1],[[16,\\\"target\\\",[30,2]]],[[\\\"@route\\\",\\\"@model\\\"],[\\\"admin.clients\\\",[30,3]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[18,5,null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]],[]]]],[\\\"@reportConflict\\\",\\\"@target\\\",\\\"@clientID\\\",\\\"@resetConflict\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"link-to\\\",\\\"hash\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/practice-area-link.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/practice-area-warning\", [\"exports\", \"@ember/component\", \"@ember/service\", \"@glimmer/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@glimmer/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (gt (length this.firm.otherSettifyURLs) 1)}}\n    <div class=\"practice-area-warning {{@practiceArea}}\">\n      This is the\n      <b>\n        {{#if (eq @practiceArea \"Family\")}}\n          Family Law\n        {{else if (eq @practiceArea \"Wills\")}}\n          Wills & Estates\n        {{else if (eq @practiceArea \"Forms\")}}\n          General Purpose Forms\n        {{else if (eq @practiceArea \"Probate\")}}\n          Probate\n        {{else if (eq @practiceArea \"Estates\")}}\n          Estate Disputes\n        {{/if}}\n      </b>\n      {{#if @pageName}}\n        {{@pageName}}.\n      {{else}}\n        version of Settify.\n      {{/if}}\n    </div>\n    <p class=\"practice-area-subwarning {{@practiceArea}}\">\n      <small>\n        Switch to:\n        {{#each-in this.firm.otherSettifyURLs as |key value|}}\n          {{!-- Only show practice areas that aren't selected --}}\n          {{#if (not-eq key @practiceArea)}}\n            <a href=\"#\" {{on \"click\" (fn @changePracticeArea key)}}>\n              {{key}}.\n            </a>\n          {{/if}}\n        {{/each-in}}\n      </small>\n    </p>\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"LBGTGpGH\",\n    \"block\": \"[[[41,[28,[37,1],[[28,[37,2],[[30,0,[\\\"firm\\\",\\\"otherSettifyURLs\\\"]]],null],1],null],[[[1,\\\"  \\\"],[10,0],[15,0,[29,[\\\"practice-area-warning \\\",[30,1]]]],[12],[1,\\\"\\\\n    This is the\\\\n    \\\"],[10,\\\"b\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[30,1],\\\"Family\\\"],null],[[[1,\\\"        Family Law\\\\n\\\"]],[]],[[[41,[28,[37,5],[[30,1],\\\"Wills\\\"],null],[[[1,\\\"        Wills & Estates\\\\n\\\"]],[]],[[[41,[28,[37,5],[[30,1],\\\"Forms\\\"],null],[[[1,\\\"        General Purpose Forms\\\\n\\\"]],[]],[[[41,[28,[37,5],[[30,1],\\\"Probate\\\"],null],[[[1,\\\"        Probate\\\\n\\\"]],[]],[[[41,[28,[37,5],[[30,1],\\\"Estates\\\"],null],[[[1,\\\"        Estate Disputes\\\\n      \\\"]],[]],null]],[]]]],[]]]],[]]]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,2],[[[1,\\\"      \\\"],[1,[30,2]],[1,\\\".\\\\n\\\"]],[]],[[[1,\\\"      version of Settify.\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,2],[15,0,[29,[\\\"practice-area-subwarning \\\",[30,1]]]],[12],[1,\\\"\\\\n    \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n      Switch to:\\\\n\\\"],[42,[28,[37,9],[[30,0,[\\\"firm\\\",\\\"otherSettifyURLs\\\"]]],null],null,[[[41,[28,[37,10],[[30,4],[30,1]],null],[[[1,\\\"          \\\"],[11,3],[24,6,\\\"#\\\"],[4,[38,12],[\\\"click\\\",[28,[37,13],[[30,5],[30,4]],null]],null],[12],[1,\\\"\\\\n            \\\"],[1,[30,4]],[1,\\\".\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[3,4]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@practiceArea\\\",\\\"@pageName\\\",\\\"value\\\",\\\"key\\\",\\\"@changePracticeArea\\\"],false,[\\\"if\\\",\\\"gt\\\",\\\"length\\\",\\\"div\\\",\\\"b\\\",\\\"eq\\\",\\\"p\\\",\\\"small\\\",\\\"each\\\",\\\"-each-in\\\",\\\"not-eq\\\",\\\"a\\\",\\\"on\\\",\\\"fn\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/practice-area-warning.hbs\",\n    \"isStrictMode\": false\n  });\n  let PracticeAreaWarningComponent = _exports.default = (_class = class PracticeAreaWarningComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, PracticeAreaWarningComponent);\n});","define(\"settify-mvp/components/preferred-office\", [\"exports\", \"@ember/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({});\n});","define(\"settify-mvp/components/progress-indicator\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember/runloop\", \"@ember/service\", \"@ember/template-factory\"], function (_exports, _component, _object, _runloop, _service, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/runloop\",0,\"@ember/component\",0,\"@ember/service\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{yield}}\n  \n  <div class=\"progress-indicator-wrapper centertext\">\n    {{#each this.allPages as |page|}}\n      <CheckBox @model={{page.previous}} @class=\"progress-indicator {{if page.current \"present-indicator\"}} {{if page.previous \"past-indicator\"}}\" @disabled={{true}} @symbolType={{if page.isLoopPage \"refresh\"}} @refreshClass={{mut this.refreshClass}} />\n    {{/each}}\n  </div>\n  \n  */\n  {\n    \"id\": \"7EaV7k2s\",\n    \"block\": \"[[[18,2,null],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"progress-indicator-wrapper centertext\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,3],[[28,[37,3],[[30,0,[\\\"allPages\\\"]]],null]],null],null,[[[1,\\\"    \\\"],[8,[39,4],null,[[\\\"@model\\\",\\\"@class\\\",\\\"@disabled\\\",\\\"@symbolType\\\",\\\"@refreshClass\\\"],[[30,1,[\\\"previous\\\"]],[29,[\\\"progress-indicator \\\",[52,[30,1,[\\\"current\\\"]],\\\"present-indicator\\\"],\\\" \\\",[52,[30,1,[\\\"previous\\\"]],\\\"past-indicator\\\"]]],true,[52,[30,1,[\\\"isLoopPage\\\"]],\\\"refresh\\\"],[28,[37,6],[[30,0,[\\\"refreshClass\\\"]]],null]]],null],[1,\\\"\\\\n\\\"]],[1]],null],[13],[1,\\\"\\\\n\\\"]],[\\\"page\\\",\\\"&default\\\"],false,[\\\"yield\\\",\\\"div\\\",\\\"each\\\",\\\"-track-array\\\",\\\"check-box\\\",\\\"if\\\",\\\"mut\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/progress-indicator.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({\n    questionnaireLogic: (0, _service.service)(),\n    init() {\n      this._super(...arguments);\n      this.set(\"refreshClass\", \"refresh\");\n    },\n    allPages: (0, _object.computed)(\"clientRecord.touch\", \"context\", \"formDefinition.chapter.pages\", \"formDefinition.page.id\", \"loop\", function () {\n      const pagesToDisplay = this.formDefinition?.chapter?.pages.filter(pageDefinition => this.questionnaireLogic.computeDisplayIf(pageDefinition, this.clientRecord, this.context));\n      const currentPageID = this.formDefinition?.page?.id;\n      let currentPageReached = false;\n      for (const pageDefinition of pagesToDisplay) {\n        (0, _object.set)(pageDefinition, \"isLoopPage\", false);\n        if (pageDefinition.id === currentPageID) {\n          if (this.loop) {\n            (0, _object.set)(pageDefinition, \"isLoopPage\", true);\n          }\n          (0, _object.set)(pageDefinition, \"previous\", false);\n          (0, _object.set)(pageDefinition, \"current\", true);\n          (0, _object.set)(pageDefinition, \"future\", false);\n          currentPageReached = true;\n        } else if (currentPageReached === false) {\n          (0, _object.set)(pageDefinition, \"previous\", true);\n          (0, _object.set)(pageDefinition, \"current\", false);\n          (0, _object.set)(pageDefinition, \"future\", false);\n        } else if (currentPageReached) {\n          (0, _object.set)(pageDefinition, \"previous\", false);\n          (0, _object.set)(pageDefinition, \"current\", false);\n          (0, _object.set)(pageDefinition, \"future\", true);\n        }\n      }\n      return pagesToDisplay.filter(p => !p.hideFromProgressIndicator);\n    }),\n    // This observer retriggers the spinning arrow refresh icon animation, since looping pages don't actually count as separate pages to browsers\n    retriggerLoop: (0, _object.observer)(\"loop\", function () {\n      if (this.formDefinition?.page?.isLoopPage) {\n        this.set(\"refreshClass\", \"\");\n        (0, _runloop.next)(this, function () {\n          this.set(\"refreshClass\", \"refresh\");\n        });\n      }\n    })\n  }));\n});","define(\"settify-mvp/components/property-address\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@glimmer/tracking\", \"uuid\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _tracking, _uuid, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@glimmer/tracking\",0,\"uuid\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @displayOnly}}\n    {{#if (non-empty-string @label)}}\n      {{@label}}<br />\n    {{/if}}\n    {{yield}}\n    {{#if @notSureModel}}\n      Not sure\n    {{else}}\n      <AddressPrinter @address={{@address}} @displayOnly={{@displayOnly}} @required={{@required}} />\n    {{/if}}\n  {{else}}\n    {{#if (non-empty-string @label)}}\n      {{@label}}\n    {{else if (has-block)}}\n      {{yield}}\n    {{/if}}\n    <HelpTextIcon @helpText={{@helpText}} @displayOnly={{@displayOnly}} />\n  \n    <LiquidIf @predicate={{or (not @notSureModel) @notSureOptionDoesNotHideComponent}}>\n      <SettifyTextline\n        @label=\"Address line 1\"\n        @placeholder=\"\"\n        @model={{@address.lineOne}}\n        @name=\"address-line-1\"\n        @class={{@class}}\n        @displayOnly={{@displayOnly}}\n        @required={{@required}}\n        @autoComplete={{@autoComplete}}\n        @onChange={{@onChange}}\n      />\n      <SettifyTextline\n        @label=\"Address line 2 (if required)\"\n        @placeholder=\"\"\n        @model={{@address.lineTwo}}\n        @name=\"address-line-2\"\n        @class={{@class}}\n        @displayOnly={{@displayOnly}}\n        @required={{false}}\n        @autoComplete={{@autoComplete}}\n        @onChange={{@onChange}}\n      />\n  \n      {{#if @addressOptions.includeLineThree}}\n        <SettifyTextline\n          @label=\"Address line 3 (if required)\"\n          @model={{@address.lineThree}}\n          @name=\"address-line-3\"\n          @class={{@class}}\n          @displayOnly={{@displayOnly}}\n          @required={{false}}\n          @placeholder=\"\"\n          @autocomplete={{@autoComplete}}\n        />\n      {{/if}}\n  \n      <SettifyTextline\n        @label={{if (and @addressOptions.customSuburbInput @addressOptions.suburbText) @addressOptions.suburbText \"Suburb\"}}\n        @placeholder=\"\"\n        @model={{@address.suburb}}\n        @name=\"address-suburb\"\n        @class={{@class}}\n        @displayOnly={{@displayOnly}}\n        @required={{if @addressOptions.suburbInputNotRequired false @required}}\n        @onChange={{@onChange}}\n        @autoComplete={{@autoComplete}}\n      />\n      <SettifyTextline\n        @label={{if (and @addressOptions.customStateInput @addressOptions.stateText) @addressOptions.stateText \"State\"}}\n        @placeholder=\"\"\n        @model={{@address.state}}\n        @name=\"address-state\"\n        @class={{@class}}\n        @displayOnly={{@displayOnly}}\n        @required={{if @addressOptions.stateInputNotRequired false @required}}\n        @autoComplete={{@autoComplete}}\n        @onChange={{@onChange}}\n      />\n      <SettifyTextline\n        @label={{if (and @addressOptions.customPostcodeInput @addressOptions.postcodeText) @addressOptions.postcodeText \"Postcode\"}}\n        @placeholder=\"\"\n        @model={{@address.postcode}}\n        @name=\"address-postcode\"\n        @class={{@class}}\n        @displayOnly={{@displayOnly}}\n        @required={{@required}}\n        @onChange={{@onChange}}\n        @autoComplete={{@autoComplete}}\n      />\n  \n      {{#if @detailed}}\n        <SettifyTextline\n          @label=\"Country\"\n          @placeholder=\"\"\n          @model={{@address.country}}\n          @name=\"address-country\"\n          @class={{@class}}\n          @displayOnly={{@displayOnly}}\n          @autoComplete={{@autoComplete}}\n          @onChange={{@onChange}}\n        />\n      {{/if}}\n  \n      {{#unless @hideunknown}}\n        {{#if @displayOnly}}\n          {{#if this.addressUnknown}}\n            I don't know the address\n          {{/if}}\n        {{else}}\n          <CheckBox @text=\"Don’t know the address?\" @model={{mut this.addressUnknown}} @class=\"toggle-box\" @displayOnly={{@displayOnly}} />\n          <LiquidIf @predicate={{this.addressUnknown}}>\n            <p>That’s okay. So that we can refer back to it, just enter the street name=\"\" or the suburb. If you really have no idea, enter a nickname for the ‘Street name’, like\n              ‘Green House’</p>\n          </LiquidIf>\n        {{/if}}\n      {{/unless}}\n    </LiquidIf>\n    <LiquidIf @predicate={{@notSureOption}}>\n      <CheckBox @text={{or @notSureOptionText \"I'm not sure\"}} @model={{@notSureModel}} @onChange={{@onChange}} />\n    </LiquidIf>\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"VlzZE95b\",\n    \"block\": \"[[[41,[30,1],[[[41,[28,[37,1],[[30,2]],null],[[[1,\\\"    \\\"],[1,[30,2]],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[18,16,null],[1,\\\"\\\\n\\\"],[41,[30,3],[[[1,\\\"    Not sure\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[8,[39,4],null,[[\\\"@address\\\",\\\"@displayOnly\\\",\\\"@required\\\"],[[30,4],[30,1],[30,5]]],null],[1,\\\"\\\\n\\\"]],[]]]],[]],[[[41,[28,[37,1],[[30,2]],null],[[[1,\\\"    \\\"],[1,[30,2]],[1,\\\"\\\\n\\\"]],[]],[[[41,[48,[30,16]],[[[1,\\\"    \\\"],[18,16,null],[1,\\\"\\\\n  \\\"]],[]],null]],[]]],[1,\\\"  \\\"],[8,[39,6],null,[[\\\"@helpText\\\",\\\"@displayOnly\\\"],[[30,6],[30,1]]],null],[1,\\\"\\\\n\\\\n  \\\"],[8,[39,7],null,[[\\\"@predicate\\\"],[[28,[37,8],[[28,[37,9],[[30,3]],null],[30,7]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[39,10],null,[[\\\"@label\\\",\\\"@placeholder\\\",\\\"@model\\\",\\\"@name\\\",\\\"@class\\\",\\\"@displayOnly\\\",\\\"@required\\\",\\\"@autoComplete\\\",\\\"@onChange\\\"],[\\\"Address line 1\\\",\\\"\\\",[30,4,[\\\"lineOne\\\"]],\\\"address-line-1\\\",[30,8],[30,1],[30,5],[30,9],[30,10]]],null],[1,\\\"\\\\n    \\\"],[8,[39,10],null,[[\\\"@label\\\",\\\"@placeholder\\\",\\\"@model\\\",\\\"@name\\\",\\\"@class\\\",\\\"@displayOnly\\\",\\\"@required\\\",\\\"@autoComplete\\\",\\\"@onChange\\\"],[\\\"Address line 2 (if required)\\\",\\\"\\\",[30,4,[\\\"lineTwo\\\"]],\\\"address-line-2\\\",[30,8],[30,1],false,[30,9],[30,10]]],null],[1,\\\"\\\\n\\\\n\\\"],[41,[30,11,[\\\"includeLineThree\\\"]],[[[1,\\\"      \\\"],[8,[39,10],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@name\\\",\\\"@class\\\",\\\"@displayOnly\\\",\\\"@required\\\",\\\"@placeholder\\\",\\\"@autocomplete\\\"],[\\\"Address line 3 (if required)\\\",[30,4,[\\\"lineThree\\\"]],\\\"address-line-3\\\",[30,8],[30,1],false,\\\"\\\",[30,9]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n    \\\"],[8,[39,10],null,[[\\\"@label\\\",\\\"@placeholder\\\",\\\"@model\\\",\\\"@name\\\",\\\"@class\\\",\\\"@displayOnly\\\",\\\"@required\\\",\\\"@onChange\\\",\\\"@autoComplete\\\"],[[52,[28,[37,11],[[30,11,[\\\"customSuburbInput\\\"]],[30,11,[\\\"suburbText\\\"]]],null],[30,11,[\\\"suburbText\\\"]],\\\"Suburb\\\"],\\\"\\\",[30,4,[\\\"suburb\\\"]],\\\"address-suburb\\\",[30,8],[30,1],[52,[30,11,[\\\"suburbInputNotRequired\\\"]],false,[30,5]],[30,10],[30,9]]],null],[1,\\\"\\\\n    \\\"],[8,[39,10],null,[[\\\"@label\\\",\\\"@placeholder\\\",\\\"@model\\\",\\\"@name\\\",\\\"@class\\\",\\\"@displayOnly\\\",\\\"@required\\\",\\\"@autoComplete\\\",\\\"@onChange\\\"],[[52,[28,[37,11],[[30,11,[\\\"customStateInput\\\"]],[30,11,[\\\"stateText\\\"]]],null],[30,11,[\\\"stateText\\\"]],\\\"State\\\"],\\\"\\\",[30,4,[\\\"state\\\"]],\\\"address-state\\\",[30,8],[30,1],[52,[30,11,[\\\"stateInputNotRequired\\\"]],false,[30,5]],[30,9],[30,10]]],null],[1,\\\"\\\\n    \\\"],[8,[39,10],null,[[\\\"@label\\\",\\\"@placeholder\\\",\\\"@model\\\",\\\"@name\\\",\\\"@class\\\",\\\"@displayOnly\\\",\\\"@required\\\",\\\"@onChange\\\",\\\"@autoComplete\\\"],[[52,[28,[37,11],[[30,11,[\\\"customPostcodeInput\\\"]],[30,11,[\\\"postcodeText\\\"]]],null],[30,11,[\\\"postcodeText\\\"]],\\\"Postcode\\\"],\\\"\\\",[30,4,[\\\"postcode\\\"]],\\\"address-postcode\\\",[30,8],[30,1],[30,5],[30,10],[30,9]]],null],[1,\\\"\\\\n\\\\n\\\"],[41,[30,12],[[[1,\\\"      \\\"],[8,[39,10],null,[[\\\"@label\\\",\\\"@placeholder\\\",\\\"@model\\\",\\\"@name\\\",\\\"@class\\\",\\\"@displayOnly\\\",\\\"@autoComplete\\\",\\\"@onChange\\\"],[\\\"Country\\\",\\\"\\\",[30,4,[\\\"country\\\"]],\\\"address-country\\\",[30,8],[30,1],[30,9],[30,10]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[51,[30,13]],[[[41,[30,1],[[[41,[30,0,[\\\"addressUnknown\\\"]],[[[1,\\\"          I don't know the address\\\\n\\\"]],[]],null]],[]],[[[1,\\\"        \\\"],[8,[39,13],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@class\\\",\\\"@displayOnly\\\"],[\\\"Don’t know the address?\\\",[28,[37,14],[[30,0,[\\\"addressUnknown\\\"]]],null],\\\"toggle-box\\\",[30,1]]],null],[1,\\\"\\\\n        \\\"],[8,[39,7],null,[[\\\"@predicate\\\"],[[30,0,[\\\"addressUnknown\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"That’s okay. So that we can refer back to it, just enter the street name=\\\\\\\"\\\\\\\" or the suburb. If you really have no idea, enter a nickname for the ‘Street name’, like\\\\n            ‘Green House’\\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]],[]],null],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[39,7],null,[[\\\"@predicate\\\"],[[30,14]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[39,13],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@onChange\\\"],[[28,[37,8],[[30,15],\\\"I'm not sure\\\"],null],[30,3],[30,10]]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]],[\\\"@displayOnly\\\",\\\"@label\\\",\\\"@notSureModel\\\",\\\"@address\\\",\\\"@required\\\",\\\"@helpText\\\",\\\"@notSureOptionDoesNotHideComponent\\\",\\\"@class\\\",\\\"@autoComplete\\\",\\\"@onChange\\\",\\\"@addressOptions\\\",\\\"@detailed\\\",\\\"@hideunknown\\\",\\\"@notSureOption\\\",\\\"@notSureOptionText\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"non-empty-string\\\",\\\"br\\\",\\\"yield\\\",\\\"address-printer\\\",\\\"has-block\\\",\\\"help-text-icon\\\",\\\"liquid-if\\\",\\\"or\\\",\\\"not\\\",\\\"settify-textline\\\",\\\"and\\\",\\\"unless\\\",\\\"check-box\\\",\\\"mut\\\",\\\"p\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/property-address.hbs\",\n    \"isStrictMode\": false\n  });\n  let PropertyAddressComponent = _exports.default = (_class = class PropertyAddressComponent extends _component2.default {\n    constructor(owner, args) {\n      super(owner, args);\n      _initializerDefineProperty(this, \"addressUnknown\", _descriptor, this);\n      if (this.args.address && !this.args.address.id) {\n        (0, _object.set)(this.args.address, \"id\", (0, _uuid.v4)());\n      }\n    }\n    get hideUnknown() {\n      return this.args.notSureOption ?? false;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"addressUnknown\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, PropertyAddressComponent);\n});","define(\"settify-mvp/components/question-rating-icon\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/utils\", \"@ember/template-factory\"], function (_exports, _component, _component2, _utils, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/utils\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <button type=\"button\" {{on \"mouseenter\" (fn @thumbHover @iconValue)}} {{on \"mouseleave\" @thumbLeave}} {{on \"click\" (fn @thumbClick @iconValue)}}>\n    <span class=\"fal fa-{{this.iconClass}} {{this.hoverClass}}\" />\n  </button>\n  \n  */\n  {\n    \"id\": \"0g8p6Yav\",\n    \"block\": \"[[[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,1],[\\\"mouseenter\\\",[28,[37,2],[[30,1],[30,2]],null]],null],[4,[38,1],[\\\"mouseleave\\\",[30,3]],null],[4,[38,1],[\\\"click\\\",[28,[37,2],[[30,4],[30,2]],null]],null],[12],[1,\\\"\\\\n  \\\"],[10,1],[15,0,[29,[\\\"fal fa-\\\",[30,0,[\\\"iconClass\\\"]],\\\" \\\",[30,0,[\\\"hoverClass\\\"]]]]],[12],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[\\\"@thumbHover\\\",\\\"@iconValue\\\",\\\"@thumbLeave\\\",\\\"@thumbClick\\\"],false,[\\\"button\\\",\\\"on\\\",\\\"fn\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/question-rating-icon.hbs\",\n    \"isStrictMode\": false\n  });\n  class QuestionRatingIconComponent extends _component2.default {\n    get iconClass() {\n      const {\n        iconValue\n      } = this.args;\n      if (iconValue < 0) {\n        return \"thumbs-down\";\n      }\n      if (iconValue > 0) {\n        return \"thumbs-up\";\n      }\n      return \"minus-circle\";\n    }\n    get hoverClass() {\n      const {\n        iconValue,\n        selectedValue,\n        hoverValue\n      } = this.args;\n      const hovering = !(0, _utils.isNone)(hoverValue);\n      let includedInCurrentSelection = selectedValue === iconValue;\n      if (iconValue < 0 && selectedValue < iconValue) {\n        includedInCurrentSelection = true;\n      }\n      if (iconValue > 0 && selectedValue > iconValue) {\n        includedInCurrentSelection = true;\n      }\n      if (includedInCurrentSelection) {\n        // always show \"selected\" class, unless user is hovering over something 'less'\n        if (hovering) {\n          if (iconValue > 0 && hoverValue < iconValue) {\n            return \"hovered\";\n          } else if (iconValue < 0 && hoverValue > iconValue) {\n            return \"hovered\";\n          } else if (iconValue === 0 && hoverValue !== 0) {\n            return \"hovered\";\n          }\n        }\n        return \"selected\";\n      }\n\n      // not currently selected - we should be off unless hovering over something equal or \"higher\" than us\n      if (hovering) {\n        // we should also hover, if the selection is \"higher\" than us\n        if (iconValue > 0 && hoverValue >= iconValue) {\n          return \"hovered\";\n        } else if (iconValue < 0 && hoverValue <= iconValue) {\n          return \"hovered\";\n        } else if (iconValue === hoverValue) {\n          return \"hovered\";\n        }\n      }\n      return \"\";\n    }\n  }\n  _exports.default = QuestionRatingIconComponent;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, QuestionRatingIconComponent);\n});","define(\"settify-mvp/components/question-rating\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#each this.ratingList as | rating |}}\n    <QuestionRatingIcon @iconValue={{rating}} @selectedValue={{@question.value}} @hoverValue={{@question.hIndex}} @thumbHover={{this.hover}} @thumbLeave={{this.leave}} @thumbClick={{this.click}} />\n  {{/each}}\n  */\n  {\n    \"id\": \"99c064Z1\",\n    \"block\": \"[[[42,[28,[37,1],[[28,[37,1],[[30,0,[\\\"ratingList\\\"]]],null]],null],null,[[[1,\\\"  \\\"],[8,[39,2],null,[[\\\"@iconValue\\\",\\\"@selectedValue\\\",\\\"@hoverValue\\\",\\\"@thumbHover\\\",\\\"@thumbLeave\\\",\\\"@thumbClick\\\"],[[30,1],[30,2,[\\\"value\\\"]],[30,2,[\\\"hIndex\\\"]],[30,0,[\\\"hover\\\"]],[30,0,[\\\"leave\\\"]],[30,0,[\\\"click\\\"]]]],null],[1,\\\"\\\\n\\\"]],[1]],null]],[\\\"rating\\\",\\\"@question\\\"],false,[\\\"each\\\",\\\"-track-array\\\",\\\"question-rating-icon\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/question-rating.hbs\",\n    \"isStrictMode\": false\n  });\n  let QuestionRatingComponent = _exports.default = (_class = class QuestionRatingComponent extends _component2.default {\n    get ratingList() {\n      return this.args.positiveOnly ? [1, 2, 3, 4, 5] : [-3, -2, -1, 0, 1, 2, 3];\n    }\n    hover(rate) {\n      this.args.thumbHover(this.args.question, rate);\n    }\n    click(rate) {\n      this.args.thumbClick(this.args.question, rate);\n    }\n    leave() {\n      this.args.thumbLeave(this.args.question);\n    }\n  }, _applyDecoratedDescriptor(_class.prototype, \"hover\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"hover\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"click\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"click\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"leave\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"leave\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, QuestionRatingComponent);\n});","define(\"settify-mvp/components/radio-buttons\", [\"exports\", \"@ember/object/computed\", \"@ember/component\", \"settify-mvp/mixins/settify-input-mixin\"], function (_exports, _computed, _component, _settifyInputMixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object/computed\",0,\"@ember/component\",0,\"settify-mvp/mixins/settify-input-mixin\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend(_settifyInputMixin.default, {\n    tagName: \"\",\n    groupName: (0, _computed.or)(\"name\", \"model\"),\n    actions: {\n      select(value) {\n        if (this.model === value && this.unselectable) {\n          // deselect\n          this.set(\"model\", undefined);\n        } else {\n          this.set(\"model\", value);\n          if (this.onclicked) {\n            this.send(this.onclicked);\n          }\n        }\n      },\n      onkeydown(event) {\n        // console.log(\"onkeydown\", event);\n        if (event.key === \"ArrowDown\" || event.code === \"ArrowDown\") {\n          // shift focus to next radio button\n          const list = document.querySelectorAll(`input[name=\"${this.groupName}\"]`);\n          const current = document.querySelectorAll(`input[name=\"${this.groupName}\"]:focus`);\n          for (let i = 0; i < list.length; i++) {\n            const element = list[i];\n            if (element === current[0]) {\n              // go one next\n              if (i < list.length - 1) {\n                list[i + 1].focus();\n              } else {\n                list[0].focus();\n              }\n              return false;\n            }\n          }\n          return false;\n        }\n        if (event.key === \"ArrowUp\" || event.code === \"ArrowUp\") {\n          // shift focus to previous radio button\n          const list = document.querySelectorAll(`input[name=\"${this.groupName}\"]`);\n          const current = document.querySelectorAll(`input[name=\"${this.groupName}\"]:focus`);\n          for (let i = 0; i < list.length; i++) {\n            const element = list[i];\n            if (element === current[0]) {\n              // go one previous\n              if (i > 0) {\n                list[i - 1].focus();\n              } else {\n                list[list.length - 1].focus();\n              }\n              return false;\n            }\n          }\n          return false;\n        }\n      }\n    }\n  });\n});","define(\"settify-mvp/components/resource-upload\", [\"exports\", \"@ember/runloop\", \"@ember/object\", \"@ember/service\", \"@ember/component\"], function (_exports, _runloop, _object, _service, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    tagName: \"div\",\n    firm: (0, _service.inject)(),\n    config: (0, _service.inject)(\"dynamic-config\"),\n    init() {\n      this._super(...arguments);\n      this.set(\"timestamp\", Date.now());\n      this.set(\"emptyImageSrc\", false);\n      this.set(\"practiceArea\", false);\n    },\n    onGotPracticeAreas: (0, _object.observer)(\"practiceAreas\", \"practiceAreas.length\", \"practiceArea\", function () {\n      if (this.practiceArea) {\n        this.set(\"emptyImageSrc\", false);\n        return;\n      } else if (this.get(\"practiceAreas.length\")) {\n        // Set a reasonable default\n        this.set(\"practiceArea\", this.practiceAreas[0].value);\n      }\n    }),\n    imageSizeSuffix: (0, _object.computed)(\"size\", function () {\n      let {\n        size\n      } = this;\n      if (size) {\n        return `-${size}`;\n      }\n      return \"\";\n    }),\n    updateReferrerURLName() {\n      this.set(\"referrerURLName\", (this.referrerName || \"\").replace(/ /g, \"\"));\n    },\n    referrerNameChange: (0, _object.observer)(\"referrerName\", function () {\n      (0, _runloop.debounce)(this, \"updateReferrerURLName\", 750);\n    }),\n    imageURL: (0, _object.computed)(\"firmID\", \"uploadType\", \"imageSizeSuffix\", \"referrerURLName\", \"updateReferrerURLName\", \"practiceArea\", \"timestamp\", \"config.settings.AssetsUrl\", function () {\n      let path;\n      switch (this.uploadType) {\n        case \"logo\":\n          path = `logos/${this.firmID}.png`;\n          break;\n        case \"emailLogo\":\n        case \"cobrandedLogo\":\n          path = `logos/${this.firmID}${this.imageSizeSuffix}.jpg`;\n          break;\n        case \"referrerLogo\":\n          if (this.referrerURLName) {\n            path = `referrerlogos/${this.referrerURLName}${this.imageSizeSuffix}.jpg`;\n          }\n          break;\n        case \"headerimage\":\n          if (this.practiceArea) {\n            path = `firms/${this.firmID}/${this.practiceArea}-bg.jpg`;\n          }\n          break;\n        case \"landingimage\":\n          if (this.practiceArea) {\n            path = `firms/${this.firmID}/${this.practiceArea}-landing.jpg`;\n          }\n          break;\n        case \"favicon\":\n          path = `firms/${this.firmID}/favicon.ico`;\n          break;\n        case \"font\":\n          break;\n        default:\n          throw new Error(`Unknown upload type: ${this.uploadType}`);\n      }\n      return `${this.get(\"config.settings.AssetsUrl\")}/${path}?ts=${this.timestamp}`;\n    }),\n    forceFileName: (0, _object.computed)(\"size\", \"firmID\", \"forceName\", \"uploadType\", \"practiceArea\", function () {\n      if (!this.forceName) {\n        return false;\n      }\n      if (this.size) {\n        return `${this.firmID}-${this.size}`;\n      }\n      if (\"logo\" === this.uploadType) {\n        return `${this.firmID}`;\n      }\n      if (\"favicon\" === this.uploadType) {\n        return this.forceName;\n      }\n      if (\"headerimage\" === this.uploadType) {\n        return `${this.practiceArea}-bg`;\n      }\n      if (\"landingimage\" === this.uploadType) {\n        return `${this.practiceArea}-landing`;\n      }\n      if (\"font\" === this.uploadType) {\n        return `${this.forceName}`;\n      }\n      return \"\";\n    }),\n    bucket: (0, _object.computed)(\"firmID\", \"uploadType\", \"practiceArea\", \"config.settings.Buckets.assets\", function () {\n      let path;\n      let {\n        uploadType\n      } = this;\n      if ([\"logo\", \"emailLogo\", \"cobrandedLogo\"].includes(uploadType)) {\n        path = \"logos\";\n      } else if (uploadType === \"referrerLogo\") {\n        path = \"referrerlogos\";\n      } else {\n        path = `firms/${this.firmID}`;\n      }\n      return `${this.get(\"config.settings.Buckets.assets\")}/${path}`;\n    }),\n    actions: {\n      uploadComplete(filename) {\n        this.set(\"timestamp\", Date.now());\n        if (this.uploadType === \"headerimage\") {\n          this.set(\"emptyImageSrc\", false);\n        }\n        if (this.callback && this.callbackAction) {\n          const fontlink = `${this.get(\"config.settings.S3BaseUrl\")}/${this.bucket}/${filename}`;\n          this.callback(fontlink);\n        }\n      },\n      setEmptyImageMessage() {\n        this.set(\"emptyImageSrc\", true);\n      }\n    }\n  });\n});","define(\"settify-mvp/components/resume-link-widget\", [\"exports\", \"@ember/object\", \"@ember/service\", \"@ember/component\"], function (_exports, _object, _service, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    firm: (0, _service.inject)(),\n    type: \"\",\n    resumeLink: (0, _object.computed)(\"firm.settifyURL\", \"model.{clientID,helpWantedSimple,parentingOnly}\", function () {\n      let baseLink = `${this.get(\"firm.settifyURL\")}?clientID=${this.get(\"model.clientID\")}`;\n      if (this.get(\"model.parentingOnly\") || this.get(\"model.helpWantedSimple\")) {\n        baseLink += \"&unlockFullInduction=true\";\n      }\n      return baseLink;\n    }),\n    actions: {\n      copyLink() {\n        const link = this.resumeLink;\n        this.copyToClipBoard(link);\n      }\n    },\n    copyToClipBoard(text) {\n      if (navigator.clipboard !== undefined) {\n        // Chrome\n        navigator.clipboard.writeText(text); /* .then(function () {\n                                             console.log('Async: Copying to clipboard was successful!');\n                                             }, function (err) {\n                                             console.error('Async: Could not copy text: ', err);\n                                             }); */\n      } else if (window.clipboardData) {\n        // Internet Explorer\n        window.clipboardData.setData(\"Text\", text);\n      }\n    }\n  });\n});","define(\"settify-mvp/components/same-information-warning\", [\"exports\", \"@ember/object\", \"@ember/component\"], function (_exports, _object, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    foundSameValue: (0, _object.computed)(\"model.{matchingFirstNames,matchingEmails,matchingPhones}\", \"label\", function () {\n      let valueToCompare = this.label;\n      if (valueToCompare === \"name\") {\n        return this.get(\"model.matchingFirstNames\");\n      } else if (valueToCompare === \"email\") {\n        return this.get(\"model.matchingEmails\");\n      } else if (valueToCompare === \"number\" || valueToCompare === \"phone\") {\n        return this.get(\"model.matchingPhones\");\n      }\n      return null;\n    })\n  });\n});","define(\"settify-mvp/components/save-progress-widget\", [\"exports\", \"@ember/service\", \"@ember/component\"], function (_exports, _service, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    saveProgressEmailValid: false,\n    showSaveProgress: false,\n    saveProgressRepeatVisitor: false,\n    eventLogging: (0, _service.inject)(),\n    lambda: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    actions: {\n      toggleSaveProgress() {\n        this.set(\"showSaveProgress\", !this.showSaveProgress);\n        if (this.showSaveProgress) {\n          this.set(\"saveProgressRepeatVisitor\", this.get(\"model.hasReceivedResumeLinkEmail\"));\n          this.set(\"saveProgressError\", false);\n          this.set(\"saveProgressComplete\", false);\n          this.set(\"saveProgressLoading\", false);\n        }\n      },\n      saveProgress() {\n        this.set(\"saveProgressError\", false);\n        this.set(\"saveProgressComplete\", false);\n        this.set(\"saveProgressLoading\", true);\n        this.sendResumeLink(this.model).then(() => {\n          this.set(\"saveProgressComplete\", true);\n          this.set(\"saveProgressLoading\", false);\n        }).catch(err => {\n          this.eventLogging.logError(\"Unable to send resume link\", err);\n          this.set(\"saveProgressError\", true);\n          this.set(\"saveProgressLoading\", false);\n        });\n      }\n    },\n    sendResumeLink(client) {\n      if (!client) {\n        return Promise.reject(new Error(\"Null client object passed to sendResumeLink\"));\n      }\n      const email = client.get(\"email\");\n      const clientID = client.get(\"clientID\");\n      if (!email || email.length <= 0) {\n        return Promise.reject(new Error(\"Client does not have an email address\"));\n      }\n      return this.lambda.invoke(this.get(\"lambda.emailResumeLinkLambda\"), {\n        firmID: this.get(\"firm.id\"),\n        clientID: clientID,\n        email: email,\n        firstName: client.get(\"firstName\"),\n        mockFirmName: client.get(\"mockFirmName\"),\n        mockFirmLogo: client.get(\"mockFirmLogo\"),\n        practiceArea: client.get(\"practiceArea\") || this.get(\"firm.practiceArea\"),\n        matterReferenceNumber: client.get(\"matterReferenceNumber\")\n      }).then(() => {\n        return this.eventLogging.log(clientID, this.eventLogging.IDs.EmailedResumeLink);\n      }).then(() => {\n        client.set(\"hasReceivedResumeLinkEmail\", true);\n        return client.save();\n      });\n    }\n  });\n});","define(\"settify-mvp/components/searched-clients-list\", [\"exports\", \"@ember/object\", \"@ember/service\", \"@ember/component\"], function (_exports, _object, _service, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    eventLogging: (0, _service.inject)(),\n    actions: {\n      closeResultsBox() {\n        this.hideSearchResults();\n      },\n      toggleInvitationEmailHistory(client) {\n        if (!client.showInvitationEmailHistory) {\n          this.eventLogging.adminLog(client.clientID, this.eventLogging.adminIDs.invitationHistoryViewed);\n        }\n        (0, _object.set)(client, \"showInvitationEmailHistory\", !client.showInvitationEmailHistory);\n      }\n    }\n  });\n});","define(\"settify-mvp/components/select-or-create-base\", [\"exports\", \"@ember/object\", \"@ember/array\", \"@ember/utils\", \"@ember/runloop\", \"@ember/component\", \"settify-mvp/helpers/family-tree-relationship\", \"settify-mvp/helpers/parse-text\", \"settify-mvp/utils/defaults-object-initializer\", \"settify-mvp/utils/format-item-label\", \"settify-mvp/utils/is-empty-object-checker\", \"settify-mvp/mixins/settify-input-mixin\"], function (_exports, _object, _array, _utils, _runloop, _component, _familyTreeRelationship, _parseText, _defaultsObjectInitializer, _formatItemLabel, _isEmptyObjectChecker, _settifyInputMixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/array\",0,\"@ember/utils\",0,\"@ember/runloop\",0,\"@ember/component\",0,\"settify-mvp/helpers/family-tree-relationship\",0,\"settify-mvp/helpers/parse-text\",0,\"settify-mvp/utils/defaults-object-initializer\",0,\"settify-mvp/utils/format-item-label\",0,\"settify-mvp/utils/is-empty-object-checker\",0,\"settify-mvp/mixins/settify-input-mixin\"eaimeta@70e063a35619d71f\n  /*\n   * model: Stores the actual IDs of the selected/created individuals that will be output from the component.\n   * sourceList: The list of individuals that can be selected.\n   * augmentedSourceList: The processed sourceList. Processing differs between implementations (view buildAugmentedSourceList()).\n   */\n  var _default = _exports.default = _component.default.extend(_settifyInputMixin.default, {\n    newItem: null,\n    itemName: \"item\",\n    addNewText: \"Something else\",\n    prompt: \"select\",\n    label: \"\",\n    assignUUIDs: true,\n    init() {\n      this._super(...arguments);\n      this.defaultsObjectInitializer = new _defaultsObjectInitializer.DefaultsObjectInitializer(this.defaults, this.assignUUIDs);\n    },\n    hideOptionsIfFiltered() {\n      (0, _runloop.later)(() => {\n        if (this.filterType === \"excludeall\") {\n          this.set(\"hideSelect\", true);\n        } else if (this.hideSelectSuggest) {\n          // we use a secondary name 'hideSelectSuggest', so that if we do a 'set' here,\n          // we don't alter the definition of the question in the input-switcher.\n          this.set(\"hideSelect\", true);\n        }\n      });\n    },\n    setContextLock() {\n      const {\n        context\n      } = this;\n      this.set(\"contextLock\", context ? {\n        path: `${context.induction}-${context.chapter}-${context.page}`,\n        question: `${this.questionID}-${this.get(\"client.id\")}`\n      } : {});\n    },\n    filterByType(list, filterType, filterList) {\n      if (this.displayOnly) {\n        return list;\n      }\n      if (filterType === \"excludeall\") {\n        list = list.filter(l => l.tmpVarNewCreation || l.id === this.model);\n      } else if (filterType === \"blacklist\" && filterList && filterList.length) {\n        list = list.filter(l => !filterList.includes(l.id));\n      } else if (filterType === \"whitelist\" && filterList && filterList.length) {\n        list = list.filter(l => filterList.includes(l.id));\n      }\n      return list;\n    },\n    isEmptyItem(obj) {\n      const keys = Object.keys(obj);\n      const keysToIgnore = [\"id\", \"email-valid\", \"contextLock\", \"relationship\", \"expand\", \"type\"];\n      let hasKeys = false;\n      for (let i = 0; i < keys.length; i++) {\n        if (!keysToIgnore.includes(keys[i]) && keys[i][0] !== \"_\" && !(0, _utils.isNone)(obj[keys[i]])) {\n          const val = obj[keys[i]];\n          if ((0, _array.isArray)(val)) {\n            if (val.length > 0) {\n              hasKeys = true;\n            }\n          } else if (typeof val === \"object\") {\n            if (!this.isEmptyItem(val)) {\n              hasKeys = true;\n            }\n          } else {\n            hasKeys = true;\n          }\n        }\n      }\n      return !hasKeys;\n    },\n    /**\n     * Deletes the specified entity from the sourceList and, if available, from the outputList.\n     *\n     * @param {Object} entity - The entity to be deleted.\n     */\n    deleteEntity(entity) {\n      this.sourceList.removeObject(entity);\n      if (this.outputList) {\n        this.outputList.removeObject(entity);\n      }\n    },\n    createAugmentedSourceList() {\n      let augmentedSourceList = [];\n      this.addElementsFromSourceList(augmentedSourceList);\n      augmentedSourceList = this.removeDuplicates(augmentedSourceList);\n      augmentedSourceList = this.filterDeceased(augmentedSourceList);\n      return augmentedSourceList;\n    },\n    storeAugmentedSourceListAtComponentCreation(augmentedSourceList) {\n      if (!this.augmentedSourceListAtComponentCreation) {\n        this.set(\"augmentedSourceListAtComponentCreation\", augmentedSourceList.map(v => v.value).filter(v => v !== this.addNewItemID));\n      }\n    },\n    addElementsFromSourceList(augmentedSourceList) {\n      // Now we add everything from the 'main' list, but we filter it depending on what needs to be included or excluded\n      const sourceList = this.filterByType(this.sourceList, this.filterType, this.filterList);\n      sourceList.forEach(element => {\n        const isAllowedPerson = this.allowPeople && (element.firstName || element.surname || element.middleName);\n        const isAllowedCorporation = this.allowCorporations && element.name;\n        const allowAll = !this.allowPeople && !this.allowCorporations;\n        const inAugmentedSourceListAtComponentCreation = (this.augmentedSourceListAtComponentCreation || []).some(p => element.id === p);\n        const allowedOption = isAllowedPerson || isAllowedCorporation || inAugmentedSourceListAtComponentCreation || element.tmpVarNewCreation || allowAll;\n        if (!(0, _isEmptyObjectChecker.default)(element) && element.id !== this.addNewItemID || inAugmentedSourceListAtComponentCreation) {\n          if (allowedOption && !this.isContextLocked(element)) {\n            augmentedSourceList.push(this.buildItem(element));\n          }\n        }\n      });\n    },\n    filterDeceased(augmentedSourceList) {\n      if (!this.allowDeceased && !this.useFamilyTree) {\n        // remove the deceased from the list\n        const deceasedID = this.get(\"clientRecord.deceased.id\");\n        augmentedSourceList = augmentedSourceList.filter(e => e.value !== deceasedID);\n      }\n      return augmentedSourceList;\n    },\n    removeDuplicates(augmentedSourceList) {\n      return augmentedSourceList.filter((e, index, array) => {\n        return array.filter(elt => elt.value === e.value)[0] === e;\n      });\n    },\n    listEquality(previousList, potentialList) {\n      if (previousList.length === potentialList.length) {\n        // same length - do they have the same values?\n        let anyDifferences = false;\n        for (let i = 0; i < previousList.length; i++) {\n          if (previousList[i].value !== potentialList[i].value || previousList[i].label !== potentialList[i].label) {\n            anyDifferences = true;\n            break;\n          }\n        }\n        if (anyDifferences) {\n          return true;\n        }\n        return false;\n      }\n    },\n    isContextLocked(entity) {\n      const thisLock = this.contextLock;\n      if (!entity.contextLock || entity.contextLock.path !== thisLock.path) {\n        return false;\n      }\n      return entity.contextLock.question !== thisLock.question;\n    },\n    buildItem(item) {\n      this.defaultsObjectInitializer.setDefaults(item);\n      return {\n        value: item.id,\n        label: this.buildItemNameWithPotentialBlanks(item),\n        source: item\n      };\n    },\n    buildItemNameWithPotentialBlanks(item, includeRelationship) {\n      let retval = (0, _formatItemLabel.default)(item, this.itemLabelFormat);\n      if (retval && includeRelationship && item.id !== this.get(\"clientRecord.deceased.id\")) {\n        const status = item.relationshipStatus || item.relationship;\n        const timing = item.relationshipTiming || item.whatHappened;\n        retval += (0, _familyTreeRelationship.familyTreeRelationship)([status, timing], {\n          clientRecord: this.clientRecord,\n          includeStepChildren: true\n        });\n      }\n      const pt = _parseText.default.create();\n      const newText = pt.compute([`New ${this.itemName}`], {\n        clientRecord: this.clientRecord,\n        context: this.context,\n        blueprintMode: this.blueprintMode,\n        doNotWrap: true\n      });\n      return retval || (item.tmpVarNewCreation || this.isEmptyItem(item) ? newText : \"\");\n    },\n    itemNamePlural: (0, _object.computed)(\"itemName\", \"itemNamePluralNoun\", function () {\n      const pluralNoun = this.itemNamePluralNoun;\n      return pluralNoun || `${this.itemName}s`;\n    }),\n    addAnotherText: (0, _object.computed)(\"augmentedSourceList.length\", \"itemName\", function () {\n      const asl = this.augmentedSourceList;\n      let resultString = \"Add\";\n      if (asl && asl.length > 0) {\n        resultString += \" another\";\n      } else if (asl && asl.length < 1 || !asl) {\n        resultString += \" your first\";\n      }\n      resultString += ` ${this.itemName}`;\n      return resultString;\n    }),\n    componentIsBeingDestroyed() {\n      return this.isDestroying || this.isDestroyed || this.selectOrCreateIsDestroying;\n    },\n    actions: {\n      toggleExpand(entity) {\n        if (entity.expand) {\n          (0, _object.set)(entity, \"expand\", false);\n        } else {\n          (0, _object.set)(entity, \"expand\", true);\n        }\n      },\n      removeNewItem() {\n        this.set(\"model\", null);\n      },\n      addItem() {\n        const newVal = {\n          ...this.defaultsObjectInitializer.createDefaultItem(),\n          tmpVarNewCreation: true,\n          contextLock: this.contextLock\n        };\n        const output = this.outputList || this.sourceList;\n        output.pushObject(newVal);\n        this.model.pushObject(newVal.id);\n      }\n    }\n  });\n});","define(\"settify-mvp/components/select-or-create-legacy\", [\"exports\", \"@ember/array\", \"@ember/utils\", \"@ember/runloop\", \"@ember/object\", \"@ember/component\", \"uuid\", \"settify-mvp/utils/defaults-object-initializer\", \"settify-mvp/utils/format-item-label\", \"settify-mvp/utils/is-empty-object-checker\", \"settify-mvp/mixins/settify-input-mixin\", \"settify-mvp/helpers/family-tree-relationship\"], function (_exports, _array, _utils, _runloop, _object, _component, _uuid, _defaultsObjectInitializer, _formatItemLabel, _isEmptyObjectChecker, _settifyInputMixin, _familyTreeRelationship) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/array\",0,\"@ember/utils\",0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/component\",0,\"uuid\",0,\"settify-mvp/utils/defaults-object-initializer\",0,\"settify-mvp/utils/format-item-label\",0,\"settify-mvp/utils/is-empty-object-checker\",0,\"settify-mvp/mixins/settify-input-mixin\",0,\"settify-mvp/helpers/family-tree-relationship\"eaimeta@70e063a35619d71f\n  /* This component is deprecated, but still being used in some Probate forms.\n     It looks similar to the current single and multi select or creates, however\n     is buggy and contains some fundamental logic that would make it challengingn to replace */\n  var _default = _exports.default = _component.default.extend(_settifyInputMixin.default, {\n    newItem: null,\n    itemName: \"item\",\n    addNewText: \"Something else\",\n    prompt: \"select\",\n    label: \"\",\n    assignUUIDs: true,\n    init() {\n      this._super();\n      this.defaultsObjectInitializer = new _defaultsObjectInitializer.DefaultsObjectInitializer(this.defaults, this.assignUUIDs);\n      const addNewItemID = (0, _uuid.v4)();\n      this.set(\"addNewItemID\", addNewItemID);\n      // console.log(\"Creating a new select-or-create\");\n      // console.log(\" - Label: \", this.get('label'));\n      // console.log(\" - addNewItemID: \", this.get('addNewItemID'));\n      // console.log(\" - model: \", this.get('model'));\n      this.buildSourceList(true);\n      (0, _runloop.later)(() => {\n        if (this.filterType === \"excludeall\") {\n          this.set(\"hideSelect\", true);\n        } else if (this.hideSelectSuggest) {\n          // we use a secondary name 'hideSelectSuggest', so that if we do a 'set' here,\n          // we don't alter the definition of the question in the input-switcher.\n          this.set(\"hideSelect\", true);\n        }\n      });\n    },\n    buildSourceList(allowDefaultSelection) {\n      // console.log(`Building source list (addNewItemID: ${this.get('addNewItemID')})`);\n      // console.log(` - source list: `, this.get('sourceList'));\n      // console.log(` - source list.length: ${this.get('sourceList.length')}`);\n      // console.log(` - source list.touch: ${this.get('sourceList.touch')}`);\n      // build the full list for selecting from\n      // console.log(`Building source list (addNewItemID: ${this.get('addNewItemID')})`);\n      let augmentedSourceList = [];\n\n      // additional insertions go at the start of the list;\n      const injectionLetters = \"ABCDEFGHIJKLMNOPQRSTUVQWXYZ\";\n      for (let i = 0; i < injectionLetters.length; i++) {\n        const letter = injectionLetters[i];\n        const inject = this.get(`inject${letter}`);\n        if (this.isArrayOfObjects(inject)) {\n          for (let j = 0; j < inject.length; j++) {\n            const subelement = inject[j];\n            if (!(0, _isEmptyObjectChecker.default)(subelement)) {\n              augmentedSourceList.push(this.buildItem(subelement));\n            }\n          }\n        } else {\n          if (!(0, _isEmptyObjectChecker.default)(inject)) {\n            augmentedSourceList.push(this.buildItem(inject));\n          }\n        }\n      }\n\n      // now we add everything from the 'main' list\n      // but we filter it depending on what needs to be included or excluded\n      const sourceList = this.filterByType(this.sourceList, this.filterType, this.filterList);\n      for (let i = 0; i < sourceList.length; i++) {\n        const element = sourceList[i];\n        const isAllowedPerson = this.allowPeople && (element.firstName || element.surname || element.middleName);\n        const isAllowedCorporation = this.allowCorporations && element.name;\n        const allowAll = !this.allowPeople && !this.allowCorporations;\n        const inAvailableList = (this.availableList || []).some(p => element.id === p);\n        const allowedOption = isAllowedPerson || isAllowedCorporation || inAvailableList || element.tmpVarNewCreation || allowAll;\n        if (!(0, _isEmptyObjectChecker.default)(element) && element.id !== this.addNewItemID || inAvailableList) {\n          if (allowedOption) {\n            augmentedSourceList.push(this.buildItem(element));\n          }\n        }\n      }\n      if (this.useFamilyTree) {\n        const allFamilyMembers = [];\n        this.recursivelyAddFamily(allFamilyMembers, this.get(\"clientRecord.deceased\"), 0, null, !this.allowDeceased);\n        // We dont need to filter out non family members from the augmentedSourceList as we will be removing duplicates below\n        augmentedSourceList = allFamilyMembers.concat(augmentedSourceList);\n      }\n\n      // remove duplicates\n      augmentedSourceList = augmentedSourceList.filter((e, index, array) => {\n        return array.filter(elt => elt.value === e.value)[0] === e;\n      });\n      if (!this.allowDeceased && !this.useFamilyTree) {\n        // remove the deceased from the list\n        const deceasedID = this.get(\"clientRecord.deceased.id\");\n        augmentedSourceList = augmentedSourceList.filter(e => e.value !== deceasedID);\n      }\n      if (!this.multipleSelections) {\n        // now add the \"create new\" item\n        augmentedSourceList.push({\n          value: this.addNewItemID,\n          label: this.addNewText\n        });\n      } else {\n        // select any items that appear in the list\n        for (let i = 0; this?.model && i < augmentedSourceList.length; i++) {\n          const element = augmentedSourceList[i];\n          if (this.model.find(m => m === element.value)) {\n            (0, _object.set)(element, \"selected\", true);\n          }\n        }\n\n        // NOTE: if no options to choose from, we DO NOT automatically add a new one\n        // since that can cause glitches when transitioning between pages that both have a select-or-create component\n        // (which is not at all unusual or out of the question)\n      }\n\n      // only update the augmentedSourceList IF it's changed from what we previously had\n      const currentList = this.augmentedSourceList || [];\n      if (currentList.length === augmentedSourceList.length) {\n        // same length - do they have the same values?\n        let anyDifferences = false;\n        for (let i = 0; i < currentList.length; i++) {\n          if (currentList[i].value !== augmentedSourceList[i].value || currentList[i].label !== augmentedSourceList[i].label) {\n            anyDifferences = true;\n            break;\n          }\n        }\n        if (!anyDifferences) {\n          // the list doesn't need changing\n          return;\n        }\n      }\n      this.set(\"augmentedSourceList\", augmentedSourceList);\n      if (!this.availableList) {\n        // we save the 'availableList', being the augmented source list on component creation,\n        // so that if the user subsequently deletes the name of a selected item, it doesn't cause\n        // that item to be removed from the list due to a recalculation of augmentedSourceList\n        // Note that the addNewItemID should not be included here, otherwise if you click 'add new item'\n        // you will see 'unnamed item' and 'add new item' and they will both be ticked\n        const availableList = augmentedSourceList.map(v => v.value).filter(v => v !== this.addNewItemID);\n        this.set(\"availableList\", availableList);\n      }\n\n      // check if there's a default selection\n      if (this.multipleSelections && !this.get(\"model.length\") || !this.multipleSelections && !this.model) {\n        const {\n          defaultSelection\n        } = this;\n        if (defaultSelection && allowDefaultSelection) {\n          // check if it is present in the list\n          if (augmentedSourceList.filter(elt => elt.value === defaultSelection).length) {\n            if (!this.displayOnly) {\n              (0, _runloop.next)(() => {\n                this.set(\"model\", defaultSelection);\n              });\n            }\n          }\n        } else if (augmentedSourceList.length === 1 && !this.multipleSelections) {\n          // there are no real options (only \"add a new item\")\n          if (!this.displayOnly) {\n            (0, _runloop.later)(() => {\n              if (this.isDestroyed || this.isDestroying || this.selectOrCreateIsDestroying) {\n                return;\n              }\n              this.set(\"model\", this.addNewItemID);\n              this.set(\"hideSelect\", true);\n            }, 500);\n          }\n        } else if (augmentedSourceList.length === 0 && this.multipleSelections) {\n          // there are no options at all - so let's add a new one by default\n          if (!this.displayOnly) {\n            (0, _runloop.later)(() => {\n              if (this.isDestroyed || this.isDestroying || this.selectOrCreateIsDestroying) {\n                return;\n              }\n              this.send(\"addItem\");\n            }, 500);\n          }\n        } else if (this.editMode) {\n          // we are showing a preview in the edit screen - select the first object we have\n          (0, _runloop.next)(() => {\n            if (this.multipleSelections) {\n              this.set(\"model\", this.augmentedSourceList.map(l => l.source.id));\n            } else {\n              this.set(\"model\", this.augmentedSourceList[0].source.id);\n            }\n          });\n        } else if (!this.model && !this.multipleSelections && this.hideSelect) {\n          // with no select options visible, we have no choice but to create someone\n          if (!this.displayOnly) {\n            (0, _runloop.later)(() => {\n              if (this.isDestroyed || this.isDestroying || this.selectOrCreateIsDestroying) {\n                return;\n              }\n              this.set(\"model\", this.addNewItemID);\n            }, 500);\n          }\n        }\n      } else {\n        const matches = this.augmentedSourceList.filter(elt => elt.source && elt.source.id.toString() === this.model.toString());\n        if (matches.length === 1) {\n          this.set(\"selectedItem\", matches[0].source);\n        } else {\n          // console.log(\"no match\");\n          // if (this.get('model') && !this.get('multipleSelections') && this.get('model') !== this.get('addNewItemID')) {\n          //   console.log(\"but we have a model: \" + this.get('model'));\n          //   // if we have a model, but it isn't on the list, the input will display nothing. Better to wipe it clean.\n          //   later(() => {\n          //     if (this.get(\"isDestroyed\") || this.get(\"isDestroying\") || this.get(\"selectOrCreateIsDestroying\")) {\n          //       return;\n          //     }\n          //     console.log(\"clearing the model\");\n          //     this.set('model', this.get('addNewItemID'));\n          //   }, 1000);\n          // }\n        }\n      }\n    },\n    onSourceListChanged: (0, _object.observer)(\"sourceList\", \"sourceList.length\", \"sourceList.touch\", function () {\n      // console.log(`onSourceListChanged (addNewItemID: ${this.get('addNewItemID')})`);\n      // console.log(` - source list: `, this.get('sourceList'));\n      // console.log(` - source list.length: ${this.get('sourceList.length')}`);\n      // console.log(` - source list.touch: ${this.get('sourceList.touch')}`);\n      (0, _runloop.next)(() => {\n        if (this.isDestroyed || this.isDestroying || this.selectOrCreateIsDestroying) {\n          return;\n        }\n        this.buildSourceList();\n      });\n    }),\n    hasContent: (0, _object.computed)(\"model.length\", \"multipleSelections\", function () {\n      if (this.multipleSelections) {\n        return this.get(\"model.length\");\n      }\n      return this.model;\n    }),\n    refreshSourceList() {\n      // just update the labels of the items\n      // console.log(`Refreshing source list (addNewItemID: ${this.get('addNewItemID')})`);\n      // console.log(` - source list: `, this.get('sourceList'));\n      // console.log(` - source list.length: ${this.get('sourceList.length')}`);\n      // console.log(` - source list.touch: ${this.get('sourceList.touch')}`);\n      for (let i = 0; this?.augmentedSourceList && i < this?.augmentedSourceList.length; i++) {\n        const element = this.augmentedSourceList[i];\n        const builtItem = this.buildItemNameWithPotentialBlanks(element.source, this.useFamilyTree);\n        if (builtItem !== element.label) {\n          (0, _object.set)(element, \"label\", builtItem);\n        }\n      }\n    },\n    buildItemNameWithPotentialBlanks(item, includeRelationship) {\n      let retval = (0, _formatItemLabel.default)(item, this.itemLabelFormat);\n      if (retval && includeRelationship && item.id !== this.get(\"clientRecord.deceased.id\")) {\n        const status = item.relationshipStatus || item.relationship;\n        const timing = item.relationshipTiming || item.whatHappened;\n        retval += (0, _familyTreeRelationship.familyTreeRelationship)([status, timing], {\n          clientRecord: this.clientRecord,\n          includeStepChildren: true\n        });\n      }\n      return retval || (item.tmpVarNewCreation ? `New ${this.itemName}` : \"\");\n    },\n    buildItem(item) {\n      this.defaultsObjectInitializer.setDefaults(item);\n      return {\n        value: item.id,\n        label: this.buildItemNameWithPotentialBlanks(item),\n        source: item\n      };\n    },\n    isArrayOfObjects(obj) {\n      if (!obj) {\n        return false;\n      }\n      if (typeof obj === \"string\") {\n        return false;\n      }\n      if (typeof obj.length === \"number\" && obj.length > 0) {\n        return true;\n      }\n      return false;\n    },\n    onSelectionChanged: (0, _object.observer)(\"model\", \"multipleSelections\", function () {\n      // console.log(`Selection changed (addNewItemID: ${this.get('addNewItemID')})`);\n      // console.log(` - model: `, this.get('model'));\n      // console.log(` - source list: `, this.get('sourceList'));\n      // console.log(` - source list.length: ${this.get('sourceList.length')}`);\n      // console.log(` - source list.touch: ${this.get('sourceList.touch')}`);\n      if (this.isDestroying || this.isDestroyed || this.selectOrCreateIsDestroying) {\n        // console.log(\" - !! In the process of destroying. Exiting.\");\n        return;\n      }\n      if (this.multipleSelections || this.displayOnly) {\n        if (!this.model && this.selectedItem) {\n          this.set(\"selectedItem\", null);\n        }\n        return;\n      }\n      const {\n        addNewItemID\n      } = this;\n      // specifying an outputList is optional. If not specified, new items are added to the source list\n      // this allows you to draw from a computed property, but add new items to a specific array\n      const outputList = this.outputList || this.sourceList;\n      const outputListName = this.outputList ? \"outputList\" : \"sourceList\";\n      if (this.model === addNewItemID) {\n        // the user has asked to create a new item. So, create a new empty item and add it to the list!\n        const newItem = {\n          id: addNewItemID\n        };\n        this.defaultsObjectInitializer.setDefaults(newItem);\n        outputList.pushObject(newItem);\n        this.set(\"newItem\", newItem);\n      } else {\n        // we're not creating a new item. Delete it if it had already been created\n        this.set(\"newItem\", null);\n        const filtered = outputList.filter(elt => {\n          return elt.id !== addNewItemID;\n        });\n        this.set(outputListName, filtered);\n        const selectedID = this.model;\n        if (!selectedID) {\n          this.set(\"selectedItem\", null);\n        } else {\n          const matches = this.augmentedSourceList.filter(elt => elt.source && elt.source.id.toString() === selectedID.toString());\n          if (matches.length === 1) {\n            this.set(\"selectedItem\", matches[0].source);\n          } else {\n            console.log(`Error - selected item with id ${selectedID} but couldn't find it in the augmentedSourceList, or found too many matches`);\n            this.set(\"selectedItem\", null);\n          }\n        }\n      }\n      if (this.setAsPrimaryContact && this.model) {\n        this.set(\"clientRecord.primaryContactPersonID\", this.model);\n      }\n    }),\n    onMultipleSelectionChanged: (0, _object.observer)(\"augmentedSourceList\", \"augmentedSourceList.length\", \"augmentedSourceList.@each.selected\", function () {\n      // console.log(`onMultipleSelectionChanged (addNewItemID: ${this.get('addNewItemID')})`);\n      // console.log(` - augmentedSourceList: `, this.get('augmentedSourceList'));\n      // console.log(` - augmentedSourceList.length: ${this.get('augmentedSourceList.length')}`);\n      // console.log(` - source list: `, this.get('sourceList'));\n      // console.log(` - source list.length: ${this.get('sourceList.length')}`);\n      // console.log(` - source list.touch: ${this.get('sourceList.touch')}`);\n      if (!this.multipleSelections) {\n        // not relevant\n        return;\n      }\n      // update our actual model to include these items\n      const selected = (this.augmentedSourceList || []).filter(l => l.selected);\n      const list = selected.map(s => s.value);\n\n      // If the model length and list length are the same AND every ID in the model is also in the list array we dont need to set the model again.\n      if (this.model) {\n        if (this.model.every(i => list.includes(i)) && this.model.length === list.length) {\n          return;\n        }\n      }\n      this.set(\"model\", list);\n    }),\n    onModelChanged: (0, _object.observer)(\"clientRecord.touch\", \"sourceList\", \"sourceList.@each\", \"sourceList.length\", \"multipleSelections\", function () {\n      // console.log(`Model changed (addNewItemID: ${this.get('addNewItemID')})`);\n      // console.log(` - clientRecord.touch: ${this.get('clientRecord.touch')}`);\n      // console.log(` - source list: `, this.get('sourceList'));\n      // console.log(` - source list.length: ${this.get('sourceList.length')}`);\n      // console.log(` - source list.touch: ${this.get('sourceList.touch')}`);\n      if (!this.multipleSelections || this.displayOnly) {\n        // not relevant\n        return;\n      }\n      this.refreshSourceList();\n    }),\n    willDestroyElement() {\n      this._super(...arguments);\n\n      // we set our own property here, because the code below might invoke callbacks,\n      // and when they're called, isDestroying is not yet true\n      this.set(\"selectOrCreateIsDestroying\", true);\n      if (this.multipleSelections) {\n        // unset all the tmpVarNewCreation, then purge any blank items\n        const {\n          augmentedSourceList,\n          outputList\n        } = this;\n        // let hasRemoved = false;\n        for (let i = 0; augmentedSourceList && i < augmentedSourceList.length; i++) {\n          const element = augmentedSourceList[i];\n          if (element.source.tmpVarNewCreation || element.source.newCreation) {\n            delete element.source.tmpVarNewCreation;\n            delete element.source.newCreation;\n            if (this.isEmptyItem(element.source)) {\n              // remove it from the model\n              this.model.removeObject(element.value);\n              // remove it from the source list\n              this.sourceList.removeObject(element.source);\n              if (outputList) {\n                outputList.removeObject(element.source);\n              }\n              // hasRemoved = true;\n            }\n          }\n        }\n      } else {\n        if (this?.newItem && this.isEmptyItem(this.newItem)) {\n          // we're editing a new item, and\n          // no local data has been provided for this record - we don't want to save 'blank' entry,\n          // so just reset the model to 'null'.\n          this.set(\"model\", null);\n        }\n      }\n    },\n    isEmptyItem(obj) {\n      const keys = Object.keys(obj);\n      let hasKeys = false;\n      // We need to ignore email-valid since a select-or-create with an email input will always set email-valid to false on render\n      const keysToIgnore = [\"id\", \"email-valid\"];\n      for (let i = 0; i < keys.length; i++) {\n        if (!keysToIgnore.includes(keys[i]) && keys[i][0] !== \"_\" && !(0, _utils.isNone)(obj[keys[i]])) {\n          const val = obj[keys[i]];\n          if ((0, _array.isArray)(val)) {\n            if (val.length > 0) {\n              hasKeys = true;\n            }\n          } else if (typeof val === \"object\") {\n            if (!this.isEmptyItem(val)) {\n              hasKeys = true;\n            }\n          } else {\n            hasKeys = true;\n          }\n        }\n      }\n      return !hasKeys;\n    },\n    filterByType(list, filterType, filterList) {\n      if (this.displayOnly) {\n        return list;\n      }\n      if (filterType === \"excludeall\") {\n        list = list.filter(l => l.tmpVarNewCreation || l.id === this.model);\n      } else if (filterType === \"blacklist\" && filterList && filterList.length) {\n        list = list.filter(l => !filterList.includes(l.id));\n      } else if (filterType === \"whitelist\" && filterList && filterList.length) {\n        list = list.filter(l => filterList.includes(l.id));\n      }\n      return list;\n    },\n    recursivelyAddFamily(outputList, person, indent, noLine, disabled) {\n      if (person) {\n        // Grandparents\n        if (person.grandparents && person.grandparents.length) {\n          for (let j = 0; j < person.grandparents.length; j++) {\n            const grandparent = person.grandparents[j];\n            this.recursivelyAddFamily(outputList, grandparent, indent, true);\n          }\n          indent++;\n        }\n\n        // Parents\n        if (person.parentOne && person.parentOne.length) {\n          const parentOne = person.parentOne[0];\n          this.recursivelyAddFamily(outputList, parentOne, indent, true);\n          if (person.parentTwo && person.parentTwo.length) {\n            const parentTwo = person.parentTwo[0];\n            this.recursivelyAddFamily(outputList, parentTwo, indent, true);\n          }\n          indent++;\n        }\n\n        // this person themself\n        const builtItem = this.buildItem(person);\n        builtItem.label = this.buildItemNameWithPotentialBlanks(person, true);\n        builtItem.indent = indent;\n        builtItem.noLine = noLine;\n        builtItem.disabled = disabled;\n        outputList.push(builtItem);\n\n        // Spouses\n        for (let j = 0; person.spouses && j < person.spouses.length; j++) {\n          const spouse = person.spouses[j];\n          this.recursivelyAddFamily(outputList, spouse, indent, true);\n        }\n\n        // Children\n        for (let j = 0; person.children && j < person.children.length; j++) {\n          const child = person.children[j];\n          this.recursivelyAddFamily(outputList, child, indent + 1);\n        }\n\n        // Previous Children\n        for (let j = 0; person.previousChildren && j < person.previousChildren.length; j++) {\n          const child = person.previousChildren[j];\n          this.recursivelyAddFamily(outputList, child, indent + 1);\n        }\n\n        // Siblings\n        for (let j = 0; person.siblings && j < person.siblings.length; j++) {\n          const sibling = person.siblings[j];\n          this.recursivelyAddFamily(outputList, sibling, indent, !(person.parentOne && person.parentOne.length));\n        }\n\n        // Aunts or Uncles\n        for (let j = 0; person.auntsAndUncles && j < person.auntsAndUncles.length; j++) {\n          const auntOrUncle = person.auntsAndUncles[j];\n          const indentAmount = person.grandparents && person.grandparents.length ? 1 : 0;\n          this.recursivelyAddFamily(outputList, auntOrUncle, indentAmount, true);\n        }\n\n        // Other Beneficiaries\n        for (let j = 0; person.otherBeneficiaries && j < person.otherBeneficiaries.length; j++) {\n          const otherBeneficiary = person.otherBeneficiaries[j];\n          this.recursivelyAddFamily(outputList, otherBeneficiary, 0, true);\n        }\n      }\n    },\n    actions: {\n      removeNewItem() {\n        // by changing the model, we'll trigger our observer, which will do the rest of the work for us\n        this.set(\"model\", null);\n      },\n      addItem() {\n        // add item to the source list array\n        const newVal = this.defaultsObjectInitializer.createDefaultItem();\n        newVal.tmpVarNewCreation = true;\n        const outputList = this.outputList || this.sourceList;\n        outputList.pushObject(newVal);\n\n        // add the newly added item to our model\n        this.model.pushObject(newVal.id);\n\n        // no need to rebuild the augmentedSourceList, since that will be triggered automatically when sourceList.length changes\n        // You just need to make sure that, if outputList is different to sourceList, then sourceList updates\n        // whenever outputList grows.\n      }\n    }\n  });\n});","define(\"settify-mvp/components/select-or-create-multiple\", [\"exports\", \"@ember/object/computed\", \"@ember/object\", \"@ember/runloop\", \"settify-mvp/components/select-or-create-base\", \"uuid\"], function (_exports, _computed, _object, _runloop, _selectOrCreateBase, _uuid) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object/computed\",0,\"@ember/object\",0,\"@ember/runloop\",0,\"settify-mvp/components/select-or-create-base\",0,\"uuid\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _selectOrCreateBase.default.extend({\n    init() {\n      this._super(...arguments);\n      this.setContextLock();\n      this.set(\"addNewItemID\", (0, _uuid.v4)());\n      this.buildAugmentedSourceList();\n      if (this.editMode) {\n        (0, _runloop.next)(() => {\n          this.set(\"model\", this.augmentedSourceList.map(l => l.source.id));\n        });\n      } else {\n        if (!this.model) {\n          this.set(\"model\", []);\n        }\n      }\n      this.hideOptionsIfFiltered();\n    },\n    willDestroyElement() {\n      this._super(...arguments);\n      this.sourceList.forEach(entity => {\n        if (this.isEmptyItem(entity)) {\n          this.model.removeObject(entity.value);\n          this.deleteEntity(entity.source);\n        }\n      });\n    },\n    // This computed property exists to help handle the cases where we pre-add an id to a select-or-creates model.\n    selectedEntities: (0, _object.computed)(\"model\", \"augmentedSourceList\", function () {\n      if (this?.model && this?.augmentedSourceList) {\n        return this.model.filter(id => this.augmentedSourceList.some(entity => entity.value === id));\n      }\n      return [];\n    }),\n    selectItemsThatExistInModel(augmentedSourceList) {\n      if (this?.model) {\n        for (const element of augmentedSourceList) {\n          if (this.model.find(m => m === element.value)) {\n            (0, _object.set)(element, \"selected\", true);\n          }\n        }\n      }\n    },\n    buildAugmentedSourceList() {\n      const augmentedSourceList = this.createAugmentedSourceList();\n      this.selectItemsThatExistInModel(augmentedSourceList);\n      if (this.listEquality(this.augmentedSourceList || [], augmentedSourceList)) {\n        return;\n      }\n      this.set(\"augmentedSourceList\", augmentedSourceList);\n      this.storeAugmentedSourceListAtComponentCreation(augmentedSourceList);\n    },\n    hasContent: (0, _computed.reads)(\"model.length\"),\n    rebuildAugmentedSourceListOnSourceListChange: (0, _object.observer)(\"sourceList.[]\", function () {\n      (0, _runloop.next)(() => {\n        if (this.componentIsBeingDestroyed()) {\n          return;\n        }\n        this.buildAugmentedSourceList();\n      });\n    }),\n    updateModelOnSelectionChange: (0, _object.observer)(\"augmentedSourceList.@each.selected\", function () {\n      const selected = (this.augmentedSourceList || []).filter(l => l.selected);\n      const unselected = (this.augmentedSourceList || []).filter(l => !l.selected);\n      selected.forEach(augmentedEntity => {\n        if (!augmentedEntity.source.contextLock) {\n          (0, _object.set)(augmentedEntity.source, \"contextLockProvisional\", true);\n          (0, _object.set)(augmentedEntity.source, \"contextLock\", this.contextLock);\n        }\n      });\n      unselected.forEach(augmentedEntity => {\n        if (!augmentedEntity.tmpVarNewCreation && augmentedEntity.source.contextLock && augmentedEntity.source.contextLockProvisional) {\n          (0, _object.set)(augmentedEntity.source, \"contextLock\", undefined);\n        } else if (augmentedEntity.source.tmpVarNewCreation && !this.isEmptyItem(augmentedEntity.source)) {\n          delete augmentedEntity.source.tmpVarNewCreation;\n        }\n      });\n      this.set(\"model\", selected.map(s => s.value));\n    }),\n    updateAugmentedSourceListLabelsForDisplay: (0, _object.observer)(\"sourceList.[]\", \"clientRecord.touch\", function () {\n      if (!this.displayOnly) {\n        this.augmentedSourceList.forEach(element => {\n          const source = this.sourceList.find(entity => entity.id === element.value);\n          const builtItem = this.buildItemNameWithPotentialBlanks(source, this.useFamilyTree);\n          if (builtItem !== element.label) {\n            (0, _object.set)(element, \"label\", builtItem);\n          }\n        });\n      }\n    })\n  });\n});","define(\"settify-mvp/components/select-or-create-singular\", [\"exports\", \"@ember/object\", \"@ember/runloop\", \"settify-mvp/components/select-or-create-base\", \"uuid\", \"settify-mvp/utils/defaults-object-initializer\"], function (_exports, _object, _runloop, _selectOrCreateBase, _uuid, _defaultsObjectInitializer) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/runloop\",0,\"settify-mvp/components/select-or-create-base\",0,\"uuid\",0,\"settify-mvp/utils/defaults-object-initializer\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _selectOrCreateBase.default.extend({\n    init() {\n      this._super(...arguments);\n      this.defaultsObjectInitializer = new _defaultsObjectInitializer.DefaultsObjectInitializer(this.defaults, this.assignUUIDs);\n      this.setContextLock();\n      this.set(\"addNewItemID\", (0, _uuid.v4)());\n      this.buildAugmentedSourceList();\n      this.hideOptionsIfFiltered();\n    },\n    buildAugmentedSourceList() {\n      const augmentedSourceList = this.createAugmentedSourceList();\n      augmentedSourceList.push({\n        value: this.addNewItemID,\n        label: this.addNewText\n      });\n      if (this.listEquality(this.augmentedSourceList || [], augmentedSourceList)) {\n        return;\n      }\n      this.set(\"augmentedSourceList\", augmentedSourceList);\n      this.storeAugmentedSourceListAtComponentCreation(augmentedSourceList);\n      if (!this.model) {\n        if (augmentedSourceList.length === 1) {\n          // there are no real options (only \"add a new item\")\n          if (!this.displayOnly) {\n            (0, _runloop.later)(() => {\n              if (this.componentIsBeingDestroyed()) {\n                return;\n              }\n              this.set(\"model\", this.addNewItemID);\n              this.set(\"hideSelect\", true);\n            }, 500);\n          }\n        } else if (this.editMode) {\n          // we are showing a preview in the edit screen - select the first object we have\n          (0, _runloop.next)(() => {\n            this.set(\"model\", this.augmentedSourceList[0].source.id);\n          });\n        } else if (!this.model && this.hideSelect) {\n          // with no select options visible, we have no choice but to create someone\n          if (!this.displayOnly) {\n            (0, _runloop.later)(() => {\n              if (this.componentIsBeingDestroyed()) {\n                return;\n              }\n              this.set(\"model\", this.addNewItemID);\n            }, 500);\n          }\n        }\n      } else {\n        this.setSelectedItemBasedOnModel();\n      }\n    },\n    setSelectedItemBasedOnModel() {\n      const possibleModelSourceObjects = this.augmentedSourceList.filter(elt => elt.source && elt.source.id.toString() === this.model.toString());\n      if (possibleModelSourceObjects.length === 1) {\n        this.set(\"selectedItem\", possibleModelSourceObjects[0].source);\n      } else {\n        console.log(`Error - selected item with id ${this.model} but couldn't find it in the augmentedSourceList, or found too many matches`);\n        this.set(\"selectedItem\", null);\n      }\n    },\n    hasContent: (0, _object.computed)(\"model\", function () {\n      return !!this.model;\n    }),\n    onSelectionChanged: (0, _object.observer)(\"model\", function () {\n      if (this.componentIsBeingDestroyed()) {\n        return;\n      }\n      if (this.displayOnly) {\n        if (!this.model && this.selectedItem) {\n          this.set(\"selectedItem\", null);\n        }\n        return;\n      }\n      const {\n        addNewItemID\n      } = this;\n      // specifying an outputList is optional. If not specified, new items are added to the source list\n      // this allows you to draw from a computed property, but add new items to a specific array\n      const outputList = this.outputList || this.sourceList;\n      const outputListName = this.outputList ? \"outputList\" : \"sourceList\";\n      if (this.model === addNewItemID) {\n        // the user has asked to create a new item. So, create a new empty item and add it to the list!\n        const newItem = {\n          id: addNewItemID\n        };\n        this.defaultsObjectInitializer.setDefaults(newItem);\n        outputList.pushObject(newItem);\n        this.set(\"newItem\", newItem);\n      } else {\n        // we're not creating a new item. Delete it if it had already been created\n        this.set(\"newItem\", null);\n        const filtered = outputList.filter(elt => {\n          return elt.id !== addNewItemID;\n        });\n        this.set(outputListName, filtered);\n        const selectedID = this.model;\n        if (!selectedID) {\n          this.set(\"selectedItem\", null);\n        } else {\n          this.setSelectedItemBasedOnModel();\n        }\n      }\n      if (this.setAsPrimaryContact && this.model && !this.get(\"clientRecord.primaryContactPersonID\")) {\n        this.set(\"clientRecord.primaryContactPersonID\", this.model);\n      }\n    }),\n    deleteAndResetIfEmpty(item) {\n      if (item && this.isEmptyItem(item)) {\n        // We're editing an item that now has no data\n        this.set(\"model\", null); // We don't want to save 'blank' entry, so just reset the model to 'null'\n        this.deleteEntity(item);\n      }\n    },\n    willDestroyElement() {\n      this._super(...arguments);\n      this.deleteAndResetIfEmpty(this.newItem);\n      this.deleteAndResetIfEmpty(this.selectedItem);\n    }\n  });\n});","define(\"settify-mvp/components/send-to-pms\", [\"exports\", \"@ember/component\", \"@ember/runloop\", \"@ember/utils\", \"@ember/object\", \"@ember/service\", \"settify-mvp/utils/is-empty-object-checker\", \"@ember/template-factory\"], function (_exports, _component, _runloop, _utils, _object, _service, _isEmptyObjectChecker, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/utils\",0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/component\",0,\"settify-mvp/utils/is-empty-object-checker\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (and this.shouldDisplayWidget @pmsMetadata.isIntegrationAvailable (not this.emptyMetadata))}}\n    {{#if (and @model.integrationInformation.executions.length @pmsMetadata.isLeadsEnabled)}}\n      <a class=\"clickable\" {{action \"toggleIntegrationLogs\"}}>\n        <i class=\"fal fa-clock-rotate-left\" />\n        Show integration logs\n      </a><br />\n    {{/if}}\n    <LiquidIf @predicate={{and this.showIntegrationLogs @model.integrationInformation.executions}}>\n      <div class=\"bg-light\">\n        {{#each @model.integrationInformation.executions as |execution|}}\n          <div class=\"leftalign\">\n            <a class=\"clickable\" {{action \"expandExecutionDetails\" execution}}>\n              <i class=\"fal fa-{{if execution.expand 'chevron-down' 'chevron-right'}}\" />\n              <b>\n                {{execution.timestamp}}\n              </b>\n            </a>\n            <LiquidIf @predicate={{execution.expand}}>\n              <ul>\n                <li>\n                  <b></b>Response message:\n                  {{execution.message}}\n                </li>\n                <li>\n                  Matter type:\n                  {{execution.info.matterTypeName}}\n                </li>\n                <li>\n                  Sent to:\n                  {{sentence-case execution.productName}}\n                </li>\n                <li>\n                  Submission type:\n                  {{sentence-case execution.submitType}}\n                </li>\n                {{#if (eq execution.submitType \"update\")}}\n                  {{#if execution.additionalInfo.overrideExistingData}}\n                    <li>\n                      Overrode existing data\n                    </li>\n                  {{else}}\n                    <li>\n                      Preserved existing data\n                    </li>\n                  {{/if}}\n                  {{#if (and execution.info.changesMade execution.info.changesMade.length)}}\n                    {{#each execution.info.changesMade as |change|}}\n                      {{#if change.old}}-{{else}}+{{/if}}\n                      {{change.message}}<br />\n                    {{/each}}\n                  {{else if (not execution.info.changesMade.length)}}\n                    <li>\n                      No changes made\n                    </li>\n                  {{/if}}\n                {{/if}}\n              </ul>\n            </LiquidIf>\n          </div>\n        {{/each}}\n      </div>\n    </LiquidIf>\n  \n    {{#if (or @model.integrationComplete @model.integrationInformation.currentInfo)}}\n      <i class=\"fal fa-check-circle tight\" />\n      Record sent to\n      <img src={{@pmsMetadata.logoUrl}} class=\"pms-img\" alt=\"{{@pmsMetadata.name}}\" />\n    {{else}}\n      {{#if @pmsMetadata.requiresAuthentication}}\n        <LinkTo @route=\"admin.config.integrations\" title=\"The integration is not currently connected. Click to rectify the problem.\">\n          <i class=\"fal fa-plug tight\" />\n          Re-connect\n          <img src={{@pmsMetadata.logoUrl}} class=\"pms-img disabled\" alt=\"{{@pmsMetadata.name}}\" />\n        </LinkTo>\n      {{else}}\n        <a class=\"clickable\" {{action \"expandButton\"}}>\n          <i class=\"fal fa-file-import\" />\n          {{or @pmsMetadata.actionLabel \"Send record to\"}}\n          {{#if @pmsMetadata.logoUrl}}\n            <img src={{@pmsMetadata.logoUrl}} class=\"pms-img\" alt=\"{{@pmsMetadata.name}}\" />\n          {{else}}\n            {{@pmsMetadata.name}}\n          {{/if}}\n        </a>\n      {{/if}}\n    {{/if}}\n  \n    <LiquidIf @predicate={{this.showLoadingSpinner}}>\n      <div class=\"summary-downloading-status\">{{this.processingMessage}}</div>\n      <LoadingSpinner />\n    </LiquidIf>\n  \n    <LiquidIf @predicate={{this.integrationComplete}}>\n      <p><i class=\"fal fa-check-circle\" /> {{this.integrationComplete}}</p>\n    </LiquidIf>\n  \n    <LiquidIf @predicate={{this.integrationFailed}}>\n      <p><i class=\"fal fa-exclamation-circle negative\" /> {{this.integrationFailed}}</p>\n    </LiquidIf>\n  \n    <LiquidIf @predicate={{this.expandPMSIntegrationArea}}>\n      <div class=\"leftalign margintop-0.5\">\n        <LiquidIf @predicate={{@model.integrationComplete}}>\n          <p>\n            {{@pmsMetadata.blurbCompleted}}\n          </p>\n          <p>\n            <ul>\n              {{#each-in @model.integrationInformation.returned as |key value|}}\n                <li>\n                  {{key}}:\n                  {{value}}\n                </li>\n              {{/each-in}}\n            </ul>\n          </p>\n        </LiquidIf>\n        <LiquidIf @predicate={{not @model.integrationComplete}}>\n          <LiquidIf @predicate={{this.selectedIntegrationType}}>\n            <p>{{this.selectedIntegrationType.blurb}}</p>\n            {{#if @pmsMetadata.requiresAuthentication}}\n              <LinkTo @route=\"admin.config.integrations\"><i class=\"fal fa-unlink\" />Please authenticate</LinkTo>\n            {{else}}\n              <PmsSettingsInputsSelector\n                @metadata={{@pmsMetadata}}\n                @modelObject={{this.additionalInfo}}\n                @canSubmit={{this.canSubmit}}\n                @useRequiredAttribute={{true}}\n                @type={{this.selectedIntegrationType.type}}\n                @includeSpouseOptions={{this.clientHasSpouse}}\n              />\n              {{#if this.selectedIntegrationType.label}}\n                <p class=\"rightalign\">\n                  <button\n                    type=\"button\"\n                    class=\"next-button {{unless this.canSubmit 'disabled-button'}}\"\n                    {{action (if this.canSubmit \"submitIntegration\" \"nullAction\") this.selectedIntegrationType}}\n                    disabled={{not this.canSubmit}}\n                  >\n                    {{this.selectedIntegrationType.label}}\n                  </button>\n                  {{#if (gt @pmsMetadata.submitButtons.length 1)}}\n                    <div>\n                      <small>\n                        <a class=\"clickable\" {{action \"toggleShowMatterIntegration\"}}>Cancel {{this.selectedIntegrationType.type}} creation</a>\n                      </small>\n                    </div>\n                  {{/if}}\n                </p>\n              {{/if}}\n            {{/if}}\n          </LiquidIf>\n          <LiquidIf @predicate={{not this.selectedIntegrationType}}>\n            <p>{{@pmsMetadata.submitButtonsBlurb}}</p>\n            <p class=\"rightalign\">\n              {{#if @pmsMetadata.submitButtons.length}}\n                {{#each @pmsMetadata.submitButtons as |submitButton|}}\n                  <button type=\"button\" class=\"next-button\" {{action (if submitButton.hasOptions \"toggleShowMatterIntegration\" \"submitIntegration\") submitButton}}>\n                    {{submitButton.label}}\n                  </button>\n                {{/each}}\n              {{/if}}\n            </p>\n          </LiquidIf>\n        </LiquidIf>\n      </div>\n    </LiquidIf>\n  {{else}}\n    <div class=\"small-spinner\">\n      <LoadingSpinner />\n    </div>\n  {{/if}}\n  \n  <LiquidIf @predicate={{this.integrationResponseMessage}}>\n    <p><i class=\"fal fa-check-circle\" /> {{this.integrationResponseMessage}}</p>\n  </LiquidIf>\n  \n  */\n  {\n    \"id\": \"SUk7yl/U\",\n    \"block\": \"[[[41,[28,[37,1],[[30,0,[\\\"shouldDisplayWidget\\\"]],[30,1,[\\\"isIntegrationAvailable\\\"]],[28,[37,2],[[30,0,[\\\"emptyMetadata\\\"]]],null]],null],[[[41,[28,[37,1],[[30,2,[\\\"integrationInformation\\\",\\\"executions\\\",\\\"length\\\"]],[30,1,[\\\"isLeadsEnabled\\\"]]],null],[[[1,\\\"    \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,4],[[30,0],\\\"toggleIntegrationLogs\\\"],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-clock-rotate-left\\\"],[12],[13],[1,\\\"\\\\n      Show integration logs\\\\n    \\\"],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[8,[39,7],null,[[\\\"@predicate\\\"],[[28,[37,1],[[30,0,[\\\"showIntegrationLogs\\\"]],[30,2,[\\\"integrationInformation\\\",\\\"executions\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"bg-light\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,10],[[28,[37,10],[[30,2,[\\\"integrationInformation\\\",\\\"executions\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[10,0],[14,0,\\\"leftalign\\\"],[12],[1,\\\"\\\\n          \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,4],[[30,0],\\\"expandExecutionDetails\\\",[30,3]],null],[12],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-\\\",[52,[30,3,[\\\"expand\\\"]],\\\"chevron-down\\\",\\\"chevron-right\\\"]]]],[12],[13],[1,\\\"\\\\n            \\\"],[10,\\\"b\\\"],[12],[1,\\\"\\\\n              \\\"],[1,[30,3,[\\\"timestamp\\\"]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[8,[39,7],null,[[\\\"@predicate\\\"],[[30,3,[\\\"expand\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,\\\"ul\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"b\\\"],[12],[13],[1,\\\"Response message:\\\\n                \\\"],[1,[30,3,[\\\"message\\\"]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n                Matter type:\\\\n                \\\"],[1,[30,3,[\\\"info\\\",\\\"matterTypeName\\\"]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n                Sent to:\\\\n                \\\"],[1,[28,[35,14],[[30,3,[\\\"productName\\\"]]],null]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n                Submission type:\\\\n                \\\"],[1,[28,[35,14],[[30,3,[\\\"submitType\\\"]]],null]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,15],[[30,3,[\\\"submitType\\\"]],\\\"update\\\"],null],[[[41,[30,3,[\\\"additionalInfo\\\",\\\"overrideExistingData\\\"]],[[[1,\\\"                  \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n                    Overrode existing data\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                  \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n                    Preserved existing data\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[41,[28,[37,1],[[30,3,[\\\"info\\\",\\\"changesMade\\\"]],[30,3,[\\\"info\\\",\\\"changesMade\\\",\\\"length\\\"]]],null],[[[42,[28,[37,10],[[28,[37,10],[[30,3,[\\\"info\\\",\\\"changesMade\\\"]]],null]],null],null,[[[1,\\\"                    \\\"],[41,[30,4,[\\\"old\\\"]],[[[1,\\\"-\\\"]],[]],[[[1,\\\"+\\\"]],[]]],[1,\\\"\\\\n                    \\\"],[1,[30,4,[\\\"message\\\"]]],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[4]],null]],[]],[[[41,[28,[37,2],[[30,3,[\\\"info\\\",\\\"changesMade\\\",\\\"length\\\"]]],null],[[[1,\\\"                  \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n                    No changes made\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"]],[]],null]],[]]]],[]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[3]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,16],[[30,2,[\\\"integrationComplete\\\"]],[30,2,[\\\"integrationInformation\\\",\\\"currentInfo\\\"]]],null],[[[1,\\\"    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle tight\\\"],[12],[13],[1,\\\"\\\\n    Record sent to\\\\n    \\\"],[10,\\\"img\\\"],[15,\\\"src\\\",[30,1,[\\\"logoUrl\\\"]]],[14,0,\\\"pms-img\\\"],[15,\\\"alt\\\",[29,[[30,1,[\\\"name\\\"]]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,1,[\\\"requiresAuthentication\\\"]],[[[1,\\\"      \\\"],[8,[39,18],[[24,\\\"title\\\",\\\"The integration is not currently connected. Click to rectify the problem.\\\"]],[[\\\"@route\\\"],[\\\"admin.config.integrations\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-plug tight\\\"],[12],[13],[1,\\\"\\\\n        Re-connect\\\\n        \\\"],[10,\\\"img\\\"],[15,\\\"src\\\",[30,1,[\\\"logoUrl\\\"]]],[14,0,\\\"pms-img disabled\\\"],[15,\\\"alt\\\",[29,[[30,1,[\\\"name\\\"]]]]],[12],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,4],[[30,0],\\\"expandButton\\\"],null],[12],[1,\\\"\\\\n        \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-file-import\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[1,[28,[35,16],[[30,1,[\\\"actionLabel\\\"]],\\\"Send record to\\\"],null]],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"logoUrl\\\"]],[[[1,\\\"          \\\"],[10,\\\"img\\\"],[15,\\\"src\\\",[30,1,[\\\"logoUrl\\\"]]],[14,0,\\\"pms-img\\\"],[15,\\\"alt\\\",[29,[[30,1,[\\\"name\\\"]]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[1,[30,1,[\\\"name\\\"]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[]]],[1,\\\"\\\\n  \\\"],[8,[39,7],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showLoadingSpinner\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"summary-downloading-status\\\"],[12],[1,[30,0,[\\\"processingMessage\\\"]]],[13],[1,\\\"\\\\n    \\\"],[8,[39,19],null,null,null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\\n  \\\"],[8,[39,7],null,[[\\\"@predicate\\\"],[[30,0,[\\\"integrationComplete\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,2],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\" \\\"],[1,[30,0,[\\\"integrationComplete\\\"]]],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\\n  \\\"],[8,[39,7],null,[[\\\"@predicate\\\"],[[30,0,[\\\"integrationFailed\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,2],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-exclamation-circle negative\\\"],[12],[13],[1,\\\" \\\"],[1,[30,0,[\\\"integrationFailed\\\"]]],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\\n  \\\"],[8,[39,7],null,[[\\\"@predicate\\\"],[[30,0,[\\\"expandPMSIntegrationArea\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"leftalign margintop-0.5\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,7],null,[[\\\"@predicate\\\"],[[30,2,[\\\"integrationComplete\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[1,[30,1,[\\\"blurbCompleted\\\"]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[10,\\\"ul\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,21],[[30,2,[\\\"integrationInformation\\\",\\\"returned\\\"]]],null],null,[[[1,\\\"              \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n                \\\"],[1,[30,6]],[1,\\\":\\\\n                \\\"],[1,[30,5]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[5,6]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[39,7],null,[[\\\"@predicate\\\"],[[28,[37,2],[[30,2,[\\\"integrationComplete\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[39,7],null,[[\\\"@predicate\\\"],[[30,0,[\\\"selectedIntegrationType\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,2],[12],[1,[30,0,[\\\"selectedIntegrationType\\\",\\\"blurb\\\"]]],[13],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"requiresAuthentication\\\"]],[[[1,\\\"            \\\"],[8,[39,18],null,[[\\\"@route\\\"],[\\\"admin.config.integrations\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-unlink\\\"],[12],[13],[1,\\\"Please authenticate\\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"            \\\"],[8,[39,22],null,[[\\\"@metadata\\\",\\\"@modelObject\\\",\\\"@canSubmit\\\",\\\"@useRequiredAttribute\\\",\\\"@type\\\",\\\"@includeSpouseOptions\\\"],[[30,1],[30,0,[\\\"additionalInfo\\\"]],[30,0,[\\\"canSubmit\\\"]],true,[30,0,[\\\"selectedIntegrationType\\\",\\\"type\\\"]],[30,0,[\\\"clientHasSpouse\\\"]]]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"selectedIntegrationType\\\",\\\"label\\\"]],[[[1,\\\"              \\\"],[10,2],[14,0,\\\"rightalign\\\"],[12],[1,\\\"\\\\n                \\\"],[11,\\\"button\\\"],[16,0,[29,[\\\"next-button \\\",[52,[51,[30,0,[\\\"canSubmit\\\"]]],\\\"disabled-button\\\"]]]],[16,\\\"disabled\\\",[28,[37,2],[[30,0,[\\\"canSubmit\\\"]]],null]],[24,4,\\\"button\\\"],[4,[38,4],[[30,0],[52,[30,0,[\\\"canSubmit\\\"]],\\\"submitIntegration\\\",\\\"nullAction\\\"],[30,0,[\\\"selectedIntegrationType\\\"]]],null],[12],[1,\\\"\\\\n                  \\\"],[1,[30,0,[\\\"selectedIntegrationType\\\",\\\"label\\\"]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,25],[[30,1,[\\\"submitButtons\\\",\\\"length\\\"]],1],null],[[[1,\\\"                  \\\"],[10,0],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                      \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,4],[[30,0],\\\"toggleShowMatterIntegration\\\"],null],[12],[1,\\\"Cancel \\\"],[1,[30,0,[\\\"selectedIntegrationType\\\",\\\"type\\\"]]],[1,\\\" creation\\\"],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]],[1,\\\"        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,7],null,[[\\\"@predicate\\\"],[[28,[37,2],[[30,0,[\\\"selectedIntegrationType\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,2],[12],[1,[30,1,[\\\"submitButtonsBlurb\\\"]]],[13],[1,\\\"\\\\n          \\\"],[10,2],[14,0,\\\"rightalign\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"submitButtons\\\",\\\"length\\\"]],[[[42,[28,[37,10],[[28,[37,10],[[30,1,[\\\"submitButtons\\\"]]],null]],null],null,[[[1,\\\"                \\\"],[11,\\\"button\\\"],[24,0,\\\"next-button\\\"],[24,4,\\\"button\\\"],[4,[38,4],[[30,0],[52,[30,7,[\\\"hasOptions\\\"]],\\\"toggleShowMatterIntegration\\\",\\\"submitIntegration\\\"],[30,7]],null],[12],[1,\\\"\\\\n                  \\\"],[1,[30,7,[\\\"label\\\"]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[7]],null]],[]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"small-spinner\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,19],null,null,null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n\\\"],[8,[39,7],null,[[\\\"@predicate\\\"],[[30,0,[\\\"integrationResponseMessage\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,2],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\" \\\"],[1,[30,0,[\\\"integrationResponseMessage\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[\\\"@pmsMetadata\\\",\\\"@model\\\",\\\"execution\\\",\\\"change\\\",\\\"value\\\",\\\"key\\\",\\\"submitButton\\\"],false,[\\\"if\\\",\\\"and\\\",\\\"not\\\",\\\"a\\\",\\\"action\\\",\\\"i\\\",\\\"br\\\",\\\"liquid-if\\\",\\\"div\\\",\\\"each\\\",\\\"-track-array\\\",\\\"b\\\",\\\"ul\\\",\\\"li\\\",\\\"sentence-case\\\",\\\"eq\\\",\\\"or\\\",\\\"img\\\",\\\"link-to\\\",\\\"loading-spinner\\\",\\\"p\\\",\\\"-each-in\\\",\\\"pms-settings-inputs-selector\\\",\\\"button\\\",\\\"unless\\\",\\\"gt\\\",\\\"small\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/send-to-pms.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({\n    lambda: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    eventLogging: (0, _service.inject)(),\n    tagName: \"\",\n    init() {\n      this._super(...arguments);\n      this.set(\"integrationStatusCode\", null);\n      this.set(\"expandPMSIntegrationArea\", false);\n      this.set(\"emptyMetadata\", false);\n      this.set(\"additionalInfo\", {});\n      this.initFromMetadata();\n    },\n    initFromMetadata() {\n      const {\n        pmsMetadata\n      } = this;\n      if (!pmsMetadata || (0, _isEmptyObjectChecker.default)(pmsMetadata) || !this.shouldDisplayWidget) {\n        this.set(\"pmsMetadata\", null);\n        this.set(\"emptyMetadata\", true);\n      } else {\n        this.set(\"additionalInfo\", this.pmsDefaults || {});\n        if (this?.submitButtons?.length === 1) {\n          this.set(\"selectedIntegrationType\", this.submitButtons[0]);\n        }\n      }\n    },\n    refreshMetadata() {\n      this.set(\"pmsMetadata\", null);\n      return this.lambda.invoke(this.get(\"lambda.getSendToPmsMetadata\"), {\n        firmID: this.get(\"firm.id\"),\n        practiceArea: this.get(\"firm.practiceArea\"),\n        integrationInformation: this.get(\"model.integrationInformation\")\n      }).then(this.lambda.processResponse).then(pmsMetadata => {\n        this.set(\"pmsMetadata\", pmsMetadata);\n        this.initFromMetadata();\n      });\n    },\n    clientHasSpouse: (0, _object.computed)(\"firm.practiceArea\", \"model.{answerMode,coupleMode,partnerFirstName,practiceArea}\", function () {\n      const practiceArea = this.model?.practiceArea || this.firm?.practiceArea;\n      if (practiceArea === \"Family\") {\n        return true;\n      }\n      if (practiceArea === \"Wills\") {\n        const answerMode = this.model?.answerMode;\n        return this.model?.coupleMode === \"couple\" && (answerMode === \"answeringOnBehalf\" || answerMode === \"answeringTogether\");\n      }\n      return false;\n    }),\n    pmsSelected: (0, _object.computed)(\"pmsMetadata.id\", function () {\n      return !(0, _utils.isEmpty)(this.pmsMetadata?.id);\n    }),\n    canShowMatterIntegration: (0, _object.computed)(\"showMatterIntegration\", \"pmsMetadata.secondarySubmitButtonLabel\", \"model.integrationInformation.disableSecondarySubmitButton\", function () {\n      if (this.showMatterIntegration) {\n        return true;\n      }\n      return false;\n    }),\n    shouldDisplayWidget: (0, _object.computed)(\"firm\", \"firm.id\", \"pmsSelected\", function () {\n      return !this.firm.id.includes(\"999999999\") && this.pmsSelected;\n    }),\n    actions: {\n      expandExecutionDetails(execution) {\n        this.set(execution, \"expand\", !execution.expand);\n      },\n      toggleIntegrationLogs() {\n        this.toggleProperty(\"showIntegrationLogs\");\n      },\n      additionalInfoChanged() {\n        (0, _runloop.next)(() => {\n          this.set(\"infoChangedTouch\", Date.now());\n        });\n      },\n      toggleShowMatterIntegration(button) {\n        this.toggleProperty(\"showMatterIntegration\");\n        if (button) {\n          this.set(\"selectedIntegrationType\", button);\n        } else {\n          this.set(\"selectedIntegrationType\", null);\n        }\n      },\n      expandButton() {\n        if (this.pmsMetadata) {\n          if (this.selectedIntegrationType?.shouldSubmitWithoutShowingOptions) {\n            // Sending data instanly rather than expanding to show options\n            return this.send(\"submitIntegration\", this.selectedIntegrationType);\n          }\n          this.toggleProperty(\"expandPMSIntegrationArea\");\n          if (this.showMatterIntegration) {\n            this.send(\"toggleShowMatterIntegration\");\n          }\n        } else {\n          this.send(\"startIntegration\");\n        }\n      },\n      submitIntegration(buttonSubmitted) {\n        if (!this.canSubmit && !this.selectedIntegrationType?.shouldSubmitWithoutShowingOptions) {\n          return;\n        }\n        this.set(\"showLoadingSpinner\", true);\n        this.set(\"processingMessage\", buttonSubmitted.processingMessage);\n        this.set(\"integrationFailed\", null);\n        this.set(\"integrationResponseMessage\", null);\n        this.set(\"pmsMetadata.integrationLoading\", true);\n        if (!this.selectedIntegrationType?.shouldSubmitWithoutShowingOptions) {\n          this.toggleProperty(\"expandPMSIntegrationArea\");\n        }\n        const timestamp = new Date().toString();\n        const additionalInfo = {\n          ...this.additionalInfo\n        };\n        const callback = this.sendClientRecordToPMSCallback;\n        if (callback) {\n          callback({\n            lambdaFunction: buttonSubmitted.submitArn,\n            additionalInfo,\n            submitType: buttonSubmitted.type,\n            productName: this.pmsMetadata?.id\n          }, (err, response) => {\n            const pmsName = this.pmsMetadata?.name;\n            const integrationFailedMessage = `Unable to send data to ${pmsName}. Please try again or contact Settify for assistance.`;\n            if (err) {\n              this.eventLogging.logError(`Unable to create ${pmsName} matter`, err);\n              this.set(\"integrationFailed\", integrationFailedMessage);\n            } else if (response) {\n              response = response[this.pmsMetadata?.id];\n              if (!response.ok) {\n                this.set(\"integrationFailed\", response.message || integrationFailedMessage);\n                this.set(\"integrationStatusCode\", response.status);\n                this.set(\"infoChangedTouch\", Date.now());\n              } else {\n                const executionObject = {\n                  ...response,\n                  submitType: buttonSubmitted.type,\n                  additionalInfo,\n                  timestamp,\n                  productName: this.pmsMetadata?.id\n                };\n                const integrationInformation = this.model?.integrationInformation;\n                const executionLog = integrationInformation.executions || [];\n                executionLog.push(executionObject);\n                this.set(\"integrationResponseMessage\", response.message);\n                this.set(\"model.integrationInformation\", {\n                  executions: executionLog,\n                  currentInfo: response.info\n                });\n                this.set(\"expandPMSIntegrationArea\", false);\n                this.set(\"model.readOnly\", false);\n                this.model.save().then(() => {\n                  this.set(\"model.readOnly\", true);\n                }).then(() => {\n                  this.refreshMetadata();\n                });\n              }\n            }\n            this.set(\"showLoadingSpinner\", false);\n            this.set(\"processingMessage\", null);\n            this.set(\"pmsMetadata.integrationLoading\", false);\n            this.set(\"infoChangedTouch\", Date.now());\n          });\n        }\n      }\n    }\n  }));\n});","define(\"settify-mvp/components/settify-date-input\", [\"exports\", \"@ember/component\", \"@ember/utils\", \"@ember/object\", \"moment\", \"@ember/template-factory\"], function (_exports, _component, _utils, _object, _moment, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/utils\",0,\"@ember/object\",0,\"@ember/component\",0,\"moment\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @displayOnly}}\n    <div class=\"readonly-textarea settify-sensitive\">\n      {{@label}}{{yield}}\n      {{#if this.requiredInputsCompleted}}\n        {{pretty-date @day @month @year monthInputFirst=@monthInputFirst}}\n      {{else if @notSureModel}}\n        Not sure\n      {{else}}\n        <NoInformation />\n        {{#if @required}}\n          <RequiredField />\n        {{/if}}\n      {{/if}}\n      <br />\n    </div>\n  {{else}}\n    {{#if (non-empty-string @label)}}\n      {{#if @required}}\n        {{@label}}<span class=\"required-field-marker {{if this.requiredInputsCompleted 'required-field-provided'}}\"></span>\n      {{else}}\n        {{@label}}\n      {{/if}}\n      <HelpTextIcon @helpText={{@helpText}} @displayOnly={{@displayOnly}} />\n    {{/if}}\n    {{#if (has-block)}}\n      {{#if @required}}\n        {{yield}}<span class=\"required-field-marker {{if this.requiredInputsCompleted 'required-field-provided'}}\"></span>\n      {{else}}\n        {{yield}}\n      {{/if}}\n      <HelpTextIcon @helpText={{@helpText}} @displayOnly={{@displayOnly}} />\n      <br />\n    {{/if}}\n    <LiquidIf @predicate={{or (not @notSureModel) @notSureOptionDoesNotHideComponent}}>\n      <div class=\"flex-evenly {{if (and @required (not (and @day @month @year))) 'date-highlight'}}\">\n        {{#if @monthInputFirst}}\n          <MonthSelect\n            @model={{@month}}\n            @class={{sum \"date-input \" (if (or (not this.inputsRequired.month) @month) \"not_highlighted\")}}\n            @onChange={{@onChange}}\n            @required={{this.inputsRequired.month}}\n          />\n        {{/if}}\n        <SettifyNumber\n          @model={{@day}}\n          @nocommas={{true}}\n          @class={{sum \"date-input \" (if (or (not this.inputsRequired.day) @day) \"not_highlighted\")}}\n          @name=\"day\"\n          @label=\"Day\"\n          @min={{1}}\n          @max={{this.maxDay}}\n          @onChange={{@onChange}}\n          @required={{this.inputsRequired.day}}\n        />\n        {{#unless @monthInputFirst}}\n          <MonthSelect\n            @model={{@month}}\n            @class={{sum \"date-input \" (if (or (not this.inputsRequired.month) @month) \"not_highlighted\")}}\n            @onChange={{@onChange}}\n            @required={{this.inputsRequired.month}}\n          />\n        {{/unless}}\n        <SettifyNumber\n          @model={{@year}}\n          @nocommas={{true}}\n          @class={{sum \"date-input \" (if (or (not this.inputsRequired.year) @year) \"not_highlighted\")}}\n          @name=\"year\"\n          @label=\"Year\"\n          @min={{1900}}\n          @assumeTwoDigitYears={{true}}\n          @max={{this.maxYear}}\n          @onChange={{@onChange}}\n          @required={{this.inputsRequired.year}}\n        />\n      </div>\n    </LiquidIf>\n    <LiquidIf @predicate={{and @notSureOption (not (or @day @month @year))}}>\n      <CheckBox @text={{or @notSureOptionText \"I'm not sure\"}} @model={{@notSureModel}} @onChange={{@onChange}} />\n    </LiquidIf>\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"DJ27HK8O\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"readonly-textarea settify-sensitive\\\"],[12],[1,\\\"\\\\n    \\\"],[1,[30,2]],[18,14,null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"requiredInputsCompleted\\\"]],[[[1,\\\"      \\\"],[1,[28,[35,3],[[30,3],[30,4],[30,5]],[[\\\"monthInputFirst\\\"],[[30,6]]]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,7],[[[1,\\\"      Not sure\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[39,4],null,null,null],[1,\\\"\\\\n\\\"],[41,[30,8],[[[1,\\\"        \\\"],[8,[39,5],null,null,null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"]],[]]]],[]]],[1,\\\"    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,7],[[30,2]],null],[[[41,[30,8],[[[1,\\\"      \\\"],[1,[30,2]],[10,1],[15,0,[29,[\\\"required-field-marker \\\",[52,[30,0,[\\\"requiredInputsCompleted\\\"]],\\\"required-field-provided\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[1,[30,2]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"],[8,[39,9],null,[[\\\"@helpText\\\",\\\"@displayOnly\\\"],[[30,9],[30,1]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[48,[30,14]],[[[41,[30,8],[[[1,\\\"      \\\"],[18,14,null],[10,1],[15,0,[29,[\\\"required-field-marker \\\",[52,[30,0,[\\\"requiredInputsCompleted\\\"]],\\\"required-field-provided\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[18,14,null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"],[8,[39,9],null,[[\\\"@helpText\\\",\\\"@displayOnly\\\"],[[30,9],[30,1]]],null],[1,\\\"\\\\n    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[8,[39,11],null,[[\\\"@predicate\\\"],[[28,[37,12],[[28,[37,13],[[30,7]],null],[30,10]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,0],[15,0,[29,[\\\"flex-evenly \\\",[52,[28,[37,14],[[30,8],[28,[37,13],[[28,[37,14],[[30,3],[30,4],[30,5]],null]],null]],null],\\\"date-highlight\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[30,6],[[[1,\\\"        \\\"],[8,[39,15],null,[[\\\"@model\\\",\\\"@class\\\",\\\"@onChange\\\",\\\"@required\\\"],[[30,4],[28,[37,16],[\\\"date-input \\\",[52,[28,[37,12],[[28,[37,13],[[30,0,[\\\"inputsRequired\\\",\\\"month\\\"]]],null],[30,4]],null],\\\"not_highlighted\\\"]],null],[30,11],[30,0,[\\\"inputsRequired\\\",\\\"month\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[8,[39,17],null,[[\\\"@model\\\",\\\"@nocommas\\\",\\\"@class\\\",\\\"@name\\\",\\\"@label\\\",\\\"@min\\\",\\\"@max\\\",\\\"@onChange\\\",\\\"@required\\\"],[[30,3],true,[28,[37,16],[\\\"date-input \\\",[52,[28,[37,12],[[28,[37,13],[[30,0,[\\\"inputsRequired\\\",\\\"day\\\"]]],null],[30,3]],null],\\\"not_highlighted\\\"]],null],\\\"day\\\",\\\"Day\\\",1,[30,0,[\\\"maxDay\\\"]],[30,11],[30,0,[\\\"inputsRequired\\\",\\\"day\\\"]]]],null],[1,\\\"\\\\n\\\"],[41,[51,[30,6]],[[[1,\\\"        \\\"],[8,[39,15],null,[[\\\"@model\\\",\\\"@class\\\",\\\"@onChange\\\",\\\"@required\\\"],[[30,4],[28,[37,16],[\\\"date-input \\\",[52,[28,[37,12],[[28,[37,13],[[30,0,[\\\"inputsRequired\\\",\\\"month\\\"]]],null],[30,4]],null],\\\"not_highlighted\\\"]],null],[30,11],[30,0,[\\\"inputsRequired\\\",\\\"month\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[8,[39,17],null,[[\\\"@model\\\",\\\"@nocommas\\\",\\\"@class\\\",\\\"@name\\\",\\\"@label\\\",\\\"@min\\\",\\\"@assumeTwoDigitYears\\\",\\\"@max\\\",\\\"@onChange\\\",\\\"@required\\\"],[[30,5],true,[28,[37,16],[\\\"date-input \\\",[52,[28,[37,12],[[28,[37,13],[[30,0,[\\\"inputsRequired\\\",\\\"year\\\"]]],null],[30,5]],null],\\\"not_highlighted\\\"]],null],\\\"year\\\",\\\"Year\\\",1900,true,[30,0,[\\\"maxYear\\\"]],[30,11],[30,0,[\\\"inputsRequired\\\",\\\"year\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[39,11],null,[[\\\"@predicate\\\"],[[28,[37,14],[[30,12],[28,[37,13],[[28,[37,12],[[30,3],[30,4],[30,5]],null]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[39,19],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@onChange\\\"],[[28,[37,12],[[30,13],\\\"I'm not sure\\\"],null],[30,7],[30,11]]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]],[\\\"@displayOnly\\\",\\\"@label\\\",\\\"@day\\\",\\\"@month\\\",\\\"@year\\\",\\\"@monthInputFirst\\\",\\\"@notSureModel\\\",\\\"@required\\\",\\\"@helpText\\\",\\\"@notSureOptionDoesNotHideComponent\\\",\\\"@onChange\\\",\\\"@notSureOption\\\",\\\"@notSureOptionText\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"yield\\\",\\\"pretty-date\\\",\\\"no-information\\\",\\\"required-field\\\",\\\"br\\\",\\\"non-empty-string\\\",\\\"span\\\",\\\"help-text-icon\\\",\\\"has-block\\\",\\\"liquid-if\\\",\\\"or\\\",\\\"not\\\",\\\"and\\\",\\\"month-select\\\",\\\"sum\\\",\\\"settify-number\\\",\\\"unless\\\",\\\"check-box\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/settify-date-input.hbs\",\n    \"isStrictMode\": false\n  });\n  const days = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({\n    init() {\n      this._super(...arguments);\n      this.setMaxYear();\n    },\n    setMaxYear() {\n      this.set(\"maxYear\", this.allowFuture ? 2100 : (0, _moment.default)().year());\n    },\n    maxDay: (0, _object.computed)(\"month\", function () {\n      const m = parseInt(this.month, 10);\n      if ((0, _utils.isNone)(m) || isNaN(m) || m < 1 || m > 12) {\n        return 31;\n      }\n      return days[m - 1];\n    }),\n    inputsRequired: (0, _object.computed)(\"required\", \"requiredSpecificity\", function () {\n      if (!this.required) {\n        return {\n          year: false,\n          month: false,\n          day: false\n        };\n      }\n      if (this?.requiredSpecificity === \"monthAndYear\") {\n        return {\n          year: true,\n          month: true,\n          day: false\n        };\n      }\n      if (this?.requiredSpecificity === \"year\") {\n        return {\n          year: true,\n          month: false,\n          day: false\n        };\n      }\n      return {\n        year: true,\n        month: true,\n        day: true\n      };\n    }),\n    requiredInputsCompleted: (0, _object.computed)(\"day\", \"inputsRequired\", \"month\", \"year\", function () {\n      const requiredFields = this.inputsRequired;\n      for (const key in requiredFields) {\n        if (requiredFields[key] && !this.get(key)) {\n          return false;\n        }\n      }\n      return true;\n    })\n  }));\n});","define(\"settify-mvp/components/settify-email-input\", [\"exports\", \"@ember/object\", \"@ember/runloop\", \"@ember/component\", \"settify-mvp/mixins/settify-input-mixin\"], function (_exports, _object, _runloop, _component, _settifyInputMixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/runloop\",0,\"@ember/component\",0,\"settify-mvp/mixins/settify-input-mixin\"eaimeta@70e063a35619d71f\n  const toggleShowWarning = function () {\n    if (this.isDestroyed || this.isDestroyed) {\n      return;\n    }\n    if (this.model && !this.validEmail) {\n      this.set(\"showWarning\", true);\n    } else {\n      this.set(\"showWarning\", false);\n    }\n  };\n  var _default = _exports.default = _component.default.extend(_settifyInputMixin.default, {\n    init() {\n      this._super(...arguments);\n      this.issueChecks = [{\n        problem: \"gmail.con\",\n        correction: \"gmail.com\"\n      }, {\n        problem: \"gmaill.com\",\n        correction: \"gmail.com\"\n      }, {\n        problem: \"gmailcom\",\n        correction: \"gmail.com\"\n      }, {\n        problem: \"gmail.com.au\",\n        correction: \"gmail.com\"\n      }, {\n        problem: \"gmail.comau\",\n        correction: \"gmail.com\"\n      }, {\n        problem: \"gmail.comm\",\n        correction: \"gmail.com\"\n      }, {\n        problem: \"gamil.com\",\n        correction: \"gmail.com\"\n      }, {\n        problem: \"gmial.com\",\n        correction: \"gmail.com\"\n      }, {\n        problem: \"gmali.com\",\n        correction: \"gmail.com\"\n      }, {\n        problem: \"gmail.au\",\n        correction: \"gmail.com\"\n      }, {\n        problem: \"hotmail.com.au\",\n        correction: \"hotmail.com\"\n      }, {\n        problem: \"hotmail.comau\",\n        correction: \"hotmail.com\"\n      }, {\n        problem: \"outlook.com.au\",\n        correction: \"outlook.com\"\n      }, {\n        problem: \"outlook.comau\",\n        correction: \"outlook.com\"\n      }];\n    },\n    didInsertElement() {\n      this._super(...arguments);\n      (0, _runloop.next)(this, function () {\n        if (this.isDestroyed || this.isDestroying) return;\n        this.set(\"validation\", this.validEmail);\n      });\n    },\n    checkEmail: (0, _object.observer)(\"model\", function () {\n      if (typeof this.model === \"string\") {\n        let model = this.model.trim();\n        if (this.allowMultipleEmails) {\n          model = model.split(/[\\s,;]+/).join(\", \").trim();\n        }\n        this.set(\"model\", model);\n      }\n    }),\n    inputEntered: (0, _object.computed)(\"model\", function () {\n      return !!this.model;\n    }),\n    // a fairly broad, permissive regex\n    emailRegex: /^(?!.*\\.{2})[A-Z0-9._%+'&-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$/i,\n    validEmail: (0, _object.computed)(\"allowMultipleEmails\", \"emailRegex\", \"model.length\", function () {\n      const valid = Boolean(this.model && this.model.length <= 256 && (this.allowMultipleEmails ? this.model.split(\", \").every(e => this.emailRegex.test(e)) : this.emailRegex.test(this.model)));\n      return valid;\n    }),\n    checkValidity: (0, _object.observer)(\"validEmail\", function () {\n      this.set(\"validation\", this.validEmail);\n    }),\n    checkForPotentialIssues: (0, _object.observer)(\"model\", function () {\n      for (let i = 0; i < this.issueChecks.length; i++) {\n        const issue = this.issueChecks[i];\n        if (!issue.regex) {\n          issue.regex = new RegExp(`${issue.problem}$`, \"i\");\n        }\n        if (issue.regex.test(this.model)) {\n          this.set(\"potentialIssue\", issue);\n          return;\n        }\n      }\n      this.set(\"potentialIssue\", null);\n    }),\n    onValidityChanged: (0, _object.observer)(\"validEmail\", function () {\n      if (this.validEmail) {\n        this.set(\"showWarning\", false);\n      } else {\n        (0, _runloop.debounce)(this, toggleShowWarning, 1250, false);\n      }\n    }),\n    actions: {\n      fixIssue(issue) {\n        if (!issue) {\n          return;\n        }\n        const m = this.model.replace(issue.regex, issue.correction);\n        this.set(\"model\", m);\n        this.set(\"potentialIssue\", null);\n      }\n    }\n  });\n});","define(\"settify-mvp/components/settify-file-upload\", [\"exports\", \"@ember/object\", \"@ember/service\", \"@ember/component\"], function (_exports, _object, _service, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  /* global saveAs */\n  var _default = _exports.default = _component.default.extend({\n    session: (0, _service.inject)(),\n    awsService: (0, _service.inject)(),\n    config: (0, _service.inject)(\"dynamic-config\"),\n    init() {\n      this._super();\n      this.set(\"uid\", Date.now() + Math.random() * 100);\n      this.set(\"confirmingUpload\", false);\n      this.set(\"uploadConfirmed\", false);\n      this.set(\"fileToConfirm\", false);\n      this.set(\"model\", {});\n    },\n    fileName: (0, _object.computed)(\"uploadName\", function () {\n      return this.uploadName || \"attachment\";\n    }),\n    acceptArray: (0, _object.computed)(\"accept\", function () {\n      let accept = (this.accept || \"\").toLowerCase().trim();\n      accept = accept.split(/,\\s*/);\n      return accept;\n    }),\n    acceptBothCases: (0, _object.computed)(\"accept\", \"acceptArray\", function () {\n      const accept = this.acceptArray;\n      const uppercase = accept.map(s => s.toUpperCase());\n      return accept.concat(uppercase);\n    }),\n    acceptPrettyString: (0, _object.computed)(\"accept\", \"acceptArray\", function () {\n      let accept = this.acceptArray;\n      accept = accept.join(\", \").toUpperCase().replace(/\\./g, \"\");\n      accept = accept.replace(/, ([^,]+)$/, \" or $1\");\n      return accept;\n    }),\n    uploadBucketComputed: (0, _object.computed)(\"bucket\", function () {\n      return this.bucket || this.awsService.getS3BucketName(\"firmdata\");\n    }),\n    uploadPrefixComputed: (0, _object.computed)(\"config.settings.adminIdentityPoolID\", \"uploadPrefix\", function () {\n      const base = this.uploadPrefix || \"\";\n      return base.replace(\"{CognitoIdentityPoolId}\", this.get(\"config.settings.adminIdentityPoolID\"));\n    }),\n    maxUploadBytes: (0, _object.computed)(\"maxKB\", function () {\n      return (this.maxKB || 1024) * 1024;\n    }),\n    maxUploadPrettyString: (0, _object.computed)(\"maxKB\", function () {\n      const kb = this.maxKB;\n      if (kb > 1024) {\n        const mb = Math.round(kb / 1024);\n        return `${mb}mb`;\n      }\n      return `${kb}kb`;\n    }),\n    uploadComplete: (0, _object.computed)(\"model.Key\", \"model.Bucket\", \"model.Filename\", function () {\n      return !!this.get(\"model.Key\") && !!this.get(\"model.Bucket\") && !!this.get(\"model.Filename\");\n    }),\n    actions: {\n      startDraggingFile(ev) {\n        this.set(\"fileDragging\", true);\n        ev.preventDefault();\n      },\n      stopDraggingFile(ev) {\n        this.set(\"fileDragging\", false);\n        ev.preventDefault();\n      },\n      dragOver(ev) {\n        ev.preventDefault();\n      },\n      dropFile(ev) {\n        if (ev.dataTransfer && ev.dataTransfer.files && ev.dataTransfer.files.length) {\n          this.uploadFile(ev.dataTransfer.files[0]);\n        }\n        ev.preventDefault();\n      },\n      uploadFile() {\n        const fileChooser = document.getElementById(`file-chooser-${this.uid}`);\n        const file = fileChooser.files[0];\n        this.uploadFile(file);\n      },\n      actionUpload(confirm) {\n        if (confirm) {\n          this.set(\"uploadConfirmed\", true);\n          this.uploadFile(this.fileToConfirm);\n        } else {\n          this.set(\"uploadConfirmed\", false);\n        }\n        this.set(\"confirmingUpload\", false);\n      },\n      download() {\n        this.awsService.getS3Client(this.get(\"model.Bucket\")).then(s3Client => {\n          s3Client.getObject({\n            Key: this.get(\"model.Key\")\n          }, (err, data) => {\n            if (!err) {\n              const blob = new Blob([data.Body], {\n                type: data.ContentType\n              });\n              saveAs(blob, this.get(\"model.Filename\"));\n            }\n          });\n        });\n      }\n    },\n    uploadFile(file) {\n      if (this.forceConfirm && !this.uploadConfirmed) {\n        this.set(\"confirmingUpload\", true);\n        if (this.showImagePreview) {\n          this.set(\"fileToConfirm\", file);\n          this.set(\"previewURL\", URL.createObjectURL(file));\n        }\n        return;\n      }\n      if (file) {\n        this.set(\"s3result\", \"\");\n\n        // test file size\n        const fsize = file.size;\n        if (fsize > this.maxUploadBytes) {\n          alert(`Sorry, but that file is too large to be used in our system. Please resize or re-save the image so that it is ${this.maxUploadPrettyString} or less`);\n          if (this.forceConfirm) {\n            this.set(\"uploadConfirmed\", false);\n          }\n          return;\n        }\n        const ftype = file.type;\n        let badFileType = true;\n        switch (ftype) {\n          // Allowing empty string to upload certain font files like ttf and woff2\n          case \"\":\n          case \"image/png\":\n          case \"image/gif\":\n          case \"image/jpeg\":\n          case \"image/pjpeg\":\n          case \"application/pdf\":\n          case \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\":\n          case \"image/svg+xml\":\n          case \"font/ttf\":\n          case \"application/vnd.ms-fontobject\":\n          case \"application/font-woff\":\n          case \"font/woff2\":\n          case \"image/x-icon\":\n          case \"image/vnd.microsoft.icon\":\n            badFileType = false;\n            break;\n        }\n\n        // // extract and test the file extension\n        const extStart = file.name.lastIndexOf(\".\");\n        let extension = \"\";\n        if (extStart >= 0) {\n          extension = file.name.substr(extStart + 1).toLowerCase();\n        }\n        const badExtension = !this.acceptArray.includes(`.${extension}`);\n        if (badExtension || badFileType) {\n          // invalid file type\n          alert(`Sorry, but that doesn't look like an image we understand. Please try again with a ${this.acceptPrettyString}`);\n          if (this.forceConfirm) {\n            this.set(\"uploadConfirmed\", false);\n          }\n          return;\n        }\n        this.set(\"uploading\", true);\n        this.set(\"s3result\", null);\n        const params = {\n          Key: `${this.uploadPrefixComputed}${file.name}`,\n          ContentType: file.type,\n          Body: file,\n          Tagging: `settify:fileUploads:targetBucket=${this.uploadBucketComputed}`\n        };\n        if (this.forceFileName) {\n          params.Key = `${this.uploadPrefixComputed}${this.forceFileName}.${extension}`;\n        }\n        this.awsService.getS3ByType(\"quarantine\").then(s3Client => {\n          s3Client.upload(params, (err /* , data */) => {\n            this.set(\"uploading\", false);\n            if (!err) {\n              this.set(\"model.Key\", params.Key);\n              this.set(\"model.Bucket\", this.uploadBucketComputed);\n              this.set(\"model.Filename\", file.name);\n              this.set(\"uploadConfirmed\", false);\n              if (this.onUploadComplete) {\n                this.onUploadComplete(file.name);\n              }\n            } else {\n              this.set(\"s3result\", `Couldn't upload file: ${err}`);\n            }\n          });\n        });\n      } else {\n        this.set(\"s3result\", \"Nothing to upload.\");\n      }\n    }\n  });\n});","define(\"settify-mvp/components/settify-footer\", [\"exports\", \"@ember/service\", \"@ember/component\"], function (_exports, _service, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    session: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    cookies: (0, _service.inject)(),\n    router: (0, _service.inject)(),\n    init() {\n      this._super(...arguments);\n      const activeID = this.cookies.read(\"activeID\");\n      if (activeID) {\n        this.set(\"showRecordsLink\", true);\n      }\n    }\n  });\n});","define(\"settify-mvp/components/settify-grid-input\", [\"exports\", \"@ember/utils\", \"@ember/object\", \"@ember/runloop\", \"@ember/component\", \"settify-mvp/utils/defaults-object-initializer\", \"settify-mvp/mixins/settify-input-mixin\", \"settify-mvp/mixins/get-source-list\", \"settify-mvp/mixins/remove-empty-items\"], function (_exports, _utils, _object, _runloop, _component, _defaultsObjectInitializer, _settifyInputMixin, _getSourceList, _removeEmptyItems) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/utils\",0,\"@ember/object\",0,\"@ember/runloop\",0,\"@ember/component\",0,\"settify-mvp/utils/defaults-object-initializer\",0,\"settify-mvp/mixins/settify-input-mixin\",0,\"settify-mvp/mixins/get-source-list\",0,\"settify-mvp/mixins/remove-empty-items\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend(_settifyInputMixin.default, _getSourceList.default, _removeEmptyItems.default, {\n    assignUUIDs: true,\n    init() {\n      this._super(...arguments);\n      this.defaultsObjectInitializer = new _defaultsObjectInitializer.DefaultsObjectInitializer(this.defaults, this.assignUUIDs);\n      if (!this.get(\"model.length\") && this.get(\"startingRows.length\") && !this.displayOnly) {\n        // initialise some starting rows\n        const startingModel = [];\n        for (let i = 0; i < this.startingRows.length; i++) {\n          const row = this.startingRows[i];\n\n          // make sure we assign a UUID to each row, so that sensitive information can be stripped\n          // and repopulated by the database layer.\n          const el = this.defaultsObjectInitializer.createDefaultItem();\n\n          // copy all attributes from the starting row information\n          for (const key in row) {\n            if (Object.prototype.hasOwnProperty.call(row, key)) {\n              // get the column name for this id\n              const columnName = this.columns.filter(c => c.id === key);\n              if (columnName.length) {\n                const dereferencedKey = columnName[0].id;\n                el[dereferencedKey] = row[key];\n                el[`${dereferencedKey}ReadOnly`] = row[`${dereferencedKey}ReadOnly`] || false;\n              }\n            }\n          }\n          el.noDelete = row.noDelete || false;\n          startingModel.push(el);\n        }\n        (0, _runloop.next)(() => {\n          this.set(\"model\", startingModel);\n        });\n      }\n      const sourceList = this.getSourceListAsArray();\n      this.set(\"sourcedRows\", sourceList);\n    },\n    showTotalColumn: (0, _object.computed)(\"clientRecord.touch\", \"columns.@each.autoTotal\", \"columns.length\", \"model\", \"model.length\", \"sourcedRows\", \"sourcedRows.length\", function () {\n      return this.get(\"columns.length\") && this.columns.some(c => c.autoTotal);\n    }),\n    totals: (0, _object.computed)(\"clientRecord.touch\", \"columns.@each.autoTotal\", \"columns.length\", \"model\", \"model.length\", \"sourcedRows\", \"sourcedRows.length\", function () {\n      const tColumns = this.columns.filter(c => c.autoTotal).map(c => c.id);\n      const rowList = this.model.concat(this.sourcedRows || []);\n      const totals = {};\n      for (let i = 0; rowList && i < rowList.length; i++) {\n        const row = rowList[i];\n        for (let j = 0; j < tColumns.length; j++) {\n          const tName = tColumns[j];\n          if ((0, _utils.isNone)(totals[tName])) {\n            totals[tName] = 0;\n          }\n          totals[tName] += row[tName] || 0;\n        }\n      }\n      return totals;\n    }),\n    actions: {\n      addRow() {\n        const newRow = this.defaultsObjectInitializer.createDefaultItem();\n        this.model.pushObject(newRow);\n      },\n      removeRow(row) {\n        this.model.removeObject(row);\n      }\n    },\n    willDestroyElement() {\n      this._super(...arguments);\n      this.removeEmptyModelItems();\n    }\n  });\n});","define(\"settify-mvp/components/settify-guess-client-input\", [\"exports\", \"@ember/runloop\", \"@ember/object\", \"@ember/service\", \"@ember/component\", \"settify-mvp/mixins/master-form-mixin\", \"settify-mvp/utils/defaults-object-initializer\"], function (_exports, _runloop, _object, _service, _component, _masterFormMixin, _defaultsObjectInitializer) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/component\",0,\"settify-mvp/mixins/master-form-mixin\",0,\"settify-mvp/utils/defaults-object-initializer\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend(_masterFormMixin.default, {\n    sendEmailToSettify: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    client: null,\n    isGuess: false,\n    previousWrongGuess: false,\n    lookingFor: null,\n    assignUUIDs: true,\n    reset() {\n      this.set(\"potentialMatches\", []);\n      this.set(\"client\", null);\n      this.set(\"isGuess\", false);\n      this.set(\"previousWrongGuess\", false);\n      this.set(\"lookingFor\", null);\n    },\n    init() {\n      this._super(...arguments);\n      this.defaultsObjectInitializer = new _defaultsObjectInitializer.DefaultsObjectInitializer(this.defaults, this.assignUUIDs);\n      this.potentialMatches = [];\n      if (this.isDestroyed || this.isDestroying) {\n        return;\n      }\n      const instructor = this.getInstructor(this.getInduction(this.clientRecord.inductions));\n      if (!instructor && !this.clientRecord?.primaryContactPersonID) {\n        this.createNewPersonObject();\n        return;\n      }\n      this.set(\"lookingFor\", instructor);\n      let primaryContactPersonID = this.clientRecord?.primaryContactPersonID;\n      let clientInTree;\n      if (primaryContactPersonID) {\n        // We already know the user, grab them out\n        clientInTree = this.clientRecord.knownEntitiesAndFamilyMembers.find(p => p.id === primaryContactPersonID);\n        if (clientInTree) {\n          return this.setClient(clientInTree);\n        }\n      }\n      let matches;\n      try {\n        matches = this.getPossibleMatches();\n      } catch (e) {\n        const subject = \"Probate: Guess client input threw an exception\";\n        const recipient = \"developers@settify.com.au\";\n        const bodyHTML = `<p>Hi Devs!</p>\n      <p>\n        The probate Settify guess client input has failed. <br />\n        Message: ${e.toString()}.\n      </p>\n      <p>\n        firmID: ${this.firm.id}, <br />\n        clientID: ${this.clientRecord.id}, <br />\n        firm URL: ${this.firm?.settifyURL}\n      </p>\n      `;\n        this.sendEmailToSettify.send(subject, bodyHTML, recipient);\n        matches = [];\n      }\n      if (matches && matches.length === 1) {\n        // We have a confident guess of who the client is\n        clientInTree = matches[0];\n        primaryContactPersonID = clientInTree.id;\n        this.setClient(clientInTree, true);\n      } else if (matches && matches.length > 1) {\n        // We have found some potential matches for the client\n        this.set(\"potentialMatches\", matches);\n      } else {\n        // We couldn't find the client at all, make a new object for them\n        this.createNewPersonObject();\n      }\n    },\n    createNewPersonObject() {\n      const person = this.defaultsObjectInitializer.createDefaultItem();\n      (0, _object.set)(person, \"firstName\", this.lookingFor);\n      this.setClient(person);\n      (0, _runloop.next)(() => {\n        this.clientRecord.knownEntities.pushObject(person); // Put them in the know entities array so we can find them later\n      });\n    },\n    setClient(clientObject, guess = false) {\n      this.set(\"client\", clientObject);\n      this.set(\"isGuess\", guess);\n      (0, _runloop.next)(() => {\n        this.set(\"clientRecord.primaryContactPersonID\", clientObject.id);\n      });\n    },\n    getInstructor(induction) {\n      if (induction) {\n        return this.clientRecord.getPreciseAnswer(induction.id, this.staticReferences?.instructorQuestion?.chapter, this.staticReferences?.instructorQuestion?.page, this.staticReferences?.instructorQuestion?.question, null, induction.repeatToken);\n      }\n    },\n    getPossibleMatches() {\n      const probateInduction = this.getInduction(this.clientRecord?.inductions);\n      const deceased = this.clientRecord.getPreciseAnswer(probateInduction.id, this.staticReferences?.deceasedQuestion?.chapter, this.staticReferences?.deceasedQuestion?.page, this.staticReferences?.deceasedQuestion?.question, null, probateInduction.repeatToken);\n      if (!deceased) {\n        return [];\n      }\n      const {\n        relationship\n      } = deceased;\n      const lookingFor = this.lookingFor.toLowerCase();\n      let possibleMatches = [];\n      if ([\"mother\", \"father\", \"stepmother\", \"stepfather\"].includes(relationship)) {\n        if (this.clientRecord?.allChildren) {\n          // Children of the deceased are stored on the spouse they had the child with\n          possibleMatches = this.clientRecord.allChildren.filter(c => c.firstName && c.firstName.toLowerCase() === lookingFor);\n        }\n      } else if ([\"wife\", \"husband\", \"partner\", \"spouse\"].includes(relationship)) {\n        if (deceased.spouses && deceased.spouses.length) {\n          possibleMatches = deceased.spouses.filter(s => s.firstName && s.firstName.toLowerCase() === lookingFor);\n        }\n      } else if ([\"sister\", \"brother\"].includes(relationship)) {\n        if (deceased.siblings && deceased.siblings.length) {\n          possibleMatches = deceased.siblings.filter(s => s.firstName && s.firstName.toLowerCase() === lookingFor);\n        }\n      } else if ([\"daughter\", \"son\", \"stepson\", \"stepdaughter\"].includes(relationship)) {\n        if (deceased.parentOne) {\n          possibleMatches = deceased.parentOne.filter(p => p.firstName && p.firstName.toLowerCase() === lookingFor);\n        }\n        if (deceased.parentTwo) {\n          possibleMatches = [...possibleMatches, ...deceased.parentTwo.filter(p => p.firstName && p.firstName.toLowerCase() === lookingFor)];\n        }\n      } else if ([\"aunt\", \"uncle\"].includes(relationship)) {\n        if (deceased.siblings && deceased.siblings.length) {\n          possibleMatches = deceased.siblings.map(s => s.children).filter(a => a).reduce((acc, val) => acc.concat(val), []).filter(c => c.firstName && c.firstName.toLowerCase() === lookingFor);\n        }\n      } else if ([\"niece\", \"nephew\"].includes(relationship)) {\n        if (deceased.auntsAndUncles && deceased.auntsAndUncles.length) {\n          possibleMatches = deceased.auntsAndUncles.filter(s => s.firstName && s.firstName.toLowerCase() === lookingFor);\n        }\n      } else if ([\"granddaughter\", \"grandson\"].includes(relationship)) {\n        if (deceased.grandparents && deceased.grandparents.length) {\n          possibleMatches = deceased.grandparents.filter(c => c.firstName && c.firstName.toLowerCase() === lookingFor);\n        }\n      } else if ([\"grandmother\", \"grandfather\"].includes(relationship)) {\n        if (this.clientRecord?.allGrandChildren) {\n          possibleMatches = this.clientRecord.allGrandChildren.filter(c => c.firstName && c.firstName.toLowerCase() === lookingFor);\n        }\n      } else if ([\"cousin\"].includes(relationship)) {\n        if (deceased.auntsAndUncles && deceased.auntsAndUncles.length) {\n          possibleMatches = deceased.auntsAndUncles.map(a => a.children).filter(a => a).reduce((acc, val) => acc.concat(val), []).filter(c => c.firstName && c.firstName.toLowerCase() === lookingFor);\n        }\n      } else if ([\"friend\", \"client\"].includes(relationship)) {\n        if (deceased.otherBeneficiaries && deceased.otherBeneficiaries.length) {\n          possibleMatches = deceased.otherBeneficiaries.filter(p => p.firstName && p.firstName.toLowerCase() === lookingFor);\n          const otherPossibleMatches = this.clientRecord.knownEntities.filter(p => p.firstName && p.firstName.toLowerCase() === lookingFor);\n          possibleMatches = [...possibleMatches, ...otherPossibleMatches];\n        }\n      }\n      return possibleMatches;\n    },\n    actions: {\n      setClient(p) {\n        this.setClient(p);\n      },\n      setAsNewPerson() {\n        this.set(\"previousWrongGuess\", true);\n        (0, _runloop.later)(() => {\n          if (!this.isDestroyed || !this.isDestroying) {\n            this.set(\"previousWrongGuess\", false);\n          }\n        }, 15000);\n        this.createNewPersonObject();\n      }\n    }\n  });\n});","define(\"settify-mvp/components/settify-hidden-calculated-field\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember/runloop\", \"settify-mvp/mixins/settify-input-mixin\", \"settify-mvp/helpers/parse-text\", \"@ember/template\", \"@ember/template-factory\"], function (_exports, _component, _object, _runloop, _settifyInputMixin, _parseText, _template, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/runloop\",0,\"@ember/component\",0,\"settify-mvp/mixins/settify-input-mixin\",0,\"settify-mvp/helpers/parse-text\",0,\"@ember/template\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    \n  */\n  {\n    \"id\": \"P9j6IiEX\",\n    \"block\": \"[[],[],false,[]]\",\n    \"moduleName\": \"settify-mvp/components/settify-hidden-calculated-field.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend(_settifyInputMixin.default, {\n    tagName: \"\",\n    init() {\n      this._super(...arguments);\n      (0, _runloop.next)(() => {\n        this.handleUpdate();\n      });\n    },\n    onClientTouched: (0, _object.observer)(\"clientRecord.touch\", function () {\n      this.handleUpdate();\n    }),\n    handleUpdate: function () {\n      const pt = _parseText.default.create();\n      const parsedValue = pt.compute([this.content], {\n        clientRecord: this.clientRecord,\n        context: this.context,\n        blueprintMode: this.blueprintMode,\n        doNotWrap: true,\n        model: this.localAnswers\n      });\n      if ((0, _template.isHTMLSafe)(parsedValue)) {\n        this.set(\"model\", parsedValue.toString());\n      }\n    }\n  }));\n});","define(\"settify-mvp/components/settify-immutable-list\", [\"exports\", \"@ember/component\", \"settify-mvp/mixins/settify-input-mixin\", \"settify-mvp/utils/is-empty-object-checker\", \"settify-mvp/helpers/get-answers-from\", \"settify-mvp/helpers/get-people-from-ids\"], function (_exports, _component, _settifyInputMixin, _isEmptyObjectChecker, _getAnswersFrom, _getPeopleFromIds) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\",0,\"settify-mvp/mixins/settify-input-mixin\",0,\"settify-mvp/utils/is-empty-object-checker\",0,\"settify-mvp/helpers/get-answers-from\",0,\"settify-mvp/helpers/get-people-from-ids\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend(_settifyInputMixin.default, {\n    init() {\n      this._super();\n      this.buildImmutableList();\n    },\n    buildImmutableList() {\n      // build the full list\n      const immutableList = [];\n      let sourceList = this.getSourceListAsArray();\n\n      // Remove any duplicates\n      sourceList = sourceList.filter((e, index, array) => {\n        return array.findIndex(t => t.id === e.id) === index;\n      });\n      for (let i = 0; i < sourceList.length; i++) {\n        const element = sourceList[i];\n        if (!(0, _isEmptyObjectChecker.default)(element)) {\n          immutableList.push(element);\n        }\n      }\n      this.set(\"immutableList\", immutableList);\n    },\n    getSourceListAsArray() {\n      const {\n        sourceList\n      } = this;\n      if (sourceList) {\n        if (typeof sourceList === \"string\") {\n          let answers = sourceList.split(/[\\s,;]+/).map(s => {\n            if (s.trim()) {\n              let answersFrom;\n              if (s.trim().split(\".\")[0] === \"model\") {\n                const idSections = s.trim().split(\".\").slice(1);\n                answersFrom = this.model;\n                if (answersFrom) {\n                  for (let i = 0; i < idSections.length; i++) {\n                    answersFrom = answersFrom[idSections[i]];\n                  }\n                  if (answersFrom) {\n                    answersFrom = answersFrom.map(ans => {\n                      return (0, _getPeopleFromIds.getPeopleFromIds)([ans], {\n                        clientRecord: this.clientRecord\n                      });\n                    });\n                  }\n                }\n              } else {\n                answersFrom = (0, _getAnswersFrom.getAnswersFrom)([], {\n                  client: this.clientRecord,\n                  induction: this.get(\"context.induction\"),\n                  chapter: this.get(\"context.chapter\"),\n                  page: this.get(\"context.page\"),\n                  repeatToken: this.get(\"context.repeat\"),\n                  create: null,\n                  answersLocation: s.trim(),\n                  loop: this.get(\"context.loop\")\n                });\n              }\n              return answersFrom;\n            }\n          });\n\n          // Flatten the array or arrays\n          answers = [].concat.apply([], answers);\n\n          // Filter out any falsey items or items without an id\n          return answers.filter(a => a && a.id);\n        }\n        return sourceList;\n      }\n    }\n  });\n});","define(\"settify-mvp/components/settify-input-button\", [\"exports\", \"@ember/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    actions: {\n      completeThisChapter() {\n        this.clientRecord.completeChapter(this.context.chapter);\n      }\n    }\n  });\n});","define(\"settify-mvp/components/settify-input-slider\", [\"exports\", \"@ember/template\", \"@ember/object\", \"@ember/runloop\", \"@ember/component\", \"settify-mvp/helpers/sentence-case\", \"uuid\"], function (_exports, _template, _object, _runloop, _component, _sentenceCase, _uuid) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template\",0,\"@ember/object\",0,\"@ember/runloop\",0,\"@ember/component\",0,\"settify-mvp/helpers/sentence-case\",0,\"uuid\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    sliderValue: 0,\n    maxValue: 1,\n    optionLabel: \"\",\n    optionIcon: \"\",\n    uniqID: null,\n    init() {\n      this._super(...arguments);\n      this.selectedOption = {};\n      this.set(\"uniqID\", (0, _uuid.v4)());\n      const localValues = this.parseSentenceCaseReferences(this.parseModelReferences(this.values));\n      const list = localValues || [];\n      this.set(\"maxValue\", list.length);\n      if (this.model) {\n        const index = list.map(v => v.id).indexOf(this.model);\n        this.set(\"sliderValue\", index);\n        this.set(\"selectedOption\", list[index]);\n      } else {\n        let defaultIndex = parseInt(this.defaultIndex);\n        if (!defaultIndex || isNaN(defaultIndex)) {\n          defaultIndex = 0;\n        }\n        if (list[defaultIndex]) {\n          (0, _runloop.next)(() => {\n            this.set(\"sliderValue\", defaultIndex + 1);\n          });\n        }\n      }\n    },\n    onSliderValueChange: (0, _object.observer)(\"sliderValue\", function () {\n      const index = Math.ceil(this.sliderValue) - 1;\n      const list = this.values;\n      this.set(\"model\", list[index].id);\n      this.set(\"selectedOption\", list[index]);\n      if (typeof this?.onChange === \"function\") {\n        this.onChange();\n      }\n    }),\n    rangeFill: (0, _object.computed)(\"maxValue\", \"sliderValue\", function () {\n      const amount = this.sliderValue;\n      const listLength = this.maxValue;\n      const rangePercentage = amount / listLength * 100;\n      return (0, _template.htmlSafe)(`background-size: ${isNaN(rangePercentage) ? 100 : rangePercentage}% 100%`);\n    }),\n    parseModelReferences(array) {\n      if (!array || !array.length) {\n        return [];\n      }\n      const isModelReferenceRegex = /model\\.[A-Za-z]+/g;\n      for (let i = 0; i < array.length; i++) {\n        const matches = [...array[i].title.matchAll(isModelReferenceRegex)];\n        matches.forEach(match => {\n          match = match[0];\n          const keyName = match.split(\".\")[1];\n          const actualValue = this.client.get(keyName);\n          array[i].title = array[i].title.replace(match, actualValue);\n        });\n      }\n      return array;\n    },\n    parseSentenceCaseReferences(array) {\n      if (!array || !array.length) {\n        return [];\n      }\n      const isModelReferenceRegex = /{{sentence-case ([A-Za-z]+)}}/g;\n      for (let i = 0; i < array.length; i++) {\n        const matches = [...array[i].title.matchAll(isModelReferenceRegex)];\n        matches.forEach(match => {\n          const toReplace = match[0];\n          const toSentenceCase = match[1];\n          array[i].title = array[i].title.replace(toReplace, (0, _sentenceCase.sentenceCase)([toSentenceCase]));\n        });\n      }\n      return array;\n    }\n  });\n});","define(\"settify-mvp/components/settify-input-switcher\", [\"exports\", \"@ember/object/computed\", \"@ember/template\", \"@ember/runloop\", \"@ember/object\", \"@ember/utils\", \"@ember/service\", \"@ember/component\", \"settify-mvp/helpers/possible-colon\", \"settify-mvp/helpers/get-answers-from\", \"settify-mvp/helpers/parse-text\", \"settify-mvp/mixins/question-types-mixin\", \"settify-mvp/mixins/mock-data\", \"settify-mvp/utils/is-empty-object-checker\"], function (_exports, _computed, _template, _runloop, _object, _utils, _service, _component, _possibleColon, _getAnswersFrom, _parseText, _questionTypesMixin, _mockData, _isEmptyObjectChecker) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object/computed\",0,\"@ember/template\",0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/utils\",0,\"@ember/service\",0,\"@ember/component\",0,\"settify-mvp/helpers/possible-colon\",0,\"settify-mvp/helpers/get-answers-from\",0,\"settify-mvp/helpers/parse-text\",0,\"settify-mvp/mixins/question-types-mixin\",0,\"settify-mvp/mixins/mock-data\",0,\"settify-mvp/utils/is-empty-object-checker\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend(_questionTypesMixin.default, _mockData.default, {\n    session: (0, _service.service)(\"session\"),\n    firm: (0, _service.service)(),\n    questionnaireLogic: (0, _service.service)(),\n    tagName: \"\",\n    lastSelectedOption: null,\n    previousShouldDisplay: null,\n    init() {\n      this._super(...arguments);\n      this.tempPeopleList = [{\n        id: \"abc11\",\n        firstName: \"Sam\",\n        surname: \"Smith\"\n      }, {\n        id: \"abc22\",\n        firstName: \"Alex\",\n        surname: \"Chan\"\n      }];\n      if (this.get(`model.${this.variableStorageName}-askcolleague`)) {\n        this.set(\"showAskOthers\", true);\n      }\n\n      // If this question has an alternate storage location, we need to update the model before instantiating empty arrays/objects at the questions answer key\n      const answersLocation = this.question?.answersLocation;\n      if (answersLocation) {\n        const answersLocationSplit = answersLocation.split(\".\");\n        if (answersLocationSplit.length === 2 || answersLocationSplit.length === 3) {\n          this.set(\"model\", (0, _getAnswersFrom.getAnswersFrom)([], {\n            create: true,\n            client: this.clientRecord,\n            induction: this.context?.induction || this.context?.inductionObject?.id,\n            chapter: answersLocationSplit[0],\n            page: answersLocationSplit[1],\n            repeatToken: this.context?.repeat\n          }));\n        } else if (answersLocationSplit.length > 3) {\n          this.set(\"answersLocationStorageOverride\", answersLocationSplit.pop());\n          this.set(\"model\", (0, _getAnswersFrom.getAnswersFrom)([], {\n            create: true,\n            client: this.clientRecord,\n            induction: this.context?.induction || this.context?.inductionObject?.id,\n            answersLocation: answersLocationSplit.join(\"\"),\n            repeatToken: this.context?.repeat\n          }));\n        }\n      }\n      if (this.model && !this.displayOnly && !this.documentsOnly) {\n        // Instantiate empty arrays/objects for the question if required\n        if (this.question?.type === \"address\" && (0, _utils.isNone)(this.get(`model.${this.variableStorageName}`))) {\n          (0, _object.set)(this.model, this.variableStorageName, {});\n        } else if ([\"list\", \"grid\"].includes(this.question?.type) && (0, _utils.isNone)(this.get(`model.${this.variableStorageName}`))) {\n          (0, _object.set)(this.model, this.variableStorageName, []);\n        } else if (this.question?.type === \"selectorcreate\" && this.question?.multipleSelections && (0, _utils.isNone)(this.get(`model.${this.variableStorageName}`))) {\n          (0, _object.set)(this.model, this.variableStorageName, []);\n        }\n        let def = this.question?.default;\n        if (def && (0, _utils.isNone)(this.get(`model.${this.variableStorageName}`))) {\n          const pt = _parseText.default.create();\n          def = pt.compute([def], {\n            clientRecord: this.clientRecord,\n            context: this.context,\n            blueprintMode: this.blueprintMode,\n            doNotWrap: true\n          });\n          if (def && def.string) {\n            (0, _object.set)(this.model, this.variableStorageName, def.string);\n          }\n        }\n      }\n      if (this.session?.isAuthenticated && this.session?.data?.authenticated?.adminUser) {\n        if (window.location.href && window.location.href.includes(\"/admin/config/editform\")) {\n          this.set(\"showAnswerToggles\", true);\n        }\n      }\n    },\n    reset() {\n      this.set(\"lastSelectedOption\", null);\n      this.set(\"previousShouldDisplay\", null);\n    },\n    onShowAskOthersChanged: (0, _object.observer)(\"showAskOthers\", function () {\n      if (!this.showAskOthers) {\n        this.set(`model.${this.variableStorageName}-askcolleague`, null);\n      }\n    }),\n    labelToDisplay: (0, _object.computed)(\"question.{title,shortTitle}\", \"displayOnly\", \"clientRecord.touch\", function () {\n      if (this.displayOnly) {\n        let retval = this.question?.shortTitle || this.question?.title || \"\";\n        retval += (0, _possibleColon.possibleColon)([], {\n          title: retval,\n          displayOnly: true\n        });\n        return retval;\n      }\n      return this.question?.title || \"\";\n    }),\n    variableStorageName: (0, _object.computed)(\"answersLocationStorageKeyOverride\", \"question.answersLocation.length\", \"question.{id,name,shortTitle,title}\", function () {\n      if (this.question?.answersLocation?.length) {\n        const storageLocation = this.answersLocationStorageKeyOverride;\n        if (storageLocation) {\n          return storageLocation;\n        }\n      }\n      return this.question?.id || this.question?.shortTitle || this.question?.title || this.question?.name;\n    }),\n    notSureVariableStorageName: (0, _object.computed)(\"variableStorageName\", \"question.notSureOptionLocationSuffix\", function () {\n      return `${this.variableStorageName}-${this.question?.notSureOptionLocationSuffix || \"notsure\"}`;\n    }),\n    headerLabelComputed: (0, _object.computed)(\"headerLabel\", \"question.noHeaderLabel\", function () {\n      let source = this.headerLabel;\n      if ([true, false].includes(source)) {\n        return source;\n      }\n      source = this.question?.noHeaderLabel;\n      if ([true, false].includes(source)) {\n        return !source;\n      }\n      return true;\n    }),\n    questionTypeString: (0, _object.computed)(\"question.type\", function () {\n      const type = this.question?.type;\n      return this.getQuestionTypeString(type);\n    }),\n    displayChanged: (0, _object.observer)(\"shouldDisplay\", function () {\n      if (this.shouldDisplay === this.previousShouldDisplay) {\n        return;\n      }\n      if (!this.question?.options || !this.question || !this.model) {\n        return;\n      }\n      let selectedOptions = [];\n      if (this.question?.type === \"checkbox\") {\n        const options = this.question?.options;\n        for (let i = 0; i < options.length; i++) {\n          const option = options[i];\n          if (this.model?.[option.id]) {\n            selectedOptions = [...selectedOptions, option];\n          }\n        }\n      } else {\n        const selectedOptionID = this.model?.[this.question?.id];\n        selectedOptions = [this.getSelectedOption(this.question, selectedOptionID)];\n      }\n      if (selectedOptions.length) {\n        const shouldSet = this.shouldDisplay;\n        for (let oIdx = 0; oIdx < selectedOptions.length; oIdx++) {\n          const o = selectedOptions[oIdx];\n          this.setOtherValue(o, shouldSet);\n        }\n      }\n      this.set(\"previousShouldDisplay\", this.shouldDisplay);\n    }),\n    getSelectedOption: function (question, optionID) {\n      if (question.type === \"yesno\") {\n        if (optionID === \"yes\") {\n          return question.onYes;\n        } else if (optionID === \"no\") {\n          return question.onNo;\n        } else if (optionID === \"notsure\") {\n          return question.onNotSure;\n        }\n      } else if (question.type === \"radio\" || question.type === \"select\") {\n        return question.options.find(option => option.id === optionID);\n      }\n    },\n    selectOptions: (0, _object.computed)(\"question.type\", \"question.options.[]\", function () {\n      if (this.question?.type === \"select\") {\n        return this.question.options.filter(option => !option.deleted);\n      }\n      return [];\n    }),\n    actions: {\n      changed() {\n        const args = arguments;\n        (0, _runloop.next)(() => {\n          if (this.isDestroyed || this.isDestroying) {\n            return;\n          }\n          if (this.question?.type === \"link\" && this.question?.toggleButton) {\n            this.set(`model.${this.variableStorageName}`, !this.get(`model.${this.variableStorageName}`));\n          }\n          if (this.question?.options && args && args.length) {\n            const selectedOption = args[0];\n            if (typeof selectedOption === \"object\" && selectedOption && !selectedOption.setAnotherQuestion) {\n              // do nothing (can't return since the .set at bottom of function)\n            } else if (this.question?.type === \"checkbox\") {\n              this.handleChangeCheckbox(this.model, selectedOption);\n            } else if (this.question?.type === \"radio\") {\n              this.handleChangeRadio(this.model, selectedOption);\n            } else if (this.question?.type === \"yesno\") {\n              this.handleChangeYesNo(this.model, selectedOption);\n            } else if (this.question?.type === \"select\") {\n              this.handleChangeSelect(this.model, selectedOption);\n            }\n          }\n          this.set(\"clientRecord.touch\", Date.now());\n        });\n      }\n    },\n    handleChangeCheckbox(model, selectedOption) {\n      if (model[selectedOption.id]) {\n        this.setOtherValue(selectedOption, true);\n      } else {\n        this.setOtherValue(selectedOption, false);\n      }\n    },\n    handleChangeSelect(model, selectedOption) {\n      // selectedOption is an id in this case, lets get the actual option\n      selectedOption = this.getSelectedOption(this.question, selectedOption);\n      if (selectedOption && model && model[this.question.id] === selectedOption.id) {\n        this.setOtherValue(selectedOption);\n      }\n    },\n    handleChangeRadio(model, selectedOption) {\n      if (selectedOption === undefined) {\n        // If the selectedOption is undefined, we have unselected an option\n        selectedOption = this.lastSelectedOption ? this.lastSelectedOption.id : null;\n      }\n      // selectedOption is an id in this case, lets get the actual option\n      selectedOption = this.getSelectedOption(this.question, selectedOption);\n      if (selectedOption && model && model[this.question.id] === selectedOption.id) {\n        this.setOtherValue(selectedOption, true);\n        this.set(\"lastSelectedOption\", selectedOption);\n      } else {\n        this.setOtherValue(selectedOption, false);\n      }\n    },\n    handleChangeYesNo(model, selectedOption) {\n      const optionWasSelected = model[this.question.id] === selectedOption;\n      // selectedOption is an id (yes, no, or notsure)\n      selectedOption = this.getSelectedOption(this.question, selectedOption);\n      this.setOtherValue(selectedOption, optionWasSelected);\n    },\n    getAsSpecialValue(value) {\n      // parses a string into useful types\n      if (value === \"null\") {\n        return null;\n      } else if (value === \"true\") {\n        return true;\n      } else if (value === \"false\") {\n        return false;\n      } else if (value === \"undefined\") {\n        return undefined;\n      }\n      return value;\n    },\n    setOtherValue(option, shouldSet = true) {\n      if (option && option.setAnotherQuestion) {\n        const client = this.clientRecord;\n        for (let i = 0; i < option.setValues.length; i++) {\n          const updateVar = option.setValues[i];\n          const valueToSet = this.getAsSpecialValue(shouldSet ? updateVar.valueToSet : updateVar.valueToUnset);\n          if (valueToSet && !valueToSet.length && typeof valueToSet === \"string\") {\n            // empty string = do not set value\n            continue;\n          }\n          // get full context variable name if not expressly specified\n          const {\n            context\n          } = this;\n          const inductionID = context.inductionObject ? context.inductionObject.id : context.induction;\n          let chapterID = context.chapterObject ? context.chapterObject.id : context.chapter;\n          let pageID = context.pageObject ? context.pageObject.id : context.page;\n          let questionID = \"\";\n          let subquestionID = \"\";\n          const segments = updateVar.variableToUpdate.split(\".\");\n          if (segments[0] === \"this\") {\n            (0, _object.set)(this.model, segments.slice(1).join(\".\"), valueToSet);\n            return;\n          }\n          if (segments.length > 2) {\n            chapterID = segments[0];\n            pageID = segments[1];\n            questionID = segments[2];\n            subquestionID = segments[3];\n          }\n          if (segments.length === 2) {\n            pageID = segments[0];\n            questionID = segments[1];\n          }\n          if (segments.length === 1) {\n            questionID = segments[0];\n          }\n          const currValue = client.getPreciseAnswer(inductionID, chapterID, pageID, questionID, subquestionID, context.repeat, {});\n          if ((0, _utils.isEmpty)(currValue) || !(0, _utils.isEmpty)(currValue) && updateVar.shouldOverrideValue) {\n            client.setPreciseAnswer(inductionID, chapterID, pageID, questionID, subquestionID, context.repeat, valueToSet);\n          }\n        }\n      }\n    },\n    noCheckboxesTicked: (0, _object.computed)(\"clientRecord.touch\", \"question.{options,type}\", function () {\n      if (this.question?.type !== \"checkbox\") {\n        return true;\n      }\n      const options = this.question?.options;\n      for (let index = 0; options && index < options.length; index++) {\n        const option = options[index];\n        const varname = option.id || option.title;\n        if (this.get(`model.${varname}`)) {\n          return false;\n        }\n      }\n      return options ? options.length : true;\n    }),\n    questionIsRequired: (0, _object.computed)(\"clientRecord\", \"context\", \"model\", \"question.{required,requiredIfLogic}\", function () {\n      const isRequired = this.question?.required;\n      const requiredIfLogic = this.question?.requiredIfLogic;\n      if (isRequired && requiredIfLogic && Object.keys(requiredIfLogic).length) {\n        return this.questionnaireLogic.computeDisplayIf({\n          displayIf: requiredIfLogic\n        }, this.clientRecord, this.context, this.model);\n      }\n      return isRequired;\n    }),\n    shouldDisplay: (0, _object.computed)(\"adminMode\", \"clientRecord.touch\", \"context.{chapter,induction,page,repeat}\", \"defaultHiddenOnBriefTypes\", \"displayOnly\", \"forceDisplay\", \"model\", \"question.{commentary,hideFromFirmIfFalsey,hideInClientSummary,id,includeInFirmSummary,includeInSummary,type}\", function () {\n      if (this.forceDisplay) {\n        return true;\n      }\n      if (this.question?.commentary && this.displayOnly) {\n        return false;\n      }\n      if (this.question?.hideInClientSummary && this.displayOnly) {\n        return false;\n      }\n      if (this.defaultHiddenOnBriefTypes.includes(this.question?.type)) {\n        if (this.adminMode) {\n          if (!this.question?.includeInFirmSummary) {\n            return false;\n          }\n        } else if (this.displayOnly && this.question?.commentary !== false && this.question?.includeInSummary !== true) {\n          return false;\n        }\n      }\n      if (this.question?.hideFromFirmIfFalsey && this.displayOnly && this.adminMode) {\n        const answers = this.clientRecord.getPreciseAnswer(this.context?.induction, this.context?.chapter, this.context?.page, this.question.id, null, this.context?.repeat);\n        if ((0, _utils.isEmpty)(answers) || (0, _isEmptyObjectChecker.default)(answers)) {\n          return false;\n        }\n      }\n      return this.questionnaireLogic.computeDisplayIf(this.question, this.clientRecord, this.context, this.model);\n    }),\n    filterType: (0, _computed.or)(\"filterTypeOverride\", \"question.filterType\"),\n    filterList: (0, _object.computed)(\"clientRecord.touch\", \"context.{chapter,induction,loop,page,repeat}\", \"filterListOverride\", \"question.filterList\", function () {\n      const override = this.filterListOverride;\n      if (override) {\n        return override;\n      }\n      const filterString = this.question?.filterList || \"\";\n      if (!filterString) {\n        return [];\n      }\n      const locations = filterString.split(\"\\n\").map(s => s.trim());\n      let retval = [];\n      locations.forEach(location => {\n        let answers = (0, _getAnswersFrom.getAnswersFrom)([], {\n          client: this.clientRecord,\n          induction: this.context?.induction,\n          chapter: this.context?.chapter,\n          page: this.context?.page,\n          repeatToken: this.context?.repeat,\n          create: true,\n          answersLocation: location,\n          loop: this.context?.loop\n        });\n        if (typeof answers === \"string\") {\n          answers = [{\n            id: answers\n          }];\n        } else if (!Array.isArray(answers)) {\n          answers = [answers];\n        }\n        const IDs = answers.map(obj => obj.id).filter(id => id && typeof id === \"string\");\n        retval = retval.concat(IDs);\n      });\n      return retval;\n    }),\n    yPosition: (0, _object.computed)(\"question.{styles,type}\", function () {\n      const styles = this.question?.styles || {};\n      let result = \"\";\n      if (styles.yPosition) {\n        result = `\"top: ${styles.yPosition}px; position: relative;\"`;\n      }\n      return (0, _template.htmlSafe)(result);\n    }),\n    inputStylingClasses: (0, _object.computed)(\"question.styles\", function () {\n      let classes = \"\";\n      const styles = this.question?.styles || {};\n      if (styles.center) {\n        classes += \"centertext \";\n      }\n      if (styles.removeLinebreak) {\n        classes += \"remove-margin \";\n      }\n      return classes;\n    }),\n    stylingClasses: (0, _object.computed)(\"question.{styles,boldText}\", function () {\n      let classes = \"\";\n      const styles = this.question?.styles || {};\n      if (styles.bold || this.question?.boldText) {\n        classes += \"bold \";\n      }\n      if (styles.italics) {\n        classes += \"italics \";\n      }\n      if (styles.bullet) {\n        classes += \"bullet \";\n      }\n      if (styles.indentation) {\n        classes += `indent-${styles.indentation} `;\n      }\n      if (styles.removeLinebreak) {\n        classes += \"remove-margin \";\n      }\n      if (styles.borderless) {\n        classes += \"border-none \";\n      }\n      return classes;\n    }),\n    isEmptyRequiredField: (0, _object.computed)(\"highlightRequiredFields\", \"model\", \"question.{options,required,type}\", \"required\", \"variableStorageName\", function () {\n      const highlightFields = this.highlightRequiredFields;\n      // Don't need to consider 'requiredFields' since it is passed in as required to the nested input-switchers\n      const required = this.question?.required || this.required;\n      if (required && highlightFields) {\n        if (this.question?.type === \"checkbox\") {\n          return this.question.options.every(option => {\n            return !this.model?.[option.id] && !this.model?.[option.title];\n          });\n        }\n        if ((0, _utils.isEmpty)(this.model?.[this.variableStorageName])) {\n          return true;\n        }\n      }\n      return false;\n    })\n  });\n});","define(\"settify-mvp/components/settify-name-input\", [\"exports\", \"@ember/runloop\", \"@ember/object\", \"@ember/utils\", \"@ember/service\", \"@ember/component\", \"settify-mvp/mixins/settify-input-mixin\", \"settify-mvp/mixins/gender-mixin\", \"settify-mvp/config/environment\"], function (_exports, _runloop, _object, _utils, _service, _component, _settifyInputMixin, _genderMixin, _environment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/utils\",0,\"@ember/service\",0,\"@ember/component\",0,\"settify-mvp/mixins/settify-input-mixin\",0,\"settify-mvp/mixins/gender-mixin\",0,\"settify-mvp/config/environment\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend(_settifyInputMixin.default, _genderMixin.default, {\n    lambda: (0, _service.inject)(),\n    tagName: \"\",\n    justUpdated: false,\n    showPronounOptions: false,\n    allowGenderPronouns: false,\n    init() {\n      this._super();\n      // If we have a name already, show the gender and pronoun text\n      this.set(\"showGenderAndPronounText\", this.name);\n      if (this.get(\"practiceAreaSettings.settings.induction.allowGenderPronouns\")) {\n        this.set(\"allowGenderPronouns\", true);\n        if (this.pronouns) {\n          // If we have a pronoun already set, set the selectedPronoun value correctly\n          if ([\"they/them\", \"he/him\", \"she/her\"].includes(this.pronouns)) {\n            this.set(\"selectedPronoun\", this.pronouns);\n          } else {\n            this.set(\"selectedPronoun\", \"another\");\n          }\n        }\n        // If the allowGender setting is falsey, show the pronoun options\n        if (!this.get(\"practiceAreaSettings.settings.induction.allowGender\")) {\n          this.set(\"showPronounOptions\", true);\n        }\n      }\n      if (!_environment.default.testing && this.get(\"practiceAreaSettings.settings.induction.allowGender\") && this.get(\"practiceAreaSettings.settings.induction.allowGenderGuess\")) {\n        if ((0, _utils.isNone)(this.gender) && this.name) {\n          this.checkName();\n        }\n      }\n    },\n    didReceiveAttrs() {\n      this._super(...arguments);\n      this.updateGender(this.gender);\n    },\n    onNameChanged: (0, _object.observer)(\"name\", function () {\n      this.set(\"gender\", \"\");\n      this.set(\"justUpdated\", false);\n      (0, _runloop.debounce)(this, \"checkName\", 750);\n    }),\n    onPronounSelected: (0, _object.observer)(\"selectedPronoun\", function () {\n      const selected = this.selectedPronoun;\n      if (selected !== \"another\") {\n        this.set(\"pronouns\", selected);\n      } else {\n        this.set(\"pronouns\", \"\");\n      }\n    }),\n    checkName() {\n      if (this.isDestroyed || this.isDestroying) {\n        return;\n      }\n      const {\n        name\n      } = this;\n      // If we have a name, and we are not guessing the gender, show the gender and pronoun text\n      this.set(\"showGenderAndPronounText\", !!name && !this.get(\"practiceAreaSettings.settings.induction.allowGenderGuess\"));\n      if (name && this.get(\"practiceAreaSettings.settings.induction.allowGenderGuess\")) {\n        const payload = {\n          name: name.trim()\n        };\n        this.lambda.invoke(this.get(\"lambda.nameCheckLambda\"), payload).then(this.lambda.processResponse).then(gender => {\n          if (gender && !this.isDestroyed && !this.isDestroying) {\n            this.set(\"gender\", gender);\n            this.set(\"justUpdated\", true);\n            if (!this.showGenderAndPronounText) {\n              // If we are not showing the gender and pronoun text, we should now that we guessed the gender\n              this.set(\"showGenderAndPronounText\", true);\n            }\n          }\n        });\n      }\n    },\n    genderChanged: (0, _object.observer)(\"gender\", function () {\n      this.invokeOnChangeCallback();\n    }),\n    actions: {\n      setGender(gender) {\n        this.set(\"gender\", gender);\n        this.set(\"justUpdated\", false);\n      },\n      toggleGender() {\n        if (this.gender === \"female\") {\n          this.set(\"gender\", \"male\");\n        } else if (this.gender !== \"male\") {\n          this.set(\"gender\", \"female\");\n        } else {\n          this.set(\"gender\", \"notspecified\");\n        }\n        this.set(\"justUpdated\", false);\n      },\n      removeGender() {\n        this.set(\"gender\", \"notspecified\");\n        this.set(\"justUpdated\", false);\n      },\n      togglePronounSelect() {\n        this.toggleProperty(\"showPronounOptions\");\n        if (!this.showPronounOptions) {\n          this.set(\"selectedPronoun\", null);\n          this.set(\"pronouns\", null);\n        }\n      }\n    }\n  });\n});","define(\"settify-mvp/components/settify-number\", [\"exports\", \"@ember/utils\", \"@ember/runloop\", \"@ember/object\", \"@ember/component\", \"settify-mvp/utils/clamp-value\", \"settify-mvp/mixins/settify-input-mixin\"], function (_exports, _utils, _runloop, _object, _component, _clampValue, _settifyInputMixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/utils\",0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/component\",0,\"settify-mvp/utils/clamp-value\",0,\"settify-mvp/mixins/settify-input-mixin\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend(_settifyInputMixin.default, {\n    classNames: [\"settify-number\"],\n    onMaxChanged: (0, _object.observer)(\"max\", function () {\n      this.handleValueChange();\n    }),\n    onMinChanged: (0, _object.observer)(\"min\", function () {\n      this.handleValueChange();\n    }),\n    inputEntered: (0, _object.computed)(\"model\", function () {\n      if (this.model || this.model === 0) {\n        return true;\n      }\n      return false;\n    }),\n    handleValueChange() {\n      (0, _runloop.once)(this, this.changeValue);\n    },\n    changeValue() {\n      let value = this.model;\n      if ((0, _utils.isNone)(value)) {\n        // do nothing\n      } else if (value === \"\") {\n        this.set(\"model\", undefined);\n      } else {\n        value = (0, _clampValue.default)(parseInt(value, 10), this.min, this.max, this.assumeTwoDigitYears);\n        this.set(\"model\", value);\n      }\n    },\n    actions: {\n      valueChanged() {\n        this.handleValueChange();\n      },\n      chooseRangeWarningSuggestion() {\n        this.set(\"model\", this.rangeWarningSuggestion);\n        this.set(\"rangeWarningSuggestion\", undefined);\n      }\n    }\n  });\n});","define(\"settify-mvp/components/settify-phonenumber\", [\"exports\", \"@ember/runloop\", \"@ember/object\", \"@ember/component\", \"settify-mvp/mixins/settify-input-mixin\"], function (_exports, _runloop, _object, _component, _settifyInputMixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/component\",0,\"settify-mvp/mixins/settify-input-mixin\"eaimeta@70e063a35619d71f\n  const toggleShowInvalidMessage = function () {\n    if (this.isDestroying || this.isDestroyed) {\n      return;\n    }\n    const m = this.model;\n    if (!m || typeof m !== \"string\") {\n      this.set(\"showInvalidMessage\", false);\n    } else if (!this.validPhoneNumber) {\n      this.set(\"showInvalidMessage\", true);\n    } else {\n      this.set(\"showInvalidMessage\", false);\n    }\n  };\n  var _default = _exports.default = _component.default.extend(_settifyInputMixin.default, {\n    mobileRegex: /^04[0-9]{8}$/,\n    internationalMobileRegex: /^[+]?614[0-9]{8}$/,\n    localLandlineRegex: /^[1-9][0-9]{7}$/,\n    areaCodeLandlineRegex: /^[(]?0[1-9][)]?[0-9]{8}$/,\n    internationalLandlineRegex: /^[+]?61[0-9]{9}$/,\n    canadianUSRegex: /^\\(?([0-9]{3})\\)?[-.]?([0-9]{3})[-.]?([0-9]{4})$/,\n    flexibleRegex: /^(([+][(]?[0-9]{1,3}[)]?)|([(]?[0-9]{4}[)]?))\\s*[)]?[-\\s.]?[(]?[0-9]{1,3}[)]?([-\\s.]?[0-9]{3})([-\\s.]?[0-9]{3,4})$/,\n    validPhoneNumber: false,\n    init() {\n      this._super(...arguments);\n      this.checkValidNumber();\n    },\n    isMobile(str) {\n      if (str.match(/^[+]?614/)) {\n        return true;\n      }\n      if (str.match(/^04/)) {\n        return true;\n      }\n    },\n    onModelChanged: (0, _object.observer)(\"model\", function () {\n      this.checkValidNumber();\n    }),\n    inputEntered: (0, _object.computed)(\"model\", function () {\n      return !!this.model;\n    }),\n    checkValidNumber() {\n      // strip whitespace from phone number\n      let m = this.model;\n      if (!m || typeof m !== \"string\") {\n        return true;\n      }\n      m = m.replace(/[\\s\\-.]/g, \"\");\n\n      // validate against a bunch of known formats\n      let valid = false;\n      if (this.flexibleRegex.test(m)) {\n        valid = true;\n      }\n      if (this.canadianUSRegex.test(m)) {\n        valid = true;\n      }\n      if (this.isMobile(m)) {\n        if (this.mobileRegex.test(m)) {\n          valid = true;\n        }\n        if (this.internationalMobileRegex.test(m)) {\n          valid = true;\n        }\n      } else {\n        if (this.localLandlineRegex.test(m)) {\n          valid = true;\n        }\n        if (this.areaCodeLandlineRegex.test(m)) {\n          valid = true;\n        }\n        if (this.internationalLandlineRegex.test(m)) {\n          valid = true;\n        }\n      }\n      this.set(\"validPhoneNumber\", valid);\n      if (valid) {\n        this.set(\"showInvalidMessage\", false);\n      } else {\n        (0, _runloop.debounce)(this, toggleShowInvalidMessage, 1250, false);\n      }\n    }\n  });\n});","define(\"settify-mvp/components/settify-region-overlay\", [\"exports\", \"@ember/service\", \"@ember/component\"], function (_exports, _service, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    config: (0, _service.inject)(\"dynamic-config\"),\n    init() {\n      this._super(...arguments);\n      this.regionsList = [{\n        id: \"anz\",\n        name: \"ANZ\",\n        URL: \"https://admin.app.settify.com.au\"\n      }, {\n        id: \"gb\",\n        name: \"UK\",\n        URL: \"https://admin.app.settify.co.uk\"\n      }, {\n        id: \"ca\",\n        name: \"Canada\",\n        URL: \"https://admin.app.settify.ca\"\n      }, {\n        id: \"usa\",\n        name: \"USA\",\n        URL: \"https://admin.app.settify.com\"\n      }];\n      this.iconMap = {\n        anz: \"fa-globe-asia\",\n        gb: \"fa-globe-europe\",\n        ca: \"fa-globe-americas\",\n        usa: \"fa-globe-americas\"\n      };\n      this._setActiveRegion();\n    },\n    _setActiveRegion: function () {\n      const {\n        regionsList\n      } = this;\n      let activeRegion = regionsList.find(r => r.id === this.get(\"config.settings.name\"));\n      if (!activeRegion) {\n        activeRegion = regionsList[0]; // if none, default to first\n      }\n      this.set(\"activeRegion\", activeRegion);\n    },\n    actions: {\n      openRegions() {\n        this.toggleProperty(\"showRegions\");\n      }\n    }\n  });\n});","define(\"settify-mvp/components/settify-select\", [\"exports\", \"@ember/template\", \"@ember/test-waiters\", \"@ember/runloop\", \"@ember/object\", \"@ember/component\", \"settify-mvp/mixins/settify-input-mixin\"], function (_exports, _template, _testWaiters, _runloop, _object, _component, _settifyInputMixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template\",0,\"@ember/test-waiters\",0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/component\",0,\"settify-mvp/mixins/settify-input-mixin\"eaimeta@70e063a35619d71f\n  const waiter = (0, _testWaiters.buildWaiter)(\"select-waiter\");\n  var _default = _exports.default = _component.default.extend(_settifyInputMixin.default, {\n    content: null,\n    // passed in\n    prompt: \"-- select --\",\n    // passed in\n    valuePath: null,\n    labelPath: null,\n    isOpen: false,\n    minimiseLabel: false,\n    valueSelected: null,\n    currentHoverIndex: 0,\n    init() {\n      this._super(...arguments);\n      // if there is something in the model already, set it to the component\n      // if (!Ember.isNone(this.get('model'))) {    // one of our values might legitimately be 'null', in which case we still want to show it selected\n      let {\n        model\n      } = this;\n      const numberVal = this.filterInt(this.model);\n      if (!isNaN(numberVal)) {\n        model = numberVal;\n      }\n      for (let i = 0; this?.content && i < this.content.length; i++) {\n        const element = this.content[i];\n        if (element[this.valuePath || \"value\"] === model || parseInt(element[this.valuePath || \"value\"]) === parseInt(model)) {\n          this.set(\"valueSelected\", element[this.labelPath || \"label\"]);\n          this.set(\"currentHoverIndex\", i);\n          this.set(\"minimiseLabel\", true);\n          break;\n        }\n      }\n      // }\n    },\n    currentHoverItem: (0, _object.computed)(\"currentHoverIndex\", \"content\", function () {\n      const {\n        content\n      } = this;\n      const index = this.currentHoverIndex;\n      if (content && content.length && typeof index === \"number\" && index >= 0 && index < content.length) {\n        return content[index];\n      }\n      return null;\n    }),\n    ensureVisible(index) {\n      if (this.isOpen) {\n        // ensure it's visible\n        const container = this.element.querySelector(\"ul.options\");\n        if (container) {\n          const selected = this.element.querySelector(`li#option-${index}`);\n          if (selected) {\n            container.animate({\n              scrollTop: selected.getBoundingClientRect().top - container.getBoundingClientRect().top + container.scrollTop\n            }, {\n              duration: 200\n            });\n          }\n        }\n      }\n    },\n    // didUpdate() {\n    //   let clickHandler = this.handleOutsideClick.bind(this);\n    //   Ember.$(document).off('click', Ember.run.cancel(this, clickHandler));\n    //   return Ember.$(document).on('click', clickHandler);\n    // },\n\n    // willDestroyElement() {\n    //   let clickHandler = this.handleOutsideClick.bind(this);\n    //   return Ember.$(document).off('click', Ember.run.cancel(this, clickHandler));\n    // },\n\n    mouseDown() {\n      // mouseDown runs before focusIn and click, so if element is clicked we set clickOpen to true so focusIn knows it doesnt need to open it too.\n      this.set(\"clickOpen\", true);\n      (0, _runloop.later)(() => {\n        if (!this.isDestroyed && !this.isDestroying) {\n          if (this.clickOpen) {\n            // set back to false if click is held but not released on element\n            this.set(\"clickOpen\", false);\n          }\n        }\n      }, 220);\n    },\n    click() {\n      this.toggleProperty(\"isOpen\");\n      (0, _runloop.later)(() => {\n        if (!this.isDestroyed && !this.isDestroying) {\n          this.set(\"clickOpen\", false);\n        }\n      }, 100);\n    },\n    focusIn() {\n      // console.log('focus');\n      if (!this.clickOpen) {\n        this.set(\"isOpen\", true);\n      }\n      this.set(\"optionFocusComplete\", false);\n      const waitToken = waiter.beginAsync(); // wait token for optionFocusComplete\n      (0, _runloop.later)(() => {\n        if (!this.isDestroyed && !this.isDestroying) {\n          this.ensureVisible(this.currentHoverIndex);\n          this.set(\"optionFocusComplete\", true);\n          waiter.endAsync(waitToken);\n        }\n      }, 150);\n    },\n    focusOut() {\n      // console.log('blur');\n      this.set(\"optionBlurComplete\", false);\n      const waitToken = waiter.beginAsync(); // wait token for optionBlurComplete\n      (0, _runloop.later)(() => {\n        if (this.clickHeld) {\n          // mouse button is still held down, dont set isOpen to false yet\n          this.focusOut();\n        } else if (this && !this.isDestroyed && !this.isDestroying) {\n          this.set(\"isOpen\", false);\n          this.set(\"optionBlurComplete\", true);\n          waiter.endAsync(waitToken);\n        }\n      }, 180);\n    },\n    reset() {\n      this.set(\"isOpen\", false);\n      this.set(\"minimiseLabel\", false);\n      this.set(\"valueSelected\", null);\n    },\n    filterInt(value) {\n      if (/^(-|\\+)?([0-9]+|Infinity)$/.test(value)) {\n        return Number(value);\n      }\n      return NaN;\n    },\n    // handleOutsideClick(event) {\n    //   if (this.element && !this.element.contains(event.target) && this.get('isOpen')) {\n    //     this.send('toggleDropdown');\n    //   }\n    // },\n\n    dropdownHeight: (0, _object.computed)(\"content.length\", \"isOpen\", function () {\n      let height = 0;\n      if (this.isOpen) {\n        height = this.content.length * 32;\n        // return Ember.String.htmlSafe(`height:${height}px;`);\n        return (0, _template.htmlSafe)(`height:auto;`);\n      }\n      return (0, _template.htmlSafe)(`height:${height}px;`);\n    }),\n    modelForDisplay: (0, _object.computed)(\"content.length\", \"disabled\", \"displayOnly\", \"labelPath\", \"model\", \"valuePath\", function () {\n      if (this.displayOnly || this.disabled) {\n        for (let i = 0; this?.model && this?.valuePath && this?.labelPath && this?.content?.length && i < this.content.length; i++) {\n          if (this.content[i][this.valuePath] === this.model) {\n            return this.content[i][this.labelPath];\n          }\n        }\n      }\n      return null;\n    }),\n    selectedValueChanged: (0, _object.observer)(\"model\", \"content\", function () {\n      for (let i = 0; i < this.content.length; i++) {\n        if (this.content[i][this.valuePath] === this.model) {\n          this.send(\"selectItem\", this.content[i], i);\n          return;\n        }\n      }\n\n      // No content fits the model selected, so clear everything\n      this.set(\"valueSelected\", undefined);\n      this.set(\"model\", undefined);\n    }),\n    actions: {\n      optionSelected(value) {\n        const numberVal = this.filterInt(value);\n        if (!isNaN(numberVal)) {\n          this.set(\"model\", numberVal);\n        } else {\n          this.set(\"model\", value);\n        }\n      },\n      selectItem(item, index) {\n        const value = this.valuePath;\n        const label = this.labelPath;\n        if (this.valueSelected) {\n          this.set(\"fadeSelected\", true);\n        }\n        this.set(\"minimiseLabel\", true);\n        if (item) {\n          this.send(\"optionSelected\", item[value]);\n        } else {\n          this.send(\"optionSelected\", item);\n        }\n        // this.set('isOpen', false);\n        this.set(\"selectItemComplete\", false);\n        const waitToken = waiter.beginAsync(); // wait token for selectItemComplete\n        (0, _runloop.later)(() => {\n          if (!this.isDestroyed && !this.isDestroying) {\n            this.set(\"isOpen\", false);\n            if (item) {\n              this.set(\"valueSelected\", item[label]);\n            } else {\n              this.set(\"valueSelected\", this.prompt);\n            }\n            this.set(\"currentHoverIndex\", index);\n            this.set(\"fadeSelected\", false);\n            this.element.querySelector(\".settify-select\")?.blur();\n            this.set(\"selectItemComplete\", true);\n            waiter.endAsync(waitToken);\n            // some browsers wont register the handleOptionBlur if an input is selected\n          }\n        }, 100);\n      },\n      handleKeyPress(event) {\n        // console.log(item);\n        if (event.key === \"ArrowUp\" || event.code === \"ArrowUp\") {\n          // select upwards\n          let newHoverIndex = this.currentHoverIndex - 1;\n          if (newHoverIndex < 0) {\n            newHoverIndex = this.get(\"content.length\") - 1;\n          }\n          this.set(\"currentHoverIndex\", newHoverIndex);\n          this.ensureVisible(newHoverIndex);\n          return false;\n        } else if (event.key === \"ArrowDown\" || event.code === \"ArrowDown\") {\n          // select downwards\n          let newHoverIndex = this.currentHoverIndex + 1;\n          if (newHoverIndex >= this.get(\"content.length\")) {\n            newHoverIndex = 0;\n          }\n          this.set(\"currentHoverIndex\", newHoverIndex);\n          this.ensureVisible(newHoverIndex);\n          return false;\n        } else if (event.key === \" \" || event.code === \"Space\" || event.key === \"Enter\" || event.keyCode === 13) {\n          this.send(\"selectItem\", this.currentHoverItem, this.currentHoverIndex);\n          const inputs = Array.from(this.element.querySelectorAll(\"input, .settify-select\"));\n          const nextInput = inputs[inputs.indexOf(this.element.querySelectorAll(\"label.settify-select\")) + 1];\n          if (nextInput) {\n            (0, _runloop.later)(() => {\n              nextInput.focus();\n            }, 150);\n          }\n          return false;\n        }\n      },\n      clickedOption() {\n        this.set(\"clickHeld\", true);\n      },\n      releasedOption() {\n        this.set(\"clickHeld\", false);\n      }\n    }\n  });\n});","define(\"settify-mvp/components/settify-summary-table\", [\"exports\", \"@ember/utils\", \"@ember/component\", \"settify-mvp/helpers/parse-text\", \"settify-mvp/helpers/get-answers-from\", \"@ember/template\", \"@ember/service\"], function (_exports, _utils, _component, _parseText, _getAnswersFrom, _template, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/utils\",0,\"@ember/component\",0,\"settify-mvp/helpers/parse-text\",0,\"settify-mvp/helpers/get-answers-from\",0,\"@ember/template\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  const totalRowRegex = /^{?\\s*(sum|diff)\\s+([A-Za-z\\s,;]*)\\s*(\\|.*?)?}?$/;\n  var _default = _exports.default = _component.default.extend({\n    questionnaireLogic: (0, _service.service)(),\n    init() {\n      this._super(...arguments);\n      const tableAsArray = this.buildTableAsArray();\n      this.set(\"table\", tableAsArray);\n      const colGroupAsArray = this.generateColGroup();\n      this.set(\"colGroup\", colGroupAsArray);\n    },\n    buildTableAsArray() {\n      const definition = this.question;\n      const headingRow = this.generateHeadingRow(definition.columns);\n      let tableArray = [headingRow]; // The first row of the table is the 'heading' row, e.g the column definitions\n\n      for (let rowIdx = 0; rowIdx < definition.rows.length; rowIdx++) {\n        const row = definition.rows[rowIdx];\n        if (row.sourceData && !row.totalRow) {\n          const data = this.getSourceDataForRow(row);\n          const outputRows = this.parseRows(data, row, definition.columns);\n          if (!(0, _utils.isNone)(outputRows) && !(0, _utils.isEmpty)(outputRows)) {\n            tableArray = tableArray.concat(outputRows);\n          }\n        } else {\n          // Its a calculated row\n          const outputRow = this.parseCalculatedRow(tableArray, row, definition.columns);\n          if (!(0, _utils.isNone)(outputRow) && !(0, _utils.isEmpty)(outputRow)) {\n            tableArray.push(outputRow);\n          }\n        }\n      }\n      return tableArray;\n    },\n    generateHeadingRow(columns) {\n      const pt = _parseText.default.create();\n      const mappedColumns = columns.filter(col => !col.deleted).map(col => {\n        return {\n          colID: col.id,\n          colSpan: col.spanWidth,\n          rowID: \"headings\",\n          value: pt.compute([col.value], {\n            clientRecord: this.clientRecord,\n            context: this.context,\n            blueprintMode: this.blueprintMode,\n            doNotWrap: true\n          }),\n          stylesLine: this.generateStyleLine(col),\n          displayIf: col.displayIf\n        };\n      });\n      let headingStyles = \"\";\n      // value is SafeString so need to call toString to get real value\n      if (mappedColumns.every(col => col.value && !col.value.toString())) {\n        headingStyles = \"no-border\";\n      }\n      return {\n        columns: mappedColumns,\n        styles: headingStyles\n      };\n    },\n    generateColGroup() {\n      const columns = this.get(\"question.columns\");\n      const fractionWidth = 100 / columns.reduce((total, current) => total + (+current.width || 2), 0);\n      const mappedColGroup = columns.filter(col => !col.deleted).map(col => ({\n        width: col.width * fractionWidth,\n        displayIf: col.displayIf\n      }));\n      return mappedColGroup;\n    },\n    generateRowStylingClasses(row) {\n      let stylingClasses = \"\";\n      if (!row || !row.styles) {\n        return stylingClasses;\n      }\n      if (row.styles.bold) {\n        stylingClasses += \"bold \";\n      }\n      if (row.styles.filledBG) {\n        stylingClasses += \"filled-bg \";\n      }\n      if (row.styles.paddingBelow) {\n        stylingClasses += \"padding-below \";\n      }\n      if (row.styles.noBorder) {\n        stylingClasses += \"no-border \";\n      }\n      return stylingClasses;\n    },\n    generateStyleLine(col) {\n      let retval = \"\";\n      if (col.textAlign) {\n        retval += `text-align: ${col.textAlign}; `;\n      }\n      return retval;\n    },\n    getSourceDataForRow(row) {\n      const {\n        context\n      } = this;\n      let data = [];\n      const sourceDataAsArray = row.sourceData.split(/[\\s,;]+/);\n      for (let sourceDataIdx = 0; sourceDataIdx < sourceDataAsArray.length; sourceDataIdx++) {\n        const answers = (0, _getAnswersFrom.getAnswersFrom)([], {\n          client: this.clientRecord,\n          induction: context.induction,\n          chapter: context.chapter,\n          page: context.page,\n          repeatToken: context.repeat,\n          create: null,\n          answersLocation: sourceDataAsArray[sourceDataIdx].trim(),\n          loop: context.loop\n        });\n        data.push(answers);\n      }\n      data = data.reduce((acc, curr) => acc.concat(curr), []); // Flatten it, so if a data pointed to a list of questions, each element in the list is its own row\n      return data;\n    },\n    parseRows(data, row, columns) {\n      if (row.deleted) {\n        return;\n      }\n      const rows = [];\n      for (let dataIdx = 0; dataIdx < data.length; dataIdx++) {\n        const stylingClasses = this.generateRowStylingClasses(row);\n        const outputRow = {\n          styles: stylingClasses,\n          columns: []\n        };\n        const localData = data[dataIdx];\n        localData.sourceIndex = dataIdx; // HACK: Add the index of this row (as a string for parseText) in the sourceData into the localData, which allows us to reference it in the table as {model.sourceIndex}\n\n        const shouldDisplayRow = this.questionnaireLogic.computeDisplayIf(row, this.clientRecord, this.context, localData);\n        if (!shouldDisplayRow) {\n          continue; // Don't add this row to the output, its display-if is false\n        }\n        // ASSUMPTION: The columns array in the question, is the same length as the columns array for the row\n        for (let columnIdx = 0; columnIdx < row.columns.length; columnIdx++) {\n          const column = row.columns[columnIdx];\n          const pt = _parseText.default.create();\n          const parsedValue = pt.compute([column.value], {\n            clientRecord: this.clientRecord,\n            context: this.context,\n            blueprintMode: this.blueprintMode,\n            model: localData,\n            doNotWrap: true\n          });\n          if (!columns[columnIdx].deleted) {\n            outputRow.columns.push({\n              rowID: row.id,\n              colID: columns[columnIdx].id,\n              value: parsedValue,\n              displayIf: columns[columnIdx].displayIf\n            });\n          }\n        }\n        outputRow.displayOnceTrigger = !(dataIdx > 0 && row.firstColumnIsHeader);\n        rows.push(outputRow);\n      }\n      return rows;\n    },\n    parseCalculatedRow(data, row, columns) {\n      if (row.deleted) {\n        return;\n      }\n      const shouldDisplayRow = this.questionnaireLogic.computeDisplayIf(row, this.clientRecord, this.context);\n      if (!shouldDisplayRow) {\n        return; // Don't add this row to the output, its display-if is false\n      }\n      const stylingClasses = this.generateRowStylingClasses(row);\n      const outputRow = {\n        styles: stylingClasses,\n        columns: []\n      };\n      // ASSUMPTION: The columns array in the question, is the same length as the columns array for the row\n      for (let colIdx = 0; colIdx < row.columns.length; colIdx++) {\n        const column = row.columns[colIdx];\n        if (!column || !column.value) {\n          // The column was not defined properly\n          outputRow.columns.push({\n            rowID: row.id,\n            colID: columns[colIdx].id,\n            value: \"\",\n            displayIf: columns[colIdx].displayIf\n          });\n          continue;\n        }\n        if (columns[colIdx].deleted) {\n          continue;\n        }\n        if (column.value.match(totalRowRegex)) {\n          // We have to perform some sort of calculation\n          const [, operator, values, filters] = column.value.match(totalRowRegex);\n          let operatorFunction;\n          const rowIDs = values.split(/[\\s,;]+/);\n\n          // Get all data at the same index as the sum|diff\n          let valuesToCalculate = data.map(d => d.columns[colIdx]).filter(r => {\n            // return all remaining rows that have an ID that is within the rowIDs array\n            return rowIDs.includes(r.rowID);\n          });\n          let initialValue = 0;\n          let valuesToDiff = [];\n          if (operator === \"diff\") {\n            // If we have a diff, get all the 'first rows specific' and sum them, then diff the rest\n            valuesToDiff = valuesToCalculate.filter(r => rowIDs[0] === r.rowID);\n            valuesToCalculate = valuesToCalculate.filter(r => rowIDs[0] !== r.rowID);\n            if (valuesToDiff.length) {\n              operatorFunction = this.operatorFunctionFactory(\"sum\");\n              initialValue = this.calculateValue(valuesToDiff, 0, operatorFunction);\n            }\n          }\n          operatorFunction = this.operatorFunctionFactory(operator);\n          // Convert all values to numbers and then call the operatorFunction on those values\n          let calculatedValue = this.calculateValue(valuesToCalculate, initialValue, operatorFunction);\n          if (filters) {\n            const pt = _parseText.default.create();\n            calculatedValue = pt.compute([`{${calculatedValue} ${filters}}`], {\n              clientRecord: this.clientRecord,\n              context: this.context,\n              blueprintMode: this.blueprintMode,\n              doNotWrap: true\n            });\n          }\n          outputRow.columns.push({\n            rowID: row.id,\n            colID: columns[colIdx].id,\n            colSpan: column.spanWidth,\n            value: calculatedValue,\n            stylesLine: this.generateStyleLine(columns[colIdx]),\n            displayIf: columns[colIdx].displayIf\n          });\n        } else {\n          const pt = _parseText.default.create();\n          const parsedValue = pt.compute([column.value], {\n            clientRecord: this.clientRecord,\n            context: this.context,\n            blueprintMode: this.blueprintMode,\n            doNotWrap: true\n          });\n          outputRow.columns.push({\n            rowID: row.id,\n            colID: columns[colIdx].id,\n            colSpan: column.spanWidth,\n            value: (0, _template.isHTMLSafe)(parsedValue) ? parsedValue.toString() : parsedValue,\n            stylesLine: this.generateStyleLine(columns[colIdx]),\n            displayIf: columns[colIdx].displayIf\n          });\n        }\n      }\n      return outputRow;\n    },\n    calculateValue(rows, startingValue, operatorFunction) {\n      return rows.map(r => this.parseRowValue(r.value)).reduce(operatorFunction, startingValue);\n    },\n    parseRowValue(value) {\n      if (!value) return 0;\n      const stringValue = (0, _template.isHTMLSafe)(value) ? value.toString() : String(value);\n      return parseFloat(stringValue.replace(/[£$,]/g, \"\")) || 0;\n    },\n    operatorFunctionFactory(type) {\n      if (type === \"sum\") {\n        return function (acc, curr) {\n          return acc + curr;\n        };\n      } else if (type === \"diff\") {\n        return function (acc, curr) {\n          return acc - curr;\n        };\n      }\n    }\n  });\n});","define(\"settify-mvp/components/settify-textarea\", [\"exports\", \"@ember/component\", \"@ember/object\", \"settify-mvp/mixins/settify-input-mixin\", \"@ember/template-factory\"], function (_exports, _component, _object, _settifyInputMixin, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/component\",0,\"settify-mvp/mixins/settify-input-mixin\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @displayOnly}}\n    <div class=\"readonly-textarea settify-sensitive\">\n      {{#if (non-empty-string @label)}}\n        {{@label}}<br />\n      {{else if (has-block)}}\n        {{yield}}<br />\n      {{/if}}\n      {{#if @model}}\n        <span>{{@model}}</span>\n      {{else if @notSureModel}}\n        Not sure\n      {{else if (and @displayPlaceholderInSummary @placeholder)}}\n        {{@placeholder}}\n      {{else}}\n        <NoInformation />\n        {{#if @required}}\n          <RequiredField />\n        {{/if}}\n      {{/if}}\n      <br />\n    </div>\n  {{else}}\n    {{#if @headerLabel}}\n      {{! headerLabel will place either label or yield on top of input rather than within}}\n      {{#if (non-empty-string @label)}}\n        {{@label}}\n      {{else if (has-block)}}\n        {{yield}}\n      {{/if}}\n      {{#if @required}}\n        <span class=\"required-field-marker {{if @model 'required-field-provided'}}\"></span>\n      {{/if}}\n      <HelpTextIcon @helpText={{@helpText}} @lawyerName={{@clientRecord.helpTextIconLawyerName}} />\n    {{/if}}\n    <LiquidIf @predicate={{or (not @notSureModel) @notSureOptionDoesNotHideComponent}}>\n      <div class=\"settify-textarea-container settify-sensitive\" style={{if @noTopGap '\"padding-top: 10px;\"'}}>\n        <div class=\"settify-textarea\">\n          <Textarea\n            class=\"form-control {{this.class}} {{if (and @required (not @model)) 'can-highlight'}}\"\n            @value={{@model}}\n            name={{or @label @placeholder}}\n            rows={{this.rows}}\n            placeholder=\"\"\n            disabled={{@disabled}}\n            readonly={{@readonly}}\n            maxlength={{this.max}}\n            autocomplete={{this.autoCompleteValue}}\n          />\n          <label class=\"settify-input-label {{if this.inputEntered 'valid'}} {{if (and this.inputEntered @placeholder (or @headerLabel (not @label))) 'fade'}}\">\n  \n            {{#if (and @label (not @headerLabel))}}\n              {{@label}}\n            {{else if (and (has-block) (not @headerLabel))}}\n              {{yield}}\n            {{else if @placeholder}}\n              <span class={{if (and this.inputEntered (not @required)) \"fade\"}}>{{@placeholder}}</span>\n            {{/if}}\n  \n            {{#if (and @required (not @headerLabel))}}\n              <span class=\"required-field-marker {{if @model 'required-field-provided'}}\"></span>\n            {{/if}}\n  \n            {{#if (and @placeholder (or @label (has-block)) (not @headerLabel))}}\n              <span class=\"placeholder {{if this.inputEntered 'fade'}}\">{{@placeholder}}</span>\n            {{/if}}\n          </label>\n        </div>\n      </div>\n      <LiquidIf @predicate={{lt this.charactersRemaining 100}}>\n        <p><small>{{this.charactersRemaining}} characters remaining</small></p>\n      </LiquidIf>\n    </LiquidIf>\n    <LiquidIf @predicate={{and @notSureOption (not @model)}}>\n      <CheckBox @text={{or @notSureOptionText \"I'm not sure\"}} @model={{@notSureModel}} @onChange={{@onChange}} />\n    </LiquidIf>\n  {{/if}}\n  */\n  {\n    \"id\": \"SJWbpDxP\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"readonly-textarea settify-sensitive\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,2],[[30,2]],null],[[[1,\\\"      \\\"],[1,[30,2]],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[48,[30,18]],[[[1,\\\"      \\\"],[18,18,null],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n    \\\"]],[]],null]],[]]],[41,[30,3],[[[1,\\\"      \\\"],[10,1],[12],[1,[30,3]],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,4],[[[1,\\\"      Not sure\\\\n\\\"]],[]],[[[41,[28,[37,7],[[30,5],[30,6]],null],[[[1,\\\"      \\\"],[1,[30,6]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[39,8],null,null,null],[1,\\\"\\\\n\\\"],[41,[30,7],[[[1,\\\"        \\\"],[8,[39,9],null,null,null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"]],[]]]],[]]]],[]]],[1,\\\"    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,8],[[[41,[28,[37,2],[[30,2]],null],[[[1,\\\"      \\\"],[1,[30,2]],[1,\\\"\\\\n\\\"]],[]],[[[41,[48,[30,18]],[[[1,\\\"      \\\"],[18,18,null],[1,\\\"\\\\n    \\\"]],[]],null]],[]]],[41,[30,7],[[[1,\\\"      \\\"],[10,1],[15,0,[29,[\\\"required-field-marker \\\",[52,[30,3],\\\"required-field-provided\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[8,[39,10],null,[[\\\"@helpText\\\",\\\"@lawyerName\\\"],[[30,9],[30,10,[\\\"helpTextIconLawyerName\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[8,[39,11],null,[[\\\"@predicate\\\"],[[28,[37,12],[[28,[37,13],[[30,4]],null],[30,11]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-textarea-container settify-sensitive\\\"],[15,5,[52,[30,12],\\\"\\\\\\\"padding-top: 10px;\\\\\\\"\\\"]],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"settify-textarea\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,14],[[16,0,[29,[\\\"form-control \\\",[30,0,[\\\"class\\\"]],\\\" \\\",[52,[28,[37,7],[[30,7],[28,[37,13],[[30,3]],null]],null],\\\"can-highlight\\\"]]]],[16,3,[28,[37,12],[[30,2],[30,6]],null]],[16,\\\"rows\\\",[30,0,[\\\"rows\\\"]]],[24,\\\"placeholder\\\",\\\"\\\"],[16,\\\"disabled\\\",[30,13]],[16,\\\"readonly\\\",[30,14]],[16,\\\"maxlength\\\",[30,0,[\\\"max\\\"]]],[16,\\\"autocomplete\\\",[30,0,[\\\"autoCompleteValue\\\"]]]],[[\\\"@value\\\"],[[30,3]]],null],[1,\\\"        \\\"],[10,\\\"label\\\"],[15,0,[29,[\\\"settify-input-label \\\",[52,[30,0,[\\\"inputEntered\\\"]],\\\"valid\\\"],\\\" \\\",[52,[28,[37,7],[[30,0,[\\\"inputEntered\\\"]],[30,6],[28,[37,12],[[30,8],[28,[37,13],[[30,2]],null]],null]],null],\\\"fade\\\"]]]],[12],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,7],[[30,2],[28,[37,13],[[30,8]],null]],null],[[[1,\\\"            \\\"],[1,[30,2]],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,7],[[48,[30,18]],[28,[37,13],[[30,8]],null]],null],[[[1,\\\"            \\\"],[18,18,null],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,6],[[[1,\\\"            \\\"],[10,1],[15,0,[52,[28,[37,7],[[30,0,[\\\"inputEntered\\\"]],[28,[37,13],[[30,7]],null]],null],\\\"fade\\\"]],[12],[1,[30,6]],[13],[1,\\\"\\\\n          \\\"]],[]],null]],[]]]],[]]],[1,\\\"\\\\n\\\"],[41,[28,[37,7],[[30,7],[28,[37,13],[[30,8]],null]],null],[[[1,\\\"            \\\"],[10,1],[15,0,[29,[\\\"required-field-marker \\\",[52,[30,3],\\\"required-field-provided\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,7],[[30,6],[28,[37,12],[[30,2],[48,[30,18]]],null],[28,[37,13],[[30,8]],null]],null],[[[1,\\\"            \\\"],[10,1],[15,0,[29,[\\\"placeholder \\\",[52,[30,0,[\\\"inputEntered\\\"]],\\\"fade\\\"]]]],[12],[1,[30,6]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,11],null,[[\\\"@predicate\\\"],[[28,[37,16],[[30,0,[\\\"charactersRemaining\\\"]],100],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[1,[30,0,[\\\"charactersRemaining\\\"]]],[1,\\\" characters remaining\\\"],[13],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[39,11],null,[[\\\"@predicate\\\"],[[28,[37,7],[[30,15],[28,[37,13],[[30,3]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[39,19],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@onChange\\\"],[[28,[37,12],[[30,16],\\\"I'm not sure\\\"],null],[30,4],[30,17]]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]],[\\\"@displayOnly\\\",\\\"@label\\\",\\\"@model\\\",\\\"@notSureModel\\\",\\\"@displayPlaceholderInSummary\\\",\\\"@placeholder\\\",\\\"@required\\\",\\\"@headerLabel\\\",\\\"@helpText\\\",\\\"@clientRecord\\\",\\\"@notSureOptionDoesNotHideComponent\\\",\\\"@noTopGap\\\",\\\"@disabled\\\",\\\"@readonly\\\",\\\"@notSureOption\\\",\\\"@notSureOptionText\\\",\\\"@onChange\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"non-empty-string\\\",\\\"br\\\",\\\"has-block\\\",\\\"yield\\\",\\\"span\\\",\\\"and\\\",\\\"no-information\\\",\\\"required-field\\\",\\\"help-text-icon\\\",\\\"liquid-if\\\",\\\"or\\\",\\\"not\\\",\\\"textarea\\\",\\\"label\\\",\\\"lt\\\",\\\"p\\\",\\\"small\\\",\\\"check-box\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/settify-textarea.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend(_settifyInputMixin.default, {\n    init() {\n      this._super(...arguments);\n      if (!this.rows) {\n        this.set(\"rows\", 4);\n      }\n      if (!this.max) {\n        this.set(\"max\", 1024);\n      }\n      if (!this.class) {\n        this.set(\"class\", \"\");\n      }\n    },\n    charactersRemaining: (0, _object.computed)(\"max\", \"model.length\", function () {\n      if (this.model) {\n        return this.max - this.model.length;\n      }\n      return this.max;\n    }),\n    inputEntered: (0, _object.computed)(\"model\", function () {\n      return !!this.model;\n    })\n  }));\n});","define(\"settify-mvp/components/settify-textline\", [\"exports\", \"@ember/component\", \"@ember/object\", \"settify-mvp/mixins/settify-input-mixin\", \"@ember/template-factory\"], function (_exports, _component, _object, _settifyInputMixin, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/component\",0,\"settify-mvp/mixins/settify-input-mixin\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @displayOnly}}\n    <div class=\"readonly-textarea settify-sensitive\">\n      {{@label}}{{yield}}\n      {{#if @model}}\n        {{@model}}\n      {{else if @notSureModel}}\n        Not sure\n      {{else if (and @displayPlaceholderInSummary @placeholder)}}\n        {{@placeholder}}\n      {{else}}\n        <NoInformation />\n        {{#if @required}}\n          <RequiredField />\n        {{/if}}\n      {{/if}}\n      <br />\n    </div>\n  {{else}}\n    {{#if @headerLabel}}\n      {{! headerLabel will place either label or yield on top of input rather than within}}\n      {{#if (non-empty-string @label)}}\n        {{@label}}\n      {{else if (has-block)}}\n        {{yield}}\n      {{/if}}\n      {{#if @required}}\n        <span class=\"required-field-marker {{if @model 'required-field-provided'}}\"></span>\n      {{/if}}\n      <HelpTextIcon @helpText={{@helpText}} @displayOnly={{@displayOnly}} @lawyerName={{@clientRecord.helpTextIconLawyerName}} />\n    {{/if}}\n    <div class=\"settify-input settify-sensitive\">\n      <span>\n        <LiquidIf @predicate={{or (not @notSureModel) @notSureOptionDoesNotHideComponent}}>\n          <Input\n            @value={{@model}}\n            name={{or @name @label @placeholder}}\n            placeholder=\"\"\n            @type={{this.type}}\n            disabled={{@disabled}}\n            readonly={{@readonly}}\n            class=\"form-control {{@class}} {{if (and @required (not @model)) 'can-highlight'}}\"\n            maxlength={{or @maxlength 256}}\n            autocomplete={{this.autoCompleteValue}}\n          />\n          {{#if @allowShowPassword}}\n            <i class=\"fal {{if (eq this.type 'password') 'fa-eye' 'fa-eye-slash'}} iconInsideInput clickable\" {{action \"toggleShowPassword\"}}></i>\n          {{/if}}\n          <label class=\"settify-input-label {{if this.inputEntered 'valid'}}\">\n            {{#if (and @label (not @headerLabel))}}\n              {{@label}}\n            {{else if (and (has-block) (not @headerLabel))}}\n              {{yield}}\n            {{else if @placeholder}}\n              <span class={{if (and this.inputEntered (not @required)) \"fade\"}}>{{@placeholder}}</span>\n            {{/if}}\n  \n            {{#if (and @required (not @headerLabel))}}\n              <span class=\"required-field-marker {{if @model 'required-field-provided'}}\"></span>\n            {{/if}}\n  \n            {{#if (and @placeholder (or @label (has-block)) (not @headerLabel))}}\n              <span class=\"placeholder {{if this.inputEntered 'fade'}}\">{{@placeholder}}</span>\n            {{/if}}\n          </label>\n          <span class=\"settify-input-line\"></span>\n        </LiquidIf>\n      </span>\n      <LiquidIf @predicate={{and @notSureOption (not @model)}}>\n        <CheckBox @text={{or @notSureOptionText \"I'm not sure\"}} @model={{@notSureModel}} @onChange={{@onChange}} />\n      </LiquidIf>\n    </div>\n  {{/if}}\n  */\n  {\n    \"id\": \"wtIhyz9E\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"readonly-textarea settify-sensitive\\\"],[12],[1,\\\"\\\\n    \\\"],[1,[30,2]],[18,21,null],[1,\\\"\\\\n\\\"],[41,[30,3],[[[1,\\\"      \\\"],[1,[30,3]],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,4],[[[1,\\\"      Not sure\\\\n\\\"]],[]],[[[41,[28,[37,3],[[30,5],[30,6]],null],[[[1,\\\"      \\\"],[1,[30,6]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[39,4],null,null,null],[1,\\\"\\\\n\\\"],[41,[30,7],[[[1,\\\"        \\\"],[8,[39,5],null,null,null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"]],[]]]],[]]]],[]]],[1,\\\"    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,8],[[[41,[28,[37,7],[[30,2]],null],[[[1,\\\"      \\\"],[1,[30,2]],[1,\\\"\\\\n\\\"]],[]],[[[41,[48,[30,21]],[[[1,\\\"      \\\"],[18,21,null],[1,\\\"\\\\n    \\\"]],[]],null]],[]]],[41,[30,7],[[[1,\\\"      \\\"],[10,1],[15,0,[29,[\\\"required-field-marker \\\",[52,[30,3],\\\"required-field-provided\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[8,[39,10],null,[[\\\"@helpText\\\",\\\"@displayOnly\\\",\\\"@lawyerName\\\"],[[30,9],[30,1],[30,10,[\\\"helpTextIconLawyerName\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[10,0],[14,0,\\\"settify-input settify-sensitive\\\"],[12],[1,\\\"\\\\n    \\\"],[10,1],[12],[1,\\\"\\\\n      \\\"],[8,[39,11],null,[[\\\"@predicate\\\"],[[28,[37,12],[[28,[37,13],[[30,4]],null],[30,11]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[39,14],[[16,3,[28,[37,12],[[30,12],[30,2],[30,6]],null]],[24,\\\"placeholder\\\",\\\"\\\"],[16,\\\"disabled\\\",[30,13]],[16,\\\"readonly\\\",[30,14]],[16,0,[29,[\\\"form-control \\\",[30,15],\\\" \\\",[52,[28,[37,3],[[30,7],[28,[37,13],[[30,3]],null]],null],\\\"can-highlight\\\"]]]],[16,\\\"maxlength\\\",[28,[37,12],[[30,16],256],null]],[16,\\\"autocomplete\\\",[30,0,[\\\"autoCompleteValue\\\"]]]],[[\\\"@value\\\",\\\"@type\\\"],[[30,3],[30,0,[\\\"type\\\"]]]],null],[1,\\\"\\\\n\\\"],[41,[30,17],[[[1,\\\"          \\\"],[11,\\\"i\\\"],[16,0,[29,[\\\"fal \\\",[52,[28,[37,16],[[30,0,[\\\"type\\\"]],\\\"password\\\"],null],\\\"fa-eye\\\",\\\"fa-eye-slash\\\"],\\\" iconInsideInput clickable\\\"]]],[4,[38,17],[[30,0],\\\"toggleShowPassword\\\"],null],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[10,\\\"label\\\"],[15,0,[29,[\\\"settify-input-label \\\",[52,[30,0,[\\\"inputEntered\\\"]],\\\"valid\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,3],[[30,2],[28,[37,13],[[30,8]],null]],null],[[[1,\\\"            \\\"],[1,[30,2]],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,3],[[48,[30,21]],[28,[37,13],[[30,8]],null]],null],[[[1,\\\"            \\\"],[18,21,null],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,6],[[[1,\\\"            \\\"],[10,1],[15,0,[52,[28,[37,3],[[30,0,[\\\"inputEntered\\\"]],[28,[37,13],[[30,7]],null]],null],\\\"fade\\\"]],[12],[1,[30,6]],[13],[1,\\\"\\\\n          \\\"]],[]],null]],[]]]],[]]],[1,\\\"\\\\n\\\"],[41,[28,[37,3],[[30,7],[28,[37,13],[[30,8]],null]],null],[[[1,\\\"            \\\"],[10,1],[15,0,[29,[\\\"required-field-marker \\\",[52,[30,3],\\\"required-field-provided\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,3],[[30,6],[28,[37,12],[[30,2],[48,[30,21]]],null],[28,[37,13],[[30,8]],null]],null],[[[1,\\\"            \\\"],[10,1],[15,0,[29,[\\\"placeholder \\\",[52,[30,0,[\\\"inputEntered\\\"]],\\\"fade\\\"]]]],[12],[1,[30,6]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"settify-input-line\\\"],[12],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,11],null,[[\\\"@predicate\\\"],[[28,[37,3],[[30,18],[28,[37,13],[[30,3]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[39,19],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@onChange\\\"],[[28,[37,12],[[30,19],\\\"I'm not sure\\\"],null],[30,4],[30,20]]],null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[\\\"@displayOnly\\\",\\\"@label\\\",\\\"@model\\\",\\\"@notSureModel\\\",\\\"@displayPlaceholderInSummary\\\",\\\"@placeholder\\\",\\\"@required\\\",\\\"@headerLabel\\\",\\\"@helpText\\\",\\\"@clientRecord\\\",\\\"@notSureOptionDoesNotHideComponent\\\",\\\"@name\\\",\\\"@disabled\\\",\\\"@readonly\\\",\\\"@class\\\",\\\"@maxlength\\\",\\\"@allowShowPassword\\\",\\\"@notSureOption\\\",\\\"@notSureOptionText\\\",\\\"@onChange\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"yield\\\",\\\"and\\\",\\\"no-information\\\",\\\"required-field\\\",\\\"br\\\",\\\"non-empty-string\\\",\\\"has-block\\\",\\\"span\\\",\\\"help-text-icon\\\",\\\"liquid-if\\\",\\\"or\\\",\\\"not\\\",\\\"input\\\",\\\"i\\\",\\\"eq\\\",\\\"action\\\",\\\"label\\\",\\\"check-box\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/settify-textline.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend(_settifyInputMixin.default, {\n    classNames: [\"settify-textline\"],\n    init() {\n      this._super(...arguments);\n      if (this.isPassword) {\n        this.set(\"type\", \"password\");\n      }\n    },\n    inputEntered: (0, _object.computed)(\"model\", function () {\n      return !!this.model;\n    }),\n    actions: {\n      toggleShowPassword() {\n        if (this.type === \"password\") {\n          this.set(\"type\", \"text\");\n        } else {\n          this.set(\"type\", \"password\");\n        }\n      }\n    }\n  }));\n});","define(\"settify-mvp/components/side-bar-nav\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/service\", \"@ember/template-factory\"], function (_exports, _component, _component2, _tracking, _object, _service, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"flex grow flex-col gap-y-4 bg-gray-900 px-4 pt-4 text-gray-400\">\n    <div class=\"flex shrink-0 items-center justify-center\">\n      <img class=\"h-8 w-auto\" src=\"/assets/images/settify-logo-type.png\" alt=\"Settify\" />\n    </div>\n  \n    <nav class=\"flex flex-1 flex-col justify-between\">\n      <ul role=\"list\" class=\"space-y-1\">\n        {{#each this.mainMenuItems as |menuItem index|}}\n          <li>\n            <LinkTo\n              @route={{menuItem.route}}\n              class=\"group flex items-center gap-3 rounded-md p-3 text-sm font-semibold leading-5 hover:bg-gray-800 hover:text-white\"\n              @activeClass=\"bg-gray-800 text-white\"\n              {{on \"click\" this.handleMenuItemClick}}\n            >\n              {{#if menuItem.icon}}\n                <V2::SvgIcon @icon={{menuItem.icon}} class=\"size-5 shrink-0\" />\n              {{/if}}\n              {{menuItem.title}}\n            </LinkTo>\n          </li>\n        {{/each}}\n      </ul>\n      <ul role=\"list\" class=\"space-y-1\">\n        <li>\n          <LinkTo\n            @route=\"admin.index\"\n            class=\"group flex items-center justify-center gap-3 rounded-md p-3 text-sm font-semibold leading-6 hover:bg-gray-800 hover:text-white\"\n            @activeClass=\"bg-gray-800 text-white\"\n            {{on \"click\" this.handleMenuItemClick}}\n          >\n            Return to Legacy UI\n          </LinkTo>\n        </li>\n      </ul>\n    </nav>\n    <div class=\"-mx-4 hidden lg:block\">\n      <V2::AccountDropdown />\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"KmejfVpJ\",\n    \"block\": \"[[[10,0],[14,0,\\\"flex grow flex-col gap-y-4 bg-gray-900 px-4 pt-4 text-gray-400\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"flex shrink-0 items-center justify-center\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"img\\\"],[14,0,\\\"h-8 w-auto\\\"],[14,\\\"src\\\",\\\"/assets/images/settify-logo-type.png\\\"],[14,\\\"alt\\\",\\\"Settify\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,\\\"nav\\\"],[14,0,\\\"flex flex-1 flex-col justify-between\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"ul\\\"],[14,\\\"role\\\",\\\"list\\\"],[14,0,\\\"space-y-1\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,5],[[28,[37,5],[[30,0,[\\\"mainMenuItems\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,7],[[24,0,\\\"group flex items-center gap-3 rounded-md p-3 text-sm font-semibold leading-5 hover:bg-gray-800 hover:text-white\\\"],[4,[38,8],[\\\"click\\\",[30,0,[\\\"handleMenuItemClick\\\"]]],null]],[[\\\"@route\\\",\\\"@activeClass\\\"],[[30,1,[\\\"route\\\"]],\\\"bg-gray-800 text-white\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"icon\\\"]],[[[1,\\\"              \\\"],[8,[39,10],[[24,0,\\\"size-5 shrink-0\\\"]],[[\\\"@icon\\\"],[[30,1,[\\\"icon\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[1,[30,1,[\\\"title\\\"]]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[1,2]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"ul\\\"],[14,\\\"role\\\",\\\"list\\\"],[14,0,\\\"space-y-1\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,7],[[24,0,\\\"group flex items-center justify-center gap-3 rounded-md p-3 text-sm font-semibold leading-6 hover:bg-gray-800 hover:text-white\\\"],[4,[38,8],[\\\"click\\\",[30,0,[\\\"handleMenuItemClick\\\"]]],null]],[[\\\"@route\\\",\\\"@activeClass\\\"],[\\\"admin.index\\\",\\\"bg-gray-800 text-white\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          Return to Legacy UI\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"-mx-4 hidden lg:block\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,11],null,null,null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"menuItem\\\",\\\"index\\\"],false,[\\\"div\\\",\\\"img\\\",\\\"nav\\\",\\\"ul\\\",\\\"each\\\",\\\"-track-array\\\",\\\"li\\\",\\\"link-to\\\",\\\"on\\\",\\\"if\\\",\\\"v2/svg-icon\\\",\\\"v2/account-dropdown\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/side-bar-nav.hbs\",\n    \"isStrictMode\": false\n  });\n  let SideBarComponent = _exports.default = (_class = class SideBarComponent extends _component2.default {\n    constructor(owner, args) {\n      super(owner, args);\n      _initializerDefineProperty(this, \"router\", _descriptor, this);\n      _initializerDefineProperty(this, \"showHelpSubmenu\", _descriptor2, this);\n      this.mainMenuItems = [{\n        title: \"Firms\",\n        route: \"v2.firms.index\",\n        icon: \"building\"\n      }, {\n        title: \"Reports\",\n        route: \"v2.reports.index\",\n        icon: \"file-invoice\"\n      }];\n    }\n    handleMenuItemClick() {\n      if (this.args.isSidebarOpen) {\n        // Close the sidebar if it is open\n        this.args.setSidebarState?.(false);\n      }\n    }\n    toggleHelpMenu() {\n      this.showHelpSubmenu = !this.showHelpSubmenu;\n    }\n    onClickedOutside() {\n      if (this.showHelpSubmenu) this.showHelpSubmenu = false;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"showHelpSubmenu\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"handleMenuItemClick\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleMenuItemClick\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"toggleHelpMenu\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleHelpMenu\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"onClickedOutside\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"onClickedOutside\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, SideBarComponent);\n});","define(\"settify-mvp/components/side-bar\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! Off-canvas menu for mobile, show/hide based on off-canvas menu state. }}\n  {{#if @isSidebarOpen}}\n    <div class=\"relative z-50 lg:hidden\" role=\"dialog\" aria-modal=\"true\">\n      <div class=\"fixed inset-0 bg-gray-900/80\"></div>\n      <div class=\"fixed inset-0 flex\">\n        <div class=\"relative mr-16 flex w-full max-w-64 flex-1\">\n          <div class=\"absolute left-full top-0 flex w-16 justify-center pt-5\">\n            {{!-- TODO add {{on 'click' @setSidebarOpen false}} --}}\n            <button type=\"button\" {{on \"click\" @toggleSidebarOpen}} class=\"-m-2.5 p-2.5\">\n              <span class=\"sr-only\">Close sidebar</span>\n              <V2::SvgIcon @icon=\"x-mark\" class=\"size-6 text-white\" />\n            </button>\n          </div>\n  \n          <SideBarNav />\n        </div>\n      </div>\n    </div>\n  {{/if}}\n  \n  {{! Static sidebar for desktop }}\n  <div class=\"hidden lg:fixed lg:inset-y-0 lg:z-50 lg:flex lg:w-64 lg:flex-col\">\n    <SideBarNav />\n  </div>\n  */\n  {\n    \"id\": \"gtSWoQwU\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"relative z-50 lg:hidden\\\"],[14,\\\"role\\\",\\\"dialog\\\"],[14,\\\"aria-modal\\\",\\\"true\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"fixed inset-0 bg-gray-900/80\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"fixed inset-0 flex\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"relative mr-16 flex w-full max-w-64 flex-1\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"absolute left-full top-0 flex w-16 justify-center pt-5\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"          \\\"],[11,\\\"button\\\"],[24,0,\\\"-m-2.5 p-2.5\\\"],[24,4,\\\"button\\\"],[4,[38,3],[\\\"click\\\",[30,2]],null],[12],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Close sidebar\\\"],[13],[1,\\\"\\\\n            \\\"],[8,[39,5],[[24,0,\\\"size-6 text-white\\\"]],[[\\\"@icon\\\"],[\\\"x-mark\\\"]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,6],null,null,null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[10,0],[14,0,\\\"hidden lg:fixed lg:inset-y-0 lg:z-50 lg:flex lg:w-64 lg:flex-col\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[39,6],null,null,null],[1,\\\"\\\\n\\\"],[13]],[\\\"@isSidebarOpen\\\",\\\"@toggleSidebarOpen\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"button\\\",\\\"on\\\",\\\"span\\\",\\\"v2/svg-icon\\\",\\\"side-bar-nav\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/side-bar.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/simple-parse\", [\"exports\", \"@ember/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({\n    tagName: \"\"\n  });\n});","define(\"settify-mvp/components/stop-think-warning\", [\"exports\", \"@ember/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend({});\n});","define(\"settify-mvp/components/summary-printer\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember/service\", \"moment\", \"@ember/template-factory\"], function (_exports, _component, _object, _service, _moment, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/component\",0,\"moment\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div id=\"settify-summary-content\">\n    {{#if (and @adminMode (not @iCan.editFirmSummary))}}\n      <div class=\"condensed-summary settify-for-everything\">\n        <table>\n          <tbody>\n            <tr>\n              <td>\n                <b>PRIVILEGED AND CONFIDENTIAL</b>\n                <br />\n                Prepared by\n                <img src=\"https://cdn.settify.com.au/Settify+Logo.png\" alt=\"Settify\" class=\"powered-by-image align-middle\" height=\"30px\" />\n                for\n                {{this.firm.name}}\n                <br />\n                {{#if this.appointmentRequestedString}}\n                  {{#if (eq @model.metadata.referral \"invitation\")}}\n                    Invitation completed:\n                    {{this.appointmentRequestedString}}\n                    <br />\n                  {{else}}\n                    Appointment requested:\n                    {{this.appointmentRequestedString}}\n                    <br />\n                  {{/if}}\n                {{else}}\n                  {{#if (eq @model.metadata.referral \"invitation\")}}\n                    Invitation not yet completed\n                    <br />\n                  {{else}}\n                    Appointment not yet requested\n                    <br />\n                  {{/if}}\n                {{/if}}\n                Last modified:\n                {{this.lastModifiedString}}\n              </td>\n              <td class=\"rightalign\">\n                <div class=\"pdf-only\">\n                  <a href={{this.qrCodeURL}} target=\"_blank\" rel=\"noopener noreferrer\"><img class=\"center-image qr-code\" src={{this.qrCodeBase64}} alt=\"QR Code\" /></a>\n                </div>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n        <div class=\"pdf-only\">\n          <p>\n            After you meet with\n            {{or @model.client.firstName \"this client\"}}, we would love to know if Settify was useful in this matter. Either click or scan the QR Code to provide feedback\n          </p>\n        </div>\n      </div>\n    {{/if}}\n  \n    {{#each @model.inductions as |induction|}}\n      <LiquidIf @predicate={{and induction.useCustomDefinition @adminMode}}>\n        <CustomFirmSummary @induction={{induction}} @clientRecord={{@model.client}} @iCan={{@iCan}} @onFinishedRendering={{@onFinishedRendering}} />\n      </LiquidIf>\n      <LiquidIf @predicate={{or (not induction.useCustomDefinition) (not @adminMode)}}>\n        <div class=\"client-facing-summary\">\n          <Admin::CondensedSummary\n            @model={{@model}}\n            @routeOverride={{@routeOverride}}\n            @induction={{induction}}\n            @highlightRequiredFieldsCP={{@highlightRequiredFieldsCP}}\n            @showAnswerToggles={{@showAnswerToggles}}\n            @toggleSummaryEditor={{@toggleSummaryEditor}}\n            @showEditLinks={{@showEditLinks}}\n            @adminMode={{@adminMode}}\n            @clientSummaryMode={{@clientSummaryMode}}\n          />\n          <CallbackToken @callback={{@onFinishedRendering}} />\n        </div>\n      </LiquidIf>\n    {{/each}}\n  </div>\n  */\n  {\n    \"id\": \"0TOqSLXf\",\n    \"block\": \"[[[10,0],[14,1,\\\"settify-summary-content\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,2],[[30,1],[28,[37,3],[[30,2,[\\\"editFirmSummary\\\"]]],null]],null],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"condensed-summary settify-for-everything\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"table\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"b\\\"],[12],[1,\\\"PRIVILEGED AND CONFIDENTIAL\\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n              Prepared by\\\\n              \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"https://cdn.settify.com.au/Settify+Logo.png\\\"],[14,\\\"alt\\\",\\\"Settify\\\"],[14,0,\\\"powered-by-image align-middle\\\"],[14,\\\"height\\\",\\\"30px\\\"],[12],[13],[1,\\\"\\\\n              for\\\\n              \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\"\\\\n              \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"appointmentRequestedString\\\"]],[[[41,[28,[37,11],[[30,3,[\\\"metadata\\\",\\\"referral\\\"]],\\\"invitation\\\"],null],[[[1,\\\"                  Invitation completed:\\\\n                  \\\"],[1,[30,0,[\\\"appointmentRequestedString\\\"]]],[1,\\\"\\\\n                  \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                  Appointment requested:\\\\n                  \\\"],[1,[30,0,[\\\"appointmentRequestedString\\\"]]],[1,\\\"\\\\n                  \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]]]],[]],[[[41,[28,[37,11],[[30,3,[\\\"metadata\\\",\\\"referral\\\"]],\\\"invitation\\\"],null],[[[1,\\\"                  Invitation not yet completed\\\\n                  \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                  Appointment not yet requested\\\\n                  \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]]]],[]]],[1,\\\"              Last modified:\\\\n              \\\"],[1,[30,0,[\\\"lastModifiedString\\\"]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[14,0,\\\"rightalign\\\"],[12],[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"pdf-only\\\"],[12],[1,\\\"\\\\n                \\\"],[10,3],[15,6,[30,0,[\\\"qrCodeURL\\\"]]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[10,\\\"img\\\"],[14,0,\\\"center-image qr-code\\\"],[15,\\\"src\\\",[30,0,[\\\"qrCodeBase64\\\"]]],[14,\\\"alt\\\",\\\"QR Code\\\"],[12],[13],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"pdf-only\\\"],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          After you meet with\\\\n          \\\"],[1,[28,[35,14],[[30,3,[\\\"client\\\",\\\"firstName\\\"]],\\\"this client\\\"],null]],[1,\\\", we would love to know if Settify was useful in this matter. Either click or scan the QR Code to provide feedback\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[42,[28,[37,16],[[28,[37,16],[[30,3,[\\\"inductions\\\"]]],null]],null],null,[[[1,\\\"    \\\"],[8,[39,17],null,[[\\\"@predicate\\\"],[[28,[37,2],[[30,4,[\\\"useCustomDefinition\\\"]],[30,1]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[39,18],null,[[\\\"@induction\\\",\\\"@clientRecord\\\",\\\"@iCan\\\",\\\"@onFinishedRendering\\\"],[[30,4],[30,3,[\\\"client\\\"]],[30,2],[30,5]]],null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[8,[39,17],null,[[\\\"@predicate\\\"],[[28,[37,14],[[28,[37,3],[[30,4,[\\\"useCustomDefinition\\\"]]],null],[28,[37,3],[[30,1]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"client-facing-summary\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,19],null,[[\\\"@model\\\",\\\"@routeOverride\\\",\\\"@induction\\\",\\\"@highlightRequiredFieldsCP\\\",\\\"@showAnswerToggles\\\",\\\"@toggleSummaryEditor\\\",\\\"@showEditLinks\\\",\\\"@adminMode\\\",\\\"@clientSummaryMode\\\"],[[30,3],[30,6],[30,4],[30,7],[30,8],[30,9],[30,10],[30,1],[30,11]]],null],[1,\\\"\\\\n        \\\"],[8,[39,20],null,[[\\\"@callback\\\"],[[30,5]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[4]],null],[13]],[\\\"@adminMode\\\",\\\"@iCan\\\",\\\"@model\\\",\\\"induction\\\",\\\"@onFinishedRendering\\\",\\\"@routeOverride\\\",\\\"@highlightRequiredFieldsCP\\\",\\\"@showAnswerToggles\\\",\\\"@toggleSummaryEditor\\\",\\\"@showEditLinks\\\",\\\"@clientSummaryMode\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"and\\\",\\\"not\\\",\\\"table\\\",\\\"tbody\\\",\\\"tr\\\",\\\"td\\\",\\\"b\\\",\\\"br\\\",\\\"img\\\",\\\"eq\\\",\\\"a\\\",\\\"p\\\",\\\"or\\\",\\\"each\\\",\\\"-track-array\\\",\\\"liquid-if\\\",\\\"custom-firm-summary\\\",\\\"admin/condensed-summary\\\",\\\"callback-token\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/summary-printer.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({\n    firm: (0, _service.service)(),\n    lambda: (0, _service.service)(),\n    recordpolling: (0, _service.service)(),\n    openSafetyCheck: false,\n    qrCodeBase64: null,\n    init() {\n      this._super(...arguments);\n      this.questionsToAdd = [];\n      this.questionsToIgnore = [];\n      this.questionsToCheck = [];\n      if (this.runSafetyCheck) {\n        this.safetyCheck();\n      }\n      if (this.adminMode) {\n        // loadQRCode\n        this.set(\"qrCodeURL\", encodeURI(`${this.get(\"firm.settifyURL\")}/feedback?clientID=${this.get(\"model.client.id\")}&feedbackType=lawyer&surveyLocation=brief`));\n        this.lambda.invoke(this.get(\"lambda.createQRCode\"), {\n          url: this.qrCodeURL\n        }).then(this.lambda.processResponse).then(qr => {\n          this.set(\"qrCodeBase64\", qr);\n        });\n      }\n      if (!this.lastModifiedString && this.get(\"model.client.id\")) {\n        const timestamp = this.recordpolling.getReferenceLastModified(this.get(\"model.client.id\"));\n        this.set(\"lastModifiedString\", (0, _moment.default)(timestamp).format(\"dddd D MMMM YYYY\"));\n      }\n    },\n    appointmentRequestedString: (0, _object.computed)(\"model.metadata.referredToFirmDate\", function () {\n      if (this.get(\"model.metadata.referredToFirmDate\")) {\n        return _moment.default.utc(this.get(\"model.metadata.referredToFirmDate\")).format(\"dddd D MMMM YYYY\");\n      }\n      return \"\";\n    })\n  }));\n});","define(\"settify-mvp/components/summary-section\", [\"exports\", \"@ember/runloop\", \"@ember/service\", \"settify-mvp/components/summary-base\"], function (_exports, _runloop, _service, _summaryBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/service\",0,\"settify-mvp/components/summary-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _summaryBase.default.extend({\n    renderedMoreInfoStrings: (0, _service.inject)(),\n    init() {\n      this._super(...arguments);\n      (0, _runloop.next)(() => {\n        this.renderedMoreInfoStrings.setPageAsRendered(this.editpage, this.get(\"model.client\"));\n      });\n    }\n  });\n});","define(\"settify-mvp/components/tabbed-list-label\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#unless @displayOnly}}\n    <button type=\"button\" class=\"tab-content-label\" {{on \"click\" (fn @selectItem @item true)}}>\n      <CustomTabbedTitle @item={{@item}} @itemTypeString={{@itemTypeString}} @itemLabelFormat={{@itemLabelFormat}} @client={{@client}} @displayOnly={{@displayOnly}} />\n    </button>\n  {{/unless}}\n  */\n  {\n    \"id\": \"aV8WzWJY\",\n    \"block\": \"[[[41,[51,[30,1]],[[[1,\\\"  \\\"],[11,\\\"button\\\"],[24,0,\\\"tab-content-label\\\"],[24,4,\\\"button\\\"],[4,[38,2],[\\\"click\\\",[28,[37,3],[[30,2],[30,3],true],null]],null],[12],[1,\\\"\\\\n    \\\"],[8,[39,4],null,[[\\\"@item\\\",\\\"@itemTypeString\\\",\\\"@itemLabelFormat\\\",\\\"@client\\\",\\\"@displayOnly\\\"],[[30,3],[30,4],[30,5],[30,6],[30,1]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@displayOnly\\\",\\\"@selectItem\\\",\\\"@item\\\",\\\"@itemTypeString\\\",\\\"@itemLabelFormat\\\",\\\"@client\\\"],false,[\\\"unless\\\",\\\"button\\\",\\\"on\\\",\\\"fn\\\",\\\"custom-tabbed-title\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/tabbed-list-label.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/tabbed-list-remove-item\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#unless @displayOnly}}\n    <button type=\"button\" class=\"settify-tab-remove\" {{on \"click\" @toggleShowRemoveItem}}>\n      <i class=\"fal fa-times-circle clickable icon-delete\"></i>\n      Remove this\n      {{@itemTypeString}}\n    </button>\n    <LiquidIf @predicate={{@showRemoveItem}}>\n      <p>\n        Are you sure you want to remove this\n        {{@itemTypeString}}?<br />\n        <a class=\"clickable\" {{on \"click\" (fn @removeItem @selectedItem)}}>Yes, remove it</a><br />\n        <a class=\"clickable\" {{on \"click\" @toggleShowRemoveItem}}>No, keep it</a>\n      </p>\n      <p>\n        If you just want to clear this\n        {{@itemTypeString}}\n        and start again,\n        <a class=\"clickable\" {{on \"click\" (fn @resetItem @selectedItem)}}>click here</a>.\n      </p>\n    </LiquidIf>\n  {{/unless}}\n  */\n  {\n    \"id\": \"XQz91TMc\",\n    \"block\": \"[[[41,[51,[30,1]],[[[1,\\\"  \\\"],[11,\\\"button\\\"],[24,0,\\\"settify-tab-remove\\\"],[24,4,\\\"button\\\"],[4,[38,2],[\\\"click\\\",[30,2]],null],[12],[1,\\\"\\\\n    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-times-circle clickable icon-delete\\\"],[12],[13],[1,\\\"\\\\n    Remove this\\\\n    \\\"],[1,[30,3]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,4],null,[[\\\"@predicate\\\"],[[30,4]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,2],[12],[1,\\\"\\\\n      Are you sure you want to remove this\\\\n      \\\"],[1,[30,3]],[1,\\\"?\\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,2],[\\\"click\\\",[28,[37,8],[[30,5],[30,6]],null]],null],[12],[1,\\\"Yes, remove it\\\"],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,2],[\\\"click\\\",[30,2]],null],[12],[1,\\\"No, keep it\\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,2],[12],[1,\\\"\\\\n      If you just want to clear this\\\\n      \\\"],[1,[30,3]],[1,\\\"\\\\n      and start again,\\\\n      \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,2],[\\\"click\\\",[28,[37,8],[[30,7],[30,6]],null]],null],[12],[1,\\\"click here\\\"],[13],[1,\\\".\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@displayOnly\\\",\\\"@toggleShowRemoveItem\\\",\\\"@itemTypeString\\\",\\\"@showRemoveItem\\\",\\\"@removeItem\\\",\\\"@selectedItem\\\",\\\"@resetItem\\\"],false,[\\\"unless\\\",\\\"button\\\",\\\"on\\\",\\\"i\\\",\\\"liquid-if\\\",\\\"p\\\",\\\"br\\\",\\\"a\\\",\\\"fn\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/tabbed-list-remove-item.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/tabbed-list-top\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @displayOnly}}\n    <h4 class=\"settify-sensitive\">\n      <CustomTabbedTitle @item={{@selectedItem}} @itemTypeString={{@itemTypeString}} @itemLabelFormat={{@itemLabelFormat}} @client={{@client}} @displayOnly={{@displayOnly}} />\n    </h4>\n  {{else}}\n    <div class=\"settify-tab-top\">\n      {{#each @model as |item|}}\n        <button type=\"button\" class=\"settify-sensitive settify-tab-item {{if (eq item @selectedItem) \"settify-tab-selected\"}} {{if @changingTabs \"settify-tab-transition\" \"\"}}\" {{on \"click\" (fn @selectItem item)}}>\n          <CustomTabbedTitle @item={{item}} @itemTypeString={{@itemTypeString}} @itemLabelFormat={{@itemLabelFormat}} @client={{@client}} @displayOnly={{@displayOnly}} />\n        </button>\n      {{/each}}\n      <button type=\"button\" class=\"settify-tab-add\" {{on \"click\" @addItem}}>\n        <i class=\"fal fa-plus-circle settify-tab-icon\"></i> Add\n      </button>\n    </div>\n  {{/if}}\n  */\n  {\n    \"id\": \"vuzf4uWS\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[10,\\\"h4\\\"],[14,0,\\\"settify-sensitive\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,2],null,[[\\\"@item\\\",\\\"@itemTypeString\\\",\\\"@itemLabelFormat\\\",\\\"@client\\\",\\\"@displayOnly\\\"],[[30,2],[30,3],[30,4],[30,5],[30,1]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"settify-tab-top\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,5],[[28,[37,5],[[30,6]],null]],null],null,[[[1,\\\"      \\\"],[11,\\\"button\\\"],[16,0,[29,[\\\"settify-sensitive settify-tab-item \\\",[52,[28,[37,7],[[30,7],[30,2]],null],\\\"settify-tab-selected\\\"],\\\" \\\",[52,[30,8],\\\"settify-tab-transition\\\",\\\"\\\"]]]],[24,4,\\\"button\\\"],[4,[38,8],[\\\"click\\\",[28,[37,9],[[30,9],[30,7]],null]],null],[12],[1,\\\"\\\\n        \\\"],[8,[39,2],null,[[\\\"@item\\\",\\\"@itemTypeString\\\",\\\"@itemLabelFormat\\\",\\\"@client\\\",\\\"@displayOnly\\\"],[[30,7],[30,3],[30,4],[30,5],[30,1]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[7]],null],[1,\\\"    \\\"],[11,\\\"button\\\"],[24,0,\\\"settify-tab-add\\\"],[24,4,\\\"button\\\"],[4,[38,8],[\\\"click\\\",[30,10]],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle settify-tab-icon\\\"],[12],[13],[1,\\\" Add\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[\\\"@displayOnly\\\",\\\"@selectedItem\\\",\\\"@itemTypeString\\\",\\\"@itemLabelFormat\\\",\\\"@client\\\",\\\"@model\\\",\\\"item\\\",\\\"@changingTabs\\\",\\\"@selectItem\\\",\\\"@addItem\\\"],false,[\\\"if\\\",\\\"h4\\\",\\\"custom-tabbed-title\\\",\\\"div\\\",\\\"each\\\",\\\"-track-array\\\",\\\"button\\\",\\\"eq\\\",\\\"on\\\",\\\"fn\\\",\\\"i\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/tabbed-list-top.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/tabbed-list\", [\"exports\", \"@ember/component\", \"@ember/runloop\", \"@ember/object\", \"settify-mvp/mixins/remove-empty-items\", \"settify-mvp/utils/defaults-object-initializer\", \"settify-mvp/utils/is-empty-object-checker\", \"@ember/template-factory\"], function (_exports, _component, _runloop, _object, _removeEmptyItems, _defaultsObjectInitializer, _isEmptyObjectChecker, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/component\",0,\"settify-mvp/mixins/remove-empty-items\",0,\"settify-mvp/utils/defaults-object-initializer\",0,\"settify-mvp/utils/is-empty-object-checker\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (non-empty-string @label)}}\n    <p>\n      {{@label}}\n      <HelpTextIcon @helpText={{@helpText}} @displayOnly={{@displayOnly}} />\n    </p>\n  {{/if}}\n  \n  {{#if @displayOnly}}\n    {{#each @model as |item|}}\n      <div class=\"settify-tab-display-only\">\n        {{yield item}}\n        {{#if (not (or (lt @model.length 2) (eq (get @model (sub @model.length 1)) item)))}}\n          <div class=\"divider\"></div>\n        {{/if}}\n      </div>\n    {{/each}}\n    {{#unless this.hasEmptyList}}\n      <br />\n    {{/unless}}\n  {{else if this.selectedItem}}\n    {{! Please do not add a select-or-create to the tabbed list due to it causing issues }}\n    <div class=\"settify-tab\">\n      <TabbedListTop\n        @displayOnly={{@displayOnly}}\n        @selectedItem={{this.selectedItem}}\n        @itemTypeString={{@itemTypeString}}\n        @itemLabelFormat={{@itemLabelFormat}}\n        @client={{@clientRecord}}\n        @model={{@model}}\n        @changingTabs={{this.changingTabs}}\n        @selectItem={{action \"selectItem\"}}\n        @addItem={{action \"addItem\"}}\n      />\n      <div class=\"settify-tab-content\">\n        <LiquidBind @value={{this.selectedItem}} @class=\"quickfade\">\n          {{#each @model as |item|}}\n            <div class=\"tab-content-container {{if (and (eq item this.selectedItem) (not this.hideSelected)) 'settify-tab-selected'}}\">\n              <TabbedListLabel\n                @displayOnly={{@displayOnly}}\n                @itemTypeString={{@itemTypeString}}\n                @itemLabelFormat={{@itemLabelFormat}}\n                @client={{@clientRecord}}\n                @item={{item}}\n                @selectItem={{action \"selectItem\"}}\n              />\n              {{#if (eq item this.selectedItem)}}\n                <div class=\"tab-content-item\">\n                  {{yield this.selectedItem}}\n                  <LiquidIf @predicate={{and this.showRemoveButton (gt @model.length 1)}}>\n                    <TabbedListRemoveItem\n                      @displayOnly={{@displayOnly}}\n                      @itemTypeString={{@itemTypeString}}\n                      @showRemoveItem={{this.showRemoveItem}}\n                      @selectedItem={{this.selectedItem}}\n                      @toggleShowRemoveItem={{action \"toggleShowRemoveItem\"}}\n                      @removeItem={{action \"removeItem\"}}\n                      @resetItem={{action \"resetItem\"}}\n                    />\n                  </LiquidIf>\n                </div>\n              {{/if}}\n            </div>\n          {{/each}}\n          <div class=\"tab-content-container\">\n            <p class=\"clickable tab-content-add\" {{action \"addItem\"}}>\n              <i class=\"fal fa-plus-circle clickable\"></i>\n              Add a\n              {{@itemTypeString}}\n            </p>\n          </div>\n        </LiquidBind>\n      </div>\n    </div>\n  {{else}}\n    <div id=\"empty-tabbed-list\" class=\"settify-tab-pane clickable\" {{action \"addItem\"}}>\n      <i class=\"fal fa-plus-circle settify-tab-icon\"></i>\n      Add\n      {{@itemTypeString}}\n    </div>\n  {{/if}}\n  */\n  {\n    \"id\": \"Y/lWsnSr\",\n    \"block\": \"[[[41,[28,[37,1],[[30,1]],null],[[[1,\\\"  \\\"],[10,2],[12],[1,\\\"\\\\n    \\\"],[1,[30,1]],[1,\\\"\\\\n    \\\"],[8,[39,3],null,[[\\\"@helpText\\\",\\\"@displayOnly\\\"],[[30,2],[30,3]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,3],[[[42,[28,[37,5],[[28,[37,5],[[30,4]],null]],null],null,[[[1,\\\"    \\\"],[10,0],[14,0,\\\"settify-tab-display-only\\\"],[12],[1,\\\"\\\\n      \\\"],[18,10,[[30,5]]],[1,\\\"\\\\n\\\"],[41,[28,[37,8],[[28,[37,9],[[28,[37,10],[[30,4,[\\\"length\\\"]],2],null],[28,[37,11],[[28,[37,12],[[30,4],[28,[37,13],[[30,4,[\\\"length\\\"]],1],null]],null],[30,5]],null]],null]],null],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"divider\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[5]],null],[41,[51,[30,0,[\\\"hasEmptyList\\\"]]],[[[1,\\\"    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],[[[41,[30,0,[\\\"selectedItem\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"settify-tab\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,16],null,[[\\\"@displayOnly\\\",\\\"@selectedItem\\\",\\\"@itemTypeString\\\",\\\"@itemLabelFormat\\\",\\\"@client\\\",\\\"@model\\\",\\\"@changingTabs\\\",\\\"@selectItem\\\",\\\"@addItem\\\"],[[30,3],[30,0,[\\\"selectedItem\\\"]],[30,6],[30,7],[30,8],[30,4],[30,0,[\\\"changingTabs\\\"]],[28,[37,17],[[30,0],\\\"selectItem\\\"],null],[28,[37,17],[[30,0],\\\"addItem\\\"],null]]],null],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-tab-content\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,18],null,[[\\\"@value\\\",\\\"@class\\\"],[[30,0,[\\\"selectedItem\\\"]],\\\"quickfade\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,5],[[28,[37,5],[[30,4]],null]],null],null,[[[1,\\\"          \\\"],[10,0],[15,0,[29,[\\\"tab-content-container \\\",[52,[28,[37,19],[[28,[37,11],[[30,9],[30,0,[\\\"selectedItem\\\"]]],null],[28,[37,8],[[30,0,[\\\"hideSelected\\\"]]],null]],null],\\\"settify-tab-selected\\\"]]]],[12],[1,\\\"\\\\n            \\\"],[8,[39,20],null,[[\\\"@displayOnly\\\",\\\"@itemTypeString\\\",\\\"@itemLabelFormat\\\",\\\"@client\\\",\\\"@item\\\",\\\"@selectItem\\\"],[[30,3],[30,6],[30,7],[30,8],[30,9],[28,[37,17],[[30,0],\\\"selectItem\\\"],null]]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,11],[[30,9],[30,0,[\\\"selectedItem\\\"]]],null],[[[1,\\\"              \\\"],[10,0],[14,0,\\\"tab-content-item\\\"],[12],[1,\\\"\\\\n                \\\"],[18,10,[[30,0,[\\\"selectedItem\\\"]]]],[1,\\\"\\\\n                \\\"],[8,[39,21],null,[[\\\"@predicate\\\"],[[28,[37,19],[[30,0,[\\\"showRemoveButton\\\"]],[28,[37,22],[[30,4,[\\\"length\\\"]],1],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  \\\"],[8,[39,23],null,[[\\\"@displayOnly\\\",\\\"@itemTypeString\\\",\\\"@showRemoveItem\\\",\\\"@selectedItem\\\",\\\"@toggleShowRemoveItem\\\",\\\"@removeItem\\\",\\\"@resetItem\\\"],[[30,3],[30,6],[30,0,[\\\"showRemoveItem\\\"]],[30,0,[\\\"selectedItem\\\"]],[28,[37,17],[[30,0],\\\"toggleShowRemoveItem\\\"],null],[28,[37,17],[[30,0],\\\"removeItem\\\"],null],[28,[37,17],[[30,0],\\\"resetItem\\\"],null]]],null],[1,\\\"\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\"]],[9]],null],[1,\\\"        \\\"],[10,0],[14,0,\\\"tab-content-container\\\"],[12],[1,\\\"\\\\n          \\\"],[11,2],[24,0,\\\"clickable tab-content-add\\\"],[4,[38,17],[[30,0],\\\"addItem\\\"],null],[12],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle clickable\\\"],[12],[13],[1,\\\"\\\\n            Add a\\\\n            \\\"],[1,[30,6]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"  \\\"],[11,0],[24,1,\\\"empty-tabbed-list\\\"],[24,0,\\\"settify-tab-pane clickable\\\"],[4,[38,17],[[30,0],\\\"addItem\\\"],null],[12],[1,\\\"\\\\n    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle settify-tab-icon\\\"],[12],[13],[1,\\\"\\\\n    Add\\\\n    \\\"],[1,[30,6]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[]]]],[\\\"@label\\\",\\\"@helpText\\\",\\\"@displayOnly\\\",\\\"@model\\\",\\\"item\\\",\\\"@itemTypeString\\\",\\\"@itemLabelFormat\\\",\\\"@clientRecord\\\",\\\"item\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"non-empty-string\\\",\\\"p\\\",\\\"help-text-icon\\\",\\\"each\\\",\\\"-track-array\\\",\\\"div\\\",\\\"yield\\\",\\\"not\\\",\\\"or\\\",\\\"lt\\\",\\\"eq\\\",\\\"get\\\",\\\"sub\\\",\\\"unless\\\",\\\"br\\\",\\\"tabbed-list-top\\\",\\\"action\\\",\\\"liquid-bind\\\",\\\"and\\\",\\\"tabbed-list-label\\\",\\\"liquid-if\\\",\\\"gt\\\",\\\"tabbed-list-remove-item\\\",\\\"i\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/tabbed-list.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend(_removeEmptyItems.default, {\n    assignUUIDs: true,\n    selectedItem: undefined,\n    showRemoveItem: false,\n    changesMade: false,\n    init() {\n      this._super(...arguments);\n      this.defaultsObjectInitializer = new _defaultsObjectInitializer.DefaultsObjectInitializer(this.defaults, this.assignUUIDs);\n      this.set(\"changesMade\", false);\n\n      // get and process the desired index\n      let index = 0;\n      if (!this.isUndefined(this.forceIndex)) {\n        index = this.forceIndex;\n      }\n      if (this.hasEmptyList() && index < 0) {\n        index = 0;\n      }\n\n      // set selected item, or add item, as appropriate\n      // negative values indicate \"add a new entry\"\n      if (index >= 0 && this.get(\"model.length\")) {\n        this.set(\"selectedItem\", this.model[index]);\n        this.prepareItem(this.selectedItem);\n      } else {\n        (0, _runloop.scheduleOnce)(\"actions\", this, \"addNewItem\");\n      }\n    },\n    onModelReloaded: (0, _object.observer)(\"model\", function () {\n      const m = this.model;\n      if (m && m.length > 0) {\n        this.send(\"selectItem\", m[0]);\n      }\n      this.set(\"changesMade\", false);\n    }),\n    hasEmptyList() {\n      const list = this.model;\n      if (!list) {\n        return true;\n      }\n      if (list.length > 1) {\n        return false;\n      }\n      if (list.length === 0) {\n        return true;\n      }\n      const blank = this.newBlankItem();\n      this.prepareItem(blank);\n      const test = list[0];\n      return this.equivalent({}, test) && this.equivalent(test, {}) || this.equivalent(blank, test) && this.equivalent(test, blank);\n    },\n    equivalent(a, b) {\n      const aProps = Object.getOwnPropertyNames(a);\n      for (let i = 0; i < aProps.length; i++) {\n        const propName = aProps[i];\n        if (propName[0] === \"_\" || propName === \"id\") {\n          // ignore special ember-generated properties\n          continue;\n        }\n\n        // If values of same property are not equal, objects are not equivalent\n        if (typeof a[propName] === \"object\") {\n          if (typeof b[propName] !== \"object\") {\n            return false;\n          }\n          if (!this.equivalent(a[propName], b[propName])) {\n            return false;\n          }\n        } else if (a[propName] !== b[propName]) {\n          return false;\n        }\n      }\n\n      // If we made it this far, objects are considered equivalent\n      return true;\n    },\n    // override these in child class\n    newBlankItem() {\n      return this.defaultsObjectInitializer.createDefaultItem();\n    },\n    prepareItem(p) {\n      this.defaultsObjectInitializer.setDefaults(p);\n    },\n    getItemTabName(i) {\n      return `Untitled Tab: ${i}`;\n    },\n    addNewItem() {\n      if (this.model) {\n        this.model.pushObject(this.newBlankItem());\n        this.set(\"selectedItem\", this.model[this.model.length - 1]);\n        this.set(\"showRemoveItem\", false);\n        this.set(\"changesMade\", true);\n        this.prepareItem(this.selectedItem);\n        this.toggleCrossFade();\n        if (window.scrollY > 300 && this.element) {\n          this.element.scrollIntoView({\n            behavior: \"smooth\"\n          });\n        }\n      }\n    },\n    toggleCrossFade() {\n      this.set(\"changingTabs\", true);\n      (0, _runloop.later)(this, function () {\n        if (!this.isDestroyed && !this.isDestroying) {\n          this.set(\"changingTabs\", false);\n        }\n      }, 50);\n    },\n    isUndefined(property) {\n      return property === null || property === undefined;\n    },\n    showRemoveButton: (0, _object.computed)(\"model.length\", \"model\", \"selectedItem\", \"clientRecord.touch\", function () {\n      if (this?.model?.length > 1) {\n        return true;\n      }\n      return !(0, _isEmptyObjectChecker.default)(this.selectedItem, {\n        ignoreEmptySubobjects: true\n      });\n    }),\n    willDestroyElement() {\n      this._super(...arguments);\n      if (this.changesMade) {\n        this.removeEmptyModelItems();\n      }\n    },\n    actions: {\n      addItem() {\n        this.addNewItem();\n      },\n      removeItem(c) {\n        const list = this.model;\n        if (list) {\n          let idx = list.indexOf(c);\n          list.removeObject(c);\n          this.set(\"showRemoveItem\", false);\n          this.set(\"changesMade\", true);\n          if (list.length > 0) {\n            if (idx > 0) {\n              idx--;\n            }\n            this.set(\"selectedItem\", list[idx]);\n            this.toggleCrossFade();\n          } else {\n            // list is now empty - give it a new blank item\n            list.insertAt(0, this.newBlankItem());\n            this.prepareItem(list[0]);\n            this.set(\"selectedItem\", list[0]);\n            const el = document.getElementById(\"induction-header-image\");\n            if (el) {\n              el.scrollIntoView({\n                behavior: \"smooth\"\n              });\n            }\n          }\n        }\n      },\n      resetItem(c) {\n        const list = this.model;\n        if (list) {\n          const idx = list.indexOf(c);\n          list.removeObject(c);\n          list.insertAt(idx, this.newBlankItem());\n          this.prepareItem(list[idx]);\n          this.set(\"selectedItem\", list[idx]);\n          this.set(\"showRemoveItem\", false);\n          this.set(\"changesMade\", true);\n          this.toggleCrossFade();\n        }\n      },\n      selectItem(p, label) {\n        if (p === this.selectedItem && label) {\n          this.toggleProperty(\"hideSelected\");\n        } else {\n          this.set(\"hideSelected\", false);\n          if (p !== this.selectedItem) {\n            this.toggleCrossFade();\n          }\n          this.set(\"selectedItem\", p);\n          this.prepareItem(p);\n        }\n      },\n      toggleShowRemoveItem() {\n        this.toggleProperty(\"showRemoveItem\");\n      }\n    }\n  }));\n});","define(\"settify-mvp/components/team-mapping-select\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember/service\", \"@ember/template-factory\"], function (_exports, _component, _object, _service, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <LiquidSpacer>\n    {{#each @model.worksWith as |colleague|}}\n      <div class=\"colleague-mapping\">\n        {{#if (get (get this.lawyerList.byID colleague.personID) \"name\")}}\n          <span class=\"padding\"><b>{{get (get this.lawyerList.byID colleague.personID) \"name\"}}</b></span>\n          <br />\n          <span class=\"padding\">{{get (get this.lawyerList.byID colleague.personID) \"email\"}}</span>\n        {{else}}\n          <span class=\"padding\"><b>{{get (get this.lawyerList.byID colleague.personID) \"email\"}}</b></span>\n        {{/if}}\n        {{#if (eq @model.personType \"lawyer\")}}\n          <RadioButtons @model={{@model.sendFrom.personID}} @value={{colleague.personID}}>\n            Send appointment confirmation emails from this email address\n          </RadioButtons>\n          <LiquidIf @predicate={{not-eq @model.sendFrom.personID colleague.personID}}>\n            <CheckBox @model={{colleague.bcc}} @text=\"BCC into emails instead of CCing\" />\n          </LiquidIf>\n        {{else}}\n          {{! PA options here }}\n        {{/if}}\n        <button type=\"button\" {{action \"removeColleague\" colleague}}>\n          <i class=\"fal fa-times-circle\" />\n          Remove\n        </button>\n      </div>\n    {{/each}}\n  </LiquidSpacer>\n  <div class=\"colleague-mapping\">\n    <LiquidIf @predicate={{this.addingColleague}}>\n      <SettifySelect @model={{this.colleagueToAdd}} @name=\"selectcolleague\" @content={{this.unaddedColleagues}} @labelPath=\"name\" @valuePath=\"personID\" />\n      <button type=\"button\" {{action \"toggleAddingColleague\"}}>\n        <i class=\"fal fa-times-circle\" />\n        Cancel\n      </button>\n    </LiquidIf>\n    <LiquidIf @predicate={{not this.addingColleague}}>\n      <button type=\"button\" {{action \"toggleAddingColleague\"}}>\n        <i class=\"fal fa-plus-circle\" />\n        Add another\n        {{#if (eq @model.personType \"lawyer\")}}\n          assistant\n        {{else}}\n          lawyer to support\n        {{/if}}\n      </button>\n    </LiquidIf>\n  </div>\n  <div class=\"colleague-mapping\">\n    {{#if (eq @model.personType \"lawyer\")}}\n      <RadioButtons @model={{@model.sendFrom.personID}} @value={{null}}>\n        Send appointment confirmation emails from\n        {{@model.name}}\n        directly\n      </RadioButtons>\n      <LiquidIf @predicate={{@model.sendFrom.personID}}>\n        <CheckBox @model={{@model.doNotBCC}}>\n          Do not BCC\n          {{@model.name}}\n          into emails\n        </CheckBox>\n      </LiquidIf>\n    {{/if}}\n  </div>\n  \n  {{yield}}\n  */\n  {\n    \"id\": \"lY907WSl\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,2],[[28,[37,2],[[30,1,[\\\"worksWith\\\"]]],null]],null],null,[[[1,\\\"    \\\"],[10,0],[14,0,\\\"colleague-mapping\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[28,[37,5],[[30,0,[\\\"lawyerList\\\",\\\"byID\\\"]],[30,2,[\\\"personID\\\"]]],null],\\\"name\\\"],null],[[[1,\\\"        \\\"],[10,1],[14,0,\\\"padding\\\"],[12],[10,\\\"b\\\"],[12],[1,[28,[35,5],[[28,[37,5],[[30,0,[\\\"lawyerList\\\",\\\"byID\\\"]],[30,2,[\\\"personID\\\"]]],null],\\\"name\\\"],null]],[13],[13],[1,\\\"\\\\n        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"padding\\\"],[12],[1,[28,[35,5],[[28,[37,5],[[30,0,[\\\"lawyerList\\\",\\\"byID\\\"]],[30,2,[\\\"personID\\\"]]],null],\\\"email\\\"],null]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,1],[14,0,\\\"padding\\\"],[12],[10,\\\"b\\\"],[12],[1,[28,[35,5],[[28,[37,5],[[30,0,[\\\"lawyerList\\\",\\\"byID\\\"]],[30,2,[\\\"personID\\\"]]],null],\\\"email\\\"],null]],[13],[13],[1,\\\"\\\\n\\\"]],[]]],[41,[28,[37,9],[[30,1,[\\\"personType\\\"]],\\\"lawyer\\\"],null],[[[1,\\\"        \\\"],[8,[39,10],null,[[\\\"@model\\\",\\\"@value\\\"],[[30,1,[\\\"sendFrom\\\",\\\"personID\\\"]],[30,2,[\\\"personID\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          Send appointment confirmation emails from this email address\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,11],null,[[\\\"@predicate\\\"],[[28,[37,12],[[30,1,[\\\"sendFrom\\\",\\\"personID\\\"]],[30,2,[\\\"personID\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[39,13],null,[[\\\"@model\\\",\\\"@text\\\"],[[30,2,[\\\"bcc\\\"]],\\\"BCC into emails instead of CCing\\\"]],null],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[],[]]],[1,\\\"      \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,15],[[30,0],\\\"removeColleague\\\",[30,2]],null],[12],[1,\\\"\\\\n        \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-times-circle\\\"],[12],[13],[1,\\\"\\\\n        Remove\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],null]],[]]]]],[1,\\\"\\\\n\\\"],[10,0],[14,0,\\\"colleague-mapping\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[39,11],null,[[\\\"@predicate\\\"],[[30,0,[\\\"addingColleague\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[39,17],null,[[\\\"@model\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[[30,0,[\\\"colleagueToAdd\\\"]],\\\"selectcolleague\\\",[30,0,[\\\"unaddedColleagues\\\"]],\\\"name\\\",\\\"personID\\\"]],null],[1,\\\"\\\\n    \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,15],[[30,0],\\\"toggleAddingColleague\\\"],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-times-circle\\\"],[12],[13],[1,\\\"\\\\n      Cancel\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[39,11],null,[[\\\"@predicate\\\"],[[28,[37,18],[[30,0,[\\\"addingColleague\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,15],[[30,0],\\\"toggleAddingColleague\\\"],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle\\\"],[12],[13],[1,\\\"\\\\n      Add another\\\\n\\\"],[41,[28,[37,9],[[30,1,[\\\"personType\\\"]],\\\"lawyer\\\"],null],[[[1,\\\"        assistant\\\\n\\\"]],[]],[[[1,\\\"        lawyer to support\\\\n\\\"]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"],[10,0],[14,0,\\\"colleague-mapping\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,9],[[30,1,[\\\"personType\\\"]],\\\"lawyer\\\"],null],[[[1,\\\"    \\\"],[8,[39,10],null,[[\\\"@model\\\",\\\"@value\\\"],[[30,1,[\\\"sendFrom\\\",\\\"personID\\\"]],null]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      Send appointment confirmation emails from\\\\n      \\\"],[1,[30,1,[\\\"name\\\"]]],[1,\\\"\\\\n      directly\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[8,[39,11],null,[[\\\"@predicate\\\"],[[30,1,[\\\"sendFrom\\\",\\\"personID\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[39,13],null,[[\\\"@model\\\"],[[30,1,[\\\"doNotBCC\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        Do not BCC\\\\n        \\\"],[1,[30,1,[\\\"name\\\"]]],[1,\\\"\\\\n        into emails\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[13],[1,\\\"\\\\n\\\\n\\\"],[18,3,null]],[\\\"@model\\\",\\\"colleague\\\",\\\"&default\\\"],false,[\\\"liquid-spacer\\\",\\\"each\\\",\\\"-track-array\\\",\\\"div\\\",\\\"if\\\",\\\"get\\\",\\\"span\\\",\\\"b\\\",\\\"br\\\",\\\"eq\\\",\\\"radio-buttons\\\",\\\"liquid-if\\\",\\\"not-eq\\\",\\\"check-box\\\",\\\"button\\\",\\\"action\\\",\\\"i\\\",\\\"settify-select\\\",\\\"not\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/team-mapping-select.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({\n    tagName: \"\",\n    lawyerList: (0, _service.inject)(),\n    init() {\n      this._super();\n      this.setDefaultSendFrom();\n    },\n    setDefaultSendFrom() {\n      if (!this.model?.sendFrom) {\n        this.set(\"model.sendFrom\", {\n          personID: null\n        });\n      }\n    },\n    onModelChanged: (0, _object.observer)(\"model\", function () {\n      this.setDefaultSendFrom();\n    }),\n    actions: {\n      removeColleague(colleague) {\n        const worksWith = this.model?.worksWith || [];\n        const filtered = worksWith.filter(p => p.personID !== colleague.personID);\n        this.set(\"model.worksWith\", filtered);\n        if (this.model?.sendFrom?.personID === colleague.personID) {\n          this.set(\"model.sendFrom.personID\", null);\n        }\n      },\n      toggleAddingColleague() {\n        this.toggleProperty(\"addingColleague\");\n        if (this.addingColleague) {\n          const currentColleagues = this.model?.worksWith || [];\n          const unaddedColleagues = this.lawyerList.list.filter(p => p.personID !== this.model.personID && !currentColleagues.any(c => c.personID === p.personID)).map(p => {\n            return {\n              name: p.name || p.email,\n              personID: p.personID,\n              personType: p.personType\n            };\n          }).sort((a, b) => {\n            if (a.personType === \"pa\" && b.personType === \"lawyer\") {\n              return -1;\n            } else if (a.personType === \"lawyer\" && b.personType === \"pa\") {\n              return 1;\n            } else if (a.name < b.name) {\n              return -1;\n            } else if (a.name > b.name) {\n              return 1;\n            } else if (a.email < b.email) {\n              return -1;\n            } else if (a.email > b.email) {\n              return 1;\n            }\n            return 0;\n          });\n          this.set(\"unaddedColleagues\", unaddedColleagues);\n        }\n      }\n    },\n    addColleague: (0, _object.observer)(\"colleagueToAdd\", function () {\n      const {\n        colleagueToAdd\n      } = this;\n      if (!colleagueToAdd) {\n        return;\n      }\n      if (this.model?.worksWith) {\n        this.model.worksWith.pushObject({\n          personID: colleagueToAdd\n        });\n      } else {\n        this.set(\"model.worksWith\", [{\n          personID: colleagueToAdd\n        }]);\n      }\n      this.set(\"colleagueToAdd\", null);\n      this.set(\"addingColleague\", false);\n    })\n  }));\n});","define(\"settify-mvp/components/test-site-data-warning\", [\"exports\", \"@ember/component\", \"@ember/service\", \"@glimmer/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@glimmer/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (contains this.firm.id \"000000000\")}}\n    <div class=\"test-site-box\">\n      <p>\n        <i class=\"fal fa-exclamation-circle\"></i> This is a Settify test site and does not represent a real law firm. \n        Please do not enter any sensitive personal information.\n      </p>\n    </div>\n  {{/if}}\n  */\n  {\n    \"id\": \"fmXFxKZ6\",\n    \"block\": \"[[[41,[28,[37,1],[[30,0,[\\\"firm\\\",\\\"id\\\"]],\\\"000000000\\\"],null],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"test-site-box\\\"],[12],[1,\\\"\\\\n    \\\"],[10,2],[12],[1,\\\"\\\\n      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-exclamation-circle\\\"],[12],[13],[1,\\\" This is a Settify test site and does not represent a real law firm. \\\\n      Please do not enter any sensitive personal information.\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[],false,[\\\"if\\\",\\\"contains\\\",\\\"div\\\",\\\"p\\\",\\\"i\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/test-site-data-warning.hbs\",\n    \"isStrictMode\": false\n  });\n  let TestSiteDataWarningComponent = _exports.default = (_class = class TestSiteDataWarningComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, TestSiteDataWarningComponent);\n});","define(\"settify-mvp/components/time-picker\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"moment\", \"@glimmer/tracking\", \"@ember/template-factory\"], function (_exports, _component, _component2, _moment, _tracking, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"moment\",0,\"@glimmer/tracking\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{yield}}\n  <SettifySelect @model={{this.selectedTime}} @label={{this.label}} @content={{this.selectableTimes}} @labelPath=\"label\" @valuePath=\"value\" @prompt={{this.placeholder}} @onChange={{if @onChange (fn @onChange this.selectedTimeString)}}/>\n  */\n  {\n    \"id\": \"dNHGjx7V\",\n    \"block\": \"[[[18,2,null],[1,\\\"\\\\n\\\"],[8,[39,1],null,[[\\\"@model\\\",\\\"@label\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\",\\\"@prompt\\\",\\\"@onChange\\\"],[[30,0,[\\\"selectedTime\\\"]],[30,0,[\\\"label\\\"]],[30,0,[\\\"selectableTimes\\\"]],\\\"label\\\",\\\"value\\\",[30,0,[\\\"placeholder\\\"]],[52,[30,1],[28,[37,3],[[30,1],[30,0,[\\\"selectedTimeString\\\"]]],null]]]],null]],[\\\"@onChange\\\",\\\"&default\\\"],false,[\\\"yield\\\",\\\"settify-select\\\",\\\"if\\\",\\\"fn\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/time-picker.hbs\",\n    \"isStrictMode\": false\n  });\n  let TimePickerComponent = _exports.default = (_class = class TimePickerComponent extends _component2.default {\n    constructor(owner, args) {\n      super(owner, args);\n      _initializerDefineProperty(this, \"selectedTime\", _descriptor, this);\n      this.defaultMinHour = 6;\n      this.defaultMaxHour = 20;\n      this.defaultInterval = 30;\n      this.placeholder = this.args?.placeholder || \"Click here to select a time\";\n      const options = this.args?.options || {};\n\n      // Generate selectable times dynamically\n      this.selectableTimes = this.generateSelectableTimes(options);\n\n      // Setting the default selected time if specified\n      if (options.defaultTime) {\n        const defaultTimeFormatted = (0, _moment.default)(options.defaultTime, \"ddd MMM DD YYYY HH:mm:ss\").format(\"LT\");\n        const defaultOption = this.selectableTimes.find(time => time.label === defaultTimeFormatted);\n        this.selectedTime = defaultOption ? defaultOption.value : null;\n      }\n    }\n    generateSelectableTimes(options) {\n      const minHour = options.minHour || this.defaultMinHour;\n      const maxHour = options.maxHour || this.defaultMaxHour;\n      const interval = options.interval || this.defaultInterval;\n      const startTime = (0, _moment.default)(minHour, \"HH:mm\");\n      const endTime = (0, _moment.default)(maxHour, \"HH:mm\");\n      const selectableTimes = [];\n      while (startTime.isSameOrBefore(endTime)) {\n        selectableTimes.push({\n          label: startTime.format(\"LT\"),\n          value: {\n            hour: startTime.hour(),\n            minute: startTime.minute()\n          }\n        });\n        startTime.add(interval, \"minutes\");\n      }\n      return selectableTimes;\n    }\n    get selectedTimeString() {\n      if (this.selectedTime) {\n        return (0, _moment.default)().startOf(\"hour\").set(this.selectedTime).toDate();\n      }\n      return null;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"selectedTime\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, TimePickerComponent);\n});","define(\"settify-mvp/components/tip-tap-editor/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@ember/runloop\", \"@tiptap/core\", \"@tiptap/extension-text-align\", \"@tiptap/starter-kit\", \"@tiptap/extension-link\", \"@glimmer/tracking\", \"settify-mvp/lib/customisations/tiptap_extensions\", \"settify-mvp/lib/customisations/tiptap_nodes\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _runloop, _core, _extensionTextAlign, _starterKit, _extensionLink, _tracking, _tiptap_extensions, _tiptap_nodes, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@ember/runloop\",0,\"@tiptap/core\",0,\"@tiptap/extension-text-align\",0,\"@tiptap/starter-kit\",0,\"@tiptap/extension-link\",0,\"@glimmer/tracking\",0,\"settify-mvp/lib/customisations/tiptap_extensions\",0,\"settify-mvp/lib/customisations/tiptap_nodes\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <section class=\"tiptap-wrapper\">\n    <div class=\"tiptap-toolbar\">\n      <select onchange={{action \"setFormatting\" value=\"target.value\"}}>\n        <option value=\"paragraph\">Normal text</option>\n        <option value=\"1\">Heading 1</option>\n        <option value=\"2\">Heading 2</option>\n        <option value=\"3\">Heading 3</option>\n        <option value=\"4\">Heading 4</option>\n      </select>\n      <button title=\"Bold\" type=\"button\" {{on \"click\" (fn this.toggleTextFormat \"bold\")}}>\n        <img src=\"/assets/images/icons/editor-icons/bold.svg\" alt=\"Bold\" />\n      </button>\n      <button title=\"Italic\" type=\"button\" {{on \"click\" (fn this.toggleTextFormat \"italic\")}}>\n        <img src=\"/assets/images/icons/editor-icons/italic.svg\" alt=\"Italic\" />\n      </button>\n      <button title=\"Align Left\" type=\"button\" {{on \"click\" (fn this.toggleTextFormat \"align\" \"left\")}}>\n        <img src=\"/assets/images/icons/editor-icons/text-align-left.svg\" alt=\"Align Left\" />\n      </button>\n      <button title=\"Align Center\" type=\"button\" {{on \"click\" (fn this.toggleTextFormat \"align\" \"center\")}}>\n        <img src=\"/assets/images/icons/editor-icons/text-align-center.svg\" alt=\"Align Center\" />\n      </button>\n      <button title=\"Align Right\" type=\"button\" {{on \"click\" (fn this.toggleTextFormat \"align\" \"right\")}}>\n        <img src=\"/assets/images/icons/editor-icons/text-align-right.svg\" alt=\"Align Right\" />\n      </button>\n      <button title=\"Align Justify\" type=\"button\" {{on \"click\" (fn this.toggleTextFormat \"align\" \"justify\")}}>\n        <img src=\"/assets/images/icons/editor-icons/text-align-justify.svg\" alt=\"Align Justify\" />\n      </button>\n      <button title=\"Add a bullet point\" type=\"button\" {{on \"click\" (fn this.toggleTextFormat \"list\")}}>\n        <img src=\"/assets/images/icons/editor-icons/list.svg\" alt=\"Unordered list\" />\n      </button>\n  \n      <V2::Dropdown @id=\"tiptap-links\" @toggleDropdown={{this.openLinkDropdown}} @clickedOutside={{this.closeLinkDropdown}} as |dropdown|>\n        <dropdown.header>\n          <button title=\"Add Link\" type=\"button\" aria-haspopup=\"listbox\" aria-expanded={{this.showLinkDropdown}}>\n            <img src=\"/assets/images/icons/editor-icons/link.svg\" alt=\"Add Link\" />\n          </button>\n        </dropdown.header>\n        <dropdown.content @isOpen={{this.showLinkDropdown}}>\n          <div class=\"dropdown-content\">\n            <div class=\"dropdown-content-item\">\n              <SettifyTextline @headerLabel={{true}} @model={{this.linkText}} @type=\"text\">\n                <b>Text</b>\n              </SettifyTextline>\n            </div>\n            <div class=\"dropdown-content-item\">\n              <SettifyTextline @headerLabel={{true}} @model={{this.linkUrl}} @type=\"url\">\n                <b>URL</b>\n              </SettifyTextline>\n            </div>\n  \n            <div class=\"dropdown-content-item flex-end\">\n              {{#if this.hasActiveLink}}\n                <button type=\"button\" aria-label=\"Remove link\" class=\"previous-button dangerous-button small-button\" {{on \"click\" this.removeLink}}>\n                  Remove\n                </button>\n              {{/if}}\n              <button type=\"button\" aria-label=\"Apply link\" class=\"next-button small-button\" {{on \"click\" this.addLink}}>\n                Apply\n              </button>\n            </div>\n          </div>\n        </dropdown.content>\n      </V2::Dropdown>\n  \n      <V2::Dropdown @id=\"tiptap-more-actions\" @toggleDropdown={{this.openActionMenu}} @clickedOutside={{this.onClickedOutside}} as |dropdown|>\n        <dropdown.header>\n          <button type=\"button\" aria-haspopup=\"listbox\" aria-expanded={{this.showDynamicBlocksList}} aria-label=\"Insert dynamic content\">\n            <i class=\"fa-light fa-ellipsis\"></i>\n          </button>\n        </dropdown.header>\n        <dropdown.content @isOpen={{this.showDynamicBlocksList}}>\n          <ul class=\"dropdown-content\" tabindex=\"-1\" role=\"listbox\" aria-labelledby=\"listbox-label\">\n            {{#each @dynamicBlocks as |block|}}\n              <li class=\"dropdown-content-item\">\n                <button type=\"button\" {{on \"click\" (fn this.addCustomBlock block)}}>\n                  <div>{{block.title}} | <span>{{block.id}}</span></div>\n                  <span><i>{{block.description}}</i></span>\n                </button>\n              </li>\n            {{/each}}\n          </ul>\n        </dropdown.content>\n      </V2::Dropdown>\n    </div>\n    <div class=\"tiptap-element\"></div>\n  </section>\n  */\n  {\n    \"id\": \"bqxi1dzj\",\n    \"block\": \"[[[10,\\\"section\\\"],[14,0,\\\"tiptap-wrapper\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"tiptap-toolbar\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"select\\\"],[15,\\\"onchange\\\",[28,[37,3],[[30,0],\\\"setFormatting\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[12],[1,\\\"\\\\n      \\\"],[10,\\\"option\\\"],[14,2,\\\"paragraph\\\"],[12],[1,\\\"Normal text\\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"option\\\"],[14,2,\\\"1\\\"],[12],[1,\\\"Heading 1\\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"option\\\"],[14,2,\\\"2\\\"],[12],[1,\\\"Heading 2\\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"option\\\"],[14,2,\\\"3\\\"],[12],[1,\\\"Heading 3\\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"option\\\"],[14,2,\\\"4\\\"],[12],[1,\\\"Heading 4\\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[11,\\\"button\\\"],[24,\\\"title\\\",\\\"Bold\\\"],[24,4,\\\"button\\\"],[4,[38,6],[\\\"click\\\",[28,[37,7],[[30,0,[\\\"toggleTextFormat\\\"]],\\\"bold\\\"],null]],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"/assets/images/icons/editor-icons/bold.svg\\\"],[14,\\\"alt\\\",\\\"Bold\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[11,\\\"button\\\"],[24,\\\"title\\\",\\\"Italic\\\"],[24,4,\\\"button\\\"],[4,[38,6],[\\\"click\\\",[28,[37,7],[[30,0,[\\\"toggleTextFormat\\\"]],\\\"italic\\\"],null]],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"/assets/images/icons/editor-icons/italic.svg\\\"],[14,\\\"alt\\\",\\\"Italic\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[11,\\\"button\\\"],[24,\\\"title\\\",\\\"Align Left\\\"],[24,4,\\\"button\\\"],[4,[38,6],[\\\"click\\\",[28,[37,7],[[30,0,[\\\"toggleTextFormat\\\"]],\\\"align\\\",\\\"left\\\"],null]],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"/assets/images/icons/editor-icons/text-align-left.svg\\\"],[14,\\\"alt\\\",\\\"Align Left\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[11,\\\"button\\\"],[24,\\\"title\\\",\\\"Align Center\\\"],[24,4,\\\"button\\\"],[4,[38,6],[\\\"click\\\",[28,[37,7],[[30,0,[\\\"toggleTextFormat\\\"]],\\\"align\\\",\\\"center\\\"],null]],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"/assets/images/icons/editor-icons/text-align-center.svg\\\"],[14,\\\"alt\\\",\\\"Align Center\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[11,\\\"button\\\"],[24,\\\"title\\\",\\\"Align Right\\\"],[24,4,\\\"button\\\"],[4,[38,6],[\\\"click\\\",[28,[37,7],[[30,0,[\\\"toggleTextFormat\\\"]],\\\"align\\\",\\\"right\\\"],null]],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"/assets/images/icons/editor-icons/text-align-right.svg\\\"],[14,\\\"alt\\\",\\\"Align Right\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[11,\\\"button\\\"],[24,\\\"title\\\",\\\"Align Justify\\\"],[24,4,\\\"button\\\"],[4,[38,6],[\\\"click\\\",[28,[37,7],[[30,0,[\\\"toggleTextFormat\\\"]],\\\"align\\\",\\\"justify\\\"],null]],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"/assets/images/icons/editor-icons/text-align-justify.svg\\\"],[14,\\\"alt\\\",\\\"Align Justify\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[11,\\\"button\\\"],[24,\\\"title\\\",\\\"Add a bullet point\\\"],[24,4,\\\"button\\\"],[4,[38,6],[\\\"click\\\",[28,[37,7],[[30,0,[\\\"toggleTextFormat\\\"]],\\\"list\\\"],null]],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"/assets/images/icons/editor-icons/list.svg\\\"],[14,\\\"alt\\\",\\\"Unordered list\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[8,[39,9],null,[[\\\"@id\\\",\\\"@toggleDropdown\\\",\\\"@clickedOutside\\\"],[\\\"tiptap-links\\\",[30,0,[\\\"openLinkDropdown\\\"]],[30,0,[\\\"closeLinkDropdown\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,1,[\\\"header\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,\\\"button\\\"],[14,\\\"title\\\",\\\"Add Link\\\"],[14,\\\"aria-haspopup\\\",\\\"listbox\\\"],[15,\\\"aria-expanded\\\",[30,0,[\\\"showLinkDropdown\\\"]]],[14,4,\\\"button\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"/assets/images/icons/editor-icons/link.svg\\\"],[14,\\\"alt\\\",\\\"Add Link\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[30,1,[\\\"content\\\"]],null,[[\\\"@isOpen\\\"],[[30,0,[\\\"showLinkDropdown\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"dropdown-content\\\"],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"dropdown-content-item\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,10],null,[[\\\"@headerLabel\\\",\\\"@model\\\",\\\"@type\\\"],[true,[30,0,[\\\"linkText\\\"]],\\\"text\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,\\\"b\\\"],[12],[1,\\\"Text\\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"dropdown-content-item\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,10],null,[[\\\"@headerLabel\\\",\\\"@model\\\",\\\"@type\\\"],[true,[30,0,[\\\"linkUrl\\\"]],\\\"url\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,\\\"b\\\"],[12],[1,\\\"URL\\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\\n          \\\"],[10,0],[14,0,\\\"dropdown-content-item flex-end\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"hasActiveLink\\\"]],[[[1,\\\"              \\\"],[11,\\\"button\\\"],[24,\\\"aria-label\\\",\\\"Remove link\\\"],[24,0,\\\"previous-button dangerous-button small-button\\\"],[24,4,\\\"button\\\"],[4,[38,6],[\\\"click\\\",[30,0,[\\\"removeLink\\\"]]],null],[12],[1,\\\"\\\\n                Remove\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[11,\\\"button\\\"],[24,\\\"aria-label\\\",\\\"Apply link\\\"],[24,0,\\\"next-button small-button\\\"],[24,4,\\\"button\\\"],[4,[38,6],[\\\"click\\\",[30,0,[\\\"addLink\\\"]]],null],[12],[1,\\\"\\\\n              Apply\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"]],[1]]]]],[1,\\\"\\\\n\\\\n    \\\"],[8,[39,9],null,[[\\\"@id\\\",\\\"@toggleDropdown\\\",\\\"@clickedOutside\\\"],[\\\"tiptap-more-actions\\\",[30,0,[\\\"openActionMenu\\\"]],[30,0,[\\\"onClickedOutside\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"header\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,\\\"button\\\"],[14,\\\"aria-haspopup\\\",\\\"listbox\\\"],[15,\\\"aria-expanded\\\",[30,0,[\\\"showDynamicBlocksList\\\"]]],[14,\\\"aria-label\\\",\\\"Insert dynamic content\\\"],[14,4,\\\"button\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fa-light fa-ellipsis\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[30,2,[\\\"content\\\"]],null,[[\\\"@isOpen\\\"],[[30,0,[\\\"showDynamicBlocksList\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,\\\"ul\\\"],[14,0,\\\"dropdown-content\\\"],[14,\\\"tabindex\\\",\\\"-1\\\"],[14,\\\"role\\\",\\\"listbox\\\"],[14,\\\"aria-labelledby\\\",\\\"listbox-label\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,16],[[28,[37,16],[[30,3]],null]],null],null,[[[1,\\\"            \\\"],[10,\\\"li\\\"],[14,0,\\\"dropdown-content-item\\\"],[12],[1,\\\"\\\\n              \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,6],[\\\"click\\\",[28,[37,7],[[30,0,[\\\"addCustomBlock\\\"]],[30,4]],null]],null],[12],[1,\\\"\\\\n                \\\"],[10,0],[12],[1,[30,4,[\\\"title\\\"]]],[1,\\\" | \\\"],[10,1],[12],[1,[30,4,[\\\"id\\\"]]],[13],[13],[1,\\\"\\\\n                \\\"],[10,1],[12],[10,\\\"i\\\"],[12],[1,[30,4,[\\\"description\\\"]]],[13],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[4]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"]],[2]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"tiptap-element\\\"],[12],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"dropdown\\\",\\\"dropdown\\\",\\\"@dynamicBlocks\\\",\\\"block\\\"],false,[\\\"section\\\",\\\"div\\\",\\\"select\\\",\\\"action\\\",\\\"option\\\",\\\"button\\\",\\\"on\\\",\\\"fn\\\",\\\"img\\\",\\\"v2/dropdown\\\",\\\"settify-textline\\\",\\\"b\\\",\\\"if\\\",\\\"i\\\",\\\"ul\\\",\\\"each\\\",\\\"-track-array\\\",\\\"li\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/tip-tap-editor/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * Component that initialises and manages a rich text editor using TipTap.\n   * It supports custom block types, text alignment and dynamic formatting options.\n   */\n  let TipTapEditorComponent = _exports.default = (_class = class TipTapEditorComponent extends _component2.default {\n    constructor() {\n      super(...arguments);\n      _initializerDefineProperty(this, \"showDynamicBlocksList\", _descriptor, this);\n      _initializerDefineProperty(this, \"showLinkDropdown\", _descriptor2, this);\n      _initializerDefineProperty(this, \"linkUrl\", _descriptor3, this);\n      _initializerDefineProperty(this, \"linkText\", _descriptor4, this);\n      this.configureTipTap();\n    }\n\n    /**\n     * Configures the TipTap editor with custom extensions and sets the initial content.\n     * Uses Ember's run loop to ensure proper scheduling.\n     */\n    async configureTipTap() {\n      return (0, _runloop.later)(this, function () {\n        const editor = new _core.Editor({\n          element: document.querySelector(\".tiptap-element\"),\n          extensions: [_tiptap_nodes.NonEditableBlockNode, _tiptap_nodes.NonEditableInlineNode, _tiptap_nodes.DraggableItem.extend({\n            addKeyboardShortcuts() {\n              return {\n                Enter: () => this.editor.commands.insertDraggableItem()\n              };\n            }\n          }), _tiptap_extensions.CustomListItem, _tiptap_extensions.CustomParagraph, _tiptap_extensions.CustomHeading.configure({\n            HTMLAttributes: {\n              class: \"draggable-item\"\n            }\n          }), _starterKit.default.configure({\n            heading: false,\n            listItem: false,\n            paragraph: false\n          }), _extensionTextAlign.default.configure({\n            types: [\"heading\", \"paragraph\", \"draggableItem\"]\n          }), _extensionLink.default.configure({\n            openOnClick: false,\n            HTMLAttributes: {\n              rel: \"noopener noreferrer\",\n              target: \"_blank\"\n            }\n          })],\n          content: this.args.content\n        });\n        this.args.setEditor(editor);\n      });\n    }\n\n    /**\n     * Checks if there is an active URL link\n     * @return {number|boolean}\n     */\n    get hasActiveLink() {\n      return this.linkUrl?.trim()?.length || false;\n    }\n\n    /**\n     * Toggles text formatting (bold, italic, bullet list) or text alignment.\n     * @param {string} type - The type of formatting (bold, italic, list, align).\n     * @param {string} [alignment] - The alignment direction (left, center, right).\n     */\n    toggleTextFormat(type, alignment) {\n      const formatActions = {\n        bold: () => this.args.editor.chain().focus().toggleBold().run(),\n        italic: () => this.args.editor.chain().focus().toggleItalic().run(),\n        list: () => this.args.editor.chain().focus().toggleBulletList().run(),\n        align: alignment => this.args.editor.chain().focus().setTextAlign(alignment).run()\n      };\n      const action = formatActions[type];\n      if (action) action(alignment);\n    }\n\n    /**\n     * Sets formatting to a paragraph or a specific heading level.\n     * @param {string} option - 'paragraph' or a numeric string representing heading level.\n     */\n    setFormatting(option) {\n      if (option === \"paragraph\") {\n        return this.args.editor.chain().focus().setDraggableItem().run();\n      }\n      this.args.editor.chain().focus().toggleHeading({\n        level: parseInt(option)\n      }).run();\n    }\n\n    /**\n     * Toggles the visibility of the dynamic blocks action menu.\n     */\n    openActionMenu() {\n      this.showDynamicBlocksList = !this.showDynamicBlocksList;\n    }\n\n    /**\n     * Closes the dynamic blocks action menu when clicking outside.\n     */\n    onClickedOutside() {\n      if (this.showDynamicBlocksList) this.showDynamicBlocksList = false;\n    }\n\n    /**\n     * Opens the visibility of the link dropdown.\n     */\n    openLinkDropdown() {\n      if (this.showLinkDropdown) return;\n      this.showLinkDropdown = true;\n      // Set up values if we are opening the dropdown\n      const {\n        from,\n        to\n      } = this.args.editor.state.selection;\n      const selectedText = this.args.editor.state.doc.textBetween(from, to);\n\n      // Check if the cursor is on a link\n      const linkAttrs = this.args.editor.getAttributes(\"link\");\n      if (linkAttrs.href) {\n        // Editing existing link\n        this.linkUrl = linkAttrs.href;\n        this.linkText = selectedText || linkAttrs.href;\n        return;\n      }\n\n      // Creating new link\n      this.linkUrl = \"\";\n      this.linkText = selectedText || \"\";\n    }\n\n    /**\n     * Closes the link dropdown when clicking outside.\n     */\n    closeLinkDropdown() {\n      if (this.showLinkDropdown) {\n        this.showLinkDropdown = false;\n        this.linkUrl = \"\";\n        this.linkText = \"\";\n      }\n    }\n\n    /**\n     * Adds or updates a link in the editor.\n     */\n    addLink() {\n      let url = this.linkUrl?.trim();\n      if (!url) {\n        return this.removeLink();\n      }\n\n      // Add protocol if missing\n      if (!url.match(/^https?:\\/\\//)) {\n        url = `https://${url}`;\n      }\n      const displayText = this.linkText?.trim() || url;\n      if (this.args.editor?.state?.selection?.empty) {\n        // No text selected - insert a new text node with a link mark\n        this.args.editor.chain().focus().insertContent(`<a href=\"${url}\">${displayText}</a>`).run();\n      } else {\n        // Text is selected - replace text and apply link\n        this.args.editor.chain().focus().insertContent(displayText).extendMarkRange(\"link\").setLink({\n          href: url\n        }).run();\n      }\n      this.closeLinkDropdown();\n    }\n\n    /**\n     * Removes link formatting from the current selection.\n     */\n    removeLink() {\n      this.args.editor.chain().focus().extendMarkRange(\"link\").unsetLink().run();\n      this.closeLinkDropdown();\n    }\n\n    /**\n     * Inserts a custom non-editable inline block into the editor.\n     * @param {string} block - Block type/content to be inserted (e.g. LAWYER_NAME).\n     */\n    addCustomBlock(block) {\n      const blockType = block.type ?? \"nonEditableInline\";\n      this.args.editor.chain().focus().insertContent({\n        type: blockType,\n        content: [{\n          type: \"text\",\n          text: block.id\n        }],\n        attrs: {\n          canBeRemoved: true\n        }\n      }).run();\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"showDynamicBlocksList\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"showLinkDropdown\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"linkUrl\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"linkText\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"toggleTextFormat\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleTextFormat\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"setFormatting\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"setFormatting\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"openActionMenu\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"openActionMenu\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"onClickedOutside\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"onClickedOutside\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"openLinkDropdown\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"openLinkDropdown\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"closeLinkDropdown\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"closeLinkDropdown\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"addLink\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"addLink\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"removeLink\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"removeLink\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"addCustomBlock\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"addCustomBlock\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, TipTapEditorComponent);\n});","define(\"settify-mvp/components/title-printer\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{!-- Title --}}\n  <span class={{if @model.deleted \"disabled-element\"}}>\n    {{this.chapterPageQuestionID}}\n    {{#unless @model.standalonePages}}\n      <DisplayIfIcon @displayIf={{@model.displayIf}} />\n    {{/unless}}\n    {{parse-text this.titleToDisplay clientRecord=@clientRecord touch=@clientRecord.touch context=@context blueprintMode=true}}\n  </span>\n  {{#if @includeID}}\n    <small>{{@model.id}}</small>\n  {{/if}}\n  \n  {{!-- Labels --}}\n  {{#if @model.__newElement}}\n    <span class=\"pill-label\" data-text=\"New to this form\">New {{@titleFor}}</span>\n  {{/if}}\n  \n  {{#if @model.__diffs as |diff|}}\n    {{#if (and diff.deleted (not @model.deleted))}}\n      <span class=\"pill-label\" data-text=\"Was disabled, now enabled\">Now enabled</span>\n    {{else if (and (not diff.deleted) @model.deleted)}}\n      <span class=\"pill-label\" data-text=\"Was enabled, now disabled\">Now disabled</span>\n    {{else}}\n      <span class=\"pill-label\" data-text=\"Contains changes\">Changed</span>\n    {{/if}}\n  {{/if}}\n  */\n  {\n    \"id\": \"ggXmgh2Q\",\n    \"block\": \"[[[10,1],[15,0,[52,[30,1,[\\\"deleted\\\"]],\\\"disabled-element\\\"]],[12],[1,\\\"\\\\n  \\\"],[1,[30,0,[\\\"chapterPageQuestionID\\\"]]],[1,\\\"\\\\n\\\"],[41,[51,[30,1,[\\\"standalonePages\\\"]]],[[[1,\\\"    \\\"],[8,[39,3],null,[[\\\"@displayIf\\\"],[[30,1,[\\\"displayIf\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[1,[28,[35,4],[[30,0,[\\\"titleToDisplay\\\"]]],[[\\\"clientRecord\\\",\\\"touch\\\",\\\"context\\\",\\\"blueprintMode\\\"],[[30,2],[30,2,[\\\"touch\\\"]],[30,3],true]]]],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,4],[[[1,\\\"  \\\"],[10,\\\"small\\\"],[12],[1,[30,1,[\\\"id\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"__newElement\\\"]],[[[1,\\\"  \\\"],[10,1],[14,0,\\\"pill-label\\\"],[14,\\\"data-text\\\",\\\"New to this form\\\"],[12],[1,\\\"New \\\"],[1,[30,5]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"__diffs\\\"]],[[[41,[28,[37,6],[[30,6,[\\\"deleted\\\"]],[28,[37,7],[[30,1,[\\\"deleted\\\"]]],null]],null],[[[1,\\\"    \\\"],[10,1],[14,0,\\\"pill-label\\\"],[14,\\\"data-text\\\",\\\"Was disabled, now enabled\\\"],[12],[1,\\\"Now enabled\\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,6],[[28,[37,7],[[30,6,[\\\"deleted\\\"]]],null],[30,1,[\\\"deleted\\\"]]],null],[[[1,\\\"    \\\"],[10,1],[14,0,\\\"pill-label\\\"],[14,\\\"data-text\\\",\\\"Was enabled, now disabled\\\"],[12],[1,\\\"Now disabled\\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[10,1],[14,0,\\\"pill-label\\\"],[14,\\\"data-text\\\",\\\"Contains changes\\\"],[12],[1,\\\"Changed\\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]],[]]]],[6]],null]],[\\\"@model\\\",\\\"@clientRecord\\\",\\\"@context\\\",\\\"@includeID\\\",\\\"@titleFor\\\",\\\"diff\\\"],false,[\\\"span\\\",\\\"if\\\",\\\"unless\\\",\\\"display-if-icon\\\",\\\"parse-text\\\",\\\"small\\\",\\\"and\\\",\\\"not\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/title-printer.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({\n    tagName: \"\",\n    chapterPageQuestionID: (0, _object.computed)(\"chapterNumber\", \"pageNumber\", \"questionNumber\", function () {\n      const idList = [this.chapterNumber, this.pageNumber, this.questionNumber];\n      return idList.filter(id => id !== undefined).map(id => id + 1).join(\".\");\n    }),\n    titleToDisplay: (0, _object.computed)(\"model.title\", \"model.content\", \"model.type\", \"model.id\", \"titleFor\", function () {\n      const title = this.get(\"model.title\");\n      if (title && typeof title === \"string\" && title.trim()) {\n        return title;\n      }\n      const content = this.get(\"model.content\");\n      const questionType = this.get(\"model.type\");\n      // Some questions/sub-questions don't have a title\n      if (content && typeof content === \"string\") {\n        return content;\n      } else if (questionType === \"block\") {\n        return `Block: ${this.get(\"model.id\")}`;\n      } else if (questionType) {\n        return questionType;\n      }\n      return `Unnamed ${this.titleFor}`;\n    })\n  }));\n});","define(\"settify-mvp/components/triage-interface\", [\"exports\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{yield}}\n  <div class=\"centertext\">\n    {{#each @options as |option index|}}\n      {{#if (or (not @repeatableOnly) option.canBeRepeated)}}\n        <TriageOption @option={{option}} @delay={{index}} @selected={{option.selected}} @addInduction={{action \"addInduction\"}} @removeInduction={{action \"removeInduction\"}} />\n      {{/if}}\n    {{/each}}\n  </div>\n  */\n  {\n    \"id\": \"5/CfkV/e\",\n    \"block\": \"[[[18,5,null],[1,\\\"\\\\n\\\"],[10,0],[14,0,\\\"centertext\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,3],[[28,[37,3],[[30,1]],null]],null],null,[[[41,[28,[37,5],[[28,[37,6],[[30,4]],null],[30,2,[\\\"canBeRepeated\\\"]]],null],[[[1,\\\"      \\\"],[8,[39,7],null,[[\\\"@option\\\",\\\"@delay\\\",\\\"@selected\\\",\\\"@addInduction\\\",\\\"@removeInduction\\\"],[[30,2],[30,3],[30,2,[\\\"selected\\\"]],[28,[37,8],[[30,0],\\\"addInduction\\\"],null],[28,[37,8],[[30,0],\\\"removeInduction\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[2,3]],null],[13]],[\\\"@options\\\",\\\"option\\\",\\\"index\\\",\\\"@repeatableOnly\\\",\\\"&default\\\"],false,[\\\"yield\\\",\\\"div\\\",\\\"each\\\",\\\"-track-array\\\",\\\"if\\\",\\\"or\\\",\\\"not\\\",\\\"triage-option\\\",\\\"action\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/triage-interface.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({\n    actions: {\n      addInduction(option) {\n        this.model.addInduction(option);\n      },\n      removeInduction(option) {\n        this.model.removeInduction(option.formID);\n      }\n    }\n  }));\n});","define(\"settify-mvp/components/triage-option\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <button type=\"button\" class=\"triage-option {{unless @form.alwaysSelected \"clickable\"}} delay{{@delay}} {{if (eq @selectedForm.formID @form.formID) \"selected\"}}\" {{on \"click\" (fn @toggleSelectedForm @form)}}>\n    {{#if @form.icon}}\n      <div class=\"chapter-animation-container\">\n        <ChapterAnimation @icon={{@form.icon}} @iconOffset={{@form.iconOffset}} @delay={{@delay}}>\n          <b class={{if (gt @form.displayTitle.length 45) \"smallerText\" \"\"}}>{{@form.displayTitle}}</b>\n        </ChapterAnimation>\n      </div>\n    {{else}}\n      <b>{{@form.title}}</b>\n    {{/if}}\n    <p>\n      {{@form.blurb}}\n    </p>\n    <div class=\"select-area\">\n      <CheckBox @model={{eq @selectedForm.formID @form.formID}} @disabled={{true}} />\n    </div>\n  </button>\n  */\n  {\n    \"id\": \"5GuzZVxM\",\n    \"block\": \"[[[11,\\\"button\\\"],[16,0,[29,[\\\"triage-option \\\",[52,[51,[30,1,[\\\"alwaysSelected\\\"]]],\\\"clickable\\\"],\\\" delay\\\",[30,2],\\\" \\\",[52,[28,[37,3],[[30,3,[\\\"formID\\\"]],[30,1,[\\\"formID\\\"]]],null],\\\"selected\\\"]]]],[24,4,\\\"button\\\"],[4,[38,4],[\\\"click\\\",[28,[37,5],[[30,4],[30,1]],null]],null],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"icon\\\"]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"chapter-animation-container\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,7],null,[[\\\"@icon\\\",\\\"@iconOffset\\\",\\\"@delay\\\"],[[30,1,[\\\"icon\\\"]],[30,1,[\\\"iconOffset\\\"]],[30,2]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,\\\"b\\\"],[15,0,[52,[28,[37,9],[[30,1,[\\\"displayTitle\\\",\\\"length\\\"]],45],null],\\\"smallerText\\\",\\\"\\\"]],[12],[1,[30,1,[\\\"displayTitle\\\"]]],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[10,\\\"b\\\"],[12],[1,[30,1,[\\\"title\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[10,2],[12],[1,\\\"\\\\n    \\\"],[1,[30,1,[\\\"blurb\\\"]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"select-area\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,11],null,[[\\\"@model\\\",\\\"@disabled\\\"],[[28,[37,3],[[30,3,[\\\"formID\\\"]],[30,1,[\\\"formID\\\"]]],null],true]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@form\\\",\\\"@delay\\\",\\\"@selectedForm\\\",\\\"@toggleSelectedForm\\\"],false,[\\\"button\\\",\\\"unless\\\",\\\"if\\\",\\\"eq\\\",\\\"on\\\",\\\"fn\\\",\\\"div\\\",\\\"chapter-animation\\\",\\\"b\\\",\\\"gt\\\",\\\"p\\\",\\\"check-box\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/triage-option.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/units-per\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"settify-mvp/helpers/format-number\", \"@ember/template-factory\"], function (_exports, _component, _component2, _formatNumber, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"settify-mvp/helpers/format-number\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @displayOnly}}\n    {{@label}}\n    {{#if this.unitsDisplay}}\n      {{this.unitsDisplay}} per \n      {{#if @timePeriod}}\n        {{@timePeriod}}\n      {{else}}\n        (time period not provided)\n      {{/if}}\n    {{else}}\n      <NoInformation />\n    {{/if}}\n  {{else}}\n    {{@label}}\n    <div class=\"units-per\">\n      <span>\n        {{#if (eq @unitType \"money\")}}\n          <SettifyNumber @class=\"date-input\" @model={{@unitsPer}} @placeholder=\"$\" @money={{true}} @min={{0}} @displayOnly={{@displayOnly}} @onChange={{@onChange}} />\n        {{else}}\n          <SettifyNumber @class=\"date-input\" @model={{@unitsPer}} @nocommas={{true}} @min={{0}} @max={{this.maxValue}} @onChange={{@onChange}} />\n          days\n        {{/if}}\n        per\n      </span>\n      <SettifySelect @class=\"date-input\" @label=\"\" @model={{@timePeriod}} @name=\"timeperiod\" @content={{this.timePeriods}} @labelPath=\"label\" @valuePath=\"value\" @onChange={{@onChange}} />\n    </div>\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"TVCiI/qg\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[1,[30,2]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"unitsDisplay\\\"]],[[[1,\\\"    \\\"],[1,[30,0,[\\\"unitsDisplay\\\"]]],[1,\\\" per \\\\n\\\"],[41,[30,3],[[[1,\\\"      \\\"],[1,[30,3]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      (time period not provided)\\\\n\\\"]],[]]]],[]],[[[1,\\\"    \\\"],[8,[39,1],null,null,null],[1,\\\"\\\\n\\\"]],[]]]],[]],[[[1,\\\"  \\\"],[1,[30,2]],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"units-per\\\"],[12],[1,\\\"\\\\n    \\\"],[10,1],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,4],[[30,4],\\\"money\\\"],null],[[[1,\\\"        \\\"],[8,[39,5],null,[[\\\"@class\\\",\\\"@model\\\",\\\"@placeholder\\\",\\\"@money\\\",\\\"@min\\\",\\\"@displayOnly\\\",\\\"@onChange\\\"],[\\\"date-input\\\",[30,5],\\\"$\\\",true,0,[30,1],[30,6]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[8,[39,5],null,[[\\\"@class\\\",\\\"@model\\\",\\\"@nocommas\\\",\\\"@min\\\",\\\"@max\\\",\\\"@onChange\\\"],[\\\"date-input\\\",[30,5],true,0,[30,0,[\\\"maxValue\\\"]],[30,6]]],null],[1,\\\"\\\\n        days\\\\n\\\"]],[]]],[1,\\\"      per\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,6],null,[[\\\"@class\\\",\\\"@label\\\",\\\"@model\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\",\\\"@onChange\\\"],[\\\"date-input\\\",\\\"\\\",[30,3],\\\"timeperiod\\\",[30,0,[\\\"timePeriods\\\"]],\\\"label\\\",\\\"value\\\",[30,6]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[\\\"@displayOnly\\\",\\\"@label\\\",\\\"@timePeriod\\\",\\\"@unitType\\\",\\\"@unitsPer\\\",\\\"@onChange\\\"],false,[\\\"if\\\",\\\"no-information\\\",\\\"div\\\",\\\"span\\\",\\\"eq\\\",\\\"settify-number\\\",\\\"settify-select\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/units-per.hbs\",\n    \"isStrictMode\": false\n  });\n  class UnitsPerComponent extends _component2.default {\n    get unitsDisplay() {\n      const units = Number(this.args.unitsPer);\n      if (!units && units !== 0) {\n        return \"\";\n      }\n      if (this.args.unitType === \"money\") {\n        return (0, _formatNumber.formatNumber)([units], {\n          money: true\n        });\n      }\n      const dayOrDays = units === 1 ? \"day\" : \"days\";\n      return `${units} ${dayOrDays}`;\n    }\n    get timePeriods() {\n      const timePeriodOptions = this.args.timePeriodOptions || {};\n      return Object.keys(timePeriodOptions).filter(time => timePeriodOptions[time]) // Filter out false key value pairs\n      .sort((a, b) => this.maxEnums[a] - this.maxEnums[b]) // Sort by max value lowest to highest\n      .map(time => {\n        return {\n          label: time,\n          value: time\n        };\n      });\n    }\n    get maxValue() {\n      return this.maxEnums[this.args.timePeriod];\n    }\n    get maxEnums() {\n      return {\n        week: 7,\n        fortnight: 14,\n        \"every two weeks\": 14,\n        month: 31,\n        year: 365\n      };\n    }\n  }\n  _exports.default = UnitsPerComponent;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, UnitsPerComponent);\n});","define(\"settify-mvp/components/v2/account-dropdown/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/service\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _component2, _service, _tracking, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/service\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::Dropdown @id=\"user-menu-button\" @toggleDropdown={{this.openProfileMenu}} @clickedOutside={{this.onClickedOutside}} as |dropdown|>\n    <dropdown.header>\n      <button\n        class=\"flex w-full items-center justify-between gap-2 rounded-md p-3 hover:bg-gray-800 hover:text-white focus:bg-gray-800 focus:text-white md:gap-3\"\n        type=\"button\"\n        aria-haspopup=\"true\"\n      >\n        <span class=\"sr-only\">Open account menu</span>\n        <span class=\"flex items-center gap-3\">\n          {{#if this.currentStaffMember.photoURL}}\n            <img class=\"size-8 shrink-0 rounded-lg bg-gray-500 object-cover\" src={{this.currentStaffMember.photoURL}} alt={{this.currentStaffMember.name}} />\n          {{else if this.currentStaffMember.nameInitials}}\n            <div class=\"flex size-8 shrink-0 items-center justify-center truncate rounded-lg bg-gray-500 p-1 text-sm text-white\">\n              {{this.currentStaffMember.nameInitials}}\n            </div>\n          {{else}}\n            <V2::SvgIcon @icon=\"empty-profile\" class=\"size-8 shrink-0 rounded-lg bg-gray-500 text-white\" />\n          {{/if}}\n          <span class=\"hidden flex-col items-baseline overflow-hidden md:flex\">\n            {{#if this.currentStaffMember.name}}\n              <span class=\"max-w-40 truncate text-sm font-medium\">{{this.currentStaffMember.name}}</span>\n            {{/if}}\n            <span class=\"max-w-40 truncate text-xs\">{{this.session.data.authenticated.username}}</span>\n          </span>\n        </span>\n        <V2::SvgIcon @icon=\"chevron-down\" class=\"size-3 shrink-0 lg:mr-1 {{this.dropdownIconDirection}}\" />\n      </button>\n    </dropdown.header>\n    <dropdown.content @isOpen={{this.profileMenuShown}}>\n      <div\n        class=\"absolute right-0 w-full min-w-48 rounded-md bg-gray-800 px-3.5 py-2 shadow-md focus:outline-none {{this.dropdownDirection}}\"\n        role=\"menu\"\n        aria-orientation=\"vertical\"\n        aria-labelledby=\"user-menu-button\"\n      >\n        {{#each this.profileMenuItems as |menuItem index|}}\n          <LinkTo @route={{menuItem.route}} class=\"block px-4 py-2 text-sm text-white hover:text-brand-primary-color-rgb\" role=\"menuitem\">\n            {{menuItem.title}}\n          </LinkTo>\n        {{/each}}\n        <hr class=\"my-1 rounded-md border-t border-gray-600\" />\n        <button class=\"block w-full px-4 py-2 text-left text-sm text-white hover:text-brand-primary-color-rgb\" type=\"button\" {{on \"click\" this.invalidateSession}}>\n          Sign Out\n        </button>\n      </div>\n    </dropdown.content>\n  </V2::Dropdown>\n  */\n  {\n    \"id\": \"UJ9X88LC\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@id\\\",\\\"@toggleDropdown\\\",\\\"@clickedOutside\\\"],[\\\"user-menu-button\\\",[30,0,[\\\"openProfileMenu\\\"]],[30,0,[\\\"onClickedOutside\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[30,1,[\\\"header\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,\\\"button\\\"],[14,0,\\\"flex w-full items-center justify-between gap-2 rounded-md p-3 hover:bg-gray-800 hover:text-white focus:bg-gray-800 focus:text-white md:gap-3\\\"],[14,\\\"aria-haspopup\\\",\\\"true\\\"],[14,4,\\\"button\\\"],[12],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Open account menu\\\"],[13],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"flex items-center gap-3\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"currentStaffMember\\\",\\\"photoURL\\\"]],[[[1,\\\"          \\\"],[10,\\\"img\\\"],[14,0,\\\"size-8 shrink-0 rounded-lg bg-gray-500 object-cover\\\"],[15,\\\"src\\\",[30,0,[\\\"currentStaffMember\\\",\\\"photoURL\\\"]]],[15,\\\"alt\\\",[30,0,[\\\"currentStaffMember\\\",\\\"name\\\"]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"currentStaffMember\\\",\\\"nameInitials\\\"]],[[[1,\\\"          \\\"],[10,0],[14,0,\\\"flex size-8 shrink-0 items-center justify-center truncate rounded-lg bg-gray-500 p-1 text-sm text-white\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[30,0,[\\\"currentStaffMember\\\",\\\"nameInitials\\\"]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[8,[39,6],[[24,0,\\\"size-8 shrink-0 rounded-lg bg-gray-500 text-white\\\"]],[[\\\"@icon\\\"],[\\\"empty-profile\\\"]],null],[1,\\\"\\\\n        \\\"]],[]]]],[]]],[1,\\\"        \\\"],[10,1],[14,0,\\\"hidden flex-col items-baseline overflow-hidden md:flex\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"currentStaffMember\\\",\\\"name\\\"]],[[[1,\\\"            \\\"],[10,1],[14,0,\\\"max-w-40 truncate text-sm font-medium\\\"],[12],[1,[30,0,[\\\"currentStaffMember\\\",\\\"name\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[10,1],[14,0,\\\"max-w-40 truncate text-xs\\\"],[12],[1,[30,0,[\\\"session\\\",\\\"data\\\",\\\"authenticated\\\",\\\"username\\\"]]],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,6],[[16,0,[29,[\\\"size-3 shrink-0 lg:mr-1 \\\",[30,0,[\\\"dropdownIconDirection\\\"]]]]]],[[\\\"@icon\\\"],[\\\"chevron-down\\\"]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[30,1,[\\\"content\\\"]],null,[[\\\"@isOpen\\\"],[[30,0,[\\\"profileMenuShown\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,0],[15,0,[29,[\\\"absolute right-0 w-full min-w-48 rounded-md bg-gray-800 px-3.5 py-2 shadow-md focus:outline-none \\\",[30,0,[\\\"dropdownDirection\\\"]]]]],[14,\\\"role\\\",\\\"menu\\\"],[14,\\\"aria-orientation\\\",\\\"vertical\\\"],[14,\\\"aria-labelledby\\\",\\\"user-menu-button\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,8],[[28,[37,8],[[30,0,[\\\"profileMenuItems\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[8,[39,9],[[24,0,\\\"block px-4 py-2 text-sm text-white hover:text-brand-primary-color-rgb\\\"],[24,\\\"role\\\",\\\"menuitem\\\"]],[[\\\"@route\\\"],[[30,2,[\\\"route\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[1,[30,2,[\\\"title\\\"]]],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[2,3]],null],[1,\\\"      \\\"],[10,\\\"hr\\\"],[14,0,\\\"my-1 rounded-md border-t border-gray-600\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[11,\\\"button\\\"],[24,0,\\\"block w-full px-4 py-2 text-left text-sm text-white hover:text-brand-primary-color-rgb\\\"],[24,4,\\\"button\\\"],[4,[38,11],[\\\"click\\\",[30,0,[\\\"invalidateSession\\\"]]],null],[12],[1,\\\"\\\\n        Sign Out\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[1]]]]]],[\\\"dropdown\\\",\\\"menuItem\\\",\\\"index\\\"],false,[\\\"v2/dropdown\\\",\\\"button\\\",\\\"span\\\",\\\"if\\\",\\\"img\\\",\\\"div\\\",\\\"v2/svg-icon\\\",\\\"each\\\",\\\"-track-array\\\",\\\"link-to\\\",\\\"hr\\\",\\\"on\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/account-dropdown/index.hbs\",\n    \"isStrictMode\": false\n  });\n  let AccountDropdownComponent = _exports.default = (_class = class AccountDropdownComponent extends _component2.default {\n    constructor() {\n      super(...arguments);\n      // TODO: externalise these to a higher-level component/service\n      _initializerDefineProperty(this, \"session\", _descriptor, this);\n      _initializerDefineProperty(this, \"store\", _descriptor2, this);\n      _initializerDefineProperty(this, \"profileMenuShown\", _descriptor3, this);\n      this.profileMenuItems = [{\n        title: \"Change Password\",\n        route: \"v2.auth.password\"\n      },\n      // { title: \"Account Settings\", route: \"v2.admin.settings\" },\n      {\n        title: \"Enable MFA\",\n        route: \"v2.auth.mfa\"\n      }];\n    }\n    get currentStaffMember() {\n      const allStaff = this.store.peekAll(\"staff\").toArray();\n      return allStaff.find(staff => staff.email === this.session.data?.authenticated?.username);\n    }\n    get dropdownIconDirection() {\n      const rotation = {\n        top: \"rotate-180\",\n        bottom: \"\"\n      };\n      return rotation[this.args?.dropDirection] ?? rotation.top;\n    }\n    get dropdownDirection() {\n      const direction = {\n        top: \"bottom-14 mb-0.5\",\n        bottom: \"top-14 mt-0.5\"\n      };\n      return direction[this.args?.dropDirection] ?? direction.top;\n    }\n    openProfileMenu() {\n      this.profileMenuShown = !this.profileMenuShown;\n    }\n    onClickedOutside() {\n      if (this.profileMenuShown) this.profileMenuShown = false;\n    }\n    async invalidateSession() {\n      await this.session.invalidate();\n      this.session.handleInvalidation(\"auth/login\");\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"store\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"profileMenuShown\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"openProfileMenu\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"openProfileMenu\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"onClickedOutside\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"onClickedOutside\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"invalidateSession\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"invalidateSession\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, AccountDropdownComponent);\n});","define(\"settify-mvp/components/v2/address-input/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object/internals\", \"@ember/template-factory\"], function (_exports, _component, _component2, _internals, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object/internals\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (or (has-block) @label)}}\n    <label id=\"{{this.id}}-label\" for=\"{{this.id}}-line-1\" class=\"block mb-2 {{if @required \"required-field-marker\"}}\">\n      {{#if (has-block)}}\n        {{yield}}\n      {{else}}\n        {{@label}}\n      {{/if}}\n    </label>\n  {{/if}}\n  \n  <div class=\"w-full grid grid-cols-1 gap-4 md:grid-cols-6\">\n    <div class=\"md:col-span-full\">\n      <V2::Textline placeholder=\"Address line 1\" @value={{@address.lineOne}} @id=\"{{this.id}}-line-1\" @required={{@required}} name=\"address-line-1\" class={{@class}} autoComplete={{@autoComplete}} @onChange={{@onChange}} />\n    </div>\n    <div class=\"md:col-span-full\">\n      <V2::Textline placeholder=\"Address line 2 (if required)\" @value={{@address.lineTwo}} @id=\"{{this.id}}-line-2\" name=\"address-line-2\" class={{@class}} autoComplete={{@autoComplete}} @onChange={{@onChange}} />\n    </div>\n    {{#if @addressOptions.includeLineThree}}\n      <div class=\"md:col-span-full\">\n        <V2::Textline placeholder=\"Address line 3 (if required)\" @value={{@address.lineThree}} @id=\"{{this.id}}-line-3\" name=\"address-line-3\" class={{@class}} autocomplete={{@autoComplete}} @onChange={{@onChange}}  />\n      </div>\n    {{/if}}\n  \n    <div class=\"md:col-span-2 md:col-start-1\">\n      <V2::Textline placeholder={{this.suburbPlaceholder}} @value={{@address.suburb}} @id=\"{{this.id}}-suburb\" @required={{this.isSuburbRequired}} name=\"address-suburb\" class={{@class}} autoComplete={{@autoComplete}} @onChange={{@onChange}} />\n    </div>\n    <div class=\"md:col-span-2\">\n      <V2::Textline placeholder={{this.statePlaceholder}} @value={{@address.state}} @id=\"{{this.id}}-state\" @required={{this.isStateRequired}} name=\"address-state\" class={{@class}} autoComplete={{@autoComplete}} @onChange={{@onChange}} />\n    </div>\n    <div class=\"md:col-span-2\">\n      <V2::Textline placeholder={{this.postcodePlaceholder}} @value={{@address.postcode}} @id=\"{{this.id}}-postcode\" @required={{@required}} name=\"address-postcode\" class={{@class}} autoComplete={{@autoComplete}} @onChange={{@onChange}} />\n    </div>\n  \n    {{#if @detailed}}\n      <div class=\"md:col-span-3\">\n        <V2::Textline placeholder=\"Country\" @value={{@address.country}} @id=\"{{this.id}}-country\" name=\"address-country\" class={{@class}} autoComplete={{@autoComplete}} @onChange={{@onChange}} />\n      </div>\n    {{/if}}\n  </div>\n  \n  */\n  {\n    \"id\": \"Gme05t3f\",\n    \"block\": \"[[[41,[28,[37,1],[[48,[30,9]],[30,1]],null],[[[1,\\\"  \\\"],[10,\\\"label\\\"],[15,1,[29,[[30,0,[\\\"id\\\"]],\\\"-label\\\"]]],[15,\\\"for\\\",[29,[[30,0,[\\\"id\\\"]],\\\"-line-1\\\"]]],[15,0,[29,[\\\"block mb-2 \\\",[52,[30,2],\\\"required-field-marker\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[48,[30,9]],[[[1,\\\"      \\\"],[18,9,null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[1,[30,1]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[10,0],[14,0,\\\"w-full grid grid-cols-1 gap-4 md:grid-cols-6\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"md:col-span-full\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,6],[[24,\\\"placeholder\\\",\\\"Address line 1\\\"],[24,3,\\\"address-line-1\\\"],[16,0,[30,3]],[16,\\\"autoComplete\\\",[30,4]]],[[\\\"@value\\\",\\\"@id\\\",\\\"@required\\\",\\\"@onChange\\\"],[[30,5,[\\\"lineOne\\\"]],[29,[[30,0,[\\\"id\\\"]],\\\"-line-1\\\"]],[30,2],[30,6]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"md:col-span-full\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,6],[[24,\\\"placeholder\\\",\\\"Address line 2 (if required)\\\"],[24,3,\\\"address-line-2\\\"],[16,0,[30,3]],[16,\\\"autoComplete\\\",[30,4]]],[[\\\"@value\\\",\\\"@id\\\",\\\"@onChange\\\"],[[30,5,[\\\"lineTwo\\\"]],[29,[[30,0,[\\\"id\\\"]],\\\"-line-2\\\"]],[30,6]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,7,[\\\"includeLineThree\\\"]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"md:col-span-full\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,6],[[24,\\\"placeholder\\\",\\\"Address line 3 (if required)\\\"],[24,3,\\\"address-line-3\\\"],[16,0,[30,3]],[16,\\\"autocomplete\\\",[30,4]]],[[\\\"@value\\\",\\\"@id\\\",\\\"@onChange\\\"],[[30,5,[\\\"lineThree\\\"]],[29,[[30,0,[\\\"id\\\"]],\\\"-line-3\\\"]],[30,6]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"md:col-span-2 md:col-start-1\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,6],[[16,\\\"placeholder\\\",[30,0,[\\\"suburbPlaceholder\\\"]]],[24,3,\\\"address-suburb\\\"],[16,0,[30,3]],[16,\\\"autoComplete\\\",[30,4]]],[[\\\"@value\\\",\\\"@id\\\",\\\"@required\\\",\\\"@onChange\\\"],[[30,5,[\\\"suburb\\\"]],[29,[[30,0,[\\\"id\\\"]],\\\"-suburb\\\"]],[30,0,[\\\"isSuburbRequired\\\"]],[30,6]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"md:col-span-2\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,6],[[16,\\\"placeholder\\\",[30,0,[\\\"statePlaceholder\\\"]]],[24,3,\\\"address-state\\\"],[16,0,[30,3]],[16,\\\"autoComplete\\\",[30,4]]],[[\\\"@value\\\",\\\"@id\\\",\\\"@required\\\",\\\"@onChange\\\"],[[30,5,[\\\"state\\\"]],[29,[[30,0,[\\\"id\\\"]],\\\"-state\\\"]],[30,0,[\\\"isStateRequired\\\"]],[30,6]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"md:col-span-2\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,6],[[16,\\\"placeholder\\\",[30,0,[\\\"postcodePlaceholder\\\"]]],[24,3,\\\"address-postcode\\\"],[16,0,[30,3]],[16,\\\"autoComplete\\\",[30,4]]],[[\\\"@value\\\",\\\"@id\\\",\\\"@required\\\",\\\"@onChange\\\"],[[30,5,[\\\"postcode\\\"]],[29,[[30,0,[\\\"id\\\"]],\\\"-postcode\\\"]],[30,2],[30,6]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,8],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"md:col-span-3\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,6],[[24,\\\"placeholder\\\",\\\"Country\\\"],[24,3,\\\"address-country\\\"],[16,0,[30,3]],[16,\\\"autoComplete\\\",[30,4]]],[[\\\"@value\\\",\\\"@id\\\",\\\"@onChange\\\"],[[30,5,[\\\"country\\\"]],[29,[[30,0,[\\\"id\\\"]],\\\"-country\\\"]],[30,6]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[13],[1,\\\"\\\\n\\\"]],[\\\"@label\\\",\\\"@required\\\",\\\"@class\\\",\\\"@autoComplete\\\",\\\"@address\\\",\\\"@onChange\\\",\\\"@addressOptions\\\",\\\"@detailed\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"or\\\",\\\"has-block\\\",\\\"label\\\",\\\"yield\\\",\\\"div\\\",\\\"v2/textline\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/address-input/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component for handling address input fields.\n   * @class AddressInputComponent\n   * @extends Component\n   * @param {Object} this.args.address - Object containing address details.\n   * @param {string} [this.args.label] - Text above the address inputs.\n   * @param {Object} this.args.addressOptions - Additional options for configuring address fields.\n   * @param {boolean} [this.args.addressOptions.includeLineThree] - Whether to include a third address line.\n   * @param {boolean} [this.args.addressOptions.suburbInputNotRequired] - Whether the suburb input is not required.\n   * @param {boolean} [this.args.addressOptions.customSuburbInput] - Whether to use a custom placeholder for suburb.\n   * @param {string} [this.args.addressOptions.suburbText] - Custom placeholder text for suburb input.\n   * @param {boolean} [this.args.addressOptions.stateInputNotRequired] - Whether the state input is not required.\n   * @param {boolean} [this.args.addressOptions.customStateInput] - Whether to use a custom placeholder for state.\n   * @param {string} [this.args.addressOptions.stateText] - Custom placeholder text for state input.\n   * @param {boolean} [this.args.addressOptions.customPostcodeInput] - Whether to use a custom placeholder for postcode.\n   * @param {string} [this.args.addressOptions.postcodeText] - Custom placeholder text for postcode input.\n   * @param {string} [this.args.id] - ID of the money input. If not provided, a unique ID will be generated.\n   * @param {boolean} [this.args.required] - Whether the address fields are required.\n   * @param {boolean} [this.args.detailed] - Whether the country input is shown.\n   * @param {string} [this.args.autoComplete] - Auto-complete behavior for address fields.\n   * @param {function} [this.args.onChange] - Action handler for when address fields change.\n   *\n   * @example\n   * ```handlebars\n   * <AddressInput\n   *   @address={{this.address}}\n   *   @addressOptions={{this.addressOptions}}\n   *   @required={{true}}\n   *   @onChange={{this.handleAddressChange}}\n   * />\n   * ```\n   */\n  class AddressInputComponent extends _component2.default {\n    get id() {\n      return this.args.id ?? `address-input-component-${(0, _internals.guidFor)(this)}`;\n    }\n\n    /**\n     * Gets the placeholder text for suburb input field.\n     * @returns {string} The suburb placeholder text.\n     */\n    get suburbPlaceholder() {\n      return this.args.addressOptions?.customSuburbInput && this.args.addressOptions.suburbText ? this.args.addressOptions.suburbText : \"Suburb\";\n    }\n\n    /**\n     * Checks if suburb input is required based on options and component requirements.\n     * @returns {boolean} True if suburb input is required, otherwise false.\n     */\n    get isSuburbRequired() {\n      return this.args.addressOptions?.suburbInputNotRequired ? false : this.args.required;\n    }\n\n    /**\n     * Gets the placeholder text for state input field.\n     * @returns {string} The state placeholder text.\n     */\n    get statePlaceholder() {\n      return this.args.addressOptions?.customStateInput && this.args.addressOptions.stateText ? this.args.addressOptions.stateText : \"State\";\n    }\n\n    /**\n     * Checks if state input is required based on options and component requirements.\n     * @returns {boolean} True if state input is required, otherwise false.\n     */\n    get isStateRequired() {\n      return this.args.addressOptions?.stateInputNotRequired ? false : this.args.required;\n    }\n\n    /**\n     * Gets the placeholder text for postcode input field.\n     * @returns {string} The postcode placeholder text.\n     */\n    get postcodePlaceholder() {\n      return this.args.addressOptions?.customPostcodeInput && this.args.addressOptions.postcodeText ? this.args.addressOptions.postcodeText : \"Postcode\";\n    }\n  }\n  _exports.default = AddressInputComponent;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, AddressInputComponent);\n});","define(\"settify-mvp/components/v2/address-select/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@glimmer/tracking\", \"settify-mvp/helpers/address-string\", \"uuid\", \"@ember/object/internals\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _tracking, _addressString, _uuid, _internals, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@glimmer/tracking\",0,\"settify-mvp/helpers/address-string\",0,\"uuid\",0,\"@ember/object/internals\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (or (has-block) @label)}}\n    <label id=\"{{this.id}}-label\" for=\"{{this.id}}-line-1\" class=\"mb-2 block {{if @required 'required-field-marker'}}\">\n      {{#if (has-block)}}\n        {{yield}}\n      {{else}}\n        {{@label}}\n      {{/if}}\n    </label>\n  {{/if}}\n  \n  {{#if this.showAddressOptions}}\n    <V2::RadioButtonGroup\n      @value={{@value.id}}\n      @options={{this.availableAddresses}}\n      @name=\"address-select\"\n      @id=\"{{this.id}}-options\"\n      @onChange={{this.selectAddress}}\n      @required={{@required}}\n      class=\"settify-sensitive\"\n    />\n    <V2::Button @size=\"small\" @variant=\"outlined\" id=\"{{this.id}}-addnew\" {{on \"click\" (fn this.selectAddress \"addnew\")}}>\n      Add new\n      <span class=\"sr-only\">address</span>\n    </V2::Button>\n    {{#if this.showEditButton}}\n      <V2::Button @size=\"small\" id=\"{{this.id}}-edit\" {{on \"click\" this.toggleEditAddress}} class=\"text-brand-link-color-rgb underline\">\n        {{if this.editSelectedAddress \"Hide\" \"Edit\"}}\n        selected\n        <span class=\"sr-only\">address</span>\n      </V2::Button>\n    {{/if}}\n  {{/if}}\n  {{#if this.editSelectedAddress}}\n    <div class=\"settify-sensitive mt-2\">\n      <V2::AddressInput\n        @address={{@value}}\n        @required={{@required}}\n        @detailed={{@detailed}}\n        @addressOptions={{@addressOptions}}\n        @autoComplete={{this.autoComplete}}\n        @id={{this.id}}\n        @onChange={{fn this.selectAddress @value}}\n      />\n    </div>\n  {{/if}}\n  */\n  {\n    \"id\": \"BbRMY4sf\",\n    \"block\": \"[[[41,[28,[37,1],[[48,[30,6]],[30,1]],null],[[[1,\\\"  \\\"],[10,\\\"label\\\"],[15,1,[29,[[30,0,[\\\"id\\\"]],\\\"-label\\\"]]],[15,\\\"for\\\",[29,[[30,0,[\\\"id\\\"]],\\\"-line-1\\\"]]],[15,0,[29,[\\\"mb-2 block \\\",[52,[30,2],\\\"required-field-marker\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[48,[30,6]],[[[1,\\\"      \\\"],[18,6,null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[1,[30,1]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showAddressOptions\\\"]],[[[1,\\\"  \\\"],[8,[39,5],[[24,0,\\\"settify-sensitive\\\"]],[[\\\"@value\\\",\\\"@options\\\",\\\"@name\\\",\\\"@id\\\",\\\"@onChange\\\",\\\"@required\\\"],[[30,3,[\\\"id\\\"]],[30,0,[\\\"availableAddresses\\\"]],\\\"address-select\\\",[29,[[30,0,[\\\"id\\\"]],\\\"-options\\\"]],[30,0,[\\\"selectAddress\\\"]],[30,2]]],null],[1,\\\"\\\\n  \\\"],[8,[39,6],[[16,1,[29,[[30,0,[\\\"id\\\"]],\\\"-addnew\\\"]]],[4,[38,7],[\\\"click\\\",[28,[37,8],[[30,0,[\\\"selectAddress\\\"]],\\\"addnew\\\"],null]],null]],[[\\\"@size\\\",\\\"@variant\\\"],[\\\"small\\\",\\\"outlined\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    Add new\\\\n    \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"address\\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showEditButton\\\"]],[[[1,\\\"    \\\"],[8,[39,6],[[16,1,[29,[[30,0,[\\\"id\\\"]],\\\"-edit\\\"]]],[24,0,\\\"text-brand-link-color-rgb underline\\\"],[4,[38,7],[\\\"click\\\",[30,0,[\\\"toggleEditAddress\\\"]]],null]],[[\\\"@size\\\"],[\\\"small\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[1,[52,[30,0,[\\\"editSelectedAddress\\\"]],\\\"Hide\\\",\\\"Edit\\\"]],[1,\\\"\\\\n      selected\\\\n      \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"address\\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[41,[30,0,[\\\"editSelectedAddress\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"settify-sensitive mt-2\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,11],null,[[\\\"@address\\\",\\\"@required\\\",\\\"@detailed\\\",\\\"@addressOptions\\\",\\\"@autoComplete\\\",\\\"@id\\\",\\\"@onChange\\\"],[[30,3],[30,2],[30,4],[30,5],[30,0,[\\\"autoComplete\\\"]],[30,0,[\\\"id\\\"]],[28,[37,8],[[30,0,[\\\"selectAddress\\\"]],[30,3]],null]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@label\\\",\\\"@required\\\",\\\"@value\\\",\\\"@detailed\\\",\\\"@addressOptions\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"or\\\",\\\"has-block\\\",\\\"label\\\",\\\"yield\\\",\\\"v2/radio-button-group\\\",\\\"v2/button\\\",\\\"on\\\",\\\"fn\\\",\\\"span\\\",\\\"div\\\",\\\"v2/address-input\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/address-select/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component for selecting and managing addresses.\n   * @class PropertySelectComponent\n   * @extends Component\n   * @param {Object} this.args.clientRecord - Client record containing answers and known entities.\n   * @param {Object} this.args.value - Currently selected address.\n   * @param {string} [this.args.label] - Text above the input.\n   * @param {string} [this.args.id] - ID of the money input. If not provided, a unique ID will be generated.\n   * @param {string} [this.args.filterType] - Type of filtering ('excludeall', 'blacklist', 'whitelist').\n   * @param {Array} [this.args.filterList] - List of IDs for filtering addresses.\n   * @param {boolean} [this.args.displayOnly] - Whether the address input is for display only.\n   * @param {boolean} [this.args.required] - Whether the address fields are required.\n   * @param {boolean} [this.args.detailed] - Whether to display detailed address fields.\n   * @param {Object} [this.args.addressOptions] - Additional options for customising address input behavior.\n   * @param {function} [this.args.onChange] - Action handler for when address selection changes.\n   *\n   * @example\n   * ```handlebars\n   * <AddressSelect\n   *   @clientRecord={{this.clientRecord}}\n   *   @value={{this.selectedAddress}}\n   *   @filterType=\"whitelist\"\n   *   @filterList={{this.allowedAddressIds}}\n   *   @required={{true}}\n   *   @onChange={{this.handleAddressChange}}\n   * />\n   * ```\n   */\n  let AddressSelectComponent = _exports.default = (_class = class AddressSelectComponent extends _component2.default {\n    constructor() {\n      super(...arguments);\n      _initializerDefineProperty(this, \"showEditButton\", _descriptor, this);\n      _initializerDefineProperty(this, \"editSelectedAddress\", _descriptor2, this);\n      _defineProperty(this, \"availableAddresses\", []);\n      this.availableAddresses = this.getAvailableAddresses() || [];\n      this.setAddressState();\n    }\n    get id() {\n      return this.args.id ?? `address-select-component-${(0, _internals.guidFor)(this)}`;\n    }\n\n    /**\n     * Initialises the selected address state based on the available addresses.\n     * - If there are no available addresses, enables editing to allow user to create a new one or edit pre-selected address.\n     * - If the selected address is in the list, it sets the appropriate states for editing and showing the edit button.\n     */\n    setAddressState() {\n      const addressList = this.availableAddresses;\n      if (!addressList.length) {\n        // There are no available addresses in the list, we should allow the user to create a new one\n        this.editSelectedAddress = true;\n        return;\n      }\n\n      // Check if one of the available addresses is the current value\n      const selectedAddressInList = addressList.find(f => f.address.id === this.args?.value?.id);\n      if (selectedAddressInList) {\n        // If we are not showing the address options, but we have a selected address, we should allow editing; OR\n        // If all fields are not yet provided, we set editSelectedAddress to true so the client can see what is missing more easily\n        this.editSelectedAddress = !this.showAddressOptions || !this.allFieldsProvided;\n        this.showEditButton = true;\n      }\n    }\n\n    /**\n     * Checks if an object is likely to be an address.\n     * @param {Object} obj - The object to check.\n     * @returns {boolean} - True if the object is likely an address, otherwise false.\n     */\n    isLikelyAddress(obj) {\n      return obj && typeof obj === \"object\" && (obj.lineOne || obj.lineTwo) && (obj.suburb || obj.state || obj.postcode || obj.country);\n    }\n\n    /**\n     * Recursively scans the answers object for addresses and returns them in an array.\n     * @param {Object} answers - The object to scan.\n     * @param {Array} addressesArray - The array to store found addresses.\n     * @returns {Array} - The array of found addresses.\n     */\n    recursivelyScanForAddresses(answers = {}, addressesArray = []) {\n      for (const [key, element] of Object.entries(answers)) {\n        if (key.startsWith(\"_\")) {\n          // Secret properties we don't care about\n          continue;\n        }\n        if (this.isLikelyAddress(element)) {\n          addressesArray.push({\n            title: (0, _addressString.addressString)([element], {\n              detailed: true\n            }),\n            id: element.id || addressesArray.length + 1,\n            address: element\n          });\n          continue;\n        }\n        if (element && typeof element === \"object\") {\n          // Not an address, recursively scan this object\n          this.recursivelyScanForAddresses(element, addressesArray);\n        }\n      }\n      return addressesArray;\n    }\n\n    /**\n     * Linearly scans the array of knownEntities for addresses and returns them in an array.\n     * @param {Array} entities - The array of entities to scan.\n     * @param {Array} addressesArray - The array to store found addresses.\n     * @returns {Array} - The array of found addresses.\n     */\n    linearlyScanForAddresses(entities = [], addressesArray = []) {\n      for (const entity of entities) {\n        this.recursivelyScanForAddresses(entity, addressesArray);\n      }\n      return addressesArray;\n    }\n\n    /**\n     * Computes the list of available addresses based on client record answers and known entities,\n     * filtered by filter type and list with duplicates removed.\n     * @returns {Array} The list of available addresses.\n     */\n    getAvailableAddresses() {\n      const addressesArray = [];\n      // get all potential addresses\n      const {\n        answers,\n        knownEntities\n      } = this.args?.clientRecord || {};\n      this.recursivelyScanForAddresses(answers, addressesArray);\n      this.linearlyScanForAddresses(knownEntities, addressesArray);\n\n      // filter list by filterType and remove duplicates\n      return this.filterByType(addressesArray, this.args.filterType, this.args.filterList).filter(address => {\n        // want to remove IF there are multiple entries with the same title\n        const firstMatch = addressesArray.find(f => f.title === address.title);\n        return firstMatch === address;\n      });\n    }\n\n    /**\n     * Filters the address list based on filterType and filterList.\n     * @param {Array} list - The list of addresses to filter.\n     * @param {string} filterType - The type of filtering ('excludeall', 'blacklist', 'whitelist').\n     * @param {Array} filterList - The list of IDs to include/exclude.\n     * @returns {Array} - The filtered list of addresses.\n     */\n    filterByType(list, filterType, filterList) {\n      switch (filterType) {\n        case \"excludeall\":\n          return list.filter(item => item.id === this.args.value?.id);\n        case \"blacklist\":\n          return list.filter(item => !filterList.includes(item.address.id));\n        case \"whitelist\":\n          return list.filter(item => filterList.includes(item.address.id));\n        default:\n          return list;\n      }\n    }\n\n    /**\n     * Removes duplicate addresses based on unique IDs.\n     * @param {Array} addressList - The list of addresses to remove duplicates from.\n     * @returns {Array} - The list of addresses with duplicates removed.\n     */\n    removeDuplicates(addressList) {\n      const seenIds = new Set();\n      return addressList.filter(address => {\n        if (seenIds.has(address.id)) return false;\n        seenIds.add(address.id);\n        return true;\n      });\n    }\n\n    /**\n     * Determines whether to display address radio options based on availability and filter type.\n     * @returns {boolean} True if address options should be displayed, otherwise false.\n     */\n    get showAddressOptions() {\n      return this.availableAddresses.length && this.args.filterType !== \"excludeall\";\n    }\n\n    /**\n     * Checks if all required fields of the selected address are provided.\n     * @returns {boolean} - True if all required fields are provided, otherwise false.\n     */\n    get allFieldsProvided() {\n      return Boolean(this.args.value.lineOne && (this?.args.addressOptions?.suburbInputNotRequired ? true : this.args.value.suburb) && (this?.args.addressOptions?.stateInputNotRequired ? true : this.args.value.state) && this.args.value.postcode);\n    }\n\n    /**\n     * Toggles the edit mode for the selected address.\n     */\n    toggleEditAddress() {\n      this.editSelectedAddress = !this.editSelectedAddress;\n    }\n\n    /**\n     * Selects an address based on the given address ID.\n     * @param {string} addressID - The ID of the address to select.\n     */\n    selectAddress(addressID) {\n      let selectedAddress = this.availableAddresses.find(f => f.address.id === addressID)?.address;\n      this.showEditButton = addressID !== \"addnew\";\n      if (!selectedAddress && addressID === \"addnew\") {\n        selectedAddress = {\n          id: (0, _uuid.v4)()\n        };\n        this.editSelectedAddress = true;\n      }\n      if (this.args.onChange && typeof this.args.onChange === \"function\") {\n        this.args.onChange(selectedAddress);\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"showEditButton\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"editSelectedAddress\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"toggleEditAddress\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleEditAddress\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"selectAddress\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"selectAddress\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, AddressSelectComponent);\n});","define(\"settify-mvp/components/v2/admin-page-header/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <header class=\"flex flex-row items-center justify-between gap-x-6 bg-white\" ...attributes>\n    <div class=\"min-w-0 flex-1\">\n      <h2 class=\"text-2xl/7 font-bold sm:truncate sm:text-3xl sm:tracking-tight\">{{@heading}}</h2>\n    </div>\n    {{#if @ctaButtons.length}}\n      <div class=\"flex shrink-0 gap-2\">\n        {{#each @ctaButtons as |button|}}\n          <V2::LoadingButton\n            @variant={{this.getButtonVariant button}}\n            @route={{button.route}}\n            @model={{button.model}}\n            @loading={{button.loading}}\n            @loadingText={{or button.loadingText button.title}}\n            disabled={{or button.disabled button.loading}}\n            class=\"inline-flex items-center gap-2 text-sm {{button.class}}\"\n            {{on \"click\" (fn this.onCtaClicked button)}}\n          >\n            {{#if button.icon}}\n              <V2::SvgIcon @icon={{button.icon}} class=\"size-3\" />\n            {{/if}}\n            {{button.title}}\n            {{#if button.srOnly}}\n              <span class=\"sr-only\">{{button.srOnly}}</span>\n            {{/if}}\n          </V2::LoadingButton>\n        {{/each}}\n      </div>\n    {{/if}}\n  </header>\n  */\n  {\n    \"id\": \"HmrhhXEY\",\n    \"block\": \"[[[11,\\\"header\\\"],[24,0,\\\"flex flex-row items-center justify-between gap-x-6 bg-white\\\"],[17,1],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"min-w-0 flex-1\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"h2\\\"],[14,0,\\\"text-2xl/7 font-bold sm:truncate sm:text-3xl sm:tracking-tight\\\"],[12],[1,[30,2]],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"length\\\"]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"flex shrink-0 gap-2\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,5],[[28,[37,5],[[30,3]],null]],null],null,[[[1,\\\"        \\\"],[8,[39,6],[[16,\\\"disabled\\\",[28,[37,7],[[30,4,[\\\"disabled\\\"]],[30,4,[\\\"loading\\\"]]],null]],[16,0,[29,[\\\"inline-flex items-center gap-2 text-sm \\\",[30,4,[\\\"class\\\"]]]]],[4,[38,8],[\\\"click\\\",[28,[37,9],[[30,0,[\\\"onCtaClicked\\\"]],[30,4]],null]],null]],[[\\\"@variant\\\",\\\"@route\\\",\\\"@model\\\",\\\"@loading\\\",\\\"@loadingText\\\"],[[28,[30,0,[\\\"getButtonVariant\\\"]],[[30,4]],null],[30,4,[\\\"route\\\"]],[30,4,[\\\"model\\\"]],[30,4,[\\\"loading\\\"]],[28,[37,7],[[30,4,[\\\"loadingText\\\"]],[30,4,[\\\"title\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,4,[\\\"icon\\\"]],[[[1,\\\"            \\\"],[8,[39,10],[[24,0,\\\"size-3\\\"]],[[\\\"@icon\\\"],[[30,4,[\\\"icon\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[1,[30,4,[\\\"title\\\"]]],[1,\\\"\\\\n\\\"],[41,[30,4,[\\\"srOnly\\\"]],[[[1,\\\"            \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,[30,4,[\\\"srOnly\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[4]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[13]],[\\\"&attrs\\\",\\\"@heading\\\",\\\"@ctaButtons\\\",\\\"button\\\"],false,[\\\"header\\\",\\\"div\\\",\\\"h2\\\",\\\"if\\\",\\\"each\\\",\\\"-track-array\\\",\\\"v2/loading-button\\\",\\\"or\\\",\\\"on\\\",\\\"fn\\\",\\\"v2/svg-icon\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/admin-page-header/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * Represents a CTA (Call to Action) button configuration for the AdminPageHeader component.\n   * @typedef {Object} CtaButton\n   * @property {string} title - The text displayed on the button.\n   * @property {string} [srOnly] - Optional title text for screen readers, enhancing accessibility.\n   * @param {Function} [onClick] - The action to execute when the button is clicked. This can be used instead of `route` to handle custom actions (e.g. form submission).\n   * @property {string} [route] - The route to navigate to when the button is clicked. This can be omitted if using an action.\n   * @property {any} [model] - The model passed to the `route` when the button is clicked. This is used with `route` and can be omitted when `onClick` is used.\n   * @property {string} [icon] - The icon displayed in the button.\n   * @property {boolean} [disabled=false] - If the button is disabled, preventing interaction.\n   * @property {string} [class] - Additional CSS classes to apply to the button.\n   * @property {string} [variant] - The style variant for the button. Can be `\"solid\"` or `\"outlined\"`. Defaults to `\"solid\"` if the button is the only one without an explicitly defined `variant`.\n   * @property {boolean} [loading=false] - If true, the loading state is activated, and the button will show a loading spinner.\n   * @property {string} [loadingText] - Text shown when the button is in a loading state.\n   */\n\n  /**\n   * A Glimmer component for rendering a flexible page header with optional CTA buttons.\n   * @class AdminPageHeader\n   * @extends Component\n   * @param {string} this.args.heading - The main heading text displayed in the header.\n   * @param {Array<CtaButton>} [this.args.ctaButtons] - An optional array of CTA button configuration objects.\n   *\n   * @example\n   * ```handlebars\n   * <V2::AdminPageHeader\n   *   @heading=\"User Management\"\n   *   @ctaButtons={{array\n   *     (hash title=\"Add\" route=\"users.new\" icon=\"plus\" srOnly=\"user\")\n   *     (hash title=\"View Reports\" route=\"reports.view\" variant=\"solid\")\n   *   }}\n   * />\n   * ```\n   */\n  let AdminPageHeader = _exports.default = (_class = class AdminPageHeader extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      /**\n       * Determines the button style variant.\n       * If a button has no explicit `variant`, it defaults to `\"solid\"` if it is the only button.\n       * If there are multiple buttons and no explicit `variant`, no variant is applied.\n       * @param {CtaButton} button - The CTA button configuration object.\n       * @returns {string|undefined} - The button variant or `undefined` if no variant is applied.\n       */\n      _defineProperty(this, \"getButtonVariant\", button => {\n        if (button?.variant) return button.variant; // Use the explicitly provided variant.\n        return this.args?.ctaButtons?.length === 1 ? \"solid\" : undefined; // Default to \"solid\" for a single button, else no variant.\n      });\n    }\n    onCtaClicked(button, event) {\n      if (typeof button?.onClick === \"function\") {\n        return button.onClick(event);\n      }\n    }\n  }, _applyDecoratedDescriptor(_class.prototype, \"onCtaClicked\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"onCtaClicked\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, AdminPageHeader);\n});","define(\"settify-mvp/components/v2/admin-page/index\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"min-w-screen flex min-h-screen flex-col\" ...attributes>\n    {{#if @heading}}\n      <V2::AdminPageHeader @heading={{@heading}} @ctaButtons={{@ctaButtons}} class=\"border-b border-gray-200 px-4 py-2 sm:px-6\" />\n    {{/if}}\n  \n    <div class=\"flex-1 p-4 sm:p-6\">\n      {{yield}}\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"C1EDIfGZ\",\n    \"block\": \"[[[11,0],[24,0,\\\"min-w-screen flex min-h-screen flex-col\\\"],[17,1],[12],[1,\\\"\\\\n\\\"],[41,[30,2],[[[1,\\\"    \\\"],[8,[39,2],[[24,0,\\\"border-b border-gray-200 px-4 py-2 sm:px-6\\\"]],[[\\\"@heading\\\",\\\"@ctaButtons\\\"],[[30,2],[30,3]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"flex-1 p-4 sm:p-6\\\"],[12],[1,\\\"\\\\n    \\\"],[18,4,null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"&attrs\\\",\\\"@heading\\\",\\\"@ctaButtons\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"v2/admin-page-header\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/admin-page/index.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/v2/banner/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@glimmer/tracking\", \"@ember/object/internals\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _tracking, _internals, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@glimmer/tracking\",0,\"@ember/object/internals\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.showBanner}}\n    <div class=\"pointer-events-none fixed inset-x-0 bottom-0 sm:flex sm:justify-center sm:px-6 sm:pb-5 lg:px-8\">\n      <div class=\"pointer-events-auto flex items-center justify-between gap-4 px-6 py-3 sm:gap-6 sm:rounded-md sm:px-4 sm:py-2\" ...attributes>\n        <p class=\"text-sm leading-6\">\n          {{#if @title}}\n            <span class=\"font-semibold\">\n              {{@title}}\n            </span>\n          {{/if}}\n          {{yield}}\n        </p>\n        {{#if @primaryAction}}\n          <V2::Button @size=\"small\" class=\"underline\" {{on \"click\" this.handlePrimaryClick}}>\n            {{@primaryActionText}}\n            <span aria-hidden=\"true\">&rarr;</span>\n          </V2::Button>\n        {{/if}}\n        <V2::Button @size=\"small\" class=\"-m-3\" {{on \"click\" this.hideBanner}}>\n          <span class=\"sr-only\">Dismiss</span>\n          <V2::SvgIcon @icon=\"x-mark\" class=\"size-5\" />\n        </V2::Button>\n      </div>\n    </div>\n  {{/if}}\n  */\n  {\n    \"id\": \"fDrSqxpd\",\n    \"block\": \"[[[41,[30,0,[\\\"showBanner\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"pointer-events-none fixed inset-x-0 bottom-0 sm:flex sm:justify-center sm:px-6 sm:pb-5 lg:px-8\\\"],[12],[1,\\\"\\\\n    \\\"],[11,0],[24,0,\\\"pointer-events-auto flex items-center justify-between gap-4 px-6 py-3 sm:gap-6 sm:rounded-md sm:px-4 sm:py-2\\\"],[17,1],[12],[1,\\\"\\\\n      \\\"],[10,2],[14,0,\\\"text-sm leading-6\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,2],[[[1,\\\"          \\\"],[10,1],[14,0,\\\"font-semibold\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[30,2]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[18,5,null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,3],[[[1,\\\"        \\\"],[8,[39,5],[[24,0,\\\"underline\\\"],[4,[38,6],[\\\"click\\\",[30,0,[\\\"handlePrimaryClick\\\"]]],null]],[[\\\"@size\\\"],[\\\"small\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[1,[30,4]],[1,\\\"\\\\n          \\\"],[10,1],[14,\\\"aria-hidden\\\",\\\"true\\\"],[12],[1,\\\"→\\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[8,[39,5],[[24,0,\\\"-m-3\\\"],[4,[38,6],[\\\"click\\\",[30,0,[\\\"hideBanner\\\"]]],null]],[[\\\"@size\\\"],[\\\"small\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Dismiss\\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,7],[[24,0,\\\"size-5\\\"]],[[\\\"@icon\\\"],[\\\"x-mark\\\"]],null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"&attrs\\\",\\\"@title\\\",\\\"@primaryAction\\\",\\\"@primaryActionText\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"p\\\",\\\"span\\\",\\\"yield\\\",\\\"v2/button\\\",\\\"on\\\",\\\"v2/svg-icon\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/banner/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component representing a banner.\n   * @class BannerComponent\n   * @extends Component\n   * @param {Object} this.args - The arguments passed to the component.\n   * @param {string} [this.args.id] - Banner ID, if not provided, a unique ID will be generated.\n   * @param {string} [this.args.title] - The title of the banner.\n   * @param {action} [this.args.primaryAction] - The primary action to be triggered on button click.\n   * @param {string} [this.args.primaryActionText] - The text to display on the primary action button.\n   */\n  let BannerComponent = _exports.default = (_class = class BannerComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"showBanner\", _descriptor, this);\n    }\n    get id() {\n      return this.args.id ?? `banner-component-${(0, _internals.guidFor)(this)}`;\n    }\n    handlePrimaryClick() {\n      if (typeof this.args.primaryAction === \"function\") {\n        return this.args.primaryAction();\n      }\n    }\n    hideBanner() {\n      this.showBanner = false;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"showBanner\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return true;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"handlePrimaryClick\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handlePrimaryClick\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"hideBanner\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"hideBanner\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, BannerComponent);\n});","define(\"settify-mvp/components/v2/billing-status/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/service\", \"settify-mvp/utils/get-conversion-type\", \"@ember/template-factory\"], function (_exports, _component, _component2, _tracking, _object, _service, _getConversionType, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"@ember/service\",0,\"settify-mvp/utils/get-conversion-type\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.selectLeadShortName}}\n    {{this.selectedLeadType.longName}}\n    {{#unless this.isLocked}}\n      <button type=\"button\" class=\"text-xs text-brand-primary-color-rgb\" {{on \"click\" this.removeLeadType}}>\n        (edit)\n      </button>\n    {{/unless}}\n  {{/if}}\n  {{#unless this.selectLeadShortName}}\n    <V2::SelectBox @selectedItem={{this.selectedLeadType}} @options={{this.filteredConversionTypes}} @id=\"billing-status\" @onChange={{this.setBillingStatus}} />\n  {{/unless}}\n  */\n  {\n    \"id\": \"0i5hZR2l\",\n    \"block\": \"[[[41,[30,0,[\\\"selectLeadShortName\\\"]],[[[1,\\\"  \\\"],[1,[30,0,[\\\"selectedLeadType\\\",\\\"longName\\\"]]],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"isLocked\\\"]]],[[[1,\\\"    \\\"],[11,\\\"button\\\"],[24,0,\\\"text-xs text-brand-primary-color-rgb\\\"],[24,4,\\\"button\\\"],[4,[38,3],[\\\"click\\\",[30,0,[\\\"removeLeadType\\\"]]],null],[12],[1,\\\"\\\\n      (edit)\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[41,[51,[30,0,[\\\"selectLeadShortName\\\"]]],[[[1,\\\"  \\\"],[8,[39,4],null,[[\\\"@selectedItem\\\",\\\"@options\\\",\\\"@id\\\",\\\"@onChange\\\"],[[30,0,[\\\"selectedLeadType\\\"]],[30,0,[\\\"filteredConversionTypes\\\"]],\\\"billing-status\\\",[30,0,[\\\"setBillingStatus\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[],false,[\\\"if\\\",\\\"unless\\\",\\\"button\\\",\\\"on\\\",\\\"v2/select-box\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/billing-status/index.hbs\",\n    \"isStrictMode\": false\n  });\n  let BillingStatusComponent = _exports.default = (_class = class BillingStatusComponent extends _component2.default {\n    constructor() {\n      super(...arguments);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n      _initializerDefineProperty(this, \"lambda\", _descriptor2, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor3, this);\n      _initializerDefineProperty(this, \"selectLeadShortName\", _descriptor4, this);\n      let property = \"invoiceType\";\n      if (this.args.sweep) {\n        property = \"billingSweepInvoiceType\";\n      }\n      if (this.args.lead[property]) {\n        // The lead already has a type set\n        this.selectLeadShortName = this.args.lead[property];\n      }\n    }\n    get selectedLeadType() {\n      return this.filteredConversionTypes.find(type => type.shortName === this.selectLeadShortName);\n    }\n    get filteredConversionTypes() {\n      const {\n        lead,\n        conversionTypes,\n        sweep,\n        firm: firmSettings = []\n      } = this.args;\n\n      // conversion group to use as fallback if lead.conversionTypeAtReferralDate is invalid or blank\n      const practiceAreaConversionGroup = firmSettings[lead.practiceArea] ? firmSettings[lead.practiceArea].conversionGroup : \"\";\n\n      // use the lead conversion group if set, otherwise fallback to current practice area group\n      const groupNameFilter = lead.conversionTypeAtReferralDate ? lead.conversionTypeAtReferralDate : practiceAreaConversionGroup;\n      const filteredConversionTypes = conversionTypes.filter(type => {\n        const isAllowedPracticeArea = type.allowedPracticeArea === lead.practiceArea;\n        const isAllowedBillingType = lead.billingFlag === type.requiredBillingFlags || !type.requiredBillingFlags;\n        const isAllowedGroupName = type.groupName === groupNameFilter;\n        const isAllowedForReferralType = type.allowedForInvites && lead.referral === \"invitation\" || type.allowedForWebsites && lead.referral !== \"invitation\";\n        const shouldShowBasedOnDollarAmount = !sweep || type.invoiceAmountCents > 0;\n        return isAllowedPracticeArea && isAllowedBillingType && isAllowedGroupName && isAllowedForReferralType && shouldShowBasedOnDollarAmount;\n      });\n      if (sweep) {\n        filteredConversionTypes.push({\n          shortName: \"Confirm\",\n          longName: \"Still has not become a client\",\n          fontawesome: \"times-circle\",\n          description: \"This client has not returned to engage our firm\"\n        });\n      }\n      if (this.isLocked) {\n        // add \"Unknown/Free\" as some clients can be marked as unknown when locked\n        filteredConversionTypes.push({\n          shortName: \"Unknown\",\n          longName: \"Free/Unknown\",\n          fontawesome: \"info-circle\",\n          description: \"unknown client status\"\n        });\n      }\n\n      // Add \"label\" and \"value\" property to satisfy select box needs\n      return filteredConversionTypes.map(type => ({\n        ...type,\n        label: type.longName,\n        value: type.shortName\n      }));\n    }\n    get isLocked() {\n      const property = this.args.sweep ? \"billingSweepCompleted\" : \"billingLockedDate\";\n      return this.args.lead[property];\n    }\n    async setBillingStatus(typeValue) {\n      const {\n        lead\n      } = this.args;\n      if (!lead || !typeValue) {\n        return;\n      }\n      let type = this.filteredConversionTypes.find(type => type.shortName === typeValue);\n      this.selectLeadShortName = typeValue;\n      if (type === \"Confirm\" || type.shortName === \"Confirm\") {\n        type = {\n          shortName: \"Confirm\",\n          longName: \"Still has not become a client\",\n          invoiceAmountCents: 0,\n          invoiceNarration: \"confirm did not become a client\"\n        };\n      }\n      const payload = {\n        firmID: this.firm.id,\n        firm: this.args.firm[lead.practiceArea],\n        clientID: lead.clientID,\n        invoiceType: type.shortName,\n        conversionGroup: type.groupName,\n        invoiceAmountCents: type.invoiceAmountCents,\n        description: type.invoiceNarration,\n        displayDate: lead.referredToFirmDate,\n        practiceArea: lead.practiceArea\n      };\n      if (this.args.sweep) {\n        // this is an historical sweep\n        payload.source = \"sweep\";\n        payload.overrideBillingLock = true;\n        if (type.invoiceAmountCents) {\n          // this is a billing upgrade\n          const previousConversionType = (0, _getConversionType.default)(lead.invoiceType, this.args.conversionTypes);\n          payload.previousBillingInformation = {\n            invoiceAmountCents: previousConversionType.invoiceAmountCents,\n            invoiceGSTAmountCents: lead.invoiceAmountCents - previousConversionType.invoiceAmountCents,\n            invoiceTotalAmountCents: lead.invoiceAmountCents,\n            description: previousConversionType.invoiceNarration\n          };\n        }\n        if (type.shortName === lead.billingSweepInvoiceType) {\n          // we're \"un-setting\" this information\n          delete payload.previousBillingInformation;\n          payload.invoiceType = null;\n          payload.invoiceAmountCents = null;\n          payload.description = null;\n          payload.displayDate = null;\n        }\n      } else {\n        if (type.shortName === lead.invoiceType) {\n          // client is already marked as having this as their invoice type. Unset it.\n          payload.invoiceType = null;\n          payload.invoiceAmountCents = null;\n          payload.description = null;\n          payload.displayDate = null;\n        }\n      }\n      await this.lambda.invoke(this.lambda.setBillingInformationLambda, payload);\n      const property = this.args.sweep ? \"billingSweepInvoiceType\" : \"invoiceType\";\n      lead[property] !== type.shortName ? (0, _object.set)(lead, property, type.shortName) : (0, _object.set)(lead, property, undefined);\n      // trigger an admin eventLogging\n      this.eventLogging.adminLog(lead.clientID, this.eventLogging.adminIDs.clientBillingStatusChanged, type.shortName, null, lead.practiceArea);\n    }\n    removeLeadType() {\n      // If we send the current leadType status, we will unset it.\n      this.setBillingStatus(this.selectLeadShortName);\n      this.selectLeadShortName = null;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"selectLeadShortName\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"setBillingStatus\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"setBillingStatus\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"removeLeadType\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"removeLeadType\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, BillingStatusComponent);\n});","define(\"settify-mvp/components/v2/brief-menu-bar/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/service\", \"@ember/object\", \"@glimmer/tracking\", \"@ember/runloop\", \"settify-mvp/utils/email-utils\", \"@ember/template-factory\"], function (_exports, _component, _component2, _service, _object, _tracking, _runloop, _emailUtils, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/service\",0,\"@ember/object\",0,\"@glimmer/tracking\",0,\"@ember/runloop\",0,\"settify-mvp/utils/email-utils\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <nav id=\"brief-menubar\" class=\"fixed left-0 right-0 top-14 z-20 border-b border-gray-200 bg-white px-6 lg:left-64 lg:top-0\" role=\"menubar\" aria-orientation=\"horizontal\">\n    <ul class=\"flex min-h-12 items-center text-sm text-gray-700\" role=\"menu\">\n      {{! TODO: Look at creating components for each toolbar item }}\n      <li class=\"relative-group\" role=\"group\">\n        <V2::Dropdown @id=\"documents-menu\" @toggleDropdown={{this.openDocumentsMenu}} @clickedOutside={{this.onClickedOutsideOfDocoumentsMenu}} as |dropdown|>\n          <dropdown.header>\n            <button type=\"button\" class=\"rounded-sm px-2 py-1 hover:bg-gray-100\" aria-haspopup=\"true\">\n              Documents\n            </button>\n          </dropdown.header>\n          <dropdown.content @isOpen={{this.documentsMenuShown}}>\n            <div\n              id=\"documents-menu-content\"\n              class=\"absolute w-40 rounded-sm bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none group-hover:block\"\n              role=\"menu\"\n              aria-orientation=\"vertical\"\n            >\n              <ul class=\"py-1\">\n                <li id=\"documents-download\" class=\"group/downloads\" role=\"group\">\n                  <V2::Dropdown @id=\"downloads-menu\" @toggleDropdown={{this.openDownloadsMenu}} as |dropdown|>\n                    <dropdown.header>\n                      <button type=\"button\" class=\"flex w-full items-center p-2 hover:bg-gray-100\" aria-haspopup=\"true\" data-test-download-submenu-button>\n                        Download\n                        <V2::SvgIcon @icon=\"chevron-right\" class=\"ml-auto size-3\" />\n                      </button>\n                    </dropdown.header>\n                    <dropdown.content @isOpen={{this.downloadsMenuShown}}>\n                      <div\n                        id=\"downloads-menu-content\"\n                        class=\"absolute left-full top-0 w-40 rounded-sm bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none group-hover/downloads:block\"\n                        role=\"menu\"\n                        aria-orientation=\"vertical\"\n                      >\n                        <ul class=\"py-1\" role=\"menu\">\n                          {{#each this.availableDocuments as |document|}}\n                            <li id=\"download-item-{{document.value}}\" role=\"group\">\n                              {{#let (includes this.downloadList document.value) as |isDocumentDownloading|}}\n                                <button\n                                  type=\"button\"\n                                  class=\"flex w-full items-center p-2 hover:bg-gray-100\"\n                                  role=\"menuitem\"\n                                  disabled={{isDocumentDownloading}}\n                                  {{on \"click\" (fn this.downloadDocument document)}}\n                                >\n                                  {{document.name}}\n                                </button>\n                              {{/let}}\n                            </li>\n                          {{/each}}\n                        </ul>\n                      </div>\n                    </dropdown.content>\n                  </V2::Dropdown>\n                </li>\n                <li id=\"documents-email\" role=\"group\">\n                  <button type=\"button\" class=\"flex w-full items-center p-2 hover:bg-gray-100\" role=\"menuitem\" {{on \"click\" (fn this.toggleModal \"showEmailModal\")}}>\n                    Email\n                  </button>\n                </li>\n              </ul>\n            </div>\n          </dropdown.content>\n        </V2::Dropdown>\n      </li>\n      <li id=\"brief-notifications\" class=\"hidden sm:block\" role=\"group\">\n        <button type=\"button\" class=\"rounded-sm px-2 py-1 hover:bg-gray-100\" role=\"menuitem\" {{on \"click\" (fn this.toggleModal \"showNotifyMeModal\")}}>\n          Notify me\n        </button>\n      </li>\n  \n      {{#if (or @client.invitedByLawFirm @client.hasReceivedAppointmentEmail @client.firmAppointmentDate)}}\n        <li id=\"brief-invitation-history\" class=\"hidden sm:block\" role=\"group\">\n          <button type=\"button\" class=\"rounded-sm px-2 py-1 hover:bg-gray-100\" role=\"menuitem\" {{on \"click\" (fn this.toggleModal \"showInvitationHistoryModal\")}}>\n            Invitation history\n          </button>\n        </li>\n      {{/if}}\n  \n      <li id=\"brief-lock-record\" class=\"hidden sm:block\" role=\"group\">\n        <button type=\"button\" class=\"rounded-sm px-2 py-1 hover:bg-gray-100\" role=\"menuitem\" {{on \"click\" this.toggleClientRecordLock}}>\n          {{if @client.lockedByLawFirm \"Unlock\" \"Lock\"}}\n          record\n        </button>\n      </li>\n  \n      {{#if this.isIntegrationAvailable}}\n        <li class=\"ml-auto\" id=\"brief-send-to-pms\" role=\"group\">\n          <V2::SendToPms @client={{@client}} />\n        </li>\n      {{/if}}\n    </ul>\n  </nav>\n  \n  <V2::Modal\n    @isOpen={{this.showEmailModal}}\n    @title=\"Email documents\"\n    @id=\"email-documents-modal\"\n    @confirmLabel=\"Send\"\n    @onClose={{fn this.toggleModal \"showEmailModal\"}}\n    @onSubmit={{this.emailDocument}}\n  >\n    <V2::Textline @value={{this.emailDocumentData.emailAddress}} @id=\"email-documents-email\" @label=\"To\" @type=\"email\" @required={{true}} name=\"email\" class=\"mb-4\" />\n  \n    <V2::Textarea @label=\"Message\" @value={{this.emailDocumentData.message}} @rows=\"4\" @id=\"email-message\" name=\"email-message\" class=\"mb-4\" />\n  \n    <V2::SelectBox\n      @selectedItem={{this.emailDocumentData.selectedDocument}}\n      @options={{this.availableDocuments}}\n      @label=\"Document\"\n      @id=\"email-documents-type\"\n      @onChange={{this.setDocumentToEmail}}\n      @required={{true}}\n    />\n  </V2::Modal>\n  \n  <V2::Modal\n    @isOpen={{this.showNotifyMeModal}}\n    @confirmLabel=\"Save changes\"\n    @title=\"Notify me of changes\"\n    @id=\"notify-me-modal\"\n    @onClose={{this.closeAndRollbackUnsavedAttributes}}\n    @onSubmit={{this.persistNotifyMeChanges}}\n  >\n    <p class=\"mt-4 text-sm\">\n      The email addresses below will receive notifications whenever\n      <span class=\"settify-sensitive\">{{@client.firstName}}</span>\n      updates their information.\n    </p>\n  \n    <ul class=\"my-4 divide-y text-sm\">\n      {{#each @client.notifyUpdates as |listitem|}}\n        <li class=\"flex justify-between py-2 sm:py-3\">\n          {{listitem.email}}\n          <V2::Button aria-label=\"Remove email\" {{on \"click\" (fn this.removeEmailFromNotificationList listitem)}}>\n            <V2::SvgIcon @icon=\"trash\" class=\"size-4 text-red-500\" />\n          </V2::Button>\n        </li>\n      {{/each}}\n    </ul>\n  \n    <div class=\"text-sm\">\n      <label for=\"new-email-address\" class=\"sr-only\">Add another email address</label>\n      <div class=\"mt-2 flex rounded-md shadow-sm\">\n        <span class=\"flex-grow\">\n          <V2::Textline\n            @value={{this.notifyMeEmail}}\n            @id=\"new-email-address\"\n            @type=\"email\"\n            name=\"new-email-address\"\n            placeholder={{this.firm.contactEmail}}\n            @onChange={{this.checkNotifyMeEmail}}\n            class=\"rounded-none rounded-l-md\"\n          />\n        </span>\n        <V2::Button @variant=\"outlined\" class=\"-ml-px rounded-l-none\" {{on \"click\" this.addEmailAddress}}>\n          Add\n        </V2::Button>\n      </div>\n      {{#if this.showWrongEmailWarning}}\n        <small class=\"mt-2\" id=\"email-warning\" role=\"alert\">That doesn't look like a valid email address to us</small>\n      {{/if}}\n    </div>\n  </V2::Modal>\n  \n  <V2::Modal\n    @isOpen={{this.showInvitationHistoryModal}}\n    @title=\"Invitation history\"\n    @id=\"invitation-history-modal\"\n    @onClose={{fn this.toggleModal \"showInvitationHistoryModal\"}}\n    @onSubmit={{this.confirmInvitationHistory}}\n  >\n    {{#if (and (not @metadata.invitationEmails.length) (eq this.firm.practiceArea \"Wills\") (or (eq @metadata.referral \"family-separation\") (eq @metadata.referral \"family-bfa\")))}}\n      <p class=\"mt-4 text-sm\">\n        <span class=\"settify-sensitive\">{{@client.firstName}}</span>\n        used the Family Law version of Settify, then continued to provide instructions for Wills & Estates. Their Family Law appointment time and lawyer have been copied over below,\n        although no email has been sent yet in relation to estate planning.\n      </p>\n    {{/if}}\n    <div class=\"mt-4 grid grid-cols-[30%_70%] gap-y-3 text-sm\">\n      <div class=\"font-semibold\" data-test-invitation-history-to-field>\n        To:\n      </div>\n      <div>\n        <span class=\"settify-sensitive\">{{@client.email}}</span>\n      </div>\n      <div class=\"font-semibold\" data-test-invitation-history-last-sent-field>\n        Last sent:\n      </div>\n      <div>\n        {{#if @metadata.invitationEmails.length}}\n          {{pretty-date (get @metadata.invitationEmails \"0\") includeTime=true zuluTime=true}}\n        {{else}}\n          <Admin::Nil />\n        {{/if}}\n      </div>\n      <div class=\"font-semibold\" data-test-invitation-history-appointment-time-field>\n        Appointment time:\n      </div>\n      <div>\n        {{#if (and @client.firmAppointmentDate @client.firmAppointmentTime (not (or (eq @client.firmAppointmentDate \"True\") (eq @client.firmAppointmentTime \"True\"))))}}\n          {{@client.firmAppointmentDate}}\n          at\n          {{@client.firmAppointmentTime}}\n        {{else}}\n          <Admin::Nil />\n        {{/if}}\n      </div>\n      <div class=\"font-semibold\" data-test-invitation-history-lawyer-field>\n        Lawyer:\n      </div>\n      <div>\n        {{#if @client.firmPartnerName}}\n          {{@client.firmPartnerName}}\n        {{else}}\n          <Admin::Nil />\n        {{/if}}\n      </div>\n      <div class=\"font-semibold\" data-test-invitation-history-automatic-reminders-field>\n        Automatic Reminders:\n      </div>\n      <div>\n        {{#if this.isUnsubscribed}}\n          Off\n        {{else}}\n          On\n          <button type=\"button\" class=\"text-brand-primary-color-rgb\" {{on \"click\" this.toggleUnsubscribeConfirmation}}>switch off</button>\n        {{/if}}\n        {{#if this.showUnsubscribeConfirmation}}\n          <div class=\"col-span-2 mt-3\">\n            Are you sure you want to unsubscribe\n            <span class=\"settify-sensitive\">{{@client.firstName}}</span>\n            <span class=\"settify-sensitive\">{{@client.surname}}</span>\n            from automatic reminders?\n          </div>\n          <div class=\"mt-2\">\n            <V2::Button @variant=\"outlined\" class=\"text-sm font-semibold\" {{on \"click\" this.unsubscribeClient}}>\n              {{#if this.unsubscribing}}\n                <V2::SvgIcon @icon=\"spinner-third\" class=\"me-2 inline size-4 animate-spin text-brand-primary-color-rgb\" role=\"status\" />\n                Unsubscribing...\n              {{else}}\n                Yes\n              {{/if}}\n            </V2::Button>\n            <V2::Button @variant=\"outlined\" class=\"text-sm font-semibold\" {{on \"click\" this.toggleUnsubscribeConfirmation}}>\n              No\n            </V2::Button>\n          </div>\n        {{/if}}\n      </div>\n      <div class=\"font-semibold\" data-test-invitation-history-reminder-emails-sent-field>\n        Reminder emails sent:\n      </div>\n      <div>\n        {{#each @metadata.reminderEmails as |emailDate|}}\n          {{pretty-date emailDate zuluTime=true}}\n          <br />\n        {{else}}\n          <Admin::Nil />\n        {{/each}}\n      </div>\n    </div>\n  </V2::Modal>\n  */\n  {\n    \"id\": \"IiuYSx87\",\n    \"block\": \"[[[10,\\\"nav\\\"],[14,1,\\\"brief-menubar\\\"],[14,0,\\\"fixed left-0 right-0 top-14 z-20 border-b border-gray-200 bg-white px-6 lg:left-64 lg:top-0\\\"],[14,\\\"role\\\",\\\"menubar\\\"],[14,\\\"aria-orientation\\\",\\\"horizontal\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"ul\\\"],[14,0,\\\"flex min-h-12 items-center text-sm text-gray-700\\\"],[14,\\\"role\\\",\\\"menu\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"    \\\"],[10,\\\"li\\\"],[14,0,\\\"relative-group\\\"],[14,\\\"role\\\",\\\"group\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,3],null,[[\\\"@id\\\",\\\"@toggleDropdown\\\",\\\"@clickedOutside\\\"],[\\\"documents-menu\\\",[30,0,[\\\"openDocumentsMenu\\\"]],[30,0,[\\\"onClickedOutsideOfDocoumentsMenu\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[30,1,[\\\"header\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,\\\"button\\\"],[14,0,\\\"rounded-sm px-2 py-1 hover:bg-gray-100\\\"],[14,\\\"aria-haspopup\\\",\\\"true\\\"],[14,4,\\\"button\\\"],[12],[1,\\\"\\\\n            Documents\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[30,1,[\\\"content\\\"]],null,[[\\\"@isOpen\\\"],[[30,0,[\\\"documentsMenuShown\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,0],[14,1,\\\"documents-menu-content\\\"],[14,0,\\\"absolute w-40 rounded-sm bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none group-hover:block\\\"],[14,\\\"role\\\",\\\"menu\\\"],[14,\\\"aria-orientation\\\",\\\"vertical\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"ul\\\"],[14,0,\\\"py-1\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"li\\\"],[14,1,\\\"documents-download\\\"],[14,0,\\\"group/downloads\\\"],[14,\\\"role\\\",\\\"group\\\"],[12],[1,\\\"\\\\n                \\\"],[8,[39,3],null,[[\\\"@id\\\",\\\"@toggleDropdown\\\"],[\\\"downloads-menu\\\",[30,0,[\\\"openDownloadsMenu\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  \\\"],[8,[30,2,[\\\"header\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                    \\\"],[10,\\\"button\\\"],[14,0,\\\"flex w-full items-center p-2 hover:bg-gray-100\\\"],[14,\\\"aria-haspopup\\\",\\\"true\\\"],[14,\\\"data-test-download-submenu-button\\\",\\\"\\\"],[14,4,\\\"button\\\"],[12],[1,\\\"\\\\n                      Download\\\\n                      \\\"],[8,[39,6],[[24,0,\\\"ml-auto size-3\\\"]],[[\\\"@icon\\\"],[\\\"chevron-right\\\"]],null],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[8,[30,2,[\\\"content\\\"]],null,[[\\\"@isOpen\\\"],[[30,0,[\\\"downloadsMenuShown\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    \\\"],[10,0],[14,1,\\\"downloads-menu-content\\\"],[14,0,\\\"absolute left-full top-0 w-40 rounded-sm bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none group-hover/downloads:block\\\"],[14,\\\"role\\\",\\\"menu\\\"],[14,\\\"aria-orientation\\\",\\\"vertical\\\"],[12],[1,\\\"\\\\n                      \\\"],[10,\\\"ul\\\"],[14,0,\\\"py-1\\\"],[14,\\\"role\\\",\\\"menu\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,8],[[28,[37,8],[[30,0,[\\\"availableDocuments\\\"]]],null]],null],null,[[[1,\\\"                          \\\"],[10,\\\"li\\\"],[15,1,[29,[\\\"download-item-\\\",[30,3,[\\\"value\\\"]]]]],[14,\\\"role\\\",\\\"group\\\"],[12],[1,\\\"\\\\n\\\"],[44,[[28,[37,10],[[30,0,[\\\"downloadList\\\"]],[30,3,[\\\"value\\\"]]],null]],[[[1,\\\"                              \\\"],[11,\\\"button\\\"],[24,0,\\\"flex w-full items-center p-2 hover:bg-gray-100\\\"],[24,\\\"role\\\",\\\"menuitem\\\"],[16,\\\"disabled\\\",[30,4]],[24,4,\\\"button\\\"],[4,[38,11],[\\\"click\\\",[28,[37,12],[[30,0,[\\\"downloadDocument\\\"]],[30,3]],null]],null],[12],[1,\\\"\\\\n                                \\\"],[1,[30,3,[\\\"name\\\"]]],[1,\\\"\\\\n                              \\\"],[13],[1,\\\"\\\\n\\\"]],[4]]],[1,\\\"                          \\\"],[13],[1,\\\"\\\\n\\\"]],[3]],null],[1,\\\"                      \\\"],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"]],[2]]]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"li\\\"],[14,1,\\\"documents-email\\\"],[14,\\\"role\\\",\\\"group\\\"],[12],[1,\\\"\\\\n                \\\"],[11,\\\"button\\\"],[24,0,\\\"flex w-full items-center p-2 hover:bg-gray-100\\\"],[24,\\\"role\\\",\\\"menuitem\\\"],[24,4,\\\"button\\\"],[4,[38,11],[\\\"click\\\",[28,[37,12],[[30,0,[\\\"toggleModal\\\"]],\\\"showEmailModal\\\"],null]],null],[12],[1,\\\"\\\\n                  Email\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"]],[1]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"li\\\"],[14,1,\\\"brief-notifications\\\"],[14,0,\\\"hidden sm:block\\\"],[14,\\\"role\\\",\\\"group\\\"],[12],[1,\\\"\\\\n      \\\"],[11,\\\"button\\\"],[24,0,\\\"rounded-sm px-2 py-1 hover:bg-gray-100\\\"],[24,\\\"role\\\",\\\"menuitem\\\"],[24,4,\\\"button\\\"],[4,[38,11],[\\\"click\\\",[28,[37,12],[[30,0,[\\\"toggleModal\\\"]],\\\"showNotifyMeModal\\\"],null]],null],[12],[1,\\\"\\\\n        Notify me\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,14],[[30,5,[\\\"invitedByLawFirm\\\"]],[30,5,[\\\"hasReceivedAppointmentEmail\\\"]],[30,5,[\\\"firmAppointmentDate\\\"]]],null],[[[1,\\\"      \\\"],[10,\\\"li\\\"],[14,1,\\\"brief-invitation-history\\\"],[14,0,\\\"hidden sm:block\\\"],[14,\\\"role\\\",\\\"group\\\"],[12],[1,\\\"\\\\n        \\\"],[11,\\\"button\\\"],[24,0,\\\"rounded-sm px-2 py-1 hover:bg-gray-100\\\"],[24,\\\"role\\\",\\\"menuitem\\\"],[24,4,\\\"button\\\"],[4,[38,11],[\\\"click\\\",[28,[37,12],[[30,0,[\\\"toggleModal\\\"]],\\\"showInvitationHistoryModal\\\"],null]],null],[12],[1,\\\"\\\\n          Invitation history\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n    \\\"],[10,\\\"li\\\"],[14,1,\\\"brief-lock-record\\\"],[14,0,\\\"hidden sm:block\\\"],[14,\\\"role\\\",\\\"group\\\"],[12],[1,\\\"\\\\n      \\\"],[11,\\\"button\\\"],[24,0,\\\"rounded-sm px-2 py-1 hover:bg-gray-100\\\"],[24,\\\"role\\\",\\\"menuitem\\\"],[24,4,\\\"button\\\"],[4,[38,11],[\\\"click\\\",[30,0,[\\\"toggleClientRecordLock\\\"]]],null],[12],[1,\\\"\\\\n        \\\"],[1,[52,[30,5,[\\\"lockedByLawFirm\\\"]],\\\"Unlock\\\",\\\"Lock\\\"]],[1,\\\"\\\\n        record\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"isIntegrationAvailable\\\"]],[[[1,\\\"      \\\"],[10,\\\"li\\\"],[14,0,\\\"ml-auto\\\"],[14,1,\\\"brief-send-to-pms\\\"],[14,\\\"role\\\",\\\"group\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,15],null,[[\\\"@client\\\"],[[30,5]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,16],null,[[\\\"@isOpen\\\",\\\"@title\\\",\\\"@id\\\",\\\"@confirmLabel\\\",\\\"@onClose\\\",\\\"@onSubmit\\\"],[[30,0,[\\\"showEmailModal\\\"]],\\\"Email documents\\\",\\\"email-documents-modal\\\",\\\"Send\\\",[28,[37,12],[[30,0,[\\\"toggleModal\\\"]],\\\"showEmailModal\\\"],null],[30,0,[\\\"emailDocument\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[39,17],[[24,3,\\\"email\\\"],[24,0,\\\"mb-4\\\"]],[[\\\"@value\\\",\\\"@id\\\",\\\"@label\\\",\\\"@type\\\",\\\"@required\\\"],[[30,0,[\\\"emailDocumentData\\\",\\\"emailAddress\\\"]],\\\"email-documents-email\\\",\\\"To\\\",\\\"email\\\",true]],null],[1,\\\"\\\\n\\\\n  \\\"],[8,[39,18],[[24,3,\\\"email-message\\\"],[24,0,\\\"mb-4\\\"]],[[\\\"@label\\\",\\\"@value\\\",\\\"@rows\\\",\\\"@id\\\"],[\\\"Message\\\",[30,0,[\\\"emailDocumentData\\\",\\\"message\\\"]],\\\"4\\\",\\\"email-message\\\"]],null],[1,\\\"\\\\n\\\\n  \\\"],[8,[39,19],null,[[\\\"@selectedItem\\\",\\\"@options\\\",\\\"@label\\\",\\\"@id\\\",\\\"@onChange\\\",\\\"@required\\\"],[[30,0,[\\\"emailDocumentData\\\",\\\"selectedDocument\\\"]],[30,0,[\\\"availableDocuments\\\"]],\\\"Document\\\",\\\"email-documents-type\\\",[30,0,[\\\"setDocumentToEmail\\\"]],true]],null],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[8,[39,16],null,[[\\\"@isOpen\\\",\\\"@confirmLabel\\\",\\\"@title\\\",\\\"@id\\\",\\\"@onClose\\\",\\\"@onSubmit\\\"],[[30,0,[\\\"showNotifyMeModal\\\"]],\\\"Save changes\\\",\\\"Notify me of changes\\\",\\\"notify-me-modal\\\",[30,0,[\\\"closeAndRollbackUnsavedAttributes\\\"]],[30,0,[\\\"persistNotifyMeChanges\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,2],[14,0,\\\"mt-4 text-sm\\\"],[12],[1,\\\"\\\\n    The email addresses below will receive notifications whenever\\\\n    \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,5,[\\\"firstName\\\"]]],[13],[1,\\\"\\\\n    updates their information.\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,\\\"ul\\\"],[14,0,\\\"my-4 divide-y text-sm\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,8],[[28,[37,8],[[30,5,[\\\"notifyUpdates\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[10,\\\"li\\\"],[14,0,\\\"flex justify-between py-2 sm:py-3\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[30,6,[\\\"email\\\"]]],[1,\\\"\\\\n        \\\"],[8,[39,22],[[24,\\\"aria-label\\\",\\\"Remove email\\\"],[4,[38,11],[\\\"click\\\",[28,[37,12],[[30,0,[\\\"removeEmailFromNotificationList\\\"]],[30,6]],null]],null]],null,[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[39,6],[[24,0,\\\"size-4 text-red-500\\\"]],[[\\\"@icon\\\"],[\\\"trash\\\"]],null],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[6]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"text-sm\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"new-email-address\\\"],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Add another email address\\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"mt-2 flex rounded-md shadow-sm\\\"],[12],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"flex-grow\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,17],[[24,3,\\\"new-email-address\\\"],[16,\\\"placeholder\\\",[30,0,[\\\"firm\\\",\\\"contactEmail\\\"]]],[24,0,\\\"rounded-none rounded-l-md\\\"]],[[\\\"@value\\\",\\\"@id\\\",\\\"@type\\\",\\\"@onChange\\\"],[[30,0,[\\\"notifyMeEmail\\\"]],\\\"new-email-address\\\",\\\"email\\\",[30,0,[\\\"checkNotifyMeEmail\\\"]]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,22],[[24,0,\\\"-ml-px rounded-l-none\\\"],[4,[38,11],[\\\"click\\\",[30,0,[\\\"addEmailAddress\\\"]]],null]],[[\\\"@variant\\\"],[\\\"outlined\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        Add\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showWrongEmailWarning\\\"]],[[[1,\\\"      \\\"],[10,\\\"small\\\"],[14,0,\\\"mt-2\\\"],[14,1,\\\"email-warning\\\"],[14,\\\"role\\\",\\\"alert\\\"],[12],[1,\\\"That doesn't look like a valid email address to us\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[8,[39,16],null,[[\\\"@isOpen\\\",\\\"@title\\\",\\\"@id\\\",\\\"@onClose\\\",\\\"@onSubmit\\\"],[[30,0,[\\\"showInvitationHistoryModal\\\"]],\\\"Invitation history\\\",\\\"invitation-history-modal\\\",[28,[37,12],[[30,0,[\\\"toggleModal\\\"]],\\\"showInvitationHistoryModal\\\"],null],[30,0,[\\\"confirmInvitationHistory\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[28,[37,25],[[28,[37,26],[[30,7,[\\\"invitationEmails\\\",\\\"length\\\"]]],null],[28,[37,27],[[30,0,[\\\"firm\\\",\\\"practiceArea\\\"]],\\\"Wills\\\"],null],[28,[37,14],[[28,[37,27],[[30,7,[\\\"referral\\\"]],\\\"family-separation\\\"],null],[28,[37,27],[[30,7,[\\\"referral\\\"]],\\\"family-bfa\\\"],null]],null]],null],[[[1,\\\"    \\\"],[10,2],[14,0,\\\"mt-4 text-sm\\\"],[12],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,5,[\\\"firstName\\\"]]],[13],[1,\\\"\\\\n      used the Family Law version of Settify, then continued to provide instructions for Wills & Estates. Their Family Law appointment time and lawyer have been copied over below,\\\\n      although no email has been sent yet in relation to estate planning.\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[10,0],[14,0,\\\"mt-4 grid grid-cols-[30%_70%] gap-y-3 text-sm\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"font-semibold\\\"],[14,\\\"data-test-invitation-history-to-field\\\",\\\"\\\"],[12],[1,\\\"\\\\n      To:\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[12],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,5,[\\\"email\\\"]]],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"font-semibold\\\"],[14,\\\"data-test-invitation-history-last-sent-field\\\",\\\"\\\"],[12],[1,\\\"\\\\n      Last sent:\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[12],[1,\\\"\\\\n\\\"],[41,[30,7,[\\\"invitationEmails\\\",\\\"length\\\"]],[[[1,\\\"        \\\"],[1,[28,[35,28],[[28,[37,29],[[30,7,[\\\"invitationEmails\\\"]],\\\"0\\\"],null]],[[\\\"includeTime\\\",\\\"zuluTime\\\"],[true,true]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[8,[39,30],null,null,null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"font-semibold\\\"],[14,\\\"data-test-invitation-history-appointment-time-field\\\",\\\"\\\"],[12],[1,\\\"\\\\n      Appointment time:\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,25],[[30,5,[\\\"firmAppointmentDate\\\"]],[30,5,[\\\"firmAppointmentTime\\\"]],[28,[37,26],[[28,[37,14],[[28,[37,27],[[30,5,[\\\"firmAppointmentDate\\\"]],\\\"True\\\"],null],[28,[37,27],[[30,5,[\\\"firmAppointmentTime\\\"]],\\\"True\\\"],null]],null]],null]],null],[[[1,\\\"        \\\"],[1,[30,5,[\\\"firmAppointmentDate\\\"]]],[1,\\\"\\\\n        at\\\\n        \\\"],[1,[30,5,[\\\"firmAppointmentTime\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[8,[39,30],null,null,null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"font-semibold\\\"],[14,\\\"data-test-invitation-history-lawyer-field\\\",\\\"\\\"],[12],[1,\\\"\\\\n      Lawyer:\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[12],[1,\\\"\\\\n\\\"],[41,[30,5,[\\\"firmPartnerName\\\"]],[[[1,\\\"        \\\"],[1,[30,5,[\\\"firmPartnerName\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[8,[39,30],null,null,null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"font-semibold\\\"],[14,\\\"data-test-invitation-history-automatic-reminders-field\\\",\\\"\\\"],[12],[1,\\\"\\\\n      Automatic Reminders:\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"isUnsubscribed\\\"]],[[[1,\\\"        Off\\\\n\\\"]],[]],[[[1,\\\"        On\\\\n        \\\"],[11,\\\"button\\\"],[24,0,\\\"text-brand-primary-color-rgb\\\"],[24,4,\\\"button\\\"],[4,[38,11],[\\\"click\\\",[30,0,[\\\"toggleUnsubscribeConfirmation\\\"]]],null],[12],[1,\\\"switch off\\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[41,[30,0,[\\\"showUnsubscribeConfirmation\\\"]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"col-span-2 mt-3\\\"],[12],[1,\\\"\\\\n          Are you sure you want to unsubscribe\\\\n          \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,5,[\\\"firstName\\\"]]],[13],[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,5,[\\\"surname\\\"]]],[13],[1,\\\"\\\\n          from automatic reminders?\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"mt-2\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,22],[[24,0,\\\"text-sm font-semibold\\\"],[4,[38,11],[\\\"click\\\",[30,0,[\\\"unsubscribeClient\\\"]]],null]],[[\\\"@variant\\\"],[\\\"outlined\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"unsubscribing\\\"]],[[[1,\\\"              \\\"],[8,[39,6],[[24,0,\\\"me-2 inline size-4 animate-spin text-brand-primary-color-rgb\\\"],[24,\\\"role\\\",\\\"status\\\"]],[[\\\"@icon\\\"],[\\\"spinner-third\\\"]],null],[1,\\\"\\\\n              Unsubscribing...\\\\n\\\"]],[]],[[[1,\\\"              Yes\\\\n\\\"]],[]]],[1,\\\"          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[8,[39,22],[[24,0,\\\"text-sm font-semibold\\\"],[4,[38,11],[\\\"click\\\",[30,0,[\\\"toggleUnsubscribeConfirmation\\\"]]],null]],[[\\\"@variant\\\"],[\\\"outlined\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            No\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"font-semibold\\\"],[14,\\\"data-test-invitation-history-reminder-emails-sent-field\\\",\\\"\\\"],[12],[1,\\\"\\\\n      Reminder emails sent:\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,8],[[28,[37,8],[[30,7,[\\\"reminderEmails\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[1,[28,[35,28],[[30,8]],[[\\\"zuluTime\\\"],[true]]]],[1,\\\"\\\\n        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[8]],[[[1,\\\"        \\\"],[8,[39,30],null,null,null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"dropdown\\\",\\\"dropdown\\\",\\\"document\\\",\\\"isDocumentDownloading\\\",\\\"@client\\\",\\\"listitem\\\",\\\"@metadata\\\",\\\"emailDate\\\"],false,[\\\"nav\\\",\\\"ul\\\",\\\"li\\\",\\\"v2/dropdown\\\",\\\"button\\\",\\\"div\\\",\\\"v2/svg-icon\\\",\\\"each\\\",\\\"-track-array\\\",\\\"let\\\",\\\"includes\\\",\\\"on\\\",\\\"fn\\\",\\\"if\\\",\\\"or\\\",\\\"v2/send-to-pms\\\",\\\"v2/modal\\\",\\\"v2/textline\\\",\\\"v2/textarea\\\",\\\"v2/select-box\\\",\\\"p\\\",\\\"span\\\",\\\"v2/button\\\",\\\"label\\\",\\\"small\\\",\\\"and\\\",\\\"not\\\",\\\"eq\\\",\\\"pretty-date\\\",\\\"get\\\",\\\"admin/nil\\\",\\\"br\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/brief-menu-bar/index.hbs\",\n    \"isStrictMode\": false\n  });\n  let BriefMenuBarComponent = _exports.default = (_class = class BriefMenuBarComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n      _initializerDefineProperty(this, \"store\", _descriptor2, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor3, this);\n      _initializerDefineProperty(this, \"notifications\", _descriptor4, this);\n      _initializerDefineProperty(this, \"documentManager\", _descriptor5, this);\n      _initializerDefineProperty(this, \"emailDocumentData\", _descriptor6, this);\n      _initializerDefineProperty(this, \"downloadList\", _descriptor7, this);\n      _initializerDefineProperty(this, \"showEmailModal\", _descriptor8, this);\n      _initializerDefineProperty(this, \"showNotifyMeModal\", _descriptor9, this);\n      _initializerDefineProperty(this, \"notifyMeEmail\", _descriptor10, this);\n      _initializerDefineProperty(this, \"showWrongEmailWarning\", _descriptor11, this);\n      _initializerDefineProperty(this, \"showInvitationHistoryModal\", _descriptor12, this);\n      _initializerDefineProperty(this, \"showUnsubscribeConfirmation\", _descriptor13, this);\n      _initializerDefineProperty(this, \"unsubscribing\", _descriptor14, this);\n      _initializerDefineProperty(this, \"isUnsubscribed\", _descriptor15, this);\n      _initializerDefineProperty(this, \"documentsMenuShown\", _descriptor16, this);\n      _initializerDefineProperty(this, \"downloadsMenuShown\", _descriptor17, this);\n    }\n    get availableDocuments() {\n      return this.documentManager.getAvailableDocuments(this.args.client);\n    }\n    get clientUploadedDocuments() {\n      return this.documentManager.getClientUploadedDocuments(this.args.client);\n    }\n\n    // We are using only Family to represent a global setting as the intial thought was that pmsID should be global\n    // TODO: Update to use the global setting when implemented\n    get isIntegrationAvailable() {\n      const familySettings = this.firm.getPracticeAreaSettings(\"Family\");\n      return familySettings?.settings?.admin?.integrations?.pmsID;\n    }\n    toggleModal(prop) {\n      this[prop] = !this[prop];\n    }\n    setDocumentToEmail(document) {\n      this.emailDocumentData.selectedDocument = document;\n    }\n    async toggleClientRecordLock() {\n      // this.args.client is reference to an item in the client store\n      try {\n        this.args.client.readOnly = false; // Need to set to false so an admin can save the change\n        this.args.client.lockedByLawFirm = !this.args.client.lockedByLawFirm;\n        await this.args.client.save(); // Save the client model\n        this.args.client.readOnly = true; // Set client to read-only after successful save\n\n        // If all went well we can log the event\n        const logType = this.args.client.lockedByLawFirm ? this.eventLogging.adminIDs.recordLocked : this.eventLogging.adminIDs.recordUnlocked;\n        this.eventLogging.adminLog(this.args.client.id, logType, null, null, this.args.client.practiceArea);\n      } catch (error) {\n        this.args.client.readOnly = true; // Ensure that client becomes read-only even if save fails\n        this.eventLogging.logError(`Failed to ${this.args.client.lockedByLawFirm ? \"Lock\" : \"Unlock\"} client record`, error);\n        throw error;\n      }\n    }\n    async downloadDocument(document) {\n      const notification = {\n        title: `Downloading ${document.name}`,\n        icon: \"loading\",\n        message: \"Preparing file for download...\",\n        canDismiss: false\n      };\n      try {\n        if (typeof document.generate !== \"function\") {\n          throw new Error(`${document.name} generation has not been implemented`);\n        }\n        this.notifications.add(notification);\n        this.downloadList.pushObject(document.value);\n        const result = await document.generate(this.args.client);\n        result.forEach(doc => this.documentManager.downloadBuffer(doc.data, doc.fileName, doc.mimeType || document.mimeType));\n      } catch (error) {\n        this.eventLogging.logError(`Failed to download document ${document.name}`, error);\n        this.notifications.add({\n          title: `Error downloading ${document.name}`,\n          icon: \"error\",\n          message: \"Please try again or contact Settify support.\",\n          canDismiss: true\n        });\n      } finally {\n        this.downloadList.removeObject(document.value);\n        this.notifications.remove(notification);\n      }\n    }\n    async emailDocument() {\n      const document = this.availableDocuments.find(doc => doc.value === this.emailDocumentData.selectedDocument);\n      try {\n        if (typeof document?.generate !== \"function\") {\n          throw new Error(`${document.name} generation has not been implemented`);\n        }\n        const result = await document.generate(this.args.client, {\n          uploadToStorage: true\n        }); // Generates the document buffer and saves to a storage location (S3) for emailing\n        await this.documentManager.emailDocument(this.args.client, {\n          to: [this.emailDocumentData.emailAddress],\n          template: \"clientfiles/settifydocsattached\",\n          message: this.emailDocumentData.message,\n          bucketLocations: result.map(doc => ({\n            Bucket: doc.bucket,\n            Key: doc.key,\n            Filename: doc.fileName\n          }))\n        });\n      } catch (error) {\n        this.eventLogging.logError(`Failed to emailing document ${document.name}`, error);\n      }\n    }\n    confirmInvitationHistory() {\n      return true; // there is nothing to do, just close the modal\n    }\n    toggleUnsubscribeConfirmation() {\n      this.showUnsubscribeConfirmation = !this.showUnsubscribeConfirmation;\n    }\n    async unsubscribeClient() {\n      this.unsubscribing = true;\n      this.isUnsubscribed = await this.args.unsubscribe();\n      this.unsubscribing = false;\n      this.toggleUnsubscribeConfirmation();\n    }\n    async persistNotifyMeChanges() {\n      const {\n        client\n      } = this.args;\n      client.readOnly = false;\n      await client.save();\n      client.readOnly = true;\n    }\n    removeEmailFromNotificationList(item) {\n      this.args.client.notifyUpdates.removeObject(item);\n    }\n    async closeAndRollbackUnsavedAttributes() {\n      this.toggleModal(\"showNotifyMeModal\");\n      await this.args.client.rollbackAttributes();\n      await this.args.client.reload();\n      this.notifyMeEmail = \"\";\n      this.showWrongEmailWarning = false;\n    }\n    addEmailAddress(event) {\n      event.preventDefault();\n      if (!this.notifyMeEmail) return false;\n      if (!this.showWrongEmailWarning) {\n        this.args.client.notifyUpdates.pushObject({\n          email: this.notifyMeEmail\n        });\n        this.notifyMeEmail = \"\";\n        this.showWrongEmailWarning = false;\n      }\n    }\n    checkNotifyMeEmail() {\n      (0, _runloop.debounce)(this, \"validateNotifyMeEmail\", 750);\n    }\n    validateNotifyMeEmail() {\n      if (!this.notifyMeEmail) return false;\n      const isValid = (0, _emailUtils.isValidEmailAddress)(this.notifyMeEmail);\n      this.showWrongEmailWarning = !isValid;\n    }\n    openDocumentsMenu() {\n      this.documentsMenuShown = !this.documentsMenuShown;\n    }\n    openDownloadsMenu(params, event) {\n      event.stopPropagation();\n      this.downloadsMenuShown = !this.downloadsMenuShown;\n    }\n    onClickedOutsideOfDocoumentsMenu() {\n      this.documentsMenuShown = false;\n      this.downloadsMenuShown = false;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"store\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"notifications\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"documentManager\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"emailDocumentData\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return {\n        emailAddress: \"\",\n        // Where documents will be emailed\n        message: \"\",\n        // The optional message in the document email\n        selectedDocument: null // Which document is being emailed\n      };\n    }\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"downloadList\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return [];\n    }\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"showEmailModal\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor9 = _applyDecoratedDescriptor(_class.prototype, \"showNotifyMeModal\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor10 = _applyDecoratedDescriptor(_class.prototype, \"notifyMeEmail\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor11 = _applyDecoratedDescriptor(_class.prototype, \"showWrongEmailWarning\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor12 = _applyDecoratedDescriptor(_class.prototype, \"showInvitationHistoryModal\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor13 = _applyDecoratedDescriptor(_class.prototype, \"showUnsubscribeConfirmation\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor14 = _applyDecoratedDescriptor(_class.prototype, \"unsubscribing\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor15 = _applyDecoratedDescriptor(_class.prototype, \"isUnsubscribed\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return this.args.metadata.unsubscribed ?? false;\n    }\n  }), _descriptor16 = _applyDecoratedDescriptor(_class.prototype, \"documentsMenuShown\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor17 = _applyDecoratedDescriptor(_class.prototype, \"downloadsMenuShown\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"toggleModal\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleModal\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"setDocumentToEmail\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"setDocumentToEmail\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"toggleClientRecordLock\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleClientRecordLock\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"downloadDocument\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"downloadDocument\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"emailDocument\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"emailDocument\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"confirmInvitationHistory\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"confirmInvitationHistory\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"toggleUnsubscribeConfirmation\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleUnsubscribeConfirmation\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"unsubscribeClient\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"unsubscribeClient\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"persistNotifyMeChanges\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"persistNotifyMeChanges\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"removeEmailFromNotificationList\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"removeEmailFromNotificationList\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"closeAndRollbackUnsavedAttributes\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"closeAndRollbackUnsavedAttributes\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"addEmailAddress\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"addEmailAddress\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"checkNotifyMeEmail\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"checkNotifyMeEmail\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"openDocumentsMenu\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"openDocumentsMenu\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"openDownloadsMenu\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"openDownloadsMenu\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"onClickedOutsideOfDocoumentsMenu\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"onClickedOutsideOfDocoumentsMenu\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, BriefMenuBarComponent);\n});","define(\"settify-mvp/components/v2/button/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/template-factory\"], function (_exports, _component, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! Conditionally render LinkTo or button based on the presence of the @route argument }}\n  {{#if @route}}\n    {{#if @model}}\n      <LinkTo @route={{@route}} @model={{@model}} class={{this.classNames}} data-variant={{@variant}} ...attributes>\n        {{yield}}\n      </LinkTo>\n    {{else}}\n      {{#if @models}}\n        <LinkTo @route={{@route}} @models={{@models}} class={{this.classNames}} data-variant={{@variant}} ...attributes>\n          {{yield}}\n        </LinkTo>\n      {{else}}\n        <LinkTo @route={{@route}} class={{this.classNames}} data-variant={{@variant}} ...attributes>\n          {{yield}}\n        </LinkTo>\n      {{/if}}\n    {{/if}}\n  {{else}}\n    <button type=\"button\" class={{this.classNames}} data-variant={{@variant}} ...attributes>\n      {{yield}}\n    </button>\n  {{/if}}\n  */\n  {\n    \"id\": \"E/dAMN8R\",\n    \"block\": \"[[[41,[30,1],[[[41,[30,2],[[[1,\\\"    \\\"],[8,[39,1],[[16,0,[30,0,[\\\"classNames\\\"]]],[16,\\\"data-variant\\\",[30,3]],[17,4]],[[\\\"@route\\\",\\\"@model\\\"],[[30,1],[30,2]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[18,6,null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,5],[[[1,\\\"      \\\"],[8,[39,1],[[16,0,[30,0,[\\\"classNames\\\"]]],[16,\\\"data-variant\\\",[30,3]],[17,4]],[[\\\"@route\\\",\\\"@models\\\"],[[30,1],[30,5]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[18,6,null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[39,1],[[16,0,[30,0,[\\\"classNames\\\"]]],[16,\\\"data-variant\\\",[30,3]],[17,4]],[[\\\"@route\\\"],[[30,1]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[18,6,null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]],[]]]],[]],[[[1,\\\"  \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[16,0,[30,0,[\\\"classNames\\\"]]],[16,\\\"data-variant\\\",[30,3]],[17,4],[12],[1,\\\"\\\\n    \\\"],[18,6,null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[\\\"@route\\\",\\\"@model\\\",\\\"@variant\\\",\\\"&attrs\\\",\\\"@models\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"link-to\\\",\\\"yield\\\",\\\"button\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/button/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A button component that can render as either a button or a link, with different styles based on the provided variant and size arguments.\n   *\n   * @class ButtonComponent\n   * @extends {Component}\n   *\n   * @param {string} [variant] - The style variant of the button. Can be 'solid' or 'outlined'.\n   * @param {string} [size] - The size of the button. Can be 'small', 'medium', or 'large'.\n   * @param {string} [route] - The route for the LinkTo component. If provided, renders as a link.\n   * @param {Object} [model] - The model for the LinkTo component. If provided, will be passed as a model.\n   */\n  class ButtonComponent extends _component2.default {\n    /**\n     * Computes the combined class names for the button or link-to element.\n     *\n     * @returns {string} The complete class names string.\n     */\n    get classNames() {\n      const base = \"rounded-md disabled:opacity-50 disabled:pointer-events-none disabled:cursor-default\";\n      const variant = this.variantClass;\n      const size = this.sizeClass;\n      return `${base} ${variant} ${size}`;\n    }\n\n    /**\n     * Determines the variant-specific class names.\n     *\n     * @returns {string} The class names for the specified variant.\n     */\n    get variantClass() {\n      const variantClasses = {\n        solid: \"shadow-sm bg-brand-primary-color-rgb text-white hover:bg-brand-primary-color-rgb/90\",\n        outlined: \"shadow-sm ring-1 ring-inset ring-gray-300 bg-transparent hover:bg-gray-50\"\n      };\n      return variantClasses[this.args.variant] || \"\";\n    }\n\n    /**\n     * Determines the size-specific class names.\n     *\n     * @returns {string} The class names for the specified size.\n     */\n    get sizeClass() {\n      const sizeClasses = {\n        small: \"px-2 py-1 text-sm\",\n        medium: \"px-3 py-2\",\n        large: \"px-3.5 py-2.5\"\n      };\n      return sizeClasses[this.args.size] || sizeClasses.medium;\n    }\n  }\n  _exports.default = ButtonComponent;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, ButtonComponent);\n});","define(\"settify-mvp/components/v2/checkbox-group/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object/internals\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _component2, _internals, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object/internals\",0,\"@ember/object\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <fieldset class=\"checkbox-group\" id={{this.id}} aria-labelledby={{if @label (concat this.id \"-label\")}} ...attributes>\n    {{#if @label}}\n      <legend id={{concat this.id \"-label\"}} class=\"mb-2 block\">\n        {{@label}}\n      </legend>\n    {{/if}}\n    {{#each @options as |option index|}}\n      <div class=\"checkbox-group-item\">\n        <V2::Checkbox\n          @label={{parse-text option.title clientRecord=@clientRecord context=@context}}\n          @value={{mut (get @value option.id)}}\n          @id={{option.id}}\n          @required={{option.required}}\n          @onChange={{fn this.onChange option}}\n        />\n      </div>\n    {{/each}}\n  </fieldset>\n  */\n  {\n    \"id\": \"SCFXND2F\",\n    \"block\": \"[[[11,\\\"fieldset\\\"],[24,0,\\\"checkbox-group\\\"],[16,1,[30,0,[\\\"id\\\"]]],[16,\\\"aria-labelledby\\\",[52,[30,1],[28,[37,2],[[30,0,[\\\"id\\\"]],\\\"-label\\\"],null]]],[17,2],[12],[1,\\\"\\\\n\\\"],[41,[30,1],[[[1,\\\"    \\\"],[10,\\\"legend\\\"],[15,1,[28,[37,2],[[30,0,[\\\"id\\\"]],\\\"-label\\\"],null]],[14,0,\\\"mb-2 block\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[30,1]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[42,[28,[37,5],[[28,[37,5],[[30,3]],null]],null],null,[[[1,\\\"    \\\"],[10,0],[14,0,\\\"checkbox-group-item\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,7],null,[[\\\"@label\\\",\\\"@value\\\",\\\"@id\\\",\\\"@required\\\",\\\"@onChange\\\"],[[28,[37,8],[[30,4,[\\\"title\\\"]]],[[\\\"clientRecord\\\",\\\"context\\\"],[[30,6],[30,7]]]],[28,[37,9],[[28,[37,10],[[30,8],[30,4,[\\\"id\\\"]]],null]],null],[30,4,[\\\"id\\\"]],[30,4,[\\\"required\\\"]],[28,[37,11],[[30,0,[\\\"onChange\\\"]],[30,4]],null]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[4,5]],null],[13]],[\\\"@label\\\",\\\"&attrs\\\",\\\"@options\\\",\\\"option\\\",\\\"index\\\",\\\"@clientRecord\\\",\\\"@context\\\",\\\"@value\\\"],false,[\\\"fieldset\\\",\\\"if\\\",\\\"concat\\\",\\\"legend\\\",\\\"each\\\",\\\"-track-array\\\",\\\"div\\\",\\\"v2/checkbox\\\",\\\"parse-text\\\",\\\"mut\\\",\\\"get\\\",\\\"fn\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/checkbox-group/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component representing a group of checkboxes.\n   * @class CheckboxGroupComponent\n   * @extends Component\n   *\n   * @param {Array} options - An array of objects representing the checkbox options.\n   * @param {Object} value - An object representing the checked states of the checkboxes, where the key is the checkbox id.\n   * @param {Object} [clientRecord] - Client record used to get details like otherPersonName.\n   * @param {Object} [context] - Context in which the component is rendered. Contains information about the page, chapter, and induction the component is used in.\n   * @param {string} [label] - Text used above the list of checkboxes.\n   * @param {string} [id] - ID for the group. If not provided, a default ID will be generated.\n   * @param {Function} [onChange] - Callback function to handle changes to the checkbox values.\n   *\n   * @example\n   * // Define the state and options for the checkbox group\n   * groupState = {};\n   * options = [\n   *   { id: 'chocolate', title: 'Chocolate', required: false },\n   *   { id: 'vanilla', title: 'Vanilla', required: false },\n   *   { id: 'strawberry', title: 'Strawberry', required: false }\n   * ];\n   *\n   * // Template HBS:\n   * <CheckboxGroupComponent @label=\"Would you like ice cream?\" @value={{this.groupState}} @options={{this.options}} @id=\"ice-cream-preferences\" @onChange={{this.onChange}} />\n   */\n  let CheckboxGroupComponent = _exports.default = (_class = class CheckboxGroupComponent extends _component2.default {\n    /**\n     * Returns the id for the fieldset element.\n     * If no id is provided in the arguments, a default id is generated using `guidFor`.\n     * @returns {String} A unique ID.\n     */\n    get id() {\n      return this.args.id ?? `checkbox-group-${(0, _internals.guidFor)(this)}`;\n    }\n\n    /**\n     * Handles the change event of an individual checkbox.\n     * If the onChange action is provided via the component's arguments, it will be called with the updated state object and the checkbox option that changed.\n     * @param {Object} option - The object of the changed checkbox option.\n     * @param {boolean} newValue - The new state of the changed checkbox option.\n     * @param {Object} event - The change event object.\n     */\n    onChange(option, newValue, event) {\n      if (typeof this.args.onChange === \"function\") {\n        this.args.onChange(option, newValue, event);\n      }\n    }\n  }, _applyDecoratedDescriptor(_class.prototype, \"onChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"onChange\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, CheckboxGroupComponent);\n});","define(\"settify-mvp/components/v2/checkbox/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object/internals\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _component2, _internals, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object/internals\",0,\"@ember/object\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <label class=\"inline-flex cursor-pointer items-start gap-x-2 align-middle {{if @disabled 'text-gray-500'}}\">\n    <Input\n      @type=\"checkbox\"\n      @checked={{@value}}\n      id={{this.id}}\n      disabled={{@disabled}}\n      required={{@required}}\n      {{on \"change\" this.onChange}}\n      class=\"m-1 rounded border-gray-300 p-2 text-brand-primary-color-rgb focus:ring-brand-primary-color-rgb\"\n      ...attributes\n    />\n    <span class=\"select-none leading-6\">{{@label}}</span>\n  </label>\n  */\n  {\n    \"id\": \"At+2Pmpx\",\n    \"block\": \"[[[10,\\\"label\\\"],[15,0,[29,[\\\"inline-flex cursor-pointer items-start gap-x-2 align-middle \\\",[52,[30,1],\\\"text-gray-500\\\"]]]],[12],[1,\\\"\\\\n  \\\"],[8,[39,2],[[16,1,[30,0,[\\\"id\\\"]]],[16,\\\"disabled\\\",[30,1]],[16,\\\"required\\\",[30,2]],[24,0,\\\"m-1 rounded border-gray-300 p-2 text-brand-primary-color-rgb focus:ring-brand-primary-color-rgb\\\"],[17,3],[4,[38,3],[\\\"change\\\",[30,0,[\\\"onChange\\\"]]],null]],[[\\\"@type\\\",\\\"@checked\\\"],[\\\"checkbox\\\",[30,4]]],null],[1,\\\"\\\\n  \\\"],[10,1],[14,0,\\\"select-none leading-6\\\"],[12],[1,[30,5]],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@disabled\\\",\\\"@required\\\",\\\"&attrs\\\",\\\"@value\\\",\\\"@label\\\"],false,[\\\"label\\\",\\\"if\\\",\\\"input\\\",\\\"on\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/checkbox/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component representing a checkbox.\n   * @class CheckboxComponent\n   * @extends Component\n   * @param {string} this.args.value - REQUIRED: Handles checked state of the checkbox.\n   * @param {string} [this.args.label] - Text used for the checkbox label.\n   * @param {string} [this.args.id] - ID for the checkbox. If not provided, a default ID will be generated.\n   * @param {boolean} [this.args.disabled] - Handles disabled state of the checkbox.\n   * @param {boolean} [this.args.required] - Handles the required state of the checkbox.\n   * @param {Function} [onChange] - Callback function to called when the value changes.\n   *\n   * @example\n   * const acceptedTCs = false;\n   * <Checkbox @label\"I have read the T&Cs\" @value={{this.acceptedTCs}} @id=\"confirmed\" @onChange={{this.onChange}} />\n   */\n  let CheckboxComponent = _exports.default = (_class = class CheckboxComponent extends _component2.default {\n    /**\n     * Returns the id for the checkbox element.\n     * If no id is provided in the arguments, a default id is generated using `guidFor`.\n     * @returns {String} A unique ID.\n     */\n    get id() {\n      return this.args.id ?? `checkbox-component-${(0, _internals.guidFor)(this)}`;\n    }\n\n    /**\n     * Handles the change event.\n     * If the onChange action is provided via the component's arguments, it will be called with the updated state object and the checkbox option that changed.\n     * @param {Object} event - The change event object.\n     */\n    onChange(event) {\n      if (typeof this.args.onChange === \"function\") {\n        this.args.onChange(event.target.checked, event);\n      }\n    }\n  }, _applyDecoratedDescriptor(_class.prototype, \"onChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"onChange\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, CheckboxComponent);\n});","define(\"settify-mvp/components/v2/client-facing-summary/chapter-summary/index\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#unless (or @chapter.hideInClientSummary @chapter.deleted)}}\n    <section class=\"divide-y divide-gray-200 overflow-hidden rounded-lg bg-white px-4 shadow\">\n      <div class=\"flex gap-2 py-3 font-semibold\">\n        {{! Chapter heading }}\n        {{#if @chapter.icon}}\n          <img src={{concat \"https://cdn.settify.com.au/icons/\" (de-fingerprint @chapter.icon)}} alt=\"\" aria-hidden=\"true\" class=\"size-6\" />\n        {{/if}}\n        <h3>\n          {{parse-text\n            (or @chapter.shortTitle @chapter.title)\n            touch=@model.client.touch\n            clientRecord=@model.client\n            context=(hash induction=@induction.id chapter=@chapter.id repeat=@induction.repeatToken)\n          }}\n        </h3>\n      </div>\n      <div class=\"chapter-contents flex flex-col gap-2 py-3 md:gap-4\">\n        {{#each @chapter.pages as |page|}}\n          <V2::ClientFacingSummary::PageSummary\n            @induction={{@induction}}\n            @chapter={{@chapter}}\n            @page={{page}}\n            @model={{@model}}\n            @computeDisplayIf={{@computeDisplayIf}}\n            @routeOverride={{@routeOverride}}\n          />\n        {{/each}}\n      </div>\n    </section>\n  {{/unless}}\n  */\n  {\n    \"id\": \"3aYIETCS\",\n    \"block\": \"[[[41,[51,[28,[37,1],[[30,1,[\\\"hideInClientSummary\\\"]],[30,1,[\\\"deleted\\\"]]],null]],[[[1,\\\"  \\\"],[10,\\\"section\\\"],[14,0,\\\"divide-y divide-gray-200 overflow-hidden rounded-lg bg-white px-4 shadow\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"flex gap-2 py-3 font-semibold\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"icon\\\"]],[[[1,\\\"        \\\"],[10,\\\"img\\\"],[15,\\\"src\\\",[28,[37,6],[\\\"https://cdn.settify.com.au/icons/\\\",[28,[37,7],[[30,1,[\\\"icon\\\"]]],null]],null]],[14,\\\"alt\\\",\\\"\\\"],[14,\\\"aria-hidden\\\",\\\"true\\\"],[14,0,\\\"size-6\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[10,\\\"h3\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[28,[35,9],[[28,[37,1],[[30,1,[\\\"shortTitle\\\"]],[30,1,[\\\"title\\\"]]],null]],[[\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,2,[\\\"client\\\",\\\"touch\\\"]],[30,2,[\\\"client\\\"]],[28,[37,10],null,[[\\\"induction\\\",\\\"chapter\\\",\\\"repeat\\\"],[[30,3,[\\\"id\\\"]],[30,1,[\\\"id\\\"]],[30,3,[\\\"repeatToken\\\"]]]]]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"chapter-contents flex flex-col gap-2 py-3 md:gap-4\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,12],[[28,[37,12],[[30,1,[\\\"pages\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[8,[39,13],null,[[\\\"@induction\\\",\\\"@chapter\\\",\\\"@page\\\",\\\"@model\\\",\\\"@computeDisplayIf\\\",\\\"@routeOverride\\\"],[[30,3],[30,1],[30,4],[30,2],[30,5],[30,6]]],null],[1,\\\"\\\\n\\\"]],[4]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@chapter\\\",\\\"@model\\\",\\\"@induction\\\",\\\"page\\\",\\\"@computeDisplayIf\\\",\\\"@routeOverride\\\"],false,[\\\"unless\\\",\\\"or\\\",\\\"section\\\",\\\"div\\\",\\\"if\\\",\\\"img\\\",\\\"concat\\\",\\\"de-fingerprint\\\",\\\"h3\\\",\\\"parse-text\\\",\\\"hash\\\",\\\"each\\\",\\\"-track-array\\\",\\\"v2/client-facing-summary/page-summary\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/client-facing-summary/chapter-summary/index.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/v2/client-facing-summary/index\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div>\n    {{! Induction heading }}\n    {{#if @induction.icon}}\n      <img src={{concat \"https://cdn.settify.com.au/icons/\" (de-fingerprint @induction.icon)}} alt=\"\" aria-hidden=\"true\" class=\"size-10\" />\n    {{/if}}\n    <h2 class=\"text-xl font-bold leading-7 text-gray-900 sm:truncate sm:text-2xl sm:tracking-tight\">\n      {{parse-text\n        (or @induction.shortTitle @induction.title)\n        touch=@model.client.touch\n        clientRecord=@model.client\n        context=(hash induction=@induction.id chapter=this.chapter.id repeat=@induction.repeatToken)\n      }}\n      {{#if @induction.breadcrumbText}}\n        (<span class=\"settify-sensitive\">{{@induction.breadcrumbText}}</span>)\n      {{/if}}\n    </h2>\n  </div>\n  \n  <div class=\"can-highlight flex flex-col gap-4 {{if (and @induction.isContactDetails @highlightRequiredFieldsCP) 'highlight-required-fields'}}\">\n    {{#each @induction.chapters as |chapter|}}\n      <V2::ClientFacingSummary::ChapterSummary\n        @induction={{@induction}}\n        @chapter={{chapter}}\n        @model={{@model}}\n        @computeDisplayIf={{@computeDisplayIf}}\n        @routeOverride={{@routeOverride}}\n      />\n    {{/each}}\n  </div>\n  */\n  {\n    \"id\": \"DyAheGXk\",\n    \"block\": \"[[[10,0],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"icon\\\"]],[[[1,\\\"    \\\"],[10,\\\"img\\\"],[15,\\\"src\\\",[28,[37,3],[\\\"https://cdn.settify.com.au/icons/\\\",[28,[37,4],[[30,1,[\\\"icon\\\"]]],null]],null]],[14,\\\"alt\\\",\\\"\\\"],[14,\\\"aria-hidden\\\",\\\"true\\\"],[14,0,\\\"size-10\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[10,\\\"h2\\\"],[14,0,\\\"text-xl font-bold leading-7 text-gray-900 sm:truncate sm:text-2xl sm:tracking-tight\\\"],[12],[1,\\\"\\\\n    \\\"],[1,[28,[35,6],[[28,[37,7],[[30,1,[\\\"shortTitle\\\"]],[30,1,[\\\"title\\\"]]],null]],[[\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,2,[\\\"client\\\",\\\"touch\\\"]],[30,2,[\\\"client\\\"]],[28,[37,8],null,[[\\\"induction\\\",\\\"chapter\\\",\\\"repeat\\\"],[[30,1,[\\\"id\\\"]],[30,0,[\\\"chapter\\\",\\\"id\\\"]],[30,1,[\\\"repeatToken\\\"]]]]]]]]],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"breadcrumbText\\\"]],[[[1,\\\"      (\\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,1,[\\\"breadcrumbText\\\"]]],[13],[1,\\\")\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[10,0],[15,0,[29,[\\\"can-highlight flex flex-col gap-4 \\\",[52,[28,[37,10],[[30,1,[\\\"isContactDetails\\\"]],[30,3]],null],\\\"highlight-required-fields\\\"]]]],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,12],[[28,[37,12],[[30,1,[\\\"chapters\\\"]]],null]],null],null,[[[1,\\\"    \\\"],[8,[39,13],null,[[\\\"@induction\\\",\\\"@chapter\\\",\\\"@model\\\",\\\"@computeDisplayIf\\\",\\\"@routeOverride\\\"],[[30,1],[30,4],[30,2],[30,5],[30,6]]],null],[1,\\\"\\\\n\\\"]],[4]],null],[13]],[\\\"@induction\\\",\\\"@model\\\",\\\"@highlightRequiredFieldsCP\\\",\\\"chapter\\\",\\\"@computeDisplayIf\\\",\\\"@routeOverride\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"img\\\",\\\"concat\\\",\\\"de-fingerprint\\\",\\\"h2\\\",\\\"parse-text\\\",\\\"or\\\",\\\"hash\\\",\\\"span\\\",\\\"and\\\",\\\"each\\\",\\\"-track-array\\\",\\\"v2/client-facing-summary/chapter-summary\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/client-facing-summary/index.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/v2/client-facing-summary/page-summary/index\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#unless (or @page.hideInClientSummary @page.deleted)}}\n    <div class=\"grid grid-cols-6 gap-2 sm:grid-cols-12 md:gap-5\">\n      {{! Page heading }}\n      <h4 class=\"page-title col-span-2 text-gray-600\">\n        {{parse-text\n          (or @page.shortTitle @page.title)\n          touch=@model.client.touch\n          clientRecord=@model.client\n          context=(hash induction=@induction.id chapter=@chapter.id repeat=@induction.repeatToken)\n        }}\n      </h4>\n      <div class=\"page-items col-span-3 sm:col-span-9\">\n        {{! Page content }}\n        {{#if (and @page.answersLocation @page.answersLocationLoop)}}\n          {{! Loop over each item in the answers model }}\n          {{#each\n            (get-answers-from\n              client=@model.client induction=@induction.id chapter=@chapter.id page=@page.id answersLocation=@page.answersLocation repeatToken=@induction.repeatToken create=true\n            )\n            as |loopAnswer loop|\n          }}\n            {{#let\n              (get-answers-from\n                client=@model.client\n                induction=@induction.id\n                chapter=@chapter.id\n                page=@page.id\n                answersLocation=@page.answersLocation\n                loop=loop\n                repeatToken=@induction.repeatToken\n                create=true\n              )\n              as |pageModel|\n            }}\n              {{#each @page.questions as |question|}}\n                <V2::ClientFacingSummary::QuestionSummary\n                  @model={{@model}}\n                  @induction={{@induction}}\n                  @chapter={{@chapter}}\n                  @page={{@page}}\n                  @question={{question}}\n                  @pageModel={{pageModel}}\n                  @computeDisplayIf={{@computeDisplayIf}}\n                />\n              {{/each}}\n            {{/let}}\n          {{/each}}\n        {{else}}\n          {{#let\n            (get-answers-from\n              client=@model.client induction=@induction.id chapter=@chapter.id page=@page.id answersLocation=@page.answersLocation repeatToken=@induction.repeatToken create=true\n            )\n            as |pageModel|\n          }}\n            {{#each @page.questions as |question|}}\n              <V2::ClientFacingSummary::QuestionSummary\n                @model={{@model}}\n                @induction={{@induction}}\n                @chapter={{@chapter}}\n                @page={{@page}}\n                @question={{question}}\n                @pageModel={{pageModel}}\n                @computeDisplayIf={{@computeDisplayIf}}\n              />\n            {{/each}}\n          {{/let}}\n        {{/if}}\n  \n        {{#let\n          (get\n            (get-answers-from\n              client=@model.client induction=@induction.id chapter=@chapter.id page=@page.id answersLocation=@page.answersLocation repeatToken=@induction.repeatToken create=true\n            )\n            \"settifyMoreInfo\"\n          )\n          as |moreInfoString|\n        }}\n          {{#if moreInfoString}}\n            <p>\n              More information:\n              {{moreInfoString}}\n            </p>\n          {{/if}}\n        {{/let}}\n      </div>\n  \n      {{! Edit page button. We only allowing editing if the firm has not locked the record }}\n      {{#unless @model.client.lockedByLawFirm}}\n        <div class=\"pdf-exclude flex items-start justify-end\">\n          <LinkTo\n            @route={{or @routeOverride \"detailedinduction\"}}\n            @models={{array @induction.id @chapter.id @page.id}}\n            @query={{hash repeat=@induction.repeatToken review=true}}\n            class=\"col-span-1 whitespace-nowrap rounded-md bg-transparent px-2 py-1 text-sm shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50\"\n          >\n            Edit\n            <span class=\"sr-only\">question</span>\n          </LinkTo>\n        </div>\n      {{/unless}}\n    </div>\n  {{/unless}}\n  */\n  {\n    \"id\": \"ZFaK8zWj\",\n    \"block\": \"[[[41,[51,[28,[37,1],[[30,1,[\\\"hideInClientSummary\\\"]],[30,1,[\\\"deleted\\\"]]],null]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"grid grid-cols-6 gap-2 sm:grid-cols-12 md:gap-5\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"    \\\"],[10,\\\"h4\\\"],[14,0,\\\"page-title col-span-2 text-gray-600\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[28,[35,4],[[28,[37,1],[[30,1,[\\\"shortTitle\\\"]],[30,1,[\\\"title\\\"]]],null]],[[\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,2,[\\\"client\\\",\\\"touch\\\"]],[30,2,[\\\"client\\\"]],[28,[37,5],null,[[\\\"induction\\\",\\\"chapter\\\",\\\"repeat\\\"],[[30,3,[\\\"id\\\"]],[30,4,[\\\"id\\\"]],[30,3,[\\\"repeatToken\\\"]]]]]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"page-items col-span-3 sm:col-span-9\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,7],[[30,1,[\\\"answersLocation\\\"]],[30,1,[\\\"answersLocationLoop\\\"]]],null],[[[42,[28,[37,9],[[28,[37,9],[[28,[37,10],null,[[\\\"client\\\",\\\"induction\\\",\\\"chapter\\\",\\\"page\\\",\\\"answersLocation\\\",\\\"repeatToken\\\",\\\"create\\\"],[[30,2,[\\\"client\\\"]],[30,3,[\\\"id\\\"]],[30,4,[\\\"id\\\"]],[30,1,[\\\"id\\\"]],[30,1,[\\\"answersLocation\\\"]],[30,3,[\\\"repeatToken\\\"]],true]]]],null]],null],null,[[[44,[[28,[37,10],null,[[\\\"client\\\",\\\"induction\\\",\\\"chapter\\\",\\\"page\\\",\\\"answersLocation\\\",\\\"loop\\\",\\\"repeatToken\\\",\\\"create\\\"],[[30,2,[\\\"client\\\"]],[30,3,[\\\"id\\\"]],[30,4,[\\\"id\\\"]],[30,1,[\\\"id\\\"]],[30,1,[\\\"answersLocation\\\"]],[30,6],[30,3,[\\\"repeatToken\\\"]],true]]]],[[[42,[28,[37,9],[[28,[37,9],[[30,1,[\\\"questions\\\"]]],null]],null],null,[[[1,\\\"              \\\"],[8,[39,12],null,[[\\\"@model\\\",\\\"@induction\\\",\\\"@chapter\\\",\\\"@page\\\",\\\"@question\\\",\\\"@pageModel\\\",\\\"@computeDisplayIf\\\"],[[30,2],[30,3],[30,4],[30,1],[30,8],[30,7],[30,9]]],null],[1,\\\"\\\\n\\\"]],[8]],null]],[7]]]],[5,6]],null]],[]],[[[44,[[28,[37,10],null,[[\\\"client\\\",\\\"induction\\\",\\\"chapter\\\",\\\"page\\\",\\\"answersLocation\\\",\\\"repeatToken\\\",\\\"create\\\"],[[30,2,[\\\"client\\\"]],[30,3,[\\\"id\\\"]],[30,4,[\\\"id\\\"]],[30,1,[\\\"id\\\"]],[30,1,[\\\"answersLocation\\\"]],[30,3,[\\\"repeatToken\\\"]],true]]]],[[[42,[28,[37,9],[[28,[37,9],[[30,1,[\\\"questions\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[8,[39,12],null,[[\\\"@model\\\",\\\"@induction\\\",\\\"@chapter\\\",\\\"@page\\\",\\\"@question\\\",\\\"@pageModel\\\",\\\"@computeDisplayIf\\\"],[[30,2],[30,3],[30,4],[30,1],[30,11],[30,10],[30,9]]],null],[1,\\\"\\\\n\\\"]],[11]],null]],[10]]]],[]]],[1,\\\"\\\\n\\\"],[44,[[28,[37,13],[[28,[37,10],null,[[\\\"client\\\",\\\"induction\\\",\\\"chapter\\\",\\\"page\\\",\\\"answersLocation\\\",\\\"repeatToken\\\",\\\"create\\\"],[[30,2,[\\\"client\\\"]],[30,3,[\\\"id\\\"]],[30,4,[\\\"id\\\"]],[30,1,[\\\"id\\\"]],[30,1,[\\\"answersLocation\\\"]],[30,3,[\\\"repeatToken\\\"]],true]]],\\\"settifyMoreInfo\\\"],null]],[[[41,[30,12],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            More information:\\\\n            \\\"],[1,[30,12]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[12]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[51,[30,2,[\\\"client\\\",\\\"lockedByLawFirm\\\"]]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"pdf-exclude flex items-start justify-end\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,15],[[24,0,\\\"col-span-1 whitespace-nowrap rounded-md bg-transparent px-2 py-1 text-sm shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50\\\"]],[[\\\"@route\\\",\\\"@models\\\",\\\"@query\\\"],[[28,[37,1],[[30,13],\\\"detailedinduction\\\"],null],[28,[37,16],[[30,3,[\\\"id\\\"]],[30,4,[\\\"id\\\"]],[30,1,[\\\"id\\\"]]],null],[28,[37,5],null,[[\\\"repeat\\\",\\\"review\\\"],[[30,3,[\\\"repeatToken\\\"]],true]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          Edit\\\\n          \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"question\\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@page\\\",\\\"@model\\\",\\\"@induction\\\",\\\"@chapter\\\",\\\"loopAnswer\\\",\\\"loop\\\",\\\"pageModel\\\",\\\"question\\\",\\\"@computeDisplayIf\\\",\\\"pageModel\\\",\\\"question\\\",\\\"moreInfoString\\\",\\\"@routeOverride\\\"],false,[\\\"unless\\\",\\\"or\\\",\\\"div\\\",\\\"h4\\\",\\\"parse-text\\\",\\\"hash\\\",\\\"if\\\",\\\"and\\\",\\\"each\\\",\\\"-track-array\\\",\\\"get-answers-from\\\",\\\"let\\\",\\\"v2/client-facing-summary/question-summary\\\",\\\"get\\\",\\\"p\\\",\\\"link-to\\\",\\\"array\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/client-facing-summary/page-summary/index.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/v2/client-facing-summary/question-summary/index\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#unless (or @question.hideInClientSummary @question.deleted)}}\n    {{#if\n      (should-display\n        question=@question\n        clientRecord=@model.client\n        context=(hash induction=@induction.id chapter=@chapter.id page=@page.id repeat=@induction.repeatToken)\n        touch=@model.client.touch\n        model=@pageModel\n      )\n    }}\n      <SettifyInputSwitcher\n        @question={{@question}}\n        @model={{@pageModel}}\n        @clientRecord={{@model.client}}\n        @displayOnly={{true}}\n        @notSureButton={{true}}\n        @context={{hash\n          induction=@induction.id\n          chapter=@chapter.id\n          page=@page.id\n          repeat=@induction.repeatToken\n          answersLocation=@page.answersLocation\n          answersLocationLoop=@page.answersLocationLoop\n        }}\n      />\n    {{/if}}\n  {{/unless}}\n  */\n  {\n    \"id\": \"PDCWC9D7\",\n    \"block\": \"[[[41,[51,[28,[37,1],[[30,1,[\\\"hideInClientSummary\\\"]],[30,1,[\\\"deleted\\\"]]],null]],[[[41,[28,[37,3],null,[[\\\"question\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"touch\\\",\\\"model\\\"],[[30,1],[30,2,[\\\"client\\\"]],[28,[37,4],null,[[\\\"induction\\\",\\\"chapter\\\",\\\"page\\\",\\\"repeat\\\"],[[30,3,[\\\"id\\\"]],[30,4,[\\\"id\\\"]],[30,5,[\\\"id\\\"]],[30,3,[\\\"repeatToken\\\"]]]]],[30,2,[\\\"client\\\",\\\"touch\\\"]],[30,6]]]],[[[1,\\\"    \\\"],[8,[39,5],null,[[\\\"@question\\\",\\\"@model\\\",\\\"@clientRecord\\\",\\\"@displayOnly\\\",\\\"@notSureButton\\\",\\\"@context\\\"],[[30,1],[30,6],[30,2,[\\\"client\\\"]],true,true,[28,[37,4],null,[[\\\"induction\\\",\\\"chapter\\\",\\\"page\\\",\\\"repeat\\\",\\\"answersLocation\\\",\\\"answersLocationLoop\\\"],[[30,3,[\\\"id\\\"]],[30,4,[\\\"id\\\"]],[30,5,[\\\"id\\\"]],[30,3,[\\\"repeatToken\\\"]],[30,5,[\\\"answersLocation\\\"]],[30,5,[\\\"answersLocationLoop\\\"]]]]]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]],null]],[\\\"@question\\\",\\\"@model\\\",\\\"@induction\\\",\\\"@chapter\\\",\\\"@page\\\",\\\"@pageModel\\\"],false,[\\\"unless\\\",\\\"or\\\",\\\"if\\\",\\\"should-display\\\",\\\"hash\\\",\\\"settify-input-switcher\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/client-facing-summary/question-summary/index.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/v2/client-summary-for-legacy-data/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/template\", \"@ember/service\", \"settify-mvp/helpers/address-string\", \"settify-mvp/helpers/pretty-date\", \"@ember/template-factory\"], function (_exports, _component, _component2, _template, _service, _addressString, _prettyDate, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/template\",0,\"@ember/service\",0,\"settify-mvp/helpers/address-string\",0,\"settify-mvp/helpers/pretty-date\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! View full record CTA }}\n  <div class=\"rounded-md bg-yellow-50 p-4\">\n    <div class=\"flex flex-wrap items-center justify-center gap-2 text-sm text-yellow-800\">\n      <V2::SvgIcon @icon=\"triangle-exclamation\" class=\"size-5 text-yellow-500\" />\n      <h3 class=\"font-medium\">You are viewing a legacy record. As a result, only basic information is available.</h3>\n      {{#if this.fullRecordURL}}\n        <a href={{this.fullRecordURL}} target=\"_blank\" rel=\"noopener noreferrer\" class=\"rounded-md px-2 py-1 underline\">\n          View the full record\n          <span aria-hidden=\"true\">→</span>\n        </a>\n      {{/if}}\n    </div>\n  </div>\n  \n  <div id=\"settify-summary-content\" class=\"condensed-summary settify-for-everything\">\n    <div class=\"summary-element-header my-4 flex gap-2 rounded-md bg-brand-primary-color-rgb py-1 text-white\">\n      <h2 class=\"grow text-center text-lg font-semibold leading-7 sm:truncate sm:text-xl sm:tracking-tight\">\n        Brief Summary\n      </h2>\n    </div>\n  \n    <div class=\"keeptogether\">\n      <div class=\"image-wrapper bold\">\n        <LineIcon @src=\"https://cdn.settify.com.au/icons/034-mail-box.png\" @inline={{true}} />\n        Contact Details\n      </div>\n  \n      <table class=\"settify-summary\">\n        <thead>\n          <tr>\n            <th>\n              {{! Empty header cell for the first column }}\n            </th>\n            <th scope=\"col\">\n              {{@clientRecord.title}}\n              <span class=\"settify-sensitive\">{{@clientRecord.firstName}}</span>\n              <span class=\"settify-sensitive\">{{@clientRecord.middleName}}</span>\n              <span class=\"settify-sensitive\">{{@clientRecord.surname}}</span>\n              {{#if (eq @clientRecord.practiceArea \"Family\")}}\n                <span class=\"font-normal\">(client)</span>\n              {{/if}}\n            </th>\n            {{#if this.showPartnerColumn}}\n              <th scope=\"col\">\n                {{@clientRecord.partnerTitle}}\n                <span class=\"settify-sensitive\">{{@clientRecord.partnerFirstName}}</span>\n                <span class=\"settify-sensitive\">{{@clientRecord.partnerMiddleName}}</span>\n                <span class=\"settify-sensitive\">{{@clientRecord.partnerSurname}}</span>\n              </th>\n            {{/if}}\n          </tr>\n        </thead>\n        <tbody>\n          {{#each this.tableBodyRows as |row|}}\n            <tr>\n              <td>{{row.title}}</td>\n              <td>\n                {{#if row.user}}\n                  <span class=\"settify-sensitive\">{{row.user}}</span>\n                {{else}}\n                  <Admin::Nil />\n                {{/if}}\n              </td>\n              {{#if this.showPartnerColumn}}\n                <td>\n                  {{#if row.spouse}}\n                    <span class=\"settify-sensitive\">{{row.spouse}}</span>\n                  {{else}}\n                    <Admin::Nil />\n                  {{/if}}\n                </td>\n              {{/if}}\n            </tr>\n          {{/each}}\n        </tbody>\n      </table>\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"Toi/U55h\",\n    \"block\": \"[[[10,0],[14,0,\\\"rounded-md bg-yellow-50 p-4\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"flex flex-wrap items-center justify-center gap-2 text-sm text-yellow-800\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,1],[[24,0,\\\"size-5 text-yellow-500\\\"]],[[\\\"@icon\\\"],[\\\"triangle-exclamation\\\"]],null],[1,\\\"\\\\n    \\\"],[10,\\\"h3\\\"],[14,0,\\\"font-medium\\\"],[12],[1,\\\"You are viewing a legacy record. As a result, only basic information is available.\\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"fullRecordURL\\\"]],[[[1,\\\"      \\\"],[10,3],[15,6,[30,0,[\\\"fullRecordURL\\\"]]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[14,0,\\\"rounded-md px-2 py-1 underline\\\"],[12],[1,\\\"\\\\n        View the full record\\\\n        \\\"],[10,1],[14,\\\"aria-hidden\\\",\\\"true\\\"],[12],[1,\\\"→\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,1,\\\"settify-summary-content\\\"],[14,0,\\\"condensed-summary settify-for-everything\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"summary-element-header my-4 flex gap-2 rounded-md bg-brand-primary-color-rgb py-1 text-white\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"h2\\\"],[14,0,\\\"grow text-center text-lg font-semibold leading-7 sm:truncate sm:text-xl sm:tracking-tight\\\"],[12],[1,\\\"\\\\n      Brief Summary\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"keeptogether\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"image-wrapper bold\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,7],null,[[\\\"@src\\\",\\\"@inline\\\"],[\\\"https://cdn.settify.com.au/icons/034-mail-box.png\\\",true]],null],[1,\\\"\\\\n      Contact Details\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,\\\"table\\\"],[14,0,\\\"settify-summary\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"th\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[30,1,[\\\"title\\\"]]],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,1,[\\\"firstName\\\"]]],[13],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,1,[\\\"middleName\\\"]]],[13],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,1,[\\\"surname\\\"]]],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,12],[[30,1,[\\\"practiceArea\\\"]],\\\"Family\\\"],null],[[[1,\\\"              \\\"],[10,1],[14,0,\\\"font-normal\\\"],[12],[1,\\\"(client)\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showPartnerColumn\\\"]],[[[1,\\\"            \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[12],[1,\\\"\\\\n              \\\"],[1,[30,1,[\\\"partnerTitle\\\"]]],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,1,[\\\"partnerFirstName\\\"]]],[13],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,1,[\\\"partnerMiddleName\\\"]]],[13],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,1,[\\\"partnerSurname\\\"]]],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,15],[[28,[37,15],[[30,0,[\\\"tableBodyRows\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[12],[1,[30,2,[\\\"title\\\"]]],[13],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,2,[\\\"user\\\"]],[[[1,\\\"                \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,2,[\\\"user\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                \\\"],[8,[39,17],null,null,null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"            \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showPartnerColumn\\\"]],[[[1,\\\"              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,2,[\\\"spouse\\\"]],[[[1,\\\"                  \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,2,[\\\"spouse\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                  \\\"],[8,[39,17],null,null,null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@clientRecord\\\",\\\"row\\\"],false,[\\\"div\\\",\\\"v2/svg-icon\\\",\\\"h3\\\",\\\"if\\\",\\\"a\\\",\\\"span\\\",\\\"h2\\\",\\\"line-icon\\\",\\\"table\\\",\\\"thead\\\",\\\"tr\\\",\\\"th\\\",\\\"eq\\\",\\\"tbody\\\",\\\"each\\\",\\\"-track-array\\\",\\\"td\\\",\\\"admin/nil\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/client-summary-for-legacy-data/index.hbs\",\n    \"isStrictMode\": false\n  });\n  let V2ClientSummaryForLegacyData = _exports.default = (_class = class V2ClientSummaryForLegacyData extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n    }\n    get fullRecordURL() {\n      const {\n        practiceArea,\n        clientID\n      } = this.args.clientRecord;\n      const practiceAreaUrlForFirm = this.firm.getLegacyRecordUrl(practiceArea);\n      if (practiceAreaUrlForFirm) {\n        return `${practiceAreaUrlForFirm}admin/clients/${clientID}?viewMode=classic`;\n      }\n      return null;\n    }\n    get showPartnerColumn() {\n      return this.args.clientRecord?.partnerFirstName || this.args?.clientRecord?.partnerSurname;\n    }\n    get tableBodyRows() {\n      const {\n        clientRecord\n      } = this.args;\n      return [{\n        title: \"Date of birth\",\n        user: (0, _prettyDate.prettyDate)([clientRecord?.dobDay, clientRecord?.dobMonth, clientRecord?.dobYear]),\n        spouse: (0, _prettyDate.prettyDate)([clientRecord?.partnerDobDay, clientRecord?.partnerDobMonth, clientRecord?.partnerDobYear])\n      }, {\n        title: \"Phone\",\n        user: clientRecord?.phone,\n        spouse: clientRecord?.partnerPhone\n      }, {\n        title: \"Email\",\n        user: clientRecord?.email,\n        spouse: clientRecord?.partnerEmail\n      }, {\n        title: \"Address\",\n        user: (0, _template.htmlSafe)((0, _addressString.addressString)([clientRecord?.postalAddress], {\n          detailed: true,\n          linebreaks: true\n        })),\n        spouse: (0, _template.htmlSafe)((0, _addressString.addressString)([clientRecord?.partnerPostalAddress], {\n          detailed: true,\n          linebreaks: true\n        }))\n      }, {\n        title: \"Maiden or other names\",\n        user: clientRecord?.otherNames,\n        spouse: clientRecord?.partnerOtherNames\n      }];\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, V2ClientSummaryForLegacyData);\n});","define(\"settify-mvp/components/v2/clipboard/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/service\", \"@ember/object\", \"@glimmer/tracking\", \"@ember/destroyable\", \"@ember/object/internals\", \"@ember/template-factory\"], function (_exports, _component, _component2, _service, _object, _tracking, _destroyable, _internals, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/service\",0,\"@ember/object\",0,\"@glimmer/tracking\",0,\"@ember/destroyable\",0,\"@ember/object/internals\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"flex items-stretch\" ...attributes>\n    <span class=\"w-full\">\n      <V2::Textline @value={{@value}} @id={{this.id}} readonly disabled class=\"rounded-r-none text-sm\" />\n    </span>\n    <span class=\"isolate inline-flex\">\n      <V2::Button @variant=\"outlined\" {{on \"click\" this.copyValueToClipboard}} class=\"ring-none rounded-l-none bg-white\" title=\"Copy to clipboard\">\n        {{#if this.hasCopiedResumeLink}}\n          <span class=\"sr-only\">Copied to clipboard</span>\n          <V2::SvgIcon @icon=\"check\" id=\"copy-check-icon\" class=\"size-4 text-brand-primary-color-rgb\" />\n        {{else if this.hasCopyError}}\n          <span class=\"sr-only\">Failed to copy to clipboard</span>\n          <V2::SvgIcon @icon=\"triangle-exclamation\" id=\"copy-error-icon\" class=\"size-4 text-red-500\" />\n        {{else}}\n          <span class=\"sr-only\">Copy to clipboard</span>\n          <V2::SvgIcon @icon=\"clipboard\" id=\"copy-clipboard-icon\" class=\"size-4\" />\n        {{/if}}\n      </V2::Button>\n    </span>\n  </div>\n  */\n  {\n    \"id\": \"ACA5jHDW\",\n    \"block\": \"[[[11,0],[24,0,\\\"flex items-stretch\\\"],[17,1],[12],[1,\\\"\\\\n  \\\"],[10,1],[14,0,\\\"w-full\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,2],[[24,\\\"readonly\\\",\\\"\\\"],[24,\\\"disabled\\\",\\\"\\\"],[24,0,\\\"rounded-r-none text-sm\\\"]],[[\\\"@value\\\",\\\"@id\\\"],[[30,2],[30,0,[\\\"id\\\"]]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,1],[14,0,\\\"isolate inline-flex\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,3],[[24,0,\\\"ring-none rounded-l-none bg-white\\\"],[24,\\\"title\\\",\\\"Copy to clipboard\\\"],[4,[38,4],[\\\"click\\\",[30,0,[\\\"copyValueToClipboard\\\"]]],null]],[[\\\"@variant\\\"],[\\\"outlined\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"hasCopiedResumeLink\\\"]],[[[1,\\\"        \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Copied to clipboard\\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,6],[[24,1,\\\"copy-check-icon\\\"],[24,0,\\\"size-4 text-brand-primary-color-rgb\\\"]],[[\\\"@icon\\\"],[\\\"check\\\"]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"hasCopyError\\\"]],[[[1,\\\"        \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Failed to copy to clipboard\\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,6],[[24,1,\\\"copy-error-icon\\\"],[24,0,\\\"size-4 text-red-500\\\"]],[[\\\"@icon\\\"],[\\\"triangle-exclamation\\\"]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Copy to clipboard\\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,6],[[24,1,\\\"copy-clipboard-icon\\\"],[24,0,\\\"size-4\\\"]],[[\\\"@icon\\\"],[\\\"clipboard\\\"]],null],[1,\\\"\\\\n      \\\"]],[]]]],[]]],[1,\\\"    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"&attrs\\\",\\\"@value\\\"],false,[\\\"div\\\",\\\"span\\\",\\\"v2/textline\\\",\\\"v2/button\\\",\\\"on\\\",\\\"if\\\",\\\"v2/svg-icon\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/clipboard/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component for displaying link and a button to copy it to the clipboard.\n   * @class ClipboardComponent\n   * @extends Component\n   *\n   * @param {Object} this.args.value - REQUIRED: Value copied to the clipboard.\n   * @param {number} [this.args.copiedDuration] - Clipboard animation duration (ms)\n   * @param {number} [this.args.errorDuration] - Clipboard error animation duration (ms)\n   * @param {string} [this.args.id] - ID for the input. If not provided, a default ID will be generated.\n   *\n   * @example\n   * <ClipboardComponent @value={{this.resumeLink}} @copiedDuration={{1000}} @errorDuration={{500}} @id={{input-id}} />\n   */\n\n  const DEFAULT_COPIED_DURATION = 5000;\n  const COPY_TO_CLIPBOARD_ERROR_DURATION = 1000;\n  let ClipboardComponent = _exports.default = (_class = class ClipboardComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor, this);\n      _initializerDefineProperty(this, \"hasCopiedResumeLink\", _descriptor2, this);\n      _initializerDefineProperty(this, \"isCopying\", _descriptor3, this);\n      _initializerDefineProperty(this, \"hasCopyError\", _descriptor4, this);\n      _defineProperty(this, \"duration\", this.args.copiedDuration || DEFAULT_COPIED_DURATION);\n      _defineProperty(this, \"errorDuration\", this.args.errorDuration || COPY_TO_CLIPBOARD_ERROR_DURATION);\n      (0, _destroyable.registerDestructor)(this, () => {\n        if (this.timeoutID) {\n          clearTimeout(this.timeoutID);\n        }\n      });\n    }\n\n    /**\n     * Returns the id for the clipboard input element.\n     * If no id is provided in the arguments, a default id is generated using `guidFor`.\n     * @returns {String} A unique ID.\n     */\n    get id() {\n      return this.args.id ?? `clipboard-input-${(0, _internals.guidFor)(this)}`;\n    }\n\n    /**\n     * Copies the value to the user's clipboard.\n     */\n    async copyValueToClipboard() {\n      try {\n        if (this.isCopying || this.hasCopyError) return;\n        this.isCopying = true;\n        this.hasCopyError = false;\n        await navigator.clipboard.writeText(this.args?.value);\n        this.hasCopiedResumeLink = true;\n        this.timeoutID = setTimeout(() => {\n          this.hasCopiedResumeLink = false;\n          this.isCopying = false;\n          this.timeoutID = null;\n        }, this.duration);\n      } catch (err) {\n        this.eventLogging.logError(\"Failed to copy value\", err);\n        this.hasCopyError = true;\n        this.isCopying = false;\n        this.timeoutID = setTimeout(() => {\n          this.hasCopyError = false;\n          this.timeoutID = null;\n        }, this.errorDuration);\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"hasCopiedResumeLink\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"isCopying\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"hasCopyError\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"copyValueToClipboard\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"copyValueToClipboard\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, ClipboardComponent);\n});","define(\"settify-mvp/components/v2/confidence-range/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@ember/object/internals\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _internals, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@ember/object/internals\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <label id=\"{{this.id}}-label\" for={{this.id}} class=\"mb-2 block {{if @required 'required-field-marker'}}\">\n    {{#if (has-block)}}\n      {{yield}}\n    {{else}}\n      How confident are you?\n    {{/if}}\n  </label>\n  \n  <input\n    id={{this.id}}\n    type=\"range\"\n    value={{this.selectedConfidence}}\n    max=\"100\"\n    step=\"33.33\"\n    class=\"h-2 w-full cursor-pointer appearance-none rounded-lg bg-gray-200 accent-brand-primary-color-rgb\"\n    aria-valuemin=\"0\"\n    aria-valuemax=\"100\"\n    aria-valuenow={{this.selectedConfidence}}\n    aria-valuetext={{confidence-string @value @maxConfidence}}\n    {{on \"input\" this.handleChange}}\n  />\n  \n  <div class=\"relative mb-6 hidden sm:block\">\n    {{#each this.confidenceLevels as |level index|}}\n      <span id=\"{{this.id}}-{{level.id}}\" class=\"absolute {{level.class}} text-sm text-gray-600\">\n        {{level.label}}\n      </span>\n    {{/each}}\n  </div>\n  <span class=\"block w-full text-center text-sm text-gray-600 sm:hidden\">\n    {{confidence-string @value @maxConfidence}}\n  </span>\n  */\n  {\n    \"id\": \"12iGPtfE\",\n    \"block\": \"[[[10,\\\"label\\\"],[15,1,[29,[[30,0,[\\\"id\\\"]],\\\"-label\\\"]]],[15,\\\"for\\\",[30,0,[\\\"id\\\"]]],[15,0,[29,[\\\"mb-2 block \\\",[52,[30,1],\\\"required-field-marker\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[48,[30,6]],[[[1,\\\"    \\\"],[18,6,null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    How confident are you?\\\\n\\\"]],[]]],[13],[1,\\\"\\\\n\\\\n\\\"],[11,\\\"input\\\"],[16,1,[30,0,[\\\"id\\\"]]],[16,2,[30,0,[\\\"selectedConfidence\\\"]]],[24,\\\"max\\\",\\\"100\\\"],[24,\\\"step\\\",\\\"33.33\\\"],[24,0,\\\"h-2 w-full cursor-pointer appearance-none rounded-lg bg-gray-200 accent-brand-primary-color-rgb\\\"],[24,\\\"aria-valuemin\\\",\\\"0\\\"],[24,\\\"aria-valuemax\\\",\\\"100\\\"],[16,\\\"aria-valuenow\\\",[30,0,[\\\"selectedConfidence\\\"]]],[16,\\\"aria-valuetext\\\",[28,[37,5],[[30,2],[30,3]],null]],[24,4,\\\"range\\\"],[4,[38,6],[\\\"input\\\",[30,0,[\\\"handleChange\\\"]]],null],[12],[13],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"relative mb-6 hidden sm:block\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,9],[[28,[37,9],[[30,0,[\\\"confidenceLevels\\\"]]],null]],null],null,[[[1,\\\"    \\\"],[10,1],[15,1,[29,[[30,0,[\\\"id\\\"]],\\\"-\\\",[30,4,[\\\"id\\\"]]]]],[15,0,[29,[\\\"absolute \\\",[30,4,[\\\"class\\\"]],\\\" text-sm text-gray-600\\\"]]],[12],[1,\\\"\\\\n      \\\"],[1,[30,4,[\\\"label\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[4,5]],null],[13],[1,\\\"\\\\n\\\"],[10,1],[14,0,\\\"block w-full text-center text-sm text-gray-600 sm:hidden\\\"],[12],[1,\\\"\\\\n  \\\"],[1,[28,[35,5],[[30,2],[30,3]],null]],[1,\\\"\\\\n\\\"],[13]],[\\\"@required\\\",\\\"@value\\\",\\\"@maxConfidence\\\",\\\"level\\\",\\\"index\\\",\\\"&default\\\"],false,[\\\"label\\\",\\\"if\\\",\\\"has-block\\\",\\\"yield\\\",\\\"input\\\",\\\"confidence-string\\\",\\\"on\\\",\\\"div\\\",\\\"each\\\",\\\"-track-array\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/confidence-range/index.hbs\",\n    \"isStrictMode\": false\n  });\n  let ConfidenceRangeComponent = _exports.default = (_class = class ConfidenceRangeComponent extends _component2.default {\n    get id() {\n      return this.args.id ?? `confidence-component-${(0, _internals.guidFor)(this)}`;\n    }\n    get confidenceLevels() {\n      return [{\n        label: \"Just a guess\",\n        class: \"start-0\",\n        id: \"guess\"\n      }, {\n        label: \"Fairly confident\",\n        class: \"start-1/3 -translate-x-1/2 rtl:translate-x-1/2\",\n        id: \"fairly-confident\"\n      }, {\n        label: \"Confident\",\n        class: \"start-2/3 -translate-x-1/2 rtl:translate-x-1/2\",\n        id: \"confident\"\n      }, {\n        label: this.args.maxConfidence ?? \"100% certain\",\n        class: \"end-0\",\n        id: \"certain\"\n      }];\n    }\n    get selectedConfidence() {\n      return this.args.value || 0;\n    }\n    handleChange(event) {\n      if (typeof this.args.onChange === \"function\") {\n        this.args.onChange(event.target.value, event);\n      }\n    }\n  }, _applyDecoratedDescriptor(_class.prototype, \"handleChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleChange\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, ConfidenceRangeComponent);\n});","define(\"settify-mvp/components/v2/console/command-details/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/service\", \"@ember/template-factory\"], function (_exports, _component, _component2, _tracking, _object, _service, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! Slide-over panel for command details }}\n  <div class=\"fixed inset-0 z-50 overflow-hidden\" aria-labelledby=\"slide-over-title\" role=\"dialog\" aria-modal=\"true\">\n    {{! Background overlay }}\n    <div class=\"absolute inset-0 overflow-hidden\">\n      <div class=\"pointer-events-none fixed inset-y-0 right-0 flex max-w-full pl-10\">\n        {{! Panel }}\n        <div class=\"pointer-events-auto w-screen max-w-md\">\n          <div class=\"flex h-full flex-col overflow-y-scroll bg-white shadow-xl\">\n            {{! Header }}\n            <div class=\"bg-brand-primary-color-rgb px-4 py-6 sm:px-6\">\n              <div class=\"flex items-start justify-between\">\n                <h2 class=\"text-lg font-medium text-white\" id=\"slide-over-title\">\n                  {{@command.name}}\n                </h2>\n                <div class=\"ml-3 flex h-7 items-center\">\n                  <button type=\"button\" class=\"rounded-md text-white hover:text-white/80 focus:outline-none focus:ring-2 focus:ring-white\" {{on \"click\" this.handleClose}}>\n                    <span class=\"sr-only\">Close panel</span>\n                    <V2::SvgIcon @icon=\"x-mark\" class=\"size-6\" />\n                  </button>\n                </div>\n              </div>\n              <div class=\"mt-1\">\n                <p class=\"text-sm text-white/90\">\n                  {{@command.description}}\n                </p>\n              </div>\n            </div>\n  \n            {{! Content }}\n            <div class=\"relative flex-1 px-4 py-6 sm:px-6\">\n              <div class=\"space-y-6\">\n                {{! Command metadata }}\n                <div>\n                  <h3 class=\"text-sm font-medium text-gray-900\">Command Details</h3>\n                  <dl class=\"mt-2 divide-y divide-gray-200 border-b border-t border-gray-200\">\n                    <div class=\"flex justify-between py-3 text-sm\">\n                      <dt class=\"text-gray-500\">Type</dt>\n                      <dd class=\"font-medium text-gray-900\">{{@command.type}}</dd>\n                    </div>\n                    <div class=\"flex justify-between py-3 text-sm\">\n                      <dt class=\"text-gray-500\">Category</dt>\n                      <dd class=\"font-medium text-gray-900\">{{@command.category}}</dd>\n                    </div>\n                    {{#if @command.functionName}}\n                      <div class=\"flex justify-between py-3 text-sm\">\n                        <dt class=\"text-gray-500\">Function Name</dt>\n                        <dd class=\"truncate font-mono text-xs text-gray-900\">{{@command.functionName}}</dd>\n                      </div>\n                    {{/if}}\n                    {{#if @command.endpoint}}\n                      <div class=\"flex justify-between py-3 text-sm\">\n                        <dt class=\"text-gray-500\">Endpoint</dt>\n                        <dd class=\"truncate font-mono text-xs text-gray-900\">{{@command.endpoint}}</dd>\n                      </div>\n                    {{/if}}\n                  </dl>\n                </div>\n  \n                {{! Tags }}\n                {{#if @command.tags}}\n                  <div>\n                    <h3 class=\"text-sm font-medium text-gray-900\">Tags</h3>\n                    <div class=\"mt-2 flex flex-wrap gap-2\">\n                      {{#each @command.tags as |tag|}}\n                        <span class=\"inline-flex items-center rounded-full bg-gray-100 px-2.5 py-0.5 text-xs font-medium text-gray-800\">\n                          {{tag}}\n                        </span>\n                      {{/each}}\n                    </div>\n                  </div>\n                {{/if}}\n  \n                {{! Payload preview }}\n                {{#if @command.payloadTemplate}}\n                  <div>\n                    <div class=\"flex items-center justify-between\">\n                      <h3 class=\"text-sm font-medium text-gray-900\">Payload Preview</h3>\n                      <button type=\"button\" class=\"text-xs text-brand-primary-color-rgb hover:underline\" {{on \"click\" this.togglePayloadPreview}}>\n                        {{if this.showPayloadPreview \"Hide\" \"Show\"}}\n                      </button>\n                    </div>\n                    {{#if this.showPayloadPreview}}\n                      <div class=\"mt-2 rounded-md bg-gray-50 p-3\">\n                        <pre class=\"overflow-x-auto text-xs text-gray-800\">{{this.formattedPayload}}</pre>\n                      </div>\n                    {{/if}}\n                  </div>\n                {{/if}}\n              </div>\n            </div>\n  \n            {{! Footer }}\n            <div class=\"shrink-0 border-t border-gray-200 px-4 py-4 sm:px-6\">\n              <div class=\"flex justify-end gap-3\">\n                <V2::Button @variant=\"outlined\" {{on \"click\" this.handleClose}}>\n                  Close\n                </V2::Button>\n                <V2::Button @variant=\"solid\" disabled={{@disabled}} {{on \"click\" this.handleExecute}}>\n                  Execute\n                </V2::Button>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"cVn0Wy9z\",\n    \"block\": \"[[[10,0],[14,0,\\\"fixed inset-0 z-50 overflow-hidden\\\"],[14,\\\"aria-labelledby\\\",\\\"slide-over-title\\\"],[14,\\\"role\\\",\\\"dialog\\\"],[14,\\\"aria-modal\\\",\\\"true\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"  \\\"],[10,0],[14,0,\\\"absolute inset-0 overflow-hidden\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"pointer-events-none fixed inset-y-0 right-0 flex max-w-full pl-10\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"      \\\"],[10,0],[14,0,\\\"pointer-events-auto w-screen max-w-md\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"flex h-full flex-col overflow-y-scroll bg-white shadow-xl\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"          \\\"],[10,0],[14,0,\\\"bg-brand-primary-color-rgb px-4 py-6 sm:px-6\\\"],[12],[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"flex items-start justify-between\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"h2\\\"],[14,0,\\\"text-lg font-medium text-white\\\"],[14,1,\\\"slide-over-title\\\"],[12],[1,\\\"\\\\n                \\\"],[1,[30,1,[\\\"name\\\"]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"ml-3 flex h-7 items-center\\\"],[12],[1,\\\"\\\\n                \\\"],[11,\\\"button\\\"],[24,0,\\\"rounded-md text-white hover:text-white/80 focus:outline-none focus:ring-2 focus:ring-white\\\"],[24,4,\\\"button\\\"],[4,[38,3],[\\\"click\\\",[30,0,[\\\"handleClose\\\"]]],null],[12],[1,\\\"\\\\n                  \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Close panel\\\"],[13],[1,\\\"\\\\n                  \\\"],[8,[39,5],[[24,0,\\\"size-6\\\"]],[[\\\"@icon\\\"],[\\\"x-mark\\\"]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"mt-1\\\"],[12],[1,\\\"\\\\n              \\\"],[10,2],[14,0,\\\"text-sm text-white/90\\\"],[12],[1,\\\"\\\\n                \\\"],[1,[30,1,[\\\"description\\\"]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"          \\\"],[10,0],[14,0,\\\"relative flex-1 px-4 py-6 sm:px-6\\\"],[12],[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"space-y-6\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"              \\\"],[10,0],[12],[1,\\\"\\\\n                \\\"],[10,\\\"h3\\\"],[14,0,\\\"text-sm font-medium text-gray-900\\\"],[12],[1,\\\"Command Details\\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"dl\\\"],[14,0,\\\"mt-2 divide-y divide-gray-200 border-b border-t border-gray-200\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,0],[14,0,\\\"flex justify-between py-3 text-sm\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"dt\\\"],[14,0,\\\"text-gray-500\\\"],[12],[1,\\\"Type\\\"],[13],[1,\\\"\\\\n                    \\\"],[10,\\\"dd\\\"],[14,0,\\\"font-medium text-gray-900\\\"],[12],[1,[30,1,[\\\"type\\\"]]],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,0],[14,0,\\\"flex justify-between py-3 text-sm\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"dt\\\"],[14,0,\\\"text-gray-500\\\"],[12],[1,\\\"Category\\\"],[13],[1,\\\"\\\\n                    \\\"],[10,\\\"dd\\\"],[14,0,\\\"font-medium text-gray-900\\\"],[12],[1,[30,1,[\\\"category\\\"]]],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"functionName\\\"]],[[[1,\\\"                    \\\"],[10,0],[14,0,\\\"flex justify-between py-3 text-sm\\\"],[12],[1,\\\"\\\\n                      \\\"],[10,\\\"dt\\\"],[14,0,\\\"text-gray-500\\\"],[12],[1,\\\"Function Name\\\"],[13],[1,\\\"\\\\n                      \\\"],[10,\\\"dd\\\"],[14,0,\\\"truncate font-mono text-xs text-gray-900\\\"],[12],[1,[30,1,[\\\"functionName\\\"]]],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,1,[\\\"endpoint\\\"]],[[[1,\\\"                    \\\"],[10,0],[14,0,\\\"flex justify-between py-3 text-sm\\\"],[12],[1,\\\"\\\\n                      \\\"],[10,\\\"dt\\\"],[14,0,\\\"text-gray-500\\\"],[12],[1,\\\"Endpoint\\\"],[13],[1,\\\"\\\\n                      \\\"],[10,\\\"dd\\\"],[14,0,\\\"truncate font-mono text-xs text-gray-900\\\"],[12],[1,[30,1,[\\\"endpoint\\\"]]],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,1,[\\\"tags\\\"]],[[[1,\\\"                \\\"],[10,0],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"h3\\\"],[14,0,\\\"text-sm font-medium text-gray-900\\\"],[12],[1,\\\"Tags\\\"],[13],[1,\\\"\\\\n                  \\\"],[10,0],[14,0,\\\"mt-2 flex flex-wrap gap-2\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,13],[[28,[37,13],[[30,1,[\\\"tags\\\"]]],null]],null],null,[[[1,\\\"                      \\\"],[10,1],[14,0,\\\"inline-flex items-center rounded-full bg-gray-100 px-2.5 py-0.5 text-xs font-medium text-gray-800\\\"],[12],[1,\\\"\\\\n                        \\\"],[1,[30,2]],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"payloadTemplate\\\"]],[[[1,\\\"                \\\"],[10,0],[12],[1,\\\"\\\\n                  \\\"],[10,0],[14,0,\\\"flex items-center justify-between\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"h3\\\"],[14,0,\\\"text-sm font-medium text-gray-900\\\"],[12],[1,\\\"Payload Preview\\\"],[13],[1,\\\"\\\\n                    \\\"],[11,\\\"button\\\"],[24,0,\\\"text-xs text-brand-primary-color-rgb hover:underline\\\"],[24,4,\\\"button\\\"],[4,[38,3],[\\\"click\\\",[30,0,[\\\"togglePayloadPreview\\\"]]],null],[12],[1,\\\"\\\\n                      \\\"],[1,[52,[30,0,[\\\"showPayloadPreview\\\"]],\\\"Hide\\\",\\\"Show\\\"]],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showPayloadPreview\\\"]],[[[1,\\\"                    \\\"],[10,0],[14,0,\\\"mt-2 rounded-md bg-gray-50 p-3\\\"],[12],[1,\\\"\\\\n                      \\\"],[10,\\\"pre\\\"],[14,0,\\\"overflow-x-auto text-xs text-gray-800\\\"],[12],[1,[30,0,[\\\"formattedPayload\\\"]]],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"          \\\"],[10,0],[14,0,\\\"shrink-0 border-t border-gray-200 px-4 py-4 sm:px-6\\\"],[12],[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"flex justify-end gap-3\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,15],[[4,[38,3],[\\\"click\\\",[30,0,[\\\"handleClose\\\"]]],null]],[[\\\"@variant\\\"],[\\\"outlined\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                Close\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n              \\\"],[8,[39,15],[[16,\\\"disabled\\\",[30,3]],[4,[38,3],[\\\"click\\\",[30,0,[\\\"handleExecute\\\"]]],null]],[[\\\"@variant\\\"],[\\\"solid\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                Execute\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@command\\\",\\\"tag\\\",\\\"@disabled\\\"],false,[\\\"div\\\",\\\"h2\\\",\\\"button\\\",\\\"on\\\",\\\"span\\\",\\\"v2/svg-icon\\\",\\\"p\\\",\\\"h3\\\",\\\"dl\\\",\\\"dt\\\",\\\"dd\\\",\\\"if\\\",\\\"each\\\",\\\"-track-array\\\",\\\"pre\\\",\\\"v2/button\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/console/command-details/index.hbs\",\n    \"isStrictMode\": false\n  });\n  let CommandDetailsComponent = _exports.default = (_class = class CommandDetailsComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"commandRegistry\", _descriptor, this);\n      _initializerDefineProperty(this, \"showPayloadPreview\", _descriptor2, this);\n    }\n    get formattedPayload() {\n      if (this.args.command.payloadTemplate) {\n        const params = {\n          clientID: this.args.client?.id || \"\",\n          firmID: this.args.firm?.firmID || \"\"\n        };\n        const payload = this.commandRegistry.formatPayloadTemplate(this.args.command.payloadTemplate, params);\n        return JSON.stringify(payload, null, 2);\n      }\n      return null;\n    }\n    togglePayloadPreview() {\n      this.showPayloadPreview = !this.showPayloadPreview;\n    }\n    handleExecute() {\n      if (this.args.onExecute) {\n        this.args.onExecute(this.args.command);\n      }\n      this.handleClose();\n    }\n    handleClose() {\n      if (this.args.onClose) {\n        this.args.onClose();\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"commandRegistry\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"showPayloadPreview\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"togglePayloadPreview\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"togglePayloadPreview\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleExecute\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleExecute\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleClose\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleClose\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, CommandDetailsComponent);\n});","define(\"settify-mvp/components/v2/console/command-item/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div\n    class=\"w-full border-l border-l-4\n      {{if @disabled 'cursor-not-allowed border-l-red-800' 'group cursor-pointer border-l-settify-green hover:bg-gray-50'}}\n      px-4 py-3 text-left transition-colors\n      {{if @isSelected 'bg-blue-50' ''}}\"\n    {{on \"click\" this.handleCommandClick}}\n  >\n    <div class=\"flex items-start justify-between gap-3\">\n      <div class=\"flex min-w-0 flex-1 items-start gap-3\">\n        {{! Content }}\n        <div class=\"min-w-0 flex-1\">\n          <div class=\"flex items-center gap-2\">\n            <h4 class=\"truncate text-sm font-medium text-gray-900\">\n              {{@command.name}}\n            </h4>\n            <span class=\"shrink-0 rounded-full px-2 py-0.5 text-xs font-medium {{this.typeBadgeClass}}\">\n              {{@command.type}}\n            </span>\n          </div>\n  \n          <p class=\"mt-1 line-clamp-2 text-xs text-gray-500\">\n            {{@command.description}}\n          </p>\n  \n          {{! Function/endpoint name }}\n          {{#if @command.functionName}}\n            <code class=\"mt-1 block truncate text-xs text-gray-400\">\n              {{@command.functionName}}\n            </code>\n          {{else if @command.endpoint}}\n            <code class=\"mt-1 block truncate text-xs text-gray-400\">\n              {{@command.endpoint}}\n            </code>\n          {{/if}}\n  \n          {{! Tags }}\n          {{#if @command.tags}}\n            <div class=\"mt-2 flex flex-wrap gap-1\">\n              {{#each @command.tags as |tag|}}\n                <span class=\"inline-flex items-center rounded px-1.5 py-0.5 text-xs text-gray-500 ring-1 ring-inset ring-gray-200\">\n                  {{tag}}\n                </span>\n              {{/each}}\n            </div>\n          {{/if}}\n        </div>\n      </div>\n  \n      {{! Action button }}\n      <div class=\"shrink-0 rounded-lg p-2 text-gray-400 opacity-0 transition-all group-hover:opacity-100\" title=\"View details\">\n        <V2::SvgIcon @icon=\"chevron-right\" class=\"size-4\" />\n      </div>\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"EOayHDdT\",\n    \"block\": \"[[[11,0],[16,0,[29,[\\\"w-full border-l border-l-4\\\\n    \\\",[52,[30,1],\\\"cursor-not-allowed border-l-red-800\\\",\\\"group cursor-pointer border-l-settify-green hover:bg-gray-50\\\"],\\\"\\\\n    px-4 py-3 text-left transition-colors\\\\n    \\\",[52,[30,2],\\\"bg-blue-50\\\",\\\"\\\"]]]],[4,[38,2],[\\\"click\\\",[30,0,[\\\"handleCommandClick\\\"]]],null],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"flex items-start justify-between gap-3\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"flex min-w-0 flex-1 items-start gap-3\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"      \\\"],[10,0],[14,0,\\\"min-w-0 flex-1\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"flex items-center gap-2\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"h4\\\"],[14,0,\\\"truncate text-sm font-medium text-gray-900\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[30,3,[\\\"name\\\"]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,1],[15,0,[29,[\\\"shrink-0 rounded-full px-2 py-0.5 text-xs font-medium \\\",[30,0,[\\\"typeBadgeClass\\\"]]]]],[12],[1,\\\"\\\\n            \\\"],[1,[30,3,[\\\"type\\\"]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[10,2],[14,0,\\\"mt-1 line-clamp-2 text-xs text-gray-500\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[30,3,[\\\"description\\\"]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,3,[\\\"functionName\\\"]],[[[1,\\\"          \\\"],[10,\\\"code\\\"],[14,0,\\\"mt-1 block truncate text-xs text-gray-400\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[30,3,[\\\"functionName\\\"]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,3,[\\\"endpoint\\\"]],[[[1,\\\"          \\\"],[10,\\\"code\\\"],[14,0,\\\"mt-1 block truncate text-xs text-gray-400\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[30,3,[\\\"endpoint\\\"]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]],null]],[]]],[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"tags\\\"]],[[[1,\\\"          \\\"],[10,0],[14,0,\\\"mt-2 flex flex-wrap gap-1\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,8],[[28,[37,8],[[30,3,[\\\"tags\\\"]]],null]],null],null,[[[1,\\\"              \\\"],[10,1],[14,0,\\\"inline-flex items-center rounded px-1.5 py-0.5 text-xs text-gray-500 ring-1 ring-inset ring-gray-200\\\"],[12],[1,\\\"\\\\n                \\\"],[1,[30,4]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[4]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"    \\\"],[10,0],[14,0,\\\"shrink-0 rounded-lg p-2 text-gray-400 opacity-0 transition-all group-hover:opacity-100\\\"],[14,\\\"title\\\",\\\"View details\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,9],[[24,0,\\\"size-4\\\"]],[[\\\"@icon\\\"],[\\\"chevron-right\\\"]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@disabled\\\",\\\"@isSelected\\\",\\\"@command\\\",\\\"tag\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"on\\\",\\\"h4\\\",\\\"span\\\",\\\"p\\\",\\\"code\\\",\\\"each\\\",\\\"-track-array\\\",\\\"v2/svg-icon\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/console/command-item/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * Individual command item in the command palette.\n   *\n   * @class CommandItemComponent\n   * @extends Component\n   *\n   * @param {Object} this.args.command - The command object\n   * @param {boolean} [this.args.isSelected] - Whether this command is selected\n   * @param {Function} [this.args.onClick] - Callback when command is clicked\n   * @param {Function} [this.args.onExecute] - Callback when command execution is requested\n   *\n   * @example\n   * <V2::Console::CommandItem\n   *   @command={{command}}\n   *   @isSelected={{false}}\n   *   @onClick={{this.selectCommand}}\n   *   @onExecute={{this.executeCommand}}\n   * />\n   */\n  let CommandItemComponent = _exports.default = (_class = class CommandItemComponent extends _component2.default {\n    /**\n     * Get icon based on command type.\n     * @returns {string} Icon name\n     */\n    get typeIcon() {\n      switch (this.args.command.type) {\n        case \"lambda\":\n          return \"bolt\";\n        case \"latte\":\n          return \"server\";\n        case \"form\":\n          return \"document\";\n        default:\n          return \"command-line\";\n      }\n    }\n\n    /**\n     * Get badge color based on command type.\n     * @returns {string} Tailwind classes\n     */\n    get typeBadgeClass() {\n      switch (this.args.command.type) {\n        case \"lambda\":\n          return \"bg-purple-100 text-purple-700\";\n        case \"latte\":\n          return \"bg-blue-100 text-blue-700\";\n        case \"form\":\n          return \"bg-green-100 text-green-700\";\n        default:\n          return \"bg-gray-100 text-gray-700\";\n      }\n    }\n    handleCommandClick() {\n      if (this.args.disabled) return;\n      if (this.args.onClick && typeof this.args.onClick === \"function\") {\n        this.args.onClick();\n      }\n    }\n  }, _applyDecoratedDescriptor(_class.prototype, \"handleCommandClick\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleCommandClick\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, CommandItemComponent);\n});","define(\"settify-mvp/components/v2/console/command-palette/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/service\", \"@ember/template-factory\"], function (_exports, _component, _component2, _tracking, _object, _service, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"flex h-full flex-col\">\n    {{! Header }}\n    <div class=\"shrink-0 border-b border-gray-200 px-4 py-3\">\n      <h2 class=\"text-base font-semibold text-gray-900\">Actions</h2>\n      <p class=\"mt-1 text-xs text-gray-500\">\n        Browse and execute available commands\n      </p>\n    </div>\n  \n    {{! Search bar }}\n    <div class=\"border-b p-4\">\n      <div class=\"relative\">\n        <div class=\"pointer-events-none absolute inset-y-0 left-0 flex items-center pl-3\">\n          <V2::SvgIcon @icon=\"magnifying-glass\" class=\"size-5 text-gray-400\" />\n        </div>\n        <V2::Textline @value={{this.searchQuery}} @onChange={{this.handleSearch}} placeholder=\"Search commands...\" class=\"pl-10\" />\n      </div>\n  \n      <div class=\"mt-3 flex flex-wrap gap-2\">\n        <div class=\"flex w-full items-center justify-between\">\n          <button\n            type=\"button\"\n            class=\"inline-flex items-center gap-x-1.5 rounded-md px-2 py-1 text-xs font-medium text-gray-700 transition-colors hover:bg-gray-100\"\n            {{on \"click\" this.toggleCategoriesExpanded}}\n          >\n            <i class=\"fa {{if this.categoriesExpanded 'fa-chevron-up' 'fa-chevron-down'}}\"></i>\n            Categories\n          </button>\n        </div>\n  \n        {{! Category filter pills }}\n        {{#if this.categories.length}}\n          {{#if this.categoriesExpanded}}\n            {{! Show all categories when expanded }}\n            {{#each this.categories as |category|}}\n              <button\n                type=\"button\"\n                class=\"inline-flex items-center gap-x-1.5 rounded-full px-3 py-1 text-xs font-medium transition-colors\n                  {{if (eq this.selectedCategory category) 'bg-brand-primary-color-rgb text-white' 'bg-gray-100 text-gray-700 hover:bg-gray-200'}}\"\n                {{on \"click\" (fn this.selectCategory category)}}\n              >\n                {{category}}\n                <span class=\"ml-1 rounded-full bg-white/20 px-1.5 py-0.5 text-xs\">\n                  {{get this.categoryCounts category}}\n                </span>\n              </button>\n            {{/each}}\n          {{else}}\n            {{! Show only selected category when collapsed }}\n            {{#if this.selectedCategory}}\n              <button\n                type=\"button\"\n                class=\"inline-flex items-center gap-x-1.5 rounded-full bg-brand-primary-color-rgb px-3 py-1 text-xs font-medium text-white transition-colors\"\n                {{on \"click\" (fn this.selectCategory this.selectedCategory)}}\n              >\n                {{this.selectedCategory}}\n                <span class=\"ml-1 rounded-full bg-white/20 px-1.5 py-0.5 text-xs\">\n                  {{get this.categoryCounts this.selectedCategory}}\n                </span>\n                <i class=\"fa fa-times ml-1\"></i>\n              </button>\n            {{/if}}\n          {{/if}}\n        {{/if}}\n      </div>\n    </div>\n  \n    {{! Commands list }}\n    <div class=\"overflow-y-auto\">\n      {{#if this.groupedCommands.length}}\n        {{#each this.groupedCommands as |group|}}\n          <div class=\"border-b last:border-b-0\">\n            <div class=\"sticky top-0 border-b bg-gray-50 px-4 py-2\">\n              <h3 class=\"text-sm font-semibold text-gray-900\">\n                {{group.category}}\n                <span class=\"ml-2 text-xs font-normal text-gray-500\">\n                  ({{group.commands.length}})\n                </span>\n              </h3>\n            </div>\n            <div class=\"divide-y\">\n              {{#each group.commands as |command|}}\n                <V2::Console::CommandItem\n                  @command={{command}}\n                  @disabled={{this.isCommandDisabled command}}\n                  @isSelected={{eq this.selectedCommand command}}\n                  @onClick={{fn this.selectCommand command}}\n                  @onExecute={{fn this.executeCommand command}}\n                />\n              {{/each}}\n            </div>\n          </div>\n        {{/each}}\n      {{else}}\n        <div class=\"flex h-full items-center justify-center p-8 text-center\">\n          <div class=\"text-gray-500\">\n            <V2::SvgIcon @icon=\"magnifying-glass\" class=\"mx-auto size-12 text-gray-400\" />\n            <p class=\"mt-4 text-sm font-medium\">No commands found</p>\n            <p class=\"mt-1 text-xs\">Try adjusting your search or filters</p>\n          </div>\n        </div>\n      {{/if}}\n    </div>\n  \n    {{! Command details panel (if command selected) }}\n    {{#if this.selectedCommand}}\n      <V2::Console::CommandDetails\n        @command={{this.selectedCommand}}\n        @client={{@client}}\n        @firm={{@firm}}\n        @disabled={{this.isCommandDisabled this.selectedCommand}}\n        @onClose={{this.clearSelectedCommand}}\n        @onExecute={{fn this.executeCommand this.selectedCommand}}\n      />\n    {{/if}}\n  </div>\n  */\n  {\n    \"id\": \"JQJUj+X/\",\n    \"block\": \"[[[10,0],[14,0,\\\"flex h-full flex-col\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"  \\\"],[10,0],[14,0,\\\"shrink-0 border-b border-gray-200 px-4 py-3\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"h2\\\"],[14,0,\\\"text-base font-semibold text-gray-900\\\"],[12],[1,\\\"Actions\\\"],[13],[1,\\\"\\\\n    \\\"],[10,2],[14,0,\\\"mt-1 text-xs text-gray-500\\\"],[12],[1,\\\"\\\\n      Browse and execute available commands\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"  \\\"],[10,0],[14,0,\\\"border-b p-4\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"relative\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"pointer-events-none absolute inset-y-0 left-0 flex items-center pl-3\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,3],[[24,0,\\\"size-5 text-gray-400\\\"]],[[\\\"@icon\\\"],[\\\"magnifying-glass\\\"]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,4],[[24,\\\"placeholder\\\",\\\"Search commands...\\\"],[24,0,\\\"pl-10\\\"]],[[\\\"@value\\\",\\\"@onChange\\\"],[[30,0,[\\\"searchQuery\\\"]],[30,0,[\\\"handleSearch\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,0],[14,0,\\\"mt-3 flex flex-wrap gap-2\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"flex w-full items-center justify-between\\\"],[12],[1,\\\"\\\\n        \\\"],[11,\\\"button\\\"],[24,0,\\\"inline-flex items-center gap-x-1.5 rounded-md px-2 py-1 text-xs font-medium text-gray-700 transition-colors hover:bg-gray-100\\\"],[24,4,\\\"button\\\"],[4,[38,6],[\\\"click\\\",[30,0,[\\\"toggleCategoriesExpanded\\\"]]],null],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fa \\\",[52,[30,0,[\\\"categoriesExpanded\\\"]],\\\"fa-chevron-up\\\",\\\"fa-chevron-down\\\"]]]],[12],[13],[1,\\\"\\\\n          Categories\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"categories\\\",\\\"length\\\"]],[[[41,[30,0,[\\\"categoriesExpanded\\\"]],[[[42,[28,[37,10],[[28,[37,10],[[30,0,[\\\"categories\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[11,\\\"button\\\"],[16,0,[29,[\\\"inline-flex items-center gap-x-1.5 rounded-full px-3 py-1 text-xs font-medium transition-colors\\\\n                \\\",[52,[28,[37,11],[[30,0,[\\\"selectedCategory\\\"]],[30,1]],null],\\\"bg-brand-primary-color-rgb text-white\\\",\\\"bg-gray-100 text-gray-700 hover:bg-gray-200\\\"]]]],[24,4,\\\"button\\\"],[4,[38,6],[\\\"click\\\",[28,[37,12],[[30,0,[\\\"selectCategory\\\"]],[30,1]],null]],null],[12],[1,\\\"\\\\n              \\\"],[1,[30,1]],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"ml-1 rounded-full bg-white/20 px-1.5 py-0.5 text-xs\\\"],[12],[1,\\\"\\\\n                \\\"],[1,[28,[35,14],[[30,0,[\\\"categoryCounts\\\"]],[30,1]],null]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null]],[]],[[[41,[30,0,[\\\"selectedCategory\\\"]],[[[1,\\\"            \\\"],[11,\\\"button\\\"],[24,0,\\\"inline-flex items-center gap-x-1.5 rounded-full bg-brand-primary-color-rgb px-3 py-1 text-xs font-medium text-white transition-colors\\\"],[24,4,\\\"button\\\"],[4,[38,6],[\\\"click\\\",[28,[37,12],[[30,0,[\\\"selectCategory\\\"]],[30,0,[\\\"selectedCategory\\\"]]],null]],null],[12],[1,\\\"\\\\n              \\\"],[1,[30,0,[\\\"selectedCategory\\\"]]],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"ml-1 rounded-full bg-white/20 px-1.5 py-0.5 text-xs\\\"],[12],[1,\\\"\\\\n                \\\"],[1,[28,[35,14],[[30,0,[\\\"categoryCounts\\\"]],[30,0,[\\\"selectedCategory\\\"]]],null]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"i\\\"],[14,0,\\\"fa fa-times ml-1\\\"],[12],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"  \\\"],[10,0],[14,0,\\\"overflow-y-auto\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"groupedCommands\\\",\\\"length\\\"]],[[[42,[28,[37,10],[[28,[37,10],[[30,0,[\\\"groupedCommands\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[10,0],[14,0,\\\"border-b last:border-b-0\\\"],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"sticky top-0 border-b bg-gray-50 px-4 py-2\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"h3\\\"],[14,0,\\\"text-sm font-semibold text-gray-900\\\"],[12],[1,\\\"\\\\n              \\\"],[1,[30,2,[\\\"category\\\"]]],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"ml-2 text-xs font-normal text-gray-500\\\"],[12],[1,\\\"\\\\n                (\\\"],[1,[30,2,[\\\"commands\\\",\\\"length\\\"]]],[1,\\\")\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"divide-y\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,10],[[28,[37,10],[[30,2,[\\\"commands\\\"]]],null]],null],null,[[[1,\\\"              \\\"],[8,[39,16],null,[[\\\"@command\\\",\\\"@disabled\\\",\\\"@isSelected\\\",\\\"@onClick\\\",\\\"@onExecute\\\"],[[30,3],[28,[30,0,[\\\"isCommandDisabled\\\"]],[[30,3]],null],[28,[37,11],[[30,0,[\\\"selectedCommand\\\"]],[30,3]],null],[28,[37,12],[[30,0,[\\\"selectCommand\\\"]],[30,3]],null],[28,[37,12],[[30,0,[\\\"executeCommand\\\"]],[30,3]],null]]],null],[1,\\\"\\\\n\\\"]],[3]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],null]],[]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"flex h-full items-center justify-center p-8 text-center\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"text-gray-500\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,3],[[24,0,\\\"mx-auto size-12 text-gray-400\\\"]],[[\\\"@icon\\\"],[\\\"magnifying-glass\\\"]],null],[1,\\\"\\\\n          \\\"],[10,2],[14,0,\\\"mt-4 text-sm font-medium\\\"],[12],[1,\\\"No commands found\\\"],[13],[1,\\\"\\\\n          \\\"],[10,2],[14,0,\\\"mt-1 text-xs\\\"],[12],[1,\\\"Try adjusting your search or filters\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"selectedCommand\\\"]],[[[1,\\\"    \\\"],[8,[39,17],null,[[\\\"@command\\\",\\\"@client\\\",\\\"@firm\\\",\\\"@disabled\\\",\\\"@onClose\\\",\\\"@onExecute\\\"],[[30,0,[\\\"selectedCommand\\\"]],[30,4],[30,5],[28,[30,0,[\\\"isCommandDisabled\\\"]],[[30,0,[\\\"selectedCommand\\\"]]],null],[30,0,[\\\"clearSelectedCommand\\\"]],[28,[37,12],[[30,0,[\\\"executeCommand\\\"]],[30,0,[\\\"selectedCommand\\\"]]],null]]],null],[1,\\\"\\\\n\\\"]],[]],null],[13]],[\\\"category\\\",\\\"group\\\",\\\"command\\\",\\\"@client\\\",\\\"@firm\\\"],false,[\\\"div\\\",\\\"h2\\\",\\\"p\\\",\\\"v2/svg-icon\\\",\\\"v2/textline\\\",\\\"button\\\",\\\"on\\\",\\\"i\\\",\\\"if\\\",\\\"each\\\",\\\"-track-array\\\",\\\"eq\\\",\\\"fn\\\",\\\"span\\\",\\\"get\\\",\\\"h3\\\",\\\"v2/console/command-item\\\",\\\"v2/console/command-details\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/console/command-palette/index.hbs\",\n    \"isStrictMode\": false\n  });\n  let CommandPaletteComponent = _exports.default = (_class = class CommandPaletteComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"commandRegistry\", _descriptor, this);\n      _initializerDefineProperty(this, \"searchQuery\", _descriptor2, this);\n      _initializerDefineProperty(this, \"selectedCategory\", _descriptor3, this);\n      _initializerDefineProperty(this, \"selectedCommand\", _descriptor4, this);\n      _initializerDefineProperty(this, \"categoriesExpanded\", _descriptor5, this);\n    }\n    get filteredCommands() {\n      let commands = this.commandRegistry.searchCommands(this.searchQuery);\n      if (this.selectedCategory) {\n        commands = commands.filter(cmd => cmd.category === this.selectedCategory);\n      }\n      return commands;\n    }\n    get categories() {\n      return this.commandRegistry.getCategories();\n    }\n    get groupedCommands() {\n      const groups = {};\n      this.filteredCommands.forEach(command => {\n        if (!groups[command.category]) {\n          groups[command.category] = [];\n        }\n        groups[command.category].push(command);\n      });\n      return Object.entries(groups).map(([category, commands]) => ({\n        category,\n        commands: commands.sort((a, b) => a.name.localeCompare(b.name))\n      })).sort((a, b) => a.category.localeCompare(b.category));\n    }\n    get categoryCounts() {\n      const counts = {};\n      this.commandRegistry.getAllCommands().forEach(cmd => {\n        counts[cmd.category] = (counts[cmd.category] || 0) + 1;\n      });\n      return counts;\n    }\n    isCommandDisabled(command) {\n      const required = command.requiredArgs || [];\n      if (required.length === 0) {\n        return false;\n      }\n      return !required.every(field => {\n        if (field.toLowerCase() === \"clientid\") return !!this.args.client;\n        if (field.toLowerCase() === \"firmid\") return !!this.args.firm;\n        return true;\n      });\n    }\n    handleSearch(value) {\n      this.searchQuery = value;\n    }\n    selectCategory(category) {\n      this.selectedCategory = this.selectedCategory === category ? null : category;\n      this.categoriesExpanded = !category;\n    }\n    toggleCategoriesExpanded() {\n      this.categoriesExpanded = !this.categoriesExpanded;\n    }\n    selectCommand(command) {\n      this.selectedCommand = command;\n    }\n    clearSelectedCommand() {\n      this.selectedCommand = null;\n    }\n    executeCommand(command) {\n      console.log(\"Executing command:\", command.id);\n      if (this.args.onExecute && typeof this.args.onExecute === \"function\") {\n        this.args.onExecute(command);\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"commandRegistry\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"searchQuery\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"selectedCategory\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"selectedCommand\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"categoriesExpanded\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"isCommandDisabled\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"isCommandDisabled\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleSearch\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleSearch\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"selectCategory\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"selectCategory\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"toggleCategoriesExpanded\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleCategoriesExpanded\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"selectCommand\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"selectCommand\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"clearSelectedCommand\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"clearSelectedCommand\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"executeCommand\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"executeCommand\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, CommandPaletteComponent);\n});","define(\"settify-mvp/components/v2/console/execution-history/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/service\", \"@ember/template-factory\"], function (_exports, _component, _component2, _tracking, _object, _service, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.hasExecutions}}\n    <div class=\"absolute inset-x-0 bottom-0 z-10 flex flex-col border-x border-t bg-white shadow-lg {{if this.isExpanded 'h-2/3' 'h-12'}} transition-all duration-300\">\n  \n      {{! Header Bar with Tabs and Controls }}\n      <div class=\"flex shrink-0 items-center gap-x-2 border-b bg-gray-50\">\n        {{! Expand/Collapse Toggle }}\n        <button\n          type=\"button\"\n          class=\"ml-2 shrink-0 px-2 py-1 text-gray-600 transition-colors hover:bg-gray-100 hover:text-gray-900\"\n          title=\"{{if this.isExpanded 'Minimize' 'Expand'}} execution history\"\n          {{on \"click\" this.toggleExpanded}}\n        >\n          <V2::SvgIcon @icon=\"chevron-up-down\" class=\"size-4\" />\n        </button>\n  \n        {{! Execution Tabs }}\n        <div class=\"flex flex-1 items-center gap-x-1 overflow-x-auto pt-1\">\n          {{#each this.executionHistory.executions as |execution|}}\n            <button\n              type=\"button\"\n              class=\"group relative flex items-center gap-x-2 rounded-t-lg border border-b-0 px-3 py-1.5 text-sm font-medium transition-colors\n                {{if\n                  (eq execution.id (or this.activeExecutionId this.executionHistory.latestExecution.id))\n                  'border-gray-300 bg-white text-gray-900'\n                  'border-transparent bg-gray-50 text-gray-600 hover:bg-gray-100'\n                }}\"\n              {{on \"click\" (fn this.selectExecution execution.id)}}\n            >\n              {{! State indicator }}\n              <span\n                class=\"size-2 shrink-0 rounded-full\n                  {{if (eq execution.state 'pending') 'animate-pulse bg-yellow-400'}}\n                  {{if (eq execution.state 'success') 'bg-green-500'}}\n                  {{if (eq execution.state 'error') 'bg-red-500'}}\n                  \"\n              ></span>\n  \n              {{! Tab name }}\n              <span class=\"truncate\">{{execution.name}}</span>\n  \n              {{! Duration badge (if completed) }}\n              {{#if execution.duration}}\n                <span class=\"text-xs text-gray-500\">\n                  {{execution.duration}}ms\n                </span>\n              {{/if}}\n  \n              {{! Close button }}\n              <div\n                class=\"ml-1 rounded p-0.5 opacity-0 transition-opacity hover:bg-gray-200 group-hover:opacity-100\"\n                {{on \"click\" (fn this.closeExecution execution.id)}}\n                onclick=\"event.stopPropagation();\"\n              >\n                <V2::SvgIcon @icon=\"x-mark\" class=\"size-3\" />\n              </div>\n            </button>\n          {{/each}}\n        </div>\n  \n        {{! Clear All Button }}\n        <button\n          type=\"button\"\n          class=\"shrink-0 px-3 py-2 text-xs font-medium text-gray-600 transition-colors hover:bg-gray-100 hover:text-gray-900\"\n          title=\"Clear all executions\"\n          {{on \"click\" this.clearAllExecutions}}\n        >\n          Clear All\n        </button>\n      </div>\n  \n      {{! Tab Content (only shown when expanded) }}\n      {{#if this.isExpanded}}\n        <div class=\"flex-1 overflow-auto p-4\">\n          {{#if this.activeExecution}}\n            <div class=\"flex flex-row items-start justify-between pb-4\">\n              <h2 class=\"mb-1 text-xs font-semibold uppercase tracking-wide text-gray-900\">Firm Id: {{this.activeExecution.firmId}}</h2>\n              <h2 class=\"text-xs font-semibold uppercase tracking-wide text-gray-900\">Client Id: {{this.activeExecution.clientId}}</h2>\n              <button type=\"button\" class=\"text-xs font-semibold uppercase tracking-wide text-gray-500 hover:underline\" {{on \"click\" this.viewRecord}}>\n                view record\n              </button>\n            </div>\n            {{#if (eq this.activeExecution.state \"pending\")}}\n              {{! Pending state }}\n              <div class=\"flex flex-col items-center justify-center py-8 text-center\">\n                <V2::SvgIcon @icon=\"arrows-rotate\" class=\"mb-4 size-12 animate-spin text-yellow-500\" />\n                <p class=\"text-sm font-medium text-gray-900\">Executing command...</p>\n                <p class=\"mt-1 text-xs text-gray-500\">{{this.activeExecution.name}}</p>\n              </div>\n            {{else if (eq this.activeExecution.state \"success\")}}\n              <div class=\"space-y-4\">\n                {{! Response Output }}\n                <div>\n                  <h3 class=\"mb-2 text-xs font-semibold uppercase tracking-wide text-gray-500\">Response</h3>\n                  <pre class=\"overflow-x-auto rounded-lg bg-gray-50 p-3 text-xs\"><code>{{json-stringify this.activeExecution.output}}</code></pre>\n                </div>\n  \n                {{! Payload Section }}\n                <div>\n                  <h3 class=\"mb-2 text-xs font-semibold uppercase tracking-wide text-gray-500\">Payload</h3>\n                  <pre class=\"overflow-x-auto rounded-lg bg-gray-50 p-3 text-xs\"><code>{{json-stringify this.activeExecution.payload}}</code></pre>\n                </div>\n              </div>\n            {{else if (eq this.activeExecution.state \"error\")}}\n              <div class=\"space-y-4\">\n                {{! Error Output }}\n                <div>\n                  <h3 class=\"mb-2 text-xs font-semibold uppercase tracking-wide text-gray-500\">Error</h3>\n                  <div class=\"rounded-lg bg-red-50 p-3\">\n                    <p class=\"text-sm font-medium text-red-800\">{{this.activeExecution.error.message}}</p>\n                    {{#if this.activeExecution.error.stack}}\n                      <pre class=\"mt-2 overflow-x-auto text-xs text-red-700\"><code>{{this.activeExecution.error.stack}}</code></pre>\n                    {{/if}}\n                  </div>\n                </div>\n  \n                {{! Payload Section }}\n                <div>\n                  <h3 class=\"mb-2 text-xs font-semibold uppercase tracking-wide text-gray-500\">Payload</h3>\n                  <pre class=\"overflow-x-auto rounded-lg bg-gray-50 p-3 text-xs\"><code>{{json-stringify this.activeExecution.payload}}</code></pre>\n                </div>\n              </div>\n            {{/if}}\n          {{/if}}\n        </div>\n      {{/if}}\n    </div>\n  {{/if}}\n  */\n  {\n    \"id\": \"szw3ZWuK\",\n    \"block\": \"[[[41,[30,0,[\\\"hasExecutions\\\"]],[[[1,\\\"  \\\"],[10,0],[15,0,[29,[\\\"absolute inset-x-0 bottom-0 z-10 flex flex-col border-x border-t bg-white shadow-lg \\\",[52,[30,0,[\\\"isExpanded\\\"]],\\\"h-2/3\\\",\\\"h-12\\\"],\\\" transition-all duration-300\\\"]]],[12],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"    \\\"],[10,0],[14,0,\\\"flex shrink-0 items-center gap-x-2 border-b bg-gray-50\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"      \\\"],[11,\\\"button\\\"],[24,0,\\\"ml-2 shrink-0 px-2 py-1 text-gray-600 transition-colors hover:bg-gray-100 hover:text-gray-900\\\"],[16,\\\"title\\\",[29,[[52,[30,0,[\\\"isExpanded\\\"]],\\\"Minimize\\\",\\\"Expand\\\"],\\\" execution history\\\"]]],[24,4,\\\"button\\\"],[4,[38,3],[\\\"click\\\",[30,0,[\\\"toggleExpanded\\\"]]],null],[12],[1,\\\"\\\\n        \\\"],[8,[39,4],[[24,0,\\\"size-4\\\"]],[[\\\"@icon\\\"],[\\\"chevron-up-down\\\"]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"      \\\"],[10,0],[14,0,\\\"flex flex-1 items-center gap-x-1 overflow-x-auto pt-1\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,6],[[28,[37,6],[[30,0,[\\\"executionHistory\\\",\\\"executions\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[11,\\\"button\\\"],[16,0,[29,[\\\"group relative flex items-center gap-x-2 rounded-t-lg border border-b-0 px-3 py-1.5 text-sm font-medium transition-colors\\\\n              \\\",[52,[28,[37,7],[[30,1,[\\\"id\\\"]],[28,[37,8],[[30,0,[\\\"activeExecutionId\\\"]],[30,0,[\\\"executionHistory\\\",\\\"latestExecution\\\",\\\"id\\\"]]],null]],null],\\\"border-gray-300 bg-white text-gray-900\\\",\\\"border-transparent bg-gray-50 text-gray-600 hover:bg-gray-100\\\"]]]],[24,4,\\\"button\\\"],[4,[38,3],[\\\"click\\\",[28,[37,9],[[30,0,[\\\"selectExecution\\\"]],[30,1,[\\\"id\\\"]]],null]],null],[12],[1,\\\"\\\\n\\\"],[1,\\\"            \\\"],[10,1],[15,0,[29,[\\\"size-2 shrink-0 rounded-full\\\\n                \\\",[52,[28,[37,7],[[30,1,[\\\"state\\\"]],\\\"pending\\\"],null],\\\"animate-pulse bg-yellow-400\\\"],\\\"\\\\n                \\\",[52,[28,[37,7],[[30,1,[\\\"state\\\"]],\\\"success\\\"],null],\\\"bg-green-500\\\"],\\\"\\\\n                \\\",[52,[28,[37,7],[[30,1,[\\\"state\\\"]],\\\"error\\\"],null],\\\"bg-red-500\\\"],\\\"\\\\n                \\\"]]],[12],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"            \\\"],[10,1],[14,0,\\\"truncate\\\"],[12],[1,[30,1,[\\\"name\\\"]]],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,1,[\\\"duration\\\"]],[[[1,\\\"              \\\"],[10,1],[14,0,\\\"text-xs text-gray-500\\\"],[12],[1,\\\"\\\\n                \\\"],[1,[30,1,[\\\"duration\\\"]]],[1,\\\"ms\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[1,\\\"            \\\"],[11,0],[24,0,\\\"ml-1 rounded p-0.5 opacity-0 transition-opacity hover:bg-gray-200 group-hover:opacity-100\\\"],[24,\\\"onclick\\\",\\\"event.stopPropagation();\\\"],[4,[38,3],[\\\"click\\\",[28,[37,9],[[30,0,[\\\"closeExecution\\\"]],[30,1,[\\\"id\\\"]]],null]],null],[12],[1,\\\"\\\\n              \\\"],[8,[39,4],[[24,0,\\\"size-3\\\"]],[[\\\"@icon\\\"],[\\\"x-mark\\\"]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"      \\\"],[11,\\\"button\\\"],[24,0,\\\"shrink-0 px-3 py-2 text-xs font-medium text-gray-600 transition-colors hover:bg-gray-100 hover:text-gray-900\\\"],[24,\\\"title\\\",\\\"Clear all executions\\\"],[24,4,\\\"button\\\"],[4,[38,3],[\\\"click\\\",[30,0,[\\\"clearAllExecutions\\\"]]],null],[12],[1,\\\"\\\\n        Clear All\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"isExpanded\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"flex-1 overflow-auto p-4\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"activeExecution\\\"]],[[[1,\\\"          \\\"],[10,0],[14,0,\\\"flex flex-row items-start justify-between pb-4\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"h2\\\"],[14,0,\\\"mb-1 text-xs font-semibold uppercase tracking-wide text-gray-900\\\"],[12],[1,\\\"Firm Id: \\\"],[1,[30,0,[\\\"activeExecution\\\",\\\"firmId\\\"]]],[13],[1,\\\"\\\\n            \\\"],[10,\\\"h2\\\"],[14,0,\\\"text-xs font-semibold uppercase tracking-wide text-gray-900\\\"],[12],[1,\\\"Client Id: \\\"],[1,[30,0,[\\\"activeExecution\\\",\\\"clientId\\\"]]],[13],[1,\\\"\\\\n            \\\"],[11,\\\"button\\\"],[24,0,\\\"text-xs font-semibold uppercase tracking-wide text-gray-500 hover:underline\\\"],[24,4,\\\"button\\\"],[4,[38,3],[\\\"click\\\",[30,0,[\\\"viewRecord\\\"]]],null],[12],[1,\\\"\\\\n              view record\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,7],[[30,0,[\\\"activeExecution\\\",\\\"state\\\"]],\\\"pending\\\"],null],[[[1,\\\"            \\\"],[10,0],[14,0,\\\"flex flex-col items-center justify-center py-8 text-center\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,4],[[24,0,\\\"mb-4 size-12 animate-spin text-yellow-500\\\"]],[[\\\"@icon\\\"],[\\\"arrows-rotate\\\"]],null],[1,\\\"\\\\n              \\\"],[10,2],[14,0,\\\"text-sm font-medium text-gray-900\\\"],[12],[1,\\\"Executing command...\\\"],[13],[1,\\\"\\\\n              \\\"],[10,2],[14,0,\\\"mt-1 text-xs text-gray-500\\\"],[12],[1,[30,0,[\\\"activeExecution\\\",\\\"name\\\"]]],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,7],[[30,0,[\\\"activeExecution\\\",\\\"state\\\"]],\\\"success\\\"],null],[[[1,\\\"            \\\"],[10,0],[14,0,\\\"space-y-4\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"              \\\"],[10,0],[12],[1,\\\"\\\\n                \\\"],[10,\\\"h3\\\"],[14,0,\\\"mb-2 text-xs font-semibold uppercase tracking-wide text-gray-500\\\"],[12],[1,\\\"Response\\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"pre\\\"],[14,0,\\\"overflow-x-auto rounded-lg bg-gray-50 p-3 text-xs\\\"],[12],[10,\\\"code\\\"],[12],[1,[28,[35,16],[[30,0,[\\\"activeExecution\\\",\\\"output\\\"]]],null]],[13],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"              \\\"],[10,0],[12],[1,\\\"\\\\n                \\\"],[10,\\\"h3\\\"],[14,0,\\\"mb-2 text-xs font-semibold uppercase tracking-wide text-gray-500\\\"],[12],[1,\\\"Payload\\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"pre\\\"],[14,0,\\\"overflow-x-auto rounded-lg bg-gray-50 p-3 text-xs\\\"],[12],[10,\\\"code\\\"],[12],[1,[28,[35,16],[[30,0,[\\\"activeExecution\\\",\\\"payload\\\"]]],null]],[13],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,7],[[30,0,[\\\"activeExecution\\\",\\\"state\\\"]],\\\"error\\\"],null],[[[1,\\\"            \\\"],[10,0],[14,0,\\\"space-y-4\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"              \\\"],[10,0],[12],[1,\\\"\\\\n                \\\"],[10,\\\"h3\\\"],[14,0,\\\"mb-2 text-xs font-semibold uppercase tracking-wide text-gray-500\\\"],[12],[1,\\\"Error\\\"],[13],[1,\\\"\\\\n                \\\"],[10,0],[14,0,\\\"rounded-lg bg-red-50 p-3\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,2],[14,0,\\\"text-sm font-medium text-red-800\\\"],[12],[1,[30,0,[\\\"activeExecution\\\",\\\"error\\\",\\\"message\\\"]]],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"activeExecution\\\",\\\"error\\\",\\\"stack\\\"]],[[[1,\\\"                    \\\"],[10,\\\"pre\\\"],[14,0,\\\"mt-2 overflow-x-auto text-xs text-red-700\\\"],[12],[10,\\\"code\\\"],[12],[1,[30,0,[\\\"activeExecution\\\",\\\"error\\\",\\\"stack\\\"]]],[13],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"              \\\"],[10,0],[12],[1,\\\"\\\\n                \\\"],[10,\\\"h3\\\"],[14,0,\\\"mb-2 text-xs font-semibold uppercase tracking-wide text-gray-500\\\"],[12],[1,\\\"Payload\\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"pre\\\"],[14,0,\\\"overflow-x-auto rounded-lg bg-gray-50 p-3 text-xs\\\"],[12],[10,\\\"code\\\"],[12],[1,[28,[35,16],[[30,0,[\\\"activeExecution\\\",\\\"payload\\\"]]],null]],[13],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]],null]],[]]]],[]]]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"execution\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"button\\\",\\\"on\\\",\\\"v2/svg-icon\\\",\\\"each\\\",\\\"-track-array\\\",\\\"eq\\\",\\\"or\\\",\\\"fn\\\",\\\"span\\\",\\\"h2\\\",\\\"p\\\",\\\"h3\\\",\\\"pre\\\",\\\"code\\\",\\\"json-stringify\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/console/execution-history/index.hbs\",\n    \"isStrictMode\": false\n  });\n  let ExecutionHistoryComponent = _exports.default = (_class = class ExecutionHistoryComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"executionHistory\", _descriptor, this);\n      _initializerDefineProperty(this, \"activeExecutionId\", _descriptor2, this);\n      _initializerDefineProperty(this, \"isExpanded\", _descriptor3, this);\n    }\n    selectExecution(executionId) {\n      this.activeExecutionId = executionId;\n      // Auto-expand when selecting a tab\n      if (!this.isExpanded) {\n        this.isExpanded = true;\n      }\n    }\n    closeExecution(executionId) {\n      // If closing the active tab, switch to another tab or none\n      if (this.activeExecutionId === executionId) {\n        const remainingExecutions = this.executionHistory.executions.filter(e => e.id !== executionId);\n        this.activeExecutionId = remainingExecutions.length > 0 ? remainingExecutions[remainingExecutions.length - 1].id : null;\n      }\n      this.executionHistory.remove(executionId);\n    }\n    toggleExpanded() {\n      this.isExpanded = !this.isExpanded;\n    }\n    clearAllExecutions() {\n      this.executionHistory.clear();\n      this.activeExecutionId = null;\n    }\n    viewRecord() {\n      const execution = this.activeExecution;\n      if (!execution || !execution.firmId || !execution.clientId) {\n        console.warn(\"Cannot view record: execution missing firmId or clientId\");\n        return;\n      }\n\n      // Call the parent action to load the firm and client context\n      if (this.args.onViewRecord && typeof this.args.onViewRecord === \"function\") {\n        this.args.onViewRecord(execution.firmId, execution.clientId);\n      }\n    }\n    get activeExecution() {\n      if (!this.activeExecutionId) {\n        return this.executionHistory.latestExecution;\n      }\n      return this.executionHistory.getExecution(this.activeExecutionId);\n    }\n    get hasExecutions() {\n      return this.executionHistory.executions.length > 0;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"executionHistory\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"activeExecutionId\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"isExpanded\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"selectExecution\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"selectExecution\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"closeExecution\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"closeExecution\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"toggleExpanded\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleExpanded\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"clearAllExecutions\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"clearAllExecutions\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"viewRecord\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"viewRecord\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, ExecutionHistoryComponent);\n});","define(\"settify-mvp/components/v2/console/layout/index\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"flex h-screen flex-col\">\n    {{! Header - h-16 }}\n    <header class=\"relative h-16 shrink-0 border-b\">\n      <div class=\"relative flex h-full items-center justify-between px-4 sm:px-6 lg:px-8\">\n        {{yield to=\"header\"}}\n      </div>\n    </header>\n  \n    {{! Three column layout - height-header }}\n    <div class=\"flex h-[calc(100vh-4rem)] max-h-[calc(100vh-4rem)] items-start gap-x-8\">\n      {{! Left column - w-60 sticky }}\n      <aside class=\"sticky top-8 hidden h-full w-60 shrink-0 overflow-hidden sm:block\">\n        {{yield to=\"left\"}}\n      </aside>\n  \n      {{! Main column - flex-1 }}\n      <main class=\"h-full flex-1 overflow-hidden\">\n        {{yield to=\"main\"}}\n      </main>\n  \n      {{! Right column - w-96 sticky }}\n      <bside class=\"hidden h-full w-96 shrink-0 overflow-hidden xl:block\">\n        {{yield to=\"right\"}}\n      </bside>\n    </div>\n  \n    {{! Footer - hidden by default, will be used for actions }}\n    <footer class=\"hidden\">\n      {{yield to=\"footer\"}}\n    </footer>\n  </div>\n  */\n  {\n    \"id\": \"pyjLztjX\",\n    \"block\": \"[[[10,0],[14,0,\\\"flex h-screen flex-col\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"  \\\"],[10,\\\"header\\\"],[14,0,\\\"relative h-16 shrink-0 border-b\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"relative flex h-full items-center justify-between px-4 sm:px-6 lg:px-8\\\"],[12],[1,\\\"\\\\n      \\\"],[18,1,null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"  \\\"],[10,0],[14,0,\\\"flex h-[calc(100vh-4rem)] max-h-[calc(100vh-4rem)] items-start gap-x-8\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"    \\\"],[10,\\\"aside\\\"],[14,0,\\\"sticky top-8 hidden h-full w-60 shrink-0 overflow-hidden sm:block\\\"],[12],[1,\\\"\\\\n      \\\"],[18,2,null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"    \\\"],[10,\\\"main\\\"],[14,0,\\\"h-full flex-1 overflow-hidden\\\"],[12],[1,\\\"\\\\n      \\\"],[18,3,null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"    \\\"],[10,\\\"bside\\\"],[14,0,\\\"hidden h-full w-96 shrink-0 overflow-hidden xl:block\\\"],[12],[1,\\\"\\\\n      \\\"],[18,4,null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"  \\\"],[10,\\\"footer\\\"],[14,0,\\\"hidden\\\"],[12],[1,\\\"\\\\n    \\\"],[18,5,null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"&header\\\",\\\"&left\\\",\\\"&main\\\",\\\"&right\\\",\\\"&footer\\\"],false,[\\\"div\\\",\\\"header\\\",\\\"yield\\\",\\\"aside\\\",\\\"main\\\",\\\"bside\\\",\\\"footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/console/layout/index.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/v2/console/manage-client/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/service\", \"@ember/template\", \"@ember/template-factory\"], function (_exports, _component, _component2, _tracking, _object, _service, _template, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/template\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"flex h-full flex-col\" {{did-update this.loadClient @client}}>\n    {{! Main Content Area - Record Detail & Actions }}\n    {{#if @client}}\n      <div class=\"sticky top-0 flex flex-row items-center justify-between border-b p-4\">\n        <div>\n          <p class=\"text-xs font-medium text-gray-500\">Client Name</p>\n          <p class=\"text-sm text-gray-900\">{{@client.metadata.displayName}}</p>\n        </div>\n        <span class=\"inline-flex items-center rounded-md bg-purple-50 px-2 py-1 text-xs font-medium text-purple-700 ring-1 ring-inset ring-purple-600/10\">\n          {{@client.id}}\n        </span>\n      </div>\n  \n      <div class=\"overflow-y-auto\">\n        {{#if this.isLoading}}\n          <div class=\"py-8 text-center\">\n            <V2::SvgIcon @icon=\"arrows-rotate\" class=\"mx-auto mb-2 size-6 animate-spin text-purple-600\" />\n            <p class=\"text-xs text-gray-500\">Loading client data...</p>\n          </div>\n        {{else}}\n          <div>{{this.clientRecord}}</div>\n        {{/if}}\n      </div>\n    {{else if @firm}}\n      <div class=\"flex h-96 items-center justify-center\">\n        <div class=\"text-center\">\n          <V2::SvgIcon @icon=\"magnifying-glass\" class=\"mx-auto mb-4 size-12 text-gray-400\" />\n          <p class=\"text-base font-medium text-gray-900\">No client Selected</p>\n          <p class=\"mt-1 text-sm text-gray-500\">\n            Search and select a client from the left panel to view details\n          </p>\n        </div>\n      </div>\n    {{else}}\n      <div class=\"flex h-96 items-center justify-center\">\n        <div class=\"text-center\">\n          <V2::SvgIcon @icon=\"magnifying-glass\" class=\"mx-auto mb-4 size-12 text-gray-400\" />\n          <p class=\"text-base font-medium text-gray-900\">No firm Selected</p>\n          <p class=\"mt-1 text-sm text-gray-500\">\n            Search and select a firm from the left panel to view details\n          </p>\n        </div>\n      </div>\n    {{/if}}\n  </div>\n  */\n  {\n    \"id\": \"1Wf3dwfl\",\n    \"block\": \"[[[11,0],[24,0,\\\"flex h-full flex-col\\\"],[4,[38,1],[[30,0,[\\\"loadClient\\\"]],[30,1]],null],[12],[1,\\\"\\\\n\\\"],[41,[30,1],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"sticky top-0 flex flex-row items-center justify-between border-b p-4\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"text-xs font-medium text-gray-500\\\"],[12],[1,\\\"Client Name\\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"text-sm text-gray-900\\\"],[12],[1,[30,1,[\\\"metadata\\\",\\\"displayName\\\"]]],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"inline-flex items-center rounded-md bg-purple-50 px-2 py-1 text-xs font-medium text-purple-700 ring-1 ring-inset ring-purple-600/10\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[30,1,[\\\"id\\\"]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,0],[14,0,\\\"overflow-y-auto\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"isLoading\\\"]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"py-8 text-center\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,5],[[24,0,\\\"mx-auto mb-2 size-6 animate-spin text-purple-600\\\"]],[[\\\"@icon\\\"],[\\\"arrows-rotate\\\"]],null],[1,\\\"\\\\n          \\\"],[10,2],[14,0,\\\"text-xs text-gray-500\\\"],[12],[1,\\\"Loading client data...\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,0],[12],[1,[30,0,[\\\"clientRecord\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,2],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"flex h-96 items-center justify-center\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"text-center\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,5],[[24,0,\\\"mx-auto mb-4 size-12 text-gray-400\\\"]],[[\\\"@icon\\\"],[\\\"magnifying-glass\\\"]],null],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"text-base font-medium text-gray-900\\\"],[12],[1,\\\"No client Selected\\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"mt-1 text-sm text-gray-500\\\"],[12],[1,\\\"\\\\n          Search and select a client from the left panel to view details\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"flex h-96 items-center justify-center\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"text-center\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,5],[[24,0,\\\"mx-auto mb-4 size-12 text-gray-400\\\"]],[[\\\"@icon\\\"],[\\\"magnifying-glass\\\"]],null],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"text-base font-medium text-gray-900\\\"],[12],[1,\\\"No firm Selected\\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"mt-1 text-sm text-gray-500\\\"],[12],[1,\\\"\\\\n          Search and select a firm from the left panel to view details\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]],[]]],[13]],[\\\"@client\\\",\\\"@firm\\\"],false,[\\\"div\\\",\\\"did-update\\\",\\\"if\\\",\\\"p\\\",\\\"span\\\",\\\"v2/svg-icon\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/console/manage-client/index.hbs\",\n    \"isStrictMode\": false\n  });\n  let ManageClientComponent = _exports.default = (_class = class ManageClientComponent extends _component2.default {\n    constructor() {\n      super(...arguments);\n      _initializerDefineProperty(this, \"console\", _descriptor, this);\n      _initializerDefineProperty(this, \"client\", _descriptor2, this);\n      _initializerDefineProperty(this, \"isLoading\", _descriptor3, this);\n      if (this.args.client) {\n        this.loadClient();\n      }\n    }\n    async loadClient() {\n      this.isLoading = true;\n      try {\n        const clientId = this.args.client?.id || null;\n        this.client = await this.console.getClient(clientId);\n      } catch (error) {\n        console.error(\"Failed to load client:\", error);\n        this.client = null;\n      } finally {\n        this.isLoading = false;\n      }\n    }\n    get clientRecord() {\n      if (this.client) {\n        return (0, _template.htmlSafe)(this.client.record);\n      }\n      return null;\n    }\n    dummyAction() {\n      console.log(\"no action taken\");\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"console\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"client\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"isLoading\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"loadClient\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"loadClient\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"dummyAction\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"dummyAction\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, ManageClientComponent);\n});","define(\"settify-mvp/components/v2/console/search-client/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/service\", \"@ember/template-factory\"], function (_exports, _component, _component2, _tracking, _object, _service, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"flex h-full flex-col\">\n  \n    {{! Left Panel - Search Console }}\n    <div class=\"p-4\">\n      <h3 class=\"mb-2 text-sm font-semibold text-gray-900\">Search clients</h3>\n      <label class=\"sr-only\" for=\"record-search\">Search client records</label>\n      <Input\n        id=\"record-search\"\n        @type=\"text\"\n        placeholder=\"Client search...\"\n        @value={{this.searchQuery}}\n        {{on \"input\" this.updateSearchQuery}}\n        {{on \"keypress\" this.handleSearchKeyPress}}\n        class=\"w-full rounded-md border border-gray-300 px-3 py-2 text-xs focus:border-purple-500 focus:outline-none focus:ring-1 focus:ring-purple-500\"\n      />\n    </div>\n  \n    <div class=\"overflow-y-auto\">\n      {{#if this.isLoading}}\n        <div class=\"p-4 text-center\">\n          <p class=\"text-xs text-gray-500\">Loading...</p>\n        </div>\n      {{else if this.filteredClients.length}}\n        <div class=\"sticky top-0 border-b bg-gray-50 px-4 py-2 text-sm font-semibold text-gray-900\">\n          {{#if this.searchQuery}}\n            Results\n            <span class=\"ml-2 text-xs font-normal text-gray-500\">({{this.filteredClients.length}})</span>\n          {{else}}\n            All Clients\n            <span class=\"ml-2 text-xs font-normal text-gray-500\">({{this.filteredClients.length}})</span>\n          {{/if}}\n        </div>\n        {{#each this.filteredClients as |client|}}\n          <div\n            class=\"cursor-pointer border-b p-3 transition-colors last:border-b-0 hover:bg-purple-50 {{if (eq @client client) 'border-purple-600 bg-purple-50' 'border-gray-200'}}\"\n            {{on \"click\" (fn this.selectRecord client)}}\n          >\n            <p class=\"text-xs font-medium text-gray-900\">{{client.metadata.displayName}}</p>\n            <p class=\"text-xs text-gray-600\">ID: {{client.id}}</p>\n          </div>\n        {{/each}}\n      {{/if}}\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"j859eN7R\",\n    \"block\": \"[[[10,0],[14,0,\\\"flex h-full flex-col\\\"],[12],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"  \\\"],[10,0],[14,0,\\\"p-4\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"h3\\\"],[14,0,\\\"mb-2 text-sm font-semibold text-gray-900\\\"],[12],[1,\\\"Search clients\\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"label\\\"],[14,0,\\\"sr-only\\\"],[14,\\\"for\\\",\\\"record-search\\\"],[12],[1,\\\"Search client records\\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,3],[[24,1,\\\"record-search\\\"],[24,\\\"placeholder\\\",\\\"Client search...\\\"],[24,0,\\\"w-full rounded-md border border-gray-300 px-3 py-2 text-xs focus:border-purple-500 focus:outline-none focus:ring-1 focus:ring-purple-500\\\"],[4,[38,4],[\\\"input\\\",[30,0,[\\\"updateSearchQuery\\\"]]],null],[4,[38,4],[\\\"keypress\\\",[30,0,[\\\"handleSearchKeyPress\\\"]]],null]],[[\\\"@type\\\",\\\"@value\\\"],[\\\"text\\\",[30,0,[\\\"searchQuery\\\"]]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"overflow-y-auto\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"isLoading\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"p-4 text-center\\\"],[12],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"text-xs text-gray-500\\\"],[12],[1,\\\"Loading...\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"filteredClients\\\",\\\"length\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"sticky top-0 border-b bg-gray-50 px-4 py-2 text-sm font-semibold text-gray-900\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"searchQuery\\\"]],[[[1,\\\"          Results\\\\n          \\\"],[10,1],[14,0,\\\"ml-2 text-xs font-normal text-gray-500\\\"],[12],[1,\\\"(\\\"],[1,[30,0,[\\\"filteredClients\\\",\\\"length\\\"]]],[1,\\\")\\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          All Clients\\\\n          \\\"],[10,1],[14,0,\\\"ml-2 text-xs font-normal text-gray-500\\\"],[12],[1,\\\"(\\\"],[1,[30,0,[\\\"filteredClients\\\",\\\"length\\\"]]],[1,\\\")\\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,9],[[28,[37,9],[[30,0,[\\\"filteredClients\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[11,0],[16,0,[29,[\\\"cursor-pointer border-b p-3 transition-colors last:border-b-0 hover:bg-purple-50 \\\",[52,[28,[37,10],[[30,2],[30,1]],null],\\\"border-purple-600 bg-purple-50\\\",\\\"border-gray-200\\\"]]]],[4,[38,4],[\\\"click\\\",[28,[37,11],[[30,0,[\\\"selectRecord\\\"]],[30,1]],null]],null],[12],[1,\\\"\\\\n          \\\"],[10,2],[14,0,\\\"text-xs font-medium text-gray-900\\\"],[12],[1,[30,1,[\\\"metadata\\\",\\\"displayName\\\"]]],[13],[1,\\\"\\\\n          \\\"],[10,2],[14,0,\\\"text-xs text-gray-600\\\"],[12],[1,\\\"ID: \\\"],[1,[30,1,[\\\"id\\\"]]],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"    \\\"]],[]],null]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"client\\\",\\\"@client\\\"],false,[\\\"div\\\",\\\"h3\\\",\\\"label\\\",\\\"input\\\",\\\"on\\\",\\\"if\\\",\\\"p\\\",\\\"span\\\",\\\"each\\\",\\\"-track-array\\\",\\\"eq\\\",\\\"fn\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/console/search-client/index.hbs\",\n    \"isStrictMode\": false\n  });\n  let SearchClientComponent = _exports.default = (_class = class SearchClientComponent extends _component2.default {\n    constructor() {\n      super(...arguments);\n      _initializerDefineProperty(this, \"console\", _descriptor, this);\n      _initializerDefineProperty(this, \"clients\", _descriptor2, this);\n      _initializerDefineProperty(this, \"filteredClients\", _descriptor3, this);\n      _initializerDefineProperty(this, \"searchQuery\", _descriptor4, this);\n      _initializerDefineProperty(this, \"isLoading\", _descriptor5, this);\n      this.loadClients();\n    }\n    handleSearchKeyPress(event) {\n      if (event.key === \"Enter\") {\n        this.searchRecords();\n      }\n    }\n    async loadClients() {\n      this.isLoading = true;\n      try {\n        const response = await this.console.getFirmClients();\n        this.clients = response.items || [];\n        this.filteredClients = [...this.clients];\n      } catch (error) {\n        console.error(\"Failed to load clients:\", error);\n        this.clients = [];\n        this.filteredClients = [];\n      } finally {\n        this.isLoading = false;\n      }\n    }\n    updateSearchQuery(event) {\n      this.searchQuery = event.target.value;\n      this.filterClients();\n    }\n    filterClients() {\n      const query = this.searchQuery.toLowerCase().trim();\n      if (!query) {\n        this.filteredClients = [...this.clients];\n        return;\n      }\n      this.filteredClients = this.clients.filter(clients => {\n        const idMatch = clients.id?.toLowerCase().includes(query);\n        const nameMatch = clients.metadata?.displayName?.toLowerCase().includes(query);\n        return nameMatch || idMatch;\n      });\n    }\n    selectRecord(client) {\n      if (this.args.onSelectClient && typeof this.args.onSelectClient === \"function\") {\n        this.args.onSelectClient(client);\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"console\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"clients\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return [];\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"filteredClients\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return [];\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"searchQuery\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"isLoading\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"handleSearchKeyPress\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleSearchKeyPress\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"loadClients\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"loadClients\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"updateSearchQuery\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"updateSearchQuery\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"filterClients\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"filterClients\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"selectRecord\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"selectRecord\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, SearchClientComponent);\n});","define(\"settify-mvp/components/v2/console/search-firm/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/service\", \"@ember/template-factory\"], function (_exports, _component, _component2, _tracking, _object, _service, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! Firm Selection Panel }}\n  <div class=\"flex h-full flex-col\">\n  \n    {{! Header }}\n    <div class=\"shrink-0 px-4 pt-3\">\n      <h2 class=\"text-base font-semibold text-gray-900\">Select Firm</h2>\n      {{!<p class=\"mt-1 text-xs text-gray-500\"></p>}}\n    </div>\n  \n    {{#if @firm}}\n      {{! Display selected firm }}\n      <div class=\"mb-3 rounded-lg border-2 border-purple-600 bg-purple-50 p-3\">\n        <div class=\"flex items-start justify-between\">\n          <div class=\"flex-1\">\n            <p class=\"text-sm font-semibold text-purple-900\">{{@firm.name}}</p>\n            <p class=\"text-xs text-purple-700\">{{@firm.firmID}}</p>\n          </div>\n          <button type=\"button\" {{on \"click\" this.clearSelection}} class=\"ml-2 rounded-md p-1 text-purple-600 hover:bg-purple-100\" aria-label=\"Clear firm selection\">\n            <V2::SvgIcon @icon=\"x-mark\" class=\"size-4\" />\n          </button>\n        </div>\n      </div>\n    {{else}}\n      <div class=\"border-b px-4 pb-4 pt-2\">\n        {{! Search input }}\n        <div class=\"relative\">\n          <label class=\"sr-only\" for=\"firm-search\">Search firms</label>\n          <Input\n            id=\"firm-search\"\n            @type=\"text\"\n            placeholder=\"Search by firm name or ID...\"\n            @value={{this.searchQuery}}\n            {{on \"input\" this.updateSearchQuery}}\n            class=\"w-full rounded-md border border-gray-300 px-3 py-2 pr-8 text-xs focus:border-purple-500 focus:outline-none focus:ring-1 focus:ring-purple-500\"\n          />\n          <div class=\"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-3\">\n            <V2::SvgIcon @icon=\"magnifying-glass\" class=\"size-4 text-gray-400\" />\n          </div>\n        </div>\n      </div>\n    {{/if}}\n  \n    <div class=\"overflow-y-auto\">\n      {{#if this.isLoading}}\n        <div class=\"py-8 text-center\">\n          <V2::SvgIcon @icon=\"arrows-rotate\" class=\"mx-auto mb-2 size-6 animate-spin text-purple-600\" />\n          <p class=\"text-xs text-gray-500\">Loading firms...</p>\n        </div>\n      {{else if (not @firm)}}\n        {{#if this.filteredFirms.length}}\n          <div class=\"sticky top-0 border-b bg-gray-50 px-4 py-2 text-sm font-semibold text-gray-900\">\n            {{#if this.searchQuery}}\n              Results\n              <span class=\"ml-2 text-xs font-normal text-gray-500\">({{this.filteredFirms.length}})</span>\n            {{else}}\n              All Firms\n              <span class=\"ml-2 text-xs font-normal text-gray-500\">({{this.filteredFirms.length}})</span>\n            {{/if}}\n          </div>\n          {{#each this.filteredFirms as |firm|}}\n            <div class=\"cursor-pointer border-b p-3 transition-colors last:border-b-0 hover:bg-purple-50\" {{on \"click\" (fn this.selectFirm firm)}}>\n              <p class=\"text-xs font-semibold text-gray-900\">{{firm.name}}</p>\n              <p class=\"text-xs text-gray-600\">{{firm.firmID}}</p>\n            </div>\n          {{/each}}\n        {{else if this.searchQuery}}\n          <div class=\"py-8 text-center\">\n            <V2::SvgIcon @icon=\"magnifying-glass\" class=\"mx-auto mb-2 size-8 text-gray-300\" />\n            <p class=\"text-xs text-gray-500\">No firms found matching \"{{this.searchQuery}}\"</p>\n          </div>\n        {{else}}\n          <div class=\"py-8 text-center\">\n            <V2::SvgIcon @icon=\"building-office\" class=\"mx-auto mb-2 size-8 text-gray-300\" />\n            <p class=\"text-xs text-gray-500\">No firms available</p>\n          </div>\n        {{/if}}\n      {{/if}}\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"NIQdgyDI\",\n    \"block\": \"[[[10,0],[14,0,\\\"flex h-full flex-col\\\"],[12],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"  \\\"],[10,0],[14,0,\\\"shrink-0 px-4 pt-3\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"h2\\\"],[14,0,\\\"text-base font-semibold text-gray-900\\\"],[12],[1,\\\"Select Firm\\\"],[13],[1,\\\"\\\\n\\\"],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,1],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"mb-3 rounded-lg border-2 border-purple-600 bg-purple-50 p-3\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"flex items-start justify-between\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"flex-1\\\"],[12],[1,\\\"\\\\n          \\\"],[10,2],[14,0,\\\"text-sm font-semibold text-purple-900\\\"],[12],[1,[30,1,[\\\"name\\\"]]],[13],[1,\\\"\\\\n          \\\"],[10,2],[14,0,\\\"text-xs text-purple-700\\\"],[12],[1,[30,1,[\\\"firmID\\\"]]],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[11,\\\"button\\\"],[24,0,\\\"ml-2 rounded-md p-1 text-purple-600 hover:bg-purple-100\\\"],[24,\\\"aria-label\\\",\\\"Clear firm selection\\\"],[24,4,\\\"button\\\"],[4,[38,5],[\\\"click\\\",[30,0,[\\\"clearSelection\\\"]]],null],[12],[1,\\\"\\\\n          \\\"],[8,[39,6],[[24,0,\\\"size-4\\\"]],[[\\\"@icon\\\"],[\\\"x-mark\\\"]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"border-b px-4 pb-4 pt-2\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"      \\\"],[10,0],[14,0,\\\"relative\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"label\\\"],[14,0,\\\"sr-only\\\"],[14,\\\"for\\\",\\\"firm-search\\\"],[12],[1,\\\"Search firms\\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,8],[[24,1,\\\"firm-search\\\"],[24,\\\"placeholder\\\",\\\"Search by firm name or ID...\\\"],[24,0,\\\"w-full rounded-md border border-gray-300 px-3 py-2 pr-8 text-xs focus:border-purple-500 focus:outline-none focus:ring-1 focus:ring-purple-500\\\"],[4,[38,5],[\\\"input\\\",[30,0,[\\\"updateSearchQuery\\\"]]],null]],[[\\\"@type\\\",\\\"@value\\\"],[\\\"text\\\",[30,0,[\\\"searchQuery\\\"]]]],null],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-3\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,6],[[24,0,\\\"size-4 text-gray-400\\\"]],[[\\\"@icon\\\"],[\\\"magnifying-glass\\\"]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"overflow-y-auto\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"isLoading\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"py-8 text-center\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,6],[[24,0,\\\"mx-auto mb-2 size-6 animate-spin text-purple-600\\\"]],[[\\\"@icon\\\"],[\\\"arrows-rotate\\\"]],null],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"text-xs text-gray-500\\\"],[12],[1,\\\"Loading firms...\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,9],[[30,1]],null],[[[41,[30,0,[\\\"filteredFirms\\\",\\\"length\\\"]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"sticky top-0 border-b bg-gray-50 px-4 py-2 text-sm font-semibold text-gray-900\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"searchQuery\\\"]],[[[1,\\\"            Results\\\\n            \\\"],[10,1],[14,0,\\\"ml-2 text-xs font-normal text-gray-500\\\"],[12],[1,\\\"(\\\"],[1,[30,0,[\\\"filteredFirms\\\",\\\"length\\\"]]],[1,\\\")\\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"            All Firms\\\\n            \\\"],[10,1],[14,0,\\\"ml-2 text-xs font-normal text-gray-500\\\"],[12],[1,\\\"(\\\"],[1,[30,0,[\\\"filteredFirms\\\",\\\"length\\\"]]],[1,\\\")\\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"        \\\"],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,12],[[28,[37,12],[[30,0,[\\\"filteredFirms\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[11,0],[24,0,\\\"cursor-pointer border-b p-3 transition-colors last:border-b-0 hover:bg-purple-50\\\"],[4,[38,5],[\\\"click\\\",[28,[37,13],[[30,0,[\\\"selectFirm\\\"]],[30,2]],null]],null],[12],[1,\\\"\\\\n            \\\"],[10,2],[14,0,\\\"text-xs font-semibold text-gray-900\\\"],[12],[1,[30,2,[\\\"name\\\"]]],[13],[1,\\\"\\\\n            \\\"],[10,2],[14,0,\\\"text-xs text-gray-600\\\"],[12],[1,[30,2,[\\\"firmID\\\"]]],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],null]],[]],[[[41,[30,0,[\\\"searchQuery\\\"]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"py-8 text-center\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,6],[[24,0,\\\"mx-auto mb-2 size-8 text-gray-300\\\"]],[[\\\"@icon\\\"],[\\\"magnifying-glass\\\"]],null],[1,\\\"\\\\n          \\\"],[10,2],[14,0,\\\"text-xs text-gray-500\\\"],[12],[1,\\\"No firms found matching \\\\\\\"\\\"],[1,[30,0,[\\\"searchQuery\\\"]]],[1,\\\"\\\\\\\"\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"py-8 text-center\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,6],[[24,0,\\\"mx-auto mb-2 size-8 text-gray-300\\\"]],[[\\\"@icon\\\"],[\\\"building-office\\\"]],null],[1,\\\"\\\\n          \\\"],[10,2],[14,0,\\\"text-xs text-gray-500\\\"],[12],[1,\\\"No firms available\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]],[]]],[1,\\\"    \\\"]],[]],null]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@firm\\\",\\\"firm\\\"],false,[\\\"div\\\",\\\"h2\\\",\\\"if\\\",\\\"p\\\",\\\"button\\\",\\\"on\\\",\\\"v2/svg-icon\\\",\\\"label\\\",\\\"input\\\",\\\"not\\\",\\\"span\\\",\\\"each\\\",\\\"-track-array\\\",\\\"fn\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/console/search-firm/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * Stateless firm search component.\n   *\n   * Manages only LOCAL UI state (search query, loading, filtered list).\n   * Receives selected firm state via @args and emits selection events via callbacks.\n   *\n   * @class SearchFirmComponent\n   * @extends Component\n   *\n   * @arg {Object} firm - Currently selected firm from parent state\n   * @arg {Function} onSelectFirm - Callback when user selects a firm\n   * @arg {Function} onClearFirm - Callback when user clears selection\n   */\n  let SearchFirmComponent = _exports.default = (_class = class SearchFirmComponent extends _component2.default {\n    constructor() {\n      super(...arguments);\n      _initializerDefineProperty(this, \"console\", _descriptor, this);\n      // Only for API calls, not for state management\n      // Local UI state only - this component owns these\n      _initializerDefineProperty(this, \"firms\", _descriptor2, this);\n      _initializerDefineProperty(this, \"filteredFirms\", _descriptor3, this);\n      _initializerDefineProperty(this, \"searchQuery\", _descriptor4, this);\n      _initializerDefineProperty(this, \"isLoading\", _descriptor5, this);\n      this.loadFirms();\n    }\n\n    /**\n     * Load firms from latte API and filter based on test firms.\n     * This is local data fetching - component owns this process.\n     */\n    async loadFirms() {\n      this.isLoading = true;\n      try {\n        this.firms = await this.console.getTestFirms();\n        this.filteredFirms = [...this.firms];\n      } catch (error) {\n        console.error(\"Failed to load firms:\", error);\n        this.firms = [];\n        this.filteredFirms = [];\n      } finally {\n        this.isLoading = false;\n      }\n    }\n\n    /**\n     * Handle search input and filter firms by name or ID.\n     * Pure UI interaction - component owns search state.\n     */\n    updateSearchQuery(event) {\n      this.searchQuery = event.target.value;\n      this.filterFirms();\n    }\n\n    /**\n     * Filter firms based on search query.\n     * Local computation on local state.\n     */\n    filterFirms() {\n      const query = this.searchQuery.toLowerCase().trim();\n      if (!query) {\n        this.filteredFirms = [...this.firms];\n        return;\n      }\n      this.filteredFirms = this.firms.filter(firm => {\n        const nameMatch = firm.name?.toLowerCase().includes(query);\n        const idMatch = firm.firmID?.toLowerCase().includes(query);\n        return nameMatch || idMatch;\n      });\n    }\n\n    /**\n     * Handle firm selection.\n     * Stateless - just emit event to parent, don't store selected firm locally.\n     */\n    selectFirm(firm) {\n      // Emit event to parent - parent owns firm state\n      if (this.args.onSelectFirm && typeof this.args.onSelectFirm === \"function\") {\n        this.args.onSelectFirm(firm);\n      }\n    }\n\n    /**\n     * Clear firm selection.\n     * Stateless - just emit event to parent.\n     */\n    clearSelection() {\n      // Emit event to parent - parent owns firm state\n      if (this.args.onClearFirm && typeof this.args.onClearFirm === \"function\") {\n        this.args.onClearFirm();\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"console\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"firms\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return [];\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"filteredFirms\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return [];\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"searchQuery\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"isLoading\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"loadFirms\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"loadFirms\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"updateSearchQuery\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"updateSearchQuery\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"filterFirms\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"filterFirms\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"selectFirm\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"selectFirm\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"clearSelection\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"clearSelection\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, SearchFirmComponent);\n});","define(\"settify-mvp/components/v2/data-table/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/object/internals\", \"@ember/template-factory\"], function (_exports, _component, _component2, _tracking, _object, _internals, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"@ember/object/internals\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"grid grid-cols-2 sm:grid-cols-3\">\n    {{#if @isSearchable}}\n      <div class=\"relative rounded-md sm:max-w-56\">\n        <div class=\"pointer-events-none absolute inset-y-0 left-0 flex items-center pl-3\">\n          <V2::SvgIcon @icon=\"magnifying-glass\" class=\"size-4 text-gray-400\" />\n        </div>\n        <V2::Textline\n          @value={{this.searchText}}\n          @onChange={{this.handleSearch}}\n          @id=\"search-{{this.id}}\"\n          placeholder=\"Search\"\n          name=\"search-{{this.id}}\"\n          class=\"pl-10 text-sm leading-6\"\n        />\n      </div>\n    {{/if}}\n  \n    {{!BUTTONS}}\n    <div class=\"col-end-[-1] justify-self-end\">\n      {{#if @onReload}}\n        <V2::Button title=\"Reload\" {{on \"click\" @onReload}} class=\"hover:bg-gray-50\">\n          <span class=\"sr-only\">Reload table data</span>\n          <V2::SvgIcon @icon=\"arrows-rotate\" class=\"size-4 text-gray-700\" />\n        </V2::Button>\n      {{/if}}\n      {{#if @onDownload}}\n        <V2::Button title=\"Download\" {{on \"click\" @onDownload}} class=\"hover:bg-gray-50\">\n          <span class=\"sr-only\">Download table data</span>\n          <V2::SvgIcon @icon=\"download\" class=\"size-4 text-gray-700\" />\n        </V2::Button>\n      {{/if}}\n    </div>\n  </div>\n  \n  {{#if this.columns.length}}\n    <div class=\"relative w-full overflow-auto\">\n      <table class=\"w-full text-sm\" id={{this.id}}>\n        {{#if (has-block \"colgroup\")}}\n          <colgroup>\n            {{yield to=\"colgroup\"}}\n          </colgroup>\n        {{/if}}\n        <thead id=\"{{this.id}}-head\" class={{@headClass}}>\n          <tr>\n            {{#each this.columns as |column|}}\n              <th\n                scope=\"col\"\n                class=\"truncate border-b border-gray-300 text-left font-semibold {{column.headClass}}\"\n                data-column-id={{column.id}}\n                aria-sort=\"{{if (eq this.sortColumn.id column.id) (if (eq this.sortDirection 'ASC') 'ascending' 'descending') 'none'}}\"\n              >\n                {{#if column.sortable}}\n                  <button type=\"button\" class=\"group inline-flex items-center p-3\" {{on \"click\" (fn this.changeSort column)}} aria-label=\"Sort by {{column.name}}\">\n                    {{column.name}}\n                    <span\n                      class=\"ml-2 flex-none rounded p-1\n                        {{if (eq this.sortColumn.id column.id) 'bg-gray-200 group-hover:bg-gray-300' 'invisible text-gray-400 group-hover:visible group-focus:visible'}}\"\n                    >\n                      <V2::SvgIcon @icon=\"chevron-down\" class=\"size-3 text-brand-primary-color-rgb transition-transform {{if (eq this.sortDirection 'ASC') '' 'rotate-180'}}\" />\n                    </span>\n                  </button>\n                {{else}}\n                  <span class=\"inline-flex p-3\">\n                    {{column.name}}\n                  </span>\n                {{/if}}\n              </th>\n            {{/each}}\n            {{#if (has-block \"action\")}}\n              <th scope=\"col\" class=\"truncate border-b border-gray-300 text-right font-semibold\" data-column-id=\"actions\"><span class=\"sr-only\">Actions</span></th>\n            {{/if}}\n          </tr>\n        </thead>\n        <tbody class=\"divide-y divide-gray-200 bg-white\" id=\"{{this.id}}-body\">\n          {{#each this.dataToDisplay as |rowItem rowIndex|}}\n            <tr class=\"hover:bg-gray-50 {{if @onRowSelection 'cursor-pointer'}}\" data-row-id={{or rowItem.id (concat this.id \"-row-\" (sum rowIndex 1))}}>\n              {{#each this.columns as |column|}}\n                <td class=\"truncate p-3 {{column.cellClass}}\" {{on \"click\" (fn this.handleRowSelection rowItem)}}>\n                  {{this.getProperty rowItem column.selector column.format rowIndex}}\n                </td>\n              {{/each}}\n              {{#if (has-block \"action\")}}\n                <td class=\"truncate p-3 text-center\">\n                  {{yield (hash row=rowItem index=rowIndex) to=\"action\"}}\n                </td>\n              {{/if}}\n            </tr>\n          {{else}}\n            <tr class=\"truncate text-center text-gray-500\">\n              <td class=\"p-3\" colspan={{this.columns.length}}>No data available.</td>\n            </tr>\n          {{/each}}\n        </tbody>\n      </table>\n    </div>\n  {{/if}}\n  \n  <V2::Pagination @currentPage={{this.currentPage}} @pageSize={{this.itemsPerPage}} @totalCount={{this.filteredData.length}} @onChange={{this.updatePage}} />\n  */\n  {\n    \"id\": \"tkC+ayTD\",\n    \"block\": \"[[[10,0],[14,0,\\\"grid grid-cols-2 sm:grid-cols-3\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"relative rounded-md sm:max-w-56\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"pointer-events-none absolute inset-y-0 left-0 flex items-center pl-3\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,2],[[24,0,\\\"size-4 text-gray-400\\\"]],[[\\\"@icon\\\"],[\\\"magnifying-glass\\\"]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,3],[[24,\\\"placeholder\\\",\\\"Search\\\"],[16,3,[29,[\\\"search-\\\",[30,0,[\\\"id\\\"]]]]],[24,0,\\\"pl-10 text-sm leading-6\\\"]],[[\\\"@value\\\",\\\"@onChange\\\",\\\"@id\\\"],[[30,0,[\\\"searchText\\\"]],[30,0,[\\\"handleSearch\\\"]],[29,[\\\"search-\\\",[30,0,[\\\"id\\\"]]]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[1,\\\"  \\\"],[10,0],[14,0,\\\"col-end-[-1] justify-self-end\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,2],[[[1,\\\"      \\\"],[8,[39,4],[[24,\\\"title\\\",\\\"Reload\\\"],[24,0,\\\"hover:bg-gray-50\\\"],[4,[38,5],[\\\"click\\\",[30,2]],null]],null,[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Reload table data\\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,2],[[24,0,\\\"size-4 text-gray-700\\\"]],[[\\\"@icon\\\"],[\\\"arrows-rotate\\\"]],null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,3],[[[1,\\\"      \\\"],[8,[39,4],[[24,\\\"title\\\",\\\"Download\\\"],[24,0,\\\"hover:bg-gray-50\\\"],[4,[38,5],[\\\"click\\\",[30,3]],null]],null,[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Download table data\\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,2],[[24,0,\\\"size-4 text-gray-700\\\"]],[[\\\"@icon\\\"],[\\\"download\\\"]],null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"columns\\\",\\\"length\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"relative w-full overflow-auto\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"table\\\"],[14,0,\\\"w-full text-sm\\\"],[15,1,[30,0,[\\\"id\\\"]]],[12],[1,\\\"\\\\n\\\"],[41,[48,[30,10]],[[[1,\\\"        \\\"],[10,\\\"colgroup\\\"],[12],[1,\\\"\\\\n          \\\"],[18,10,null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[10,\\\"thead\\\"],[15,1,[29,[[30,0,[\\\"id\\\"]],\\\"-head\\\"]]],[15,0,[30,4]],[12],[1,\\\"\\\\n        \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,14],[[28,[37,14],[[30,0,[\\\"columns\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[15,0,[29,[\\\"truncate border-b border-gray-300 text-left font-semibold \\\",[30,5,[\\\"headClass\\\"]]]]],[15,\\\"data-column-id\\\",[30,5,[\\\"id\\\"]]],[15,\\\"aria-sort\\\",[29,[[52,[28,[37,16],[[30,0,[\\\"sortColumn\\\",\\\"id\\\"]],[30,5,[\\\"id\\\"]]],null],[52,[28,[37,16],[[30,0,[\\\"sortDirection\\\"]],\\\"ASC\\\"],null],\\\"ascending\\\",\\\"descending\\\"],\\\"none\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[30,5,[\\\"sortable\\\"]],[[[1,\\\"                \\\"],[11,\\\"button\\\"],[24,0,\\\"group inline-flex items-center p-3\\\"],[16,\\\"aria-label\\\",[29,[\\\"Sort by \\\",[30,5,[\\\"name\\\"]]]]],[24,4,\\\"button\\\"],[4,[38,5],[\\\"click\\\",[28,[37,18],[[30,0,[\\\"changeSort\\\"]],[30,5]],null]],null],[12],[1,\\\"\\\\n                  \\\"],[1,[30,5,[\\\"name\\\"]]],[1,\\\"\\\\n                  \\\"],[10,1],[15,0,[29,[\\\"ml-2 flex-none rounded p-1\\\\n                      \\\",[52,[28,[37,16],[[30,0,[\\\"sortColumn\\\",\\\"id\\\"]],[30,5,[\\\"id\\\"]]],null],\\\"bg-gray-200 group-hover:bg-gray-300\\\",\\\"invisible text-gray-400 group-hover:visible group-focus:visible\\\"]]]],[12],[1,\\\"\\\\n                    \\\"],[8,[39,2],[[16,0,[29,[\\\"size-3 text-brand-primary-color-rgb transition-transform \\\",[52,[28,[37,16],[[30,0,[\\\"sortDirection\\\"]],\\\"ASC\\\"],null],\\\"\\\",\\\"rotate-180\\\"]]]]],[[\\\"@icon\\\"],[\\\"chevron-down\\\"]],null],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                \\\"],[10,1],[14,0,\\\"inline-flex p-3\\\"],[12],[1,\\\"\\\\n                  \\\"],[1,[30,5,[\\\"name\\\"]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"            \\\"],[13],[1,\\\"\\\\n\\\"]],[5]],null],[41,[48,[30,11]],[[[1,\\\"            \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"truncate border-b border-gray-300 text-right font-semibold\\\"],[14,\\\"data-column-id\\\",\\\"actions\\\"],[12],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Actions\\\"],[13],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"tbody\\\"],[14,0,\\\"divide-y divide-gray-200 bg-white\\\"],[15,1,[29,[[30,0,[\\\"id\\\"]],\\\"-body\\\"]]],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,14],[[28,[37,14],[[30,0,[\\\"dataToDisplay\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[10,\\\"tr\\\"],[15,0,[29,[\\\"hover:bg-gray-50 \\\",[52,[30,8],\\\"cursor-pointer\\\"]]]],[15,\\\"data-row-id\\\",[28,[37,20],[[30,6,[\\\"id\\\"]],[28,[37,21],[[30,0,[\\\"id\\\"]],\\\"-row-\\\",[28,[37,22],[[30,7],1],null]],null]],null]],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,14],[[28,[37,14],[[30,0,[\\\"columns\\\"]]],null]],null],null,[[[1,\\\"              \\\"],[11,\\\"td\\\"],[16,0,[29,[\\\"truncate p-3 \\\",[30,9,[\\\"cellClass\\\"]]]]],[4,[38,5],[\\\"click\\\",[28,[37,18],[[30,0,[\\\"handleRowSelection\\\"]],[30,6]],null]],null],[12],[1,\\\"\\\\n                \\\"],[1,[28,[30,0,[\\\"getProperty\\\"]],[[30,6],[30,9,[\\\"selector\\\"]],[30,9,[\\\"format\\\"]],[30,7]],null]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[9]],null],[41,[48,[30,11]],[[[1,\\\"              \\\"],[10,\\\"td\\\"],[14,0,\\\"truncate p-3 text-center\\\"],[12],[1,\\\"\\\\n                \\\"],[18,11,[[28,[37,24],null,[[\\\"row\\\",\\\"index\\\"],[[30,6],[30,7]]]]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\"]],[6,7]],[[[1,\\\"          \\\"],[10,\\\"tr\\\"],[14,0,\\\"truncate text-center text-gray-500\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[14,0,\\\"p-3\\\"],[15,\\\"colspan\\\",[30,0,[\\\"columns\\\",\\\"length\\\"]]],[12],[1,\\\"No data available.\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[8,[39,25],null,[[\\\"@currentPage\\\",\\\"@pageSize\\\",\\\"@totalCount\\\",\\\"@onChange\\\"],[[30,0,[\\\"currentPage\\\"]],[30,0,[\\\"itemsPerPage\\\"]],[30,0,[\\\"filteredData\\\",\\\"length\\\"]],[30,0,[\\\"updatePage\\\"]]]],null]],[\\\"@isSearchable\\\",\\\"@onReload\\\",\\\"@onDownload\\\",\\\"@headClass\\\",\\\"column\\\",\\\"rowItem\\\",\\\"rowIndex\\\",\\\"@onRowSelection\\\",\\\"column\\\",\\\"&colgroup\\\",\\\"&action\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"v2/svg-icon\\\",\\\"v2/textline\\\",\\\"v2/button\\\",\\\"on\\\",\\\"span\\\",\\\"table\\\",\\\"has-block\\\",\\\"colgroup\\\",\\\"yield\\\",\\\"thead\\\",\\\"tr\\\",\\\"each\\\",\\\"-track-array\\\",\\\"th\\\",\\\"eq\\\",\\\"button\\\",\\\"fn\\\",\\\"tbody\\\",\\\"or\\\",\\\"concat\\\",\\\"sum\\\",\\\"td\\\",\\\"hash\\\",\\\"v2/pagination\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/data-table/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * Represents a column configuration object for the DataTable component.\n   * @typedef {Object} ColumnConfig\n   * @property {string} name - The display name of the column that appears in the table header.\n   * @property {Function} selector - Function to extract the value from a data row. Required for data-displaying columns but can be omitted for things like actions column.\n   *                                  Receives the `row` object and the `index` as arguments.\n   *                                  Example: `(rowObject, rowIndex) => row.propertyName`.\n   * @property {string} [cellClass] - CSS class/es for styling cells in this column.\n   * @property {boolean} [sortable=false] - Indicates if the column is sortable.\n   * @property {Function} [format] - Optional function that applies formatting to the cell value without changing the underlying value.\n   *                                  For example, it could format a date object into a readable string.\n   *                                  Receives the cell `value` from the selector, the `row` object and the row `index` as arguments.\n   *                                  Example: `(cellValue, rowObject, rowIndex) => cellValue.toUpperCase()`.\n   * @property {Function} [sortFunction] - Optional custom function for sorting. Overrides the default Array.sort() behaviour if provided.\n   */\n\n  /**\n   * A Glimmer component for rendering a sortable data table. It supports custom sorting and formatting functionalities per column.\n   *\n   * @class DataTableComponent\n   * @extends Component\n   *\n   * @param {Array} [this.args.data] - The array of data objects to be displayed in the table as rows.\n   * @param {Array<ColumnConfig>} [this.args.columns] - Configuration for each column in the table.\n   * @param {Function} [this.args.onRowSelection] - Optional callback that fires when a row is selected. Can be used for side effects like displaying details or triggering navigation.\n   * @param {Function} [this.args.onDownload] - Optional callback that fires when the download button is clicked. Renders the button if provided. Should handle data export and download initiation.\n   *\n   * @example\n   * <DataTable @data={{this.model.data}} @columns={{this.tableColumns}} />\n   */\n  let DataTableComponent = _exports.default = (_class = class DataTableComponent extends _component2.default {\n    constructor() {\n      super(...arguments);\n      _initializerDefineProperty(this, \"searchText\", _descriptor, this);\n      _initializerDefineProperty(this, \"sortColumn\", _descriptor2, this);\n      _initializerDefineProperty(this, \"sortDirection\", _descriptor3, this);\n      // or \"DESC\"\n      _initializerDefineProperty(this, \"currentPage\", _descriptor4, this);\n      _initializerDefineProperty(this, \"itemsPerPage\", _descriptor5, this);\n      // Default items per page. TODO: Have a dropdown to be able to change this.\n      _defineProperty(this, \"columns\", []);\n      this.columns = this.decorateColumns(this.args.columns);\n    }\n    get dataToDisplay() {\n      let data = this.filteredData;\n      data = this.applySort(data, this.sortDirection, this.sortColumn?.selector, this.sortColumn?.sortFunction);\n      return this.paginateData(data, this.currentPage, this.itemsPerPage);\n    }\n    get filteredData() {\n      return this.applySearch(this.args.data, this.columns, this.searchText);\n    }\n    get id() {\n      return this.args.id ?? `data-table-${(0, _internals.guidFor)(this)}`;\n    }\n\n    /**\n     * Decorates each column with a unique id if not already provided and determines if the column is sortable.\n     * @param {Array} columns - The original array of column configurations.\n     * @returns {Array} The array of decorated column configurations.\n     */\n    decorateColumns(columns = []) {\n      return columns.map((column, index) => ({\n        ...column,\n        id: column.id || `${this.id}-column-${index + 1}`,\n        sortable: column.sortable || !!column.sortFunction\n      }));\n    }\n\n    /**\n     * Filters the provided data array by searching for the searchText.\n     * @param {Array} data - The data rows to filter.\n     * @param {Array} columns - The array of column configurations.\n     * @param {string} searchText - The text to search for, ignoring case and whitespace.\n     * @returns {Array} - The filtered data array.\n     */\n    applySearch(data, columns, searchText) {\n      const trimmedSearchText = searchText?.trim();\n      if (!trimmedSearchText) {\n        return data;\n      }\n      const lowerSearchText = trimmedSearchText.toLowerCase().trim();\n      return data.filter(row => columns.some(column => {\n        if (!column?.selector || typeof column.selector !== \"function\") return false;\n        const value = column.selector(row);\n        return value && value.toString().toLowerCase().includes(lowerSearchText);\n      }));\n    }\n\n    /**\n     * Sorts the provided data array according to the specified selector and direction.\n     * @param {Array} data - The data rows to sort.\n     * @param {string} direction - The sort direction, either \"ASC\" or \"DESC\".\n     * @param {Function} selector - A function used to extract the sorting value from a data object.\n     * @param {Function} [sortFunction] - Optional custom function for sorting that overrides default sorting behavior.\n     * @returns {Array} - The sorted array of data.\n     */\n    applySort(data, direction, selector, sortFunction) {\n      if (!selector) {\n        return data;\n      }\n      if (sortFunction && typeof sortFunction === \"function\") {\n        // Allow the custom sort function to handle the sort logic\n        return sortFunction([...data], selector, direction);\n      }\n\n      // Default sorting logic\n      return [...data].sort((a, b) => {\n        const aValue = selector(a) || \"\";\n        const bValue = selector(b) || \"\";\n        if (aValue < bValue) {\n          return direction === \"ASC\" ? -1 : 1;\n        }\n        if (aValue > bValue) {\n          return direction === \"ASC\" ? 1 : -1;\n        }\n        return 0; // If both values are equal\n      });\n    }\n\n    /**\n     * Paginates the provided data array.\n     * @param {Array} data - The data rows to paginate.\n     * @param {number} currentPage - The current page number.\n     * @param {number} itemsPerPage - The number of items per page.\n     * @returns {Array} - The paginated data array.\n     */\n    paginateData(data, currentPage, itemsPerPage) {\n      const lowerRange = (currentPage - 1) * itemsPerPage;\n      const upperRange = lowerRange + itemsPerPage;\n      return data.slice(lowerRange, upperRange);\n    }\n\n    /**\n     * Retrieves and optionally formats a property value from a row object based on the provided selector and format function.\n     * @param {Object} row - The data object from which to extract the property.\n     * @param {Function} selector - Function to extract the property value from the row.\n     * @param {Function} [format] - Optional function to format the extracted value.\n     * @param {number} rowIndex - The index of the row.\n     * @returns {any} - The value or formatted value from the row.\n     */\n    getProperty(row, selector, format, rowIndex) {\n      if (!selector) {\n        return null;\n      }\n      const value = selector(row, rowIndex);\n      if (format && typeof format === \"function\") {\n        return format(value, row, rowIndex);\n      }\n      return value;\n    }\n    changeSort(column) {\n      if (this.sortColumn?.id === column.id) {\n        // Clicking the same already sorted column, just change direction\n        this.sortDirection = this.sortDirection === \"ASC\" ? \"DESC\" : \"ASC\";\n        return;\n      }\n      this.sortColumn = column;\n      this.sortDirection = \"ASC\";\n    }\n    handleRowSelection(row) {\n      if (!this.args.onRowSelection || typeof this.args.onRowSelection !== \"function\") return;\n      return this.args.onRowSelection(row);\n    }\n    handleSearch(newSearchText) {\n      this.searchText = newSearchText;\n      this.currentPage = 1; // Reset to the first page whenever a search is performed\n    }\n    updatePage(toPage) {\n      window.scrollTo({\n        top: 0\n      }); // Go back to the top of the screen every time the page updates\n      this.currentPage = toPage;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"searchText\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"sortColumn\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"sortDirection\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"ASC\";\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"currentPage\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return 1;\n    }\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"itemsPerPage\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return 20;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"dataToDisplay\", [_tracking.cached], Object.getOwnPropertyDescriptor(_class.prototype, \"dataToDisplay\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"filteredData\", [_tracking.cached], Object.getOwnPropertyDescriptor(_class.prototype, \"filteredData\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"changeSort\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"changeSort\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleRowSelection\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleRowSelection\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleSearch\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleSearch\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"updatePage\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"updatePage\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, DataTableComponent);\n});","define(\"settify-mvp/components/v2/date-input/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/utils\", \"@ember/object/internals\", \"moment\", \"@ember/template-factory\"], function (_exports, _component, _component2, _utils, _internals, _moment, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/utils\",0,\"@ember/object/internals\",0,\"moment\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (or (has-block) @label)}}\n    <label id=\"{{this.id}}-label\" for={{this.id}} class=\"mb-2 block {{if @required 'required-field-marker'}}\">\n      {{#if (has-block)}}\n        {{yield}}\n      {{else}}\n        {{@label}}\n      {{/if}}\n    </label>\n  {{/if}}\n  <HelpTextIcon @helpText={{@helpText}} />\n  <div class=\"align-center grid grid-cols-1 gap-2 md:grid-cols-6\" ...attributes>\n    {{#if @monthInputFirst}}\n      <div>\n        <V2::SelectBox @label=\"Month\" @selectedItem={{@month}} @options={{this.months}} @name=\"month\" @onChange={{@secondaryChange}} @required={{this.inputsRequired.month}} />\n      </div>\n    {{/if}}\n    <V2::NumberInput @value={{@day}} @label=\"Day\" @required={{this.inputsRequired.day}} @min={{1}} @max={{this.maxDay}} @onChange={{@onChange}} name=\"day\" />\n    {{#unless @monthInputFirst}}\n      <div>\n        <V2::SelectBox @label=\"Month\" @selectedItem={{@month}} @options={{this.months}} @name=\"month\" @onChange={{@secondaryChange}} @required={{this.inputsRequired.month}} />\n      </div>\n    {{/unless}}\n    <V2::NumberInput\n      @value={{@year}}\n      @label=\"Year\"\n      @required={{this.inputsRequired.year}}\n      @min={{1900}}\n      @max={{this.maxYear}}\n      @assumeTwoDigitYears={{true}}\n      @onChange={{@onChange}}\n      name=\"year\"\n    />\n  </div>\n  */\n  {\n    \"id\": \"PcGRClak\",\n    \"block\": \"[[[41,[28,[37,1],[[48,[30,11]],[30,1]],null],[[[1,\\\"  \\\"],[10,\\\"label\\\"],[15,1,[29,[[30,0,[\\\"id\\\"]],\\\"-label\\\"]]],[15,\\\"for\\\",[30,0,[\\\"id\\\"]]],[15,0,[29,[\\\"mb-2 block \\\",[52,[30,2],\\\"required-field-marker\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[48,[30,11]],[[[1,\\\"      \\\"],[18,11,null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[1,[30,1]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[8,[39,5],null,[[\\\"@helpText\\\"],[[30,3]]],null],[1,\\\"\\\\n\\\"],[11,0],[24,0,\\\"align-center grid grid-cols-1 gap-2 md:grid-cols-6\\\"],[17,4],[12],[1,\\\"\\\\n\\\"],[41,[30,5],[[[1,\\\"    \\\"],[10,0],[12],[1,\\\"\\\\n      \\\"],[8,[39,7],null,[[\\\"@label\\\",\\\"@selectedItem\\\",\\\"@options\\\",\\\"@name\\\",\\\"@onChange\\\",\\\"@required\\\"],[\\\"Month\\\",[30,6],[30,0,[\\\"months\\\"]],\\\"month\\\",[30,7],[30,0,[\\\"inputsRequired\\\",\\\"month\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[8,[39,8],[[24,3,\\\"day\\\"]],[[\\\"@value\\\",\\\"@label\\\",\\\"@required\\\",\\\"@min\\\",\\\"@max\\\",\\\"@onChange\\\"],[[30,8],\\\"Day\\\",[30,0,[\\\"inputsRequired\\\",\\\"day\\\"]],1,[30,0,[\\\"maxDay\\\"]],[30,9]]],null],[1,\\\"\\\\n\\\"],[41,[51,[30,5]],[[[1,\\\"    \\\"],[10,0],[12],[1,\\\"\\\\n      \\\"],[8,[39,7],null,[[\\\"@label\\\",\\\"@selectedItem\\\",\\\"@options\\\",\\\"@name\\\",\\\"@onChange\\\",\\\"@required\\\"],[\\\"Month\\\",[30,6],[30,0,[\\\"months\\\"]],\\\"month\\\",[30,7],[30,0,[\\\"inputsRequired\\\",\\\"month\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[8,[39,8],[[24,3,\\\"year\\\"]],[[\\\"@value\\\",\\\"@label\\\",\\\"@required\\\",\\\"@min\\\",\\\"@max\\\",\\\"@assumeTwoDigitYears\\\",\\\"@onChange\\\"],[[30,10],\\\"Year\\\",[30,0,[\\\"inputsRequired\\\",\\\"year\\\"]],1900,[30,0,[\\\"maxYear\\\"]],true,[30,9]]],null],[1,\\\"\\\\n\\\"],[13]],[\\\"@label\\\",\\\"@required\\\",\\\"@helpText\\\",\\\"&attrs\\\",\\\"@monthInputFirst\\\",\\\"@month\\\",\\\"@secondaryChange\\\",\\\"@day\\\",\\\"@onChange\\\",\\\"@year\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"or\\\",\\\"has-block\\\",\\\"label\\\",\\\"yield\\\",\\\"help-text-icon\\\",\\\"div\\\",\\\"v2/select-box\\\",\\\"v2/number-input\\\",\\\"unless\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/date-input/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component representing a date input.\n   * @class V2::DateInput\n   * @extends Component\n   * @param {string} this.args.day - The value of the day input field.\n   * @param {string} this.args.month - The value of the month input field.\n   * @param {string} this.args.year - The value of the year input field.\n   * @param {string} [this.args.id] - ID of the date input. If not provided, a unique ID will be generated.\n   * @param {string} [this.args.label] - Text above the input.\n   * @param {boolean} [this.args.required] - Determines if an answer is required.\n   * @param {string} [this.args.requiredSpecificity] - Determines which inputs are required.\n   * @param {string} [this.args.helpText] - Text displayed when clicking the help icon.\n   * @param {boolean} [this.args.monthInputFirst] - Determines the order of the inputs.\n   * @param {boolean} [this.args.allowFuture] - Determines the maxYear.\n   * @param {function} [this.args.onChange] - Action to handle changes to the input value.\n   * @param {function} [this.args.secondaryChange] - A second action to handle changes to the select input value.\n   *\n   *\n   * @example\n   * ```handlebars\n   * <V2::DateInput\n   *   @id={{this.id}}\n   *   @label=\"Date of birth\"\n   *   @day={{this.day}}\n   *   @month={{this.month}}\n   *   @year={{this.year}}\n   *   @required=true\n   *   @requiredSpecificity=\"year\"\n   *   @onChange={{this.handleChange}}\n   *   @secondaryChange={{this.secondaryChange}}\n   * />\n   * ```\n   */\n  class DateInputComponent extends _component2.default {\n    get id() {\n      return this.args.id ?? `date-input-component-${(0, _internals.guidFor)(this)}`;\n    }\n\n    /**\n     * Get the maximum days allowed for the day input based on month selected\n     * @returns {number} Maximum days allowed.\n     */\n    get maxDay() {\n      const m = parseInt(this.args.month, 10);\n      if ((0, _utils.isNone)(m) || isNaN(m) || m < 1 || m > 12) {\n        return 31;\n      }\n      return this.days[m - 1];\n    }\n\n    /**\n     * Get the maximum year allowed for the year input\n     * @returns {number} Maximum year allowed.\n     */\n    get maxYear() {\n      return this.args.allowFuture ? (0, _moment.default)().year() + 100 : (0, _moment.default)().year();\n    }\n\n    /**\n     * Get which inputs are required based on @requiredSpecificity\n     * @returns {Object} The required inputs as key value pairs.\n     */\n    get inputsRequired() {\n      if (!this.args.required) {\n        return {\n          year: false,\n          month: false,\n          day: false\n        };\n      }\n      if (this.args.requiredSpecificity === \"monthAndYear\") {\n        return {\n          year: true,\n          month: true,\n          day: false\n        };\n      }\n      if (this.args.requiredSpecificity === \"year\") {\n        return {\n          year: true,\n          month: false,\n          day: false\n        };\n      }\n      return {\n        year: true,\n        month: true,\n        day: true\n      };\n    }\n\n    /**\n     * Get an array of the number of days per month.\n     * @returns {array} Array of number of days per month.\n     */\n    get days() {\n      return [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n    }\n\n    /**\n     * Get an array of the months with a label and value.\n     * @returns {array} Array of months of the year.\n     */\n    get months() {\n      return [{\n        label: \"January\",\n        value: \"1\"\n      }, {\n        label: \"February\",\n        value: \"2\"\n      }, {\n        label: \"March\",\n        value: \"3\"\n      }, {\n        label: \"April\",\n        value: \"4\"\n      }, {\n        label: \"May\",\n        value: \"5\"\n      }, {\n        label: \"June\",\n        value: \"6\"\n      }, {\n        label: \"July\",\n        value: \"7\"\n      }, {\n        label: \"August\",\n        value: \"8\"\n      }, {\n        label: \"September\",\n        value: \"9\"\n      }, {\n        label: \"October\",\n        value: \"10\"\n      }, {\n        label: \"November\",\n        value: \"11\"\n      }, {\n        label: \"December\",\n        value: \"12\"\n      }];\n    }\n  }\n  _exports.default = DateInputComponent;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, DateInputComponent);\n});","define(\"settify-mvp/components/v2/documents-requested-list/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/service\", \"settify-mvp/helpers/get-answers-from\", \"@ember/template-factory\"], function (_exports, _component, _component2, _tracking, _service, _getAnswersFrom, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@glimmer/tracking\",0,\"@ember/service\",0,\"settify-mvp/helpers/get-answers-from\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.requestedDocumentList.length}}\n    <section>\n      <h4 class=\"font-semibold\">Requested documents</h4>\n      <p class=\"required-documents-text\">Based on your responses to this questionnaire, we need the following documents:</p>\n      <ul class=\"required-documents-list list-inside list-disc\">\n        {{#each this.requestedDocumentList as |requestedDoc|}}\n          <li class=\"documents-required-list-item\">\n            {{sentence-case requestedDoc.title}}\n          </li>\n        {{/each}}\n      </ul>\n    </section>\n  {{else}}\n    <p class=\"no-required-documents\">\n      Based on your answers in this questionnaire, there are <span class=\"font-semibold\">no</span> documents that we request of you at this stage.\n    </p>\n  {{/if}}\n  */\n  {\n    \"id\": \"iq5W1e6j\",\n    \"block\": \"[[[41,[30,0,[\\\"requestedDocumentList\\\",\\\"length\\\"]],[[[1,\\\"  \\\"],[10,\\\"section\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"h4\\\"],[14,0,\\\"font-semibold\\\"],[12],[1,\\\"Requested documents\\\"],[13],[1,\\\"\\\\n    \\\"],[10,2],[14,0,\\\"required-documents-text\\\"],[12],[1,\\\"Based on your responses to this questionnaire, we need the following documents:\\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"ul\\\"],[14,0,\\\"required-documents-list list-inside list-disc\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,6],[[28,[37,6],[[30,0,[\\\"requestedDocumentList\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[10,\\\"li\\\"],[14,0,\\\"documents-required-list-item\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[28,[35,8],[[30,1,[\\\"title\\\"]]],null]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"  \\\"],[10,2],[14,0,\\\"no-required-documents\\\"],[12],[1,\\\"\\\\n    Based on your answers in this questionnaire, there are \\\"],[10,1],[14,0,\\\"font-semibold\\\"],[12],[1,\\\"no\\\"],[13],[1,\\\" documents that we request of you at this stage.\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[\\\"requestedDoc\\\"],false,[\\\"if\\\",\\\"section\\\",\\\"h4\\\",\\\"p\\\",\\\"ul\\\",\\\"each\\\",\\\"-track-array\\\",\\\"li\\\",\\\"sentence-case\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/documents-requested-list/index.hbs\",\n    \"isStrictMode\": false\n  });\n  let DocumentsRequestedListComponent = _exports.default = (_class = class DocumentsRequestedListComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"questionnaireLogic\", _descriptor, this);\n    }\n    get requestedDocumentList() {\n      const requestedList = [];\n      for (const induction of this.args.inductions) {\n        if (Array.isArray(induction.chapters)) {\n          this.searchChapters(induction.chapters, requestedList, {\n            inductionID: induction.id,\n            repeat: induction.repeatToken || 1\n          });\n        }\n      }\n\n      // Unfortunately, the questionnaire definition can have empty objects in the documentsRequired array, so we filter it based on having a title.\n      return requestedList.filter(doc => doc?.title);\n    }\n    searchChapters(chapters, results, context) {\n      for (const chapter of chapters) {\n        if (Array.isArray(chapter.pages)) {\n          this.searchPages(chapter.pages, results, {\n            ...context,\n            chapterID: chapter.id\n          });\n        }\n      }\n    }\n    searchPages(pages, results, context) {\n      for (const page of pages) {\n        if (Array.isArray(page?.questions)) {\n          this.searchQuestions(page.questions, results, {\n            ...context,\n            pageID: page.id,\n            answersLocation: page.answersLocation,\n            answersLocationLoop: page.answersLocationLoop\n          });\n        }\n      }\n    }\n    searchQuestions(questions, results, context) {\n      for (const question of questions) {\n        const questionContext = {\n          ...context,\n          question\n        };\n        const answerObject = (0, _getAnswersFrom.getAnswersFrom)([], {\n          client: this.args.clientRecord,\n          induction: context.inductionID,\n          chapter: context.chapterID,\n          page: context.pageID,\n          answersLocation: context.answersLocation,\n          repeatToken: context.repeat\n        });\n        if (context.answersLocationLoop) {\n          // loop over each person/object\n          this.searchAnswerLocation(answerObject, results, questionContext);\n          continue;\n        }\n        this.getRequiredDocuments(results, questionContext, answerObject);\n      }\n    }\n    searchAnswerLocation(answers, results, context) {\n      for (const personObject in answers) {\n        this.getRequiredDocuments(results, context, personObject);\n      }\n    }\n    getRequiredDocuments(results, context, answerObject) {\n      if (!this.shouldDisplay(context, answerObject)) return; // Not displayed to client, so no document required\n\n      if (Array.isArray(context.question?.documentsRequired)) {\n        results.push(...context.question.documentsRequired);\n      }\n      switch (context.question.type) {\n        case \"radio\":\n          this.getRadioRequiredDocuments(results, context, answerObject);\n          break;\n        case \"yesno\":\n          this.getYesNoRequiredDocuments(results, context, answerObject);\n          break;\n        case \"checkbox\":\n          this.getCheckboxRequiredDocuments(results, context, answerObject);\n          break;\n        case \"selectorcreate\":\n          this.getSelectorCreateRequiredDocuments(results, context, answerObject);\n          break;\n        case \"list\":\n          this.getListRequiredDocuments(results, context, answerObject);\n          break;\n        // case \"checkboxlist\":\n        //   // Handle checkboxlist logic if any, currently empty\n        //   break;\n        case \"immutableList\":\n          this.getImmutableListRequiredDocuments(results, context, answerObject);\n          break;\n        default:\n          if (Array.isArray(context?.question?.content)) {\n            for (const option of context.question.content) {\n              this.getRequiredDocuments(results, {\n                ...context,\n                question: option\n              }, answerObject);\n            }\n          }\n      }\n    }\n    getRadioRequiredDocuments(results, context, answerObject) {\n      for (const option of context.question.options) {\n        if (!option.documentsRequired) continue; // No documents required for this option, can skip\n        if (!this.shouldDisplay({\n          ...context,\n          question: option\n        }, answerObject)) continue; // Option not displayed, can skip\n        const isSelectedOption = answerObject[context.question.id] === (option.id || option.title);\n        if (isSelectedOption) {\n          results.push(...option.documentsRequired);\n        }\n      }\n    }\n    getYesNoRequiredDocuments(results, context, answerObject) {\n      const {\n        question\n      } = context;\n      const answer = answerObject[question.id];\n      if (answer === \"yes\" && question?.onYes?.documentsRequired) {\n        results.push(...question.onYes.documentsRequired);\n      }\n      if (answer === \"no\" && question?.onNo?.documentsRequired) {\n        results.push(...question.onNo.documentsRequired);\n      }\n      if (answer === \"notsure\" && question?.onNotSure?.documentsRequired) {\n        results.push(...question.onNotSure.documentsRequired);\n      }\n    }\n    getCheckboxRequiredDocuments(results, context, answerObject) {\n      for (const option of context.question.options) {\n        if (!option.documentsRequired) continue; // No documents required for this option, can skip\n        if (!this.shouldDisplay({\n          ...context,\n          question: option\n        }, answerObject)) continue; // Option not displayed, can skip\n        const isSelectedOption = answerObject[option.id || option.title];\n        if (isSelectedOption) {\n          results.push(...option.documentsRequired);\n        }\n      }\n    }\n    getListRequiredDocuments(results, context, answerObject) {\n      const items = answerObject?.[context.question.id];\n      if (Array.isArray(items)) {\n        for (const listItem of answerObject[context.question.id]) {\n          if (Array.isArray(context?.question?.content)) {\n            for (const content of context.question.content) {\n              this.getRequiredDocuments(results, {\n                ...context,\n                question: content\n              }, listItem);\n            }\n          }\n        }\n      }\n    }\n    getSelectorCreateRequiredDocuments(results, context, answerObject) {\n      const answers = answerObject?.[context.question.id];\n      if (context.question.multipleSelections) {\n        // Multiple SOC\n        if (Array.isArray(answers)) {\n          for (const personID of answers) {\n            if (Array.isArray(context?.question?.content)) {\n              for (const content of context.question.content) {\n                const selectOrCreateAnswer = (0, _getAnswersFrom.getAnswersFrom)([], {\n                  client: this.args.clientRecord,\n                  induction: context.inductionID,\n                  repeatToken: context.repeat,\n                  answersLocation: `${context.chapterID}.${context.pageID}.${context.question.id}`,\n                  filterByID: personID\n                });\n                this.getRequiredDocuments(results, {\n                  ...context,\n                  question: content\n                }, selectOrCreateAnswer);\n              }\n            }\n          }\n        }\n        return;\n      }\n\n      // Single SOC\n      if (Array.isArray(context?.question?.content)) {\n        for (const content of context.question.content) {\n          const selectOrCreateAnswer = (0, _getAnswersFrom.getAnswersFrom)([], {\n            client: this.args.clientRecord,\n            induction: context.inductionID,\n            repeatToken: context.repeat,\n            answersLocation: `${context.chapterID}.${context.pageID}.${context.question.id}`,\n            filterByID: answerObject\n          });\n          this.getRequiredDocuments(results, {\n            ...context,\n            question: content\n          }, selectOrCreateAnswer);\n        }\n      }\n    }\n    getImmutableListRequiredDocuments(results, context) {\n      let sourceList = context.question?.sourceListIDs || this.args.clientRecord?.knownEntities || [];\n      if (typeof sourceList === \"string\") {\n        // It is a string of locations to build a source list, e.g. \"chapter1.page2.question3\"\n        sourceList = sourceList.split(/[\\s,;]+/).flatMap(sourceItem => {\n          const trimmedSourceItem = sourceItem.trim();\n          return (0, _getAnswersFrom.getAnswersFrom)([], {\n            client: this.args.clientRecord,\n            induction: context.inductionID,\n            chapter: context.chapterID,\n            page: context.pageID,\n            repeatToken: context.repeat,\n            loop: context.loop,\n            answersLocation: trimmedSourceItem\n          });\n        });\n      }\n      if (Array.isArray(sourceList)) {\n        for (const listItem of sourceList) {\n          if (Array.isArray(context?.question?.content)) {\n            for (const content of context.question.content) {\n              this.getRequiredDocuments(results, {\n                ...context,\n                question: content\n              }, listItem);\n            }\n          }\n        }\n      }\n    }\n    shouldDisplay(context, answers) {\n      const displayContext = {\n        induction: context.inductionID,\n        chapter: context.chapterID,\n        page: context.pageID,\n        repeat: context.repeat,\n        answersLocation: context.answersLocation\n      };\n      return this.questionnaireLogic.computeDisplayIf(context.question, this.args.clientRecord, displayContext, answers);\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"questionnaireLogic\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"requestedDocumentList\", [_tracking.cached], Object.getOwnPropertyDescriptor(_class.prototype, \"requestedDocumentList\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, DocumentsRequestedListComponent);\n});","define(\"settify-mvp/components/v2/dropdown/content\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @isOpen}}\n    <div data-test-dropdown-content>\n      {{yield}}\n    </div>\n  {{/if}}\n  */\n  {\n    \"id\": \"BITcYxfz\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[10,0],[14,\\\"data-test-dropdown-content\\\",\\\"\\\"],[12],[1,\\\"\\\\n    \\\"],[18,2,null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@isOpen\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/dropdown/content.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/v2/dropdown/header\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div data-test-dropdown-header>\n    {{yield}}\n  </div>\n  */\n  {\n    \"id\": \"oVMcru3n\",\n    \"block\": \"[[[10,0],[14,\\\"data-test-dropdown-header\\\",\\\"\\\"],[12],[1,\\\"\\\\n  \\\"],[18,1,null],[1,\\\"\\\\n\\\"],[13]],[\\\"&default\\\"],false,[\\\"div\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/dropdown/header.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/v2/dropdown/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div id={{concat \"dropdown-\" @id}} {{on \"click\" (fn this.toggleDropdown @parameters)}} {{on-click-outside @clickedOutside}} role={{this.role}} aria-orientation=\"vertical\" data-test-dropdown>\n    {{yield (hash\n      header=(component \"v2/dropdown/header\")\n      content=(component \"v2/dropdown/content\")\n    )}}\n  </div>\n  */\n  {\n    \"id\": \"txpQR/Vd\",\n    \"block\": \"[[[11,0],[16,1,[28,[37,1],[\\\"dropdown-\\\",[30,1]],null]],[16,\\\"role\\\",[30,0,[\\\"role\\\"]]],[24,\\\"aria-orientation\\\",\\\"vertical\\\"],[24,\\\"data-test-dropdown\\\",\\\"\\\"],[4,[38,2],[\\\"click\\\",[28,[37,3],[[30,0,[\\\"toggleDropdown\\\"]],[30,2]],null]],null],[4,[38,4],[[30,3]],null],[12],[1,\\\"\\\\n  \\\"],[18,4,[[28,[37,6],null,[[\\\"header\\\",\\\"content\\\"],[[50,\\\"v2/dropdown/header\\\",0,null,null],[50,\\\"v2/dropdown/content\\\",0,null,null]]]]]],[1,\\\"\\\\n\\\"],[13]],[\\\"@id\\\",\\\"@parameters\\\",\\\"@clickedOutside\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"concat\\\",\\\"on\\\",\\\"fn\\\",\\\"on-click-outside\\\",\\\"yield\\\",\\\"hash\\\",\\\"component\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/dropdown/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component representing a dropdown.\n   * @class DropdownComponent\n   * @extends Component\n   * @param {string} [this.args.role] - Defines role of the dropdown\n   * @param {arguments} [this.args.parameters] - Parameters for the toggleDropdown function\n   * @param {function} [this.args.toggleDropdown] - REQUIRED: Action called by clicking on the dropdown. Used for toggling between the states (open/close).\n   * @param {function} [this.args.clickedOutside] - REQUIRED: Action called by clicking outside of the dropdown. Used to close the dropdown.\n   */\n  let DropdownComponent = _exports.default = (_class = class DropdownComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _defineProperty(this, \"role\", this.args.role || \"menu\");\n    }\n    toggleDropdown(parameters, event) {\n      this.args.toggleDropdown(parameters, event);\n    }\n  }, _applyDecoratedDescriptor(_class.prototype, \"toggleDropdown\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleDropdown\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, DropdownComponent);\n});","define(\"settify-mvp/components/v2/email-input/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object/internals\", \"@ember/object\", \"@glimmer/tracking\", \"@ember/runloop\", \"settify-mvp/utils/email-utils\", \"@ember/template-factory\"], function (_exports, _component, _component2, _internals, _object, _tracking, _runloop, _emailUtils, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object/internals\",0,\"@ember/object\",0,\"@glimmer/tracking\",0,\"@ember/runloop\",0,\"settify-mvp/utils/email-utils\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::Textline\n    @id={{this.id}}\n    @value={{@value}}\n    @label={{@label}}\n    @type=\"email\"\n    @onChange={{this.checkValidation}}\n    @required={{@required}}\n    placeholder={{@placeholder}}\n    name={{or @name \"email\"}}\n    aria-describedby={{if this.showWarning (concat this.id \"-warning\")}}\n    aria-required={{if @required \"true\"}}\n    aria-invalid={{if this.showWarning \"true\"}}\n    ...attributes\n  />\n  {{#if this.showWarning}}\n    <span class=\"text-sm text-red-600\" id=\"{{this.id}}-warning\" role=\"alert\" aria-live=\"assertive\">\n      That doesn't look like a valid email address to us.\n    </span>\n  {{/if}}\n  */\n  {\n    \"id\": \"p4A2roND\",\n    \"block\": \"[[[8,[39,0],[[16,\\\"placeholder\\\",[30,1]],[16,3,[28,[37,1],[[30,2],\\\"email\\\"],null]],[16,\\\"aria-describedby\\\",[52,[30,0,[\\\"showWarning\\\"]],[28,[37,3],[[30,0,[\\\"id\\\"]],\\\"-warning\\\"],null]]],[16,\\\"aria-required\\\",[52,[30,3],\\\"true\\\"]],[16,\\\"aria-invalid\\\",[52,[30,0,[\\\"showWarning\\\"]],\\\"true\\\"]],[17,4]],[[\\\"@id\\\",\\\"@value\\\",\\\"@label\\\",\\\"@type\\\",\\\"@onChange\\\",\\\"@required\\\"],[[30,0,[\\\"id\\\"]],[30,5],[30,6],\\\"email\\\",[30,0,[\\\"checkValidation\\\"]],[30,3]]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showWarning\\\"]],[[[1,\\\"  \\\"],[10,1],[14,0,\\\"text-sm text-red-600\\\"],[15,1,[29,[[30,0,[\\\"id\\\"]],\\\"-warning\\\"]]],[14,\\\"role\\\",\\\"alert\\\"],[14,\\\"aria-live\\\",\\\"assertive\\\"],[12],[1,\\\"\\\\n    That doesn't look like a valid email address to us.\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@placeholder\\\",\\\"@name\\\",\\\"@required\\\",\\\"&attrs\\\",\\\"@value\\\",\\\"@label\\\"],false,[\\\"v2/textline\\\",\\\"or\\\",\\\"if\\\",\\\"concat\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/email-input/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component representing an email input field with validation.\n   * @class EmailInputComponent\n   * @param {string} this.args.value - The value of the email input field.\n   * @param {string} [this.args.id] - ID of the email input. If not provided, a unique ID will be generated.\n   * @param {string} [this.args.label] - Text above the email input.\n   * @param {string} [this.args.placeholder] - Help text in the input field.\n   * @param {boolean} [this.args.required] - Handles required state of the email input.\n   * @param {boolean} [this.args.validation] - Property which handles validation of the email.\n   * @param {function} [this.args.setEmailValidation] - Action which sets the state of the validation property.\n   *\n   * @example\n   * ```hbs\n   * <EmailInput @value={{this.email}} @label=\"Email Address\" @placeholder=\"Enter your email address\" @required={{true}} @setEmailValidation={{this.setEmailValidation}} />\n   * ```\n   */\n  let EmailInputComponent = _exports.default = (_class = class EmailInputComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"showWarning\", _descriptor, this);\n    }\n    /**\n     * Returns the id for the email input element.\n     * If no id is provided in the arguments, a default id is generated using `guidFor`.\n     * @returns {String} A unique ID.\n     */\n    get id() {\n      return this.args.id ?? `email-component-${(0, _internals.guidFor)(this)}`;\n    }\n\n    /**\n     * Debounces the validate function to avoid frequent validation checks during typing.\n     * Calls the validate function with a delay of 750 milliseconds.\n     * @param {string} newValue - The new value of the email input.\n     */\n    checkValidation(newValue) {\n      (0, _runloop.debounce)(this, this.validate, newValue, 750);\n    }\n\n    /**\n     * Validates the email input value using the validateEmail function.\n     * Sets the showWarning flag based on a validation result.\n     * Calls setEmailValidation action with the validation result.\n     * @param {string} email - The email value to be validated.\n     */\n    validate(email) {\n      if (this.isDestroyed || this.isDestroying) return;\n      const isEmailValid = (0, _emailUtils.isValidEmailAddress)(email);\n      this.showWarning = !isEmailValid; // Show warning if it isn't valid\n      if (typeof this.args.setEmailValidation === \"function\") {\n        this.args.setEmailValidation(isEmailValid);\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"showWarning\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"checkValidation\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"checkValidation\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, EmailInputComponent);\n});","define(\"settify-mvp/components/v2/file-input/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@glimmer/tracking\", \"@ember/object/internals\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _tracking, _internals, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@glimmer/tracking\",0,\"@ember/object/internals\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <fieldset class=\"flex w-full items-center justify-center\">\n    {{#if (or (has-block) @label)}}\n      <legend id=\"{{this.id}}-label\" class=\"mb-2 block {{if @required 'required-field-marker'}}\">\n        {{#if (has-block)}}\n          {{yield}}\n        {{else}}\n          {{@label}}\n        {{/if}}\n      </legend>\n    {{/if}}\n  \n    <label\n      class=\"relative h-32 w-full cursor-pointer rounded-lg border-2 border-dashed bg-gray-50 hover:border-gray-400 hover:bg-gray-100\n        {{if this.dragOverEnabled 'border-brand-primary-color-rgb' 'border-gray-300'}}\"\n      {{on \"dragover\" this.handleDragOver}}\n      {{on \"dragenter\" this.handleDragEnter}}\n      {{on \"drop\" this.handleDrop}}\n      {{on \"dragleave\" this.handleDragLeave}}\n      ...attributes\n    >\n      <div class=\"pointer-events-none flex select-none flex-col items-center justify-center gap-4 pb-6 pt-5 text-gray-500\">\n        <V2::SvgIcon @icon=\"cloud-arrow-up\" class=\"size-8 text-gray-500\" />\n        <p>\n          {{#if this.dragOverEnabled}}\n            <span class=\"font-semibold text-gray-700\">Drop files to upload.</span>\n          {{else}}\n            <span class=\"font-semibold\">Click to upload</span>\n            <span class=\"hidden sm:inline\">or drag and drop</span>\n          {{/if}}\n        </p>\n      </div>\n      <input type=\"file\" id={{this.id}} accept={{@accept}} name={{@name}} multiple={{@multiple}} required={{@required}} class=\"hidden\" {{on \"change\" this.handleFileSelect}} />\n    </label>\n  </fieldset>\n  {{#if this.showWarning}}\n    <span class=\"text-sm text-red-600\" id=\"{{this.id}}-warning\" role=\"alert\" aria-live=\"assertive\">\n      Some files were not accepted. Accepted file types:\n      {{@accept}}\n    </span>\n  {{/if}}\n  */\n  {\n    \"id\": \"eOm2C+1D\",\n    \"block\": \"[[[10,\\\"fieldset\\\"],[14,0,\\\"flex w-full items-center justify-center\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,2],[[48,[30,7]],[30,1]],null],[[[1,\\\"    \\\"],[10,\\\"legend\\\"],[15,1,[29,[[30,0,[\\\"id\\\"]],\\\"-label\\\"]]],[15,0,[29,[\\\"mb-2 block \\\",[52,[30,2],\\\"required-field-marker\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[48,[30,7]],[[[1,\\\"        \\\"],[18,7,null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[1,[30,1]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[11,\\\"label\\\"],[16,0,[29,[\\\"relative h-32 w-full cursor-pointer rounded-lg border-2 border-dashed bg-gray-50 hover:border-gray-400 hover:bg-gray-100\\\\n      \\\",[52,[30,0,[\\\"dragOverEnabled\\\"]],\\\"border-brand-primary-color-rgb\\\",\\\"border-gray-300\\\"]]]],[17,3],[4,[38,7],[\\\"dragover\\\",[30,0,[\\\"handleDragOver\\\"]]],null],[4,[38,7],[\\\"dragenter\\\",[30,0,[\\\"handleDragEnter\\\"]]],null],[4,[38,7],[\\\"drop\\\",[30,0,[\\\"handleDrop\\\"]]],null],[4,[38,7],[\\\"dragleave\\\",[30,0,[\\\"handleDragLeave\\\"]]],null],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"pointer-events-none flex select-none flex-col items-center justify-center gap-4 pb-6 pt-5 text-gray-500\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,9],[[24,0,\\\"size-8 text-gray-500\\\"]],[[\\\"@icon\\\"],[\\\"cloud-arrow-up\\\"]],null],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"dragOverEnabled\\\"]],[[[1,\\\"          \\\"],[10,1],[14,0,\\\"font-semibold text-gray-700\\\"],[12],[1,\\\"Drop files to upload.\\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[10,1],[14,0,\\\"font-semibold\\\"],[12],[1,\\\"Click to upload\\\"],[13],[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"hidden sm:inline\\\"],[12],[1,\\\"or drag and drop\\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[11,\\\"input\\\"],[16,1,[30,0,[\\\"id\\\"]]],[16,\\\"accept\\\",[30,4]],[16,3,[30,5]],[16,\\\"multiple\\\",[30,6]],[16,\\\"required\\\",[30,2]],[24,0,\\\"hidden\\\"],[24,4,\\\"file\\\"],[4,[38,7],[\\\"change\\\",[30,0,[\\\"handleFileSelect\\\"]]],null],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showWarning\\\"]],[[[1,\\\"  \\\"],[10,1],[14,0,\\\"text-sm text-red-600\\\"],[15,1,[29,[[30,0,[\\\"id\\\"]],\\\"-warning\\\"]]],[14,\\\"role\\\",\\\"alert\\\"],[14,\\\"aria-live\\\",\\\"assertive\\\"],[12],[1,\\\"\\\\n    Some files were not accepted. Accepted file types:\\\\n    \\\"],[1,[30,4]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@label\\\",\\\"@required\\\",\\\"&attrs\\\",\\\"@accept\\\",\\\"@name\\\",\\\"@multiple\\\",\\\"&default\\\"],false,[\\\"fieldset\\\",\\\"if\\\",\\\"or\\\",\\\"has-block\\\",\\\"legend\\\",\\\"yield\\\",\\\"label\\\",\\\"on\\\",\\\"div\\\",\\\"v2/svg-icon\\\",\\\"p\\\",\\\"span\\\",\\\"input\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/file-input/index.hbs\",\n    \"isStrictMode\": false\n  });\n  let FileInputComponent = _exports.default = (_class = class FileInputComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"dragOverEnabled\", _descriptor, this);\n      // Tracks whether drag-over effect is active\n      _initializerDefineProperty(this, \"showWarning\", _descriptor2, this);\n    }\n    get id() {\n      return this.args.id ?? `doc-upload-${(0, _internals.guidFor)(this)}`;\n    }\n\n    /**\n     * Handle file upload via the input element.\n     * @param {Event} event - The change event triggered by file input.\n     */\n    handleFileSelect(event) {\n      this.processSelectedFiles(event.target.files, event);\n      event.target.value = \"\"; // Reset the value of the input so the onchange event will fire again\n    }\n\n    /**\n     * Handles file drop event.\n     * @param {DragEvent} event - The drop event.\n     */\n    async handleDrop(event) {\n      event.preventDefault();\n      this.dragOverEnabled = false;\n      if (event.dataTransfer.items) {\n        const filesToUpload = await this.getFilesFromDataTransferItems(event.dataTransfer.items);\n        this.processSelectedFiles(filesToUpload, event);\n        return;\n      }\n      this.processSelectedFiles(event.dataTransfer.files, event);\n    }\n\n    /**\n     * Retrieves files from drag-and-drop data transfer items.\n     * @param {DataTransferItemList} items - List of drag-and-drop items.\n     * @returns {Promise<Array<File>>} A promise resolving to an array of File objects.\n     */\n    async getFilesFromDataTransferItems(items) {\n      const filePromises = [];\n      for (const item of items) {\n        const entry = item.webkitGetAsEntry();\n        if (!entry) continue;\n        filePromises.push(...(await this.getFilesFromEntry(entry)));\n      }\n      return Promise.all(filePromises);\n    }\n\n    /**\n     * Retrieves files from a file system entry (file or directory).\n     * @param {FileSystemFileEntry|FileSystemDirectoryEntry} entry - The File or directory entry.\n     * @returns {Promise<Array<File>>} A promise resolving to an array of File objects.\n     */\n    async getFilesFromEntry(entry) {\n      if (entry.isFile) return [new Promise(resolve => entry.file(resolve))];\n      if (entry.isDirectory) return this.getFilesFromDirectory(entry);\n      return [];\n    }\n\n    /**\n     * Retrieves files nested within a directory entry.\n     * @param {FileSystemDirectoryEntry} directory - The directory entry.\n     * @returns {Promise<Array<File>>} A promise resolving to an array of File objects.\n     */\n    async getFilesFromDirectory(directory) {\n      const reader = directory.createReader();\n      const entries = await new Promise((resolve, reject) => reader.readEntries(resolve, reject));\n      const filePromises = [];\n      for (const entry of entries) {\n        filePromises.push(...(await this.getFilesFromEntry(entry)));\n      }\n      return filePromises;\n    }\n\n    /**\n     * Processes the selected/dropped files and invokes the onChange callback with only accepted file types.\n     * @param {FileList|Array} files - The files to process.\n     * @param {Event} event - The event that triggered the file selection.\n     */\n    processSelectedFiles(files, event) {\n      if (typeof this.args.onChange === \"function\") {\n        const fileList = Array.from(files);\n        const acceptedFiles = fileList.filter(file => this.isAcceptedFileType(file));\n        this.showWarning = acceptedFiles.length < fileList.length;\n        this.args.onChange(acceptedFiles, event);\n      }\n    }\n\n    /**\n     * Check if the file type is accepted based on the accept attribute.\n     * @param {File} file - The file to check.\n     * @returns {boolean} - True if the file type is accepted, otherwise false.\n     */\n    isAcceptedFileType(file) {\n      if (!this.args.accept) {\n        return true;\n      }\n      const acceptedTypes = this.args.accept.split(\",\").map(type => type.trim());\n      return acceptedTypes.some(type => {\n        if (type.startsWith(\".\")) return file.name.toLowerCase().endsWith(type.toLowerCase()); // An extension, so lets see if the file name (which includes the extension) ends with this extension type\n        return file.type.toLowerCase() === type.toLowerCase();\n      });\n    }\n\n    /**\n     * Handle drag over event to allow file drop.\n     * This event handler is crucial because, by default, the browser does not allow dropping files.\n     * @param {Event} event - The drag over event.\n     */\n    handleDragOver(event) {\n      event.preventDefault();\n    }\n    handleDragEnter(event) {\n      event.preventDefault();\n      this.dragOverEnabled = true;\n    }\n    handleDragLeave(event) {\n      event.preventDefault();\n      this.dragOverEnabled = false;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"dragOverEnabled\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"showWarning\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"handleFileSelect\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleFileSelect\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleDrop\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleDrop\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleDragOver\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleDragOver\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleDragEnter\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleDragEnter\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleDragLeave\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleDragLeave\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, FileInputComponent);\n});","define(\"settify-mvp/components/v2/firm-facing-summary/chapter-summary/index\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#unless (or @chapter.hideInClientSummary @chapter.deleted)}}\n    <div class=\"bold image-wrapper\">\n      {{! Chapter heading }}\n      {{#if @chapter.icon}}\n        <img src={{concat \"https://cdn.settify.com.au/icons/\" (de-fingerprint @chapter.icon)}} alt=\"\" aria-hidden=\"true\" class=\"size-6\" />\n      {{/if}}\n      <h3>\n        {{parse-text\n          (or @chapter.shortTitle @chapter.title)\n          touch=@clientRecord.touch\n          clientRecord=@clientRecord\n          context=(hash induction=@induction.id chapter=@chapter.id repeat=@induction.repeatToken)\n        }}\n      </h3>\n    </div>\n    <table class=\"chapter-contents settify-summary\">\n      <tbody>\n        {{#each @chapter.pages as |page|}}\n          <V2::FirmFacingSummary::PageSummary\n            @induction={{@induction}}\n            @chapter={{@chapter}}\n            @page={{page}}\n            @clientRecord={{@clientRecord}}\n            @computeDisplayIf={{@computeDisplayIf}}\n            @routeOverride={{@routeOverride}}\n          />\n        {{/each}}\n      </tbody>\n    </table>\n  {{/unless}}\n  */\n  {\n    \"id\": \"aY+yrW18\",\n    \"block\": \"[[[41,[51,[28,[37,1],[[30,1,[\\\"hideInClientSummary\\\"]],[30,1,[\\\"deleted\\\"]]],null]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"bold image-wrapper\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"icon\\\"]],[[[1,\\\"      \\\"],[10,\\\"img\\\"],[15,\\\"src\\\",[28,[37,5],[\\\"https://cdn.settify.com.au/icons/\\\",[28,[37,6],[[30,1,[\\\"icon\\\"]]],null]],null]],[14,\\\"alt\\\",\\\"\\\"],[14,\\\"aria-hidden\\\",\\\"true\\\"],[14,0,\\\"size-6\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[10,\\\"h3\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[28,[35,8],[[28,[37,1],[[30,1,[\\\"shortTitle\\\"]],[30,1,[\\\"title\\\"]]],null]],[[\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,2,[\\\"touch\\\"]],[30,2],[28,[37,9],null,[[\\\"induction\\\",\\\"chapter\\\",\\\"repeat\\\"],[[30,3,[\\\"id\\\"]],[30,1,[\\\"id\\\"]],[30,3,[\\\"repeatToken\\\"]]]]]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,\\\"table\\\"],[14,0,\\\"chapter-contents settify-summary\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,13],[[28,[37,13],[[30,1,[\\\"pages\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[8,[39,14],null,[[\\\"@induction\\\",\\\"@chapter\\\",\\\"@page\\\",\\\"@clientRecord\\\",\\\"@computeDisplayIf\\\",\\\"@routeOverride\\\"],[[30,3],[30,1],[30,4],[30,2],[30,5],[30,6]]],null],[1,\\\"\\\\n\\\"]],[4]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@chapter\\\",\\\"@clientRecord\\\",\\\"@induction\\\",\\\"page\\\",\\\"@computeDisplayIf\\\",\\\"@routeOverride\\\"],false,[\\\"unless\\\",\\\"or\\\",\\\"div\\\",\\\"if\\\",\\\"img\\\",\\\"concat\\\",\\\"de-fingerprint\\\",\\\"h3\\\",\\\"parse-text\\\",\\\"hash\\\",\\\"table\\\",\\\"tbody\\\",\\\"each\\\",\\\"-track-array\\\",\\\"v2/firm-facing-summary/page-summary\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/firm-facing-summary/chapter-summary/index.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/v2/firm-facing-summary/index\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"summary-element-header my-4 flex gap-2 rounded-md bg-brand-primary-color-rgb py-1 text-white\">\n    <h2 class=\"grow text-center text-lg font-semibold leading-7 sm:truncate sm:text-xl sm:tracking-tight\">\n      Summary\n    </h2>\n  </div>\n  <div class=\"flex flex-col\">\n    {{#each @induction.chapters as |chapter|}}\n      <V2::FirmFacingSummary::ChapterSummary @induction={{@induction}} @chapter={{chapter}} @clientRecord={{@clientRecord}} @computeDisplayIf={{@computeDisplayIf}} />\n    {{/each}}\n  </div>\n  */\n  {\n    \"id\": \"xfrMFz3i\",\n    \"block\": \"[[[10,0],[14,0,\\\"summary-element-header my-4 flex gap-2 rounded-md bg-brand-primary-color-rgb py-1 text-white\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"h2\\\"],[14,0,\\\"grow text-center text-lg font-semibold leading-7 sm:truncate sm:text-xl sm:tracking-tight\\\"],[12],[1,\\\"\\\\n    Summary\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"],[10,0],[14,0,\\\"flex flex-col\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,3],[[28,[37,3],[[30,1,[\\\"chapters\\\"]]],null]],null],null,[[[1,\\\"    \\\"],[8,[39,4],null,[[\\\"@induction\\\",\\\"@chapter\\\",\\\"@clientRecord\\\",\\\"@computeDisplayIf\\\"],[[30,1],[30,2],[30,3],[30,4]]],null],[1,\\\"\\\\n\\\"]],[2]],null],[13]],[\\\"@induction\\\",\\\"chapter\\\",\\\"@clientRecord\\\",\\\"@computeDisplayIf\\\"],false,[\\\"div\\\",\\\"h2\\\",\\\"each\\\",\\\"-track-array\\\",\\\"v2/firm-facing-summary/chapter-summary\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/firm-facing-summary/index.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/v2/firm-facing-summary/page-summary/index\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#unless (or @page.hideInClientSummary @page.deleted)}}\n    <tr>\n      {{! Page heading }}\n      <td class=\"page-contents\">\n        <h4 class=\"page-title font-semibold text-gray-600\">\n          {{parse-text\n            (or @page.shortTitle @page.title)\n            touch=@clientRecord.touch\n            clientRecord=@clientRecord\n            context=(hash induction=@induction.id chapter=@chapter.id repeat=@induction.repeatToken)\n          }}\n        </h4>\n      </td>\n      <td>\n        {{! Page content }}\n        {{#if (and @page.answersLocation @page.answersLocationLoop)}}\n          {{! Loop over each item in the answers model }}\n          {{#each\n            (get-answers-from\n              client=@clientRecord induction=@induction.id chapter=@chapter.id page=@page.id answersLocation=@page.answersLocation repeatToken=@induction.repeatToken create=true\n            )\n            as |loopAnswer loop|\n          }}\n            {{#let\n              (get-answers-from\n                client=@clientRecord\n                induction=@induction.id\n                chapter=@chapter.id\n                page=@page.id\n                answersLocation=@page.answersLocation\n                loop=loop\n                repeatToken=@induction.repeatToken\n                create=true\n              )\n              as |pageModel|\n            }}\n              {{#each @page.questions as |question|}}\n                <V2::FirmFacingSummary::QuestionSummary\n                  @clientRecord={{@clientRecord}}\n                  @induction={{@induction}}\n                  @chapter={{@chapter}}\n                  @page={{@page}}\n                  @question={{question}}\n                  @pageModel={{pageModel}}\n                  @computeDisplayIf={{@computeDisplayIf}}\n                />\n              {{/each}}\n            {{/let}}\n          {{/each}}\n        {{else}}\n          {{#let\n            (get-answers-from\n              client=@clientRecord induction=@induction.id chapter=@chapter.id page=@page.id answersLocation=@page.answersLocation repeatToken=@induction.repeatToken create=true\n            )\n            as |pageModel|\n          }}\n            {{#each @page.questions as |question|}}\n              <V2::FirmFacingSummary::QuestionSummary\n                @clientRecord={{@clientRecord}}\n                @induction={{@induction}}\n                @chapter={{@chapter}}\n                @page={{@page}}\n                @question={{question}}\n                @pageModel={{pageModel}}\n                @computeDisplayIf={{@computeDisplayIf}}\n              />\n            {{/each}}\n          {{/let}}\n        {{/if}}\n  \n        {{#let\n          (get\n            (get-answers-from\n              client=@clientRecord induction=@induction.id chapter=@chapter.id page=@page.id answersLocation=@page.answersLocation repeatToken=@induction.repeatToken create=true\n            )\n            \"settifyMoreInfo\"\n          )\n          as |moreInfoString|\n        }}\n          {{#if moreInfoString}}\n            <p>\n              More information:\n              {{moreInfoString}}\n            </p>\n          {{/if}}\n        {{/let}}\n      </td>\n    </tr>\n  {{/unless}}\n  */\n  {\n    \"id\": \"WJq9HZ3c\",\n    \"block\": \"[[[41,[51,[28,[37,1],[[30,1,[\\\"hideInClientSummary\\\"]],[30,1,[\\\"deleted\\\"]]],null]],[[[1,\\\"  \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"    \\\"],[10,\\\"td\\\"],[14,0,\\\"page-contents\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"h4\\\"],[14,0,\\\"page-title font-semibold text-gray-600\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[28,[35,5],[[28,[37,1],[[30,1,[\\\"shortTitle\\\"]],[30,1,[\\\"title\\\"]]],null]],[[\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,2,[\\\"touch\\\"]],[30,2],[28,[37,6],null,[[\\\"induction\\\",\\\"chapter\\\",\\\"repeat\\\"],[[30,3,[\\\"id\\\"]],[30,4,[\\\"id\\\"]],[30,3,[\\\"repeatToken\\\"]]]]]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,8],[[30,1,[\\\"answersLocation\\\"]],[30,1,[\\\"answersLocationLoop\\\"]]],null],[[[42,[28,[37,10],[[28,[37,10],[[28,[37,11],null,[[\\\"client\\\",\\\"induction\\\",\\\"chapter\\\",\\\"page\\\",\\\"answersLocation\\\",\\\"repeatToken\\\",\\\"create\\\"],[[30,2],[30,3,[\\\"id\\\"]],[30,4,[\\\"id\\\"]],[30,1,[\\\"id\\\"]],[30,1,[\\\"answersLocation\\\"]],[30,3,[\\\"repeatToken\\\"]],true]]]],null]],null],null,[[[44,[[28,[37,11],null,[[\\\"client\\\",\\\"induction\\\",\\\"chapter\\\",\\\"page\\\",\\\"answersLocation\\\",\\\"loop\\\",\\\"repeatToken\\\",\\\"create\\\"],[[30,2],[30,3,[\\\"id\\\"]],[30,4,[\\\"id\\\"]],[30,1,[\\\"id\\\"]],[30,1,[\\\"answersLocation\\\"]],[30,6],[30,3,[\\\"repeatToken\\\"]],true]]]],[[[42,[28,[37,10],[[28,[37,10],[[30,1,[\\\"questions\\\"]]],null]],null],null,[[[1,\\\"              \\\"],[8,[39,13],null,[[\\\"@clientRecord\\\",\\\"@induction\\\",\\\"@chapter\\\",\\\"@page\\\",\\\"@question\\\",\\\"@pageModel\\\",\\\"@computeDisplayIf\\\"],[[30,2],[30,3],[30,4],[30,1],[30,8],[30,7],[30,9]]],null],[1,\\\"\\\\n\\\"]],[8]],null]],[7]]]],[5,6]],null]],[]],[[[44,[[28,[37,11],null,[[\\\"client\\\",\\\"induction\\\",\\\"chapter\\\",\\\"page\\\",\\\"answersLocation\\\",\\\"repeatToken\\\",\\\"create\\\"],[[30,2],[30,3,[\\\"id\\\"]],[30,4,[\\\"id\\\"]],[30,1,[\\\"id\\\"]],[30,1,[\\\"answersLocation\\\"]],[30,3,[\\\"repeatToken\\\"]],true]]]],[[[42,[28,[37,10],[[28,[37,10],[[30,1,[\\\"questions\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[8,[39,13],null,[[\\\"@clientRecord\\\",\\\"@induction\\\",\\\"@chapter\\\",\\\"@page\\\",\\\"@question\\\",\\\"@pageModel\\\",\\\"@computeDisplayIf\\\"],[[30,2],[30,3],[30,4],[30,1],[30,11],[30,10],[30,9]]],null],[1,\\\"\\\\n\\\"]],[11]],null]],[10]]]],[]]],[1,\\\"\\\\n\\\"],[44,[[28,[37,14],[[28,[37,11],null,[[\\\"client\\\",\\\"induction\\\",\\\"chapter\\\",\\\"page\\\",\\\"answersLocation\\\",\\\"repeatToken\\\",\\\"create\\\"],[[30,2],[30,3,[\\\"id\\\"]],[30,4,[\\\"id\\\"]],[30,1,[\\\"id\\\"]],[30,1,[\\\"answersLocation\\\"]],[30,3,[\\\"repeatToken\\\"]],true]]],\\\"settifyMoreInfo\\\"],null]],[[[41,[30,12],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            More information:\\\\n            \\\"],[1,[30,12]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[12]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@page\\\",\\\"@clientRecord\\\",\\\"@induction\\\",\\\"@chapter\\\",\\\"loopAnswer\\\",\\\"loop\\\",\\\"pageModel\\\",\\\"question\\\",\\\"@computeDisplayIf\\\",\\\"pageModel\\\",\\\"question\\\",\\\"moreInfoString\\\"],false,[\\\"unless\\\",\\\"or\\\",\\\"tr\\\",\\\"td\\\",\\\"h4\\\",\\\"parse-text\\\",\\\"hash\\\",\\\"if\\\",\\\"and\\\",\\\"each\\\",\\\"-track-array\\\",\\\"get-answers-from\\\",\\\"let\\\",\\\"v2/firm-facing-summary/question-summary\\\",\\\"get\\\",\\\"p\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/firm-facing-summary/page-summary/index.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/v2/firm-facing-summary/question-summary/index\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#unless (or @question.hideInClientSummary @question.deleted)}}\n    {{#if\n      (should-display\n        question=@question\n        clientRecord=@clientRecord\n        context=(hash induction=@induction.id chapter=@chapter.id page=@page.id repeat=@induction.repeatToken)\n        touch=@clientRecord.touch\n        model=@pageModel\n      )\n    }}\n      <SettifyInputSwitcher\n        @question={{@question}}\n        @model={{@pageModel}}\n        @clientRecord={{@clientRecord}}\n        @displayOnly={{true}}\n        @adminMode={{true}}\n        @context={{hash\n          induction=@induction.id\n          chapter=@chapter.id\n          page=@page.id\n          repeat=@induction.repeatToken\n          answersLocation=@page.answersLocation\n          answersLocationLoop=@page.answersLocationLoop\n        }}\n      />\n    {{/if}}\n  {{/unless}}\n  */\n  {\n    \"id\": \"v778Zttt\",\n    \"block\": \"[[[41,[51,[28,[37,1],[[30,1,[\\\"hideInClientSummary\\\"]],[30,1,[\\\"deleted\\\"]]],null]],[[[41,[28,[37,3],null,[[\\\"question\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"touch\\\",\\\"model\\\"],[[30,1],[30,2],[28,[37,4],null,[[\\\"induction\\\",\\\"chapter\\\",\\\"page\\\",\\\"repeat\\\"],[[30,3,[\\\"id\\\"]],[30,4,[\\\"id\\\"]],[30,5,[\\\"id\\\"]],[30,3,[\\\"repeatToken\\\"]]]]],[30,2,[\\\"touch\\\"]],[30,6]]]],[[[1,\\\"    \\\"],[8,[39,5],null,[[\\\"@question\\\",\\\"@model\\\",\\\"@clientRecord\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\",\\\"@context\\\"],[[30,1],[30,6],[30,2],true,true,[28,[37,4],null,[[\\\"induction\\\",\\\"chapter\\\",\\\"page\\\",\\\"repeat\\\",\\\"answersLocation\\\",\\\"answersLocationLoop\\\"],[[30,3,[\\\"id\\\"]],[30,4,[\\\"id\\\"]],[30,5,[\\\"id\\\"]],[30,3,[\\\"repeatToken\\\"]],[30,5,[\\\"answersLocation\\\"]],[30,5,[\\\"answersLocationLoop\\\"]]]]]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]],null]],[\\\"@question\\\",\\\"@clientRecord\\\",\\\"@induction\\\",\\\"@chapter\\\",\\\"@page\\\",\\\"@pageModel\\\"],false,[\\\"unless\\\",\\\"or\\\",\\\"if\\\",\\\"should-display\\\",\\\"hash\\\",\\\"settify-input-switcher\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/firm-facing-summary/question-summary/index.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/v2/grid-input/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/service\", \"@ember/object\", \"@ember/utils\", \"@glimmer/tracking\", \"settify-mvp/utils/defaults-object-initializer\", \"settify-mvp/helpers/get-answers-from\", \"settify-mvp/utils/is-empty-object-checker\", \"@ember/template-factory\"], function (_exports, _component, _component2, _service, _object, _utils, _tracking, _defaultsObjectInitializer, _getAnswersFrom, _isEmptyObjectChecker, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _GridInputComponent_brand;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/service\",0,\"@ember/object\",0,\"@ember/utils\",0,\"@glimmer/tracking\",0,\"settify-mvp/utils/defaults-object-initializer\",0,\"settify-mvp/helpers/get-answers-from\",0,\"settify-mvp/utils/is-empty-object-checker\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }\n  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <table class=\"grid-input block w-full md:table\">\n    <thead class=\"block md:table-header-group\">\n      {{#if @showColumnHeaders}}\n        <tr class=\"hidden md:table-row\">\n          {{#each @columns as |column|}}\n            {{#if (should-display question=column clientRecord=@clientRecord context=@context formLogic=this.formLogic touch=@clientRecord.touch model=@rows)}}\n              <th class=\"block pr-2 text-left md:table-cell\">\n                {{parse-text column.columnHeader model=column clientRecord=@clientRecord context=@context}}\n              </th>\n            {{/if}}\n          {{/each}}\n          <th class=\"delete-column\"></th>\n        </tr>\n      {{/if}}\n    </thead>\n    <tbody class=\"block md:table-row-group\">\n      {{#each this.sourcedRows as |row|}}\n        <tr class=\"mb-5 block md:mb-0 md:table-row\">\n          {{#each @columns as |column|}}\n            {{#if (should-display question=column clientRecord=@clientRecord context=@context formLogic=this.formLogic touch=@clientRecord.touch model=@rows)}}\n              <td\n                class=\"cell block py-1 before:block before:font-semibold before:content-[attr(data-column-header)] md:table-cell md:pr-2 before:md:hidden\"\n                data-column-header=\"{{parse-text column.columnHeader model=column clientRecord=@clientRecord context=@context}}\"\n              >\n                {{#if column.sourcedRowsReadOnly}}\n                  {{parse-text column.sourcedRowsContent model=row clientRecord=@clientRecord context=@context}}\n                {{else}}\n                  <V2::QuestionTypeSwitcher\n                    @model={{row}}\n                    @question={{column}}\n                    @context={{@context}}\n                    @adminMode={{@adminMode}}\n                    @clientRecord={{@clientRecord}}\n                    @afterValueSet={{this.calculateTotals}}\n                  />\n                {{/if}}\n              </td>\n            {{/if}}\n          {{/each}}\n          <td class=\"delete-column cell mt-2 block md:table-cell\"></td>\n        </tr>\n      {{/each}}\n  \n      {{#each @rows as |row|}}\n        <tr class=\"mb-5 block md:mb-0 md:table-row\">\n          {{#each @columns as |column|}}\n            {{#if (should-display question=column clientRecord=@clientRecord context=@context formLogic=this.formLogic touch=@clientRecord.touch model=@rows)}}\n              <td\n                class=\"cell block py-1 before:block before:font-semibold before:content-[attr(data-column-header)] md:table-cell md:pr-2 before:md:hidden\"\n                data-column-header=\"{{parse-text column.columnHeader model=column clientRecord=@clientRecord context=@context}}\"\n              >\n                <V2::QuestionTypeSwitcher\n                  @model={{row}}\n                  @question={{column}}\n                  @context={{@context}}\n                  @adminMode={{@adminMode}}\n                  @clientRecord={{@clientRecord}}\n                  @afterValueSet={{this.calculateTotals}}\n                />\n              </td>\n            {{/if}}\n          {{/each}}\n          <td class=\"delete-column cell mt-2 block md:table-cell\">\n            {{#unless row.noDelete}}\n              <V2::Button\n                @variant=\"outlined\"\n                @size=\"small\"\n                class=\"delete-button inline-flex w-full items-center justify-center gap-2 py-2 text-gray-600\"\n                {{on \"click\" (fn this.removeRow row)}}\n              >\n                <V2::SvgIcon @icon=\"trash\" class=\"size-4 flex-shrink-0 text-red-500\" />\n                Delete <span class=\"sr-only\">this {{or @itemName \"row\"}}</span>\n              </V2::Button>\n            {{/unless}}\n          </td>\n        </tr>\n      {{/each}}\n    </tbody>\n    <tfoot>\n      {{#if this.showTotalColumn}}\n        <tr class=\"block md:table-row\">\n          {{#each @columns as |column|}}\n            <td class=\"block py-1 text-sm font-semibold md:table-cell md:pr-2 {{if (defined (get this.totals column.id)) 'total-cell'}}\">\n              {{#if (defined (get this.totals column.id))}}\n                Total:\n                {{#if (eq column.type \"money\")}}\n                  {{format-number (get this.totals column.id) money=true}}\n                {{else}}\n                  {{get this.totals column.id}}\n                {{/if}}\n              {{/if}}\n            </td>\n          {{/each}}\n          <td class=\"delete-column\"></td>\n        </tr>\n      {{/if}}\n    </tfoot>\n  </table>\n  \n  {{#unless @hideAddRowButton}}\n    <V2::Button\n      @variant=\"outlined\"\n      @size=\"small\"\n      {{on \"click\" this.addRow}}\n      class=\"add-button mt-4 flex w-full items-center justify-center gap-2 py-2 text-brand-primary-color md:w-auto\"\n    >\n      <V2::SvgIcon @icon=\"circle-plus\" class=\"size-4 flex-shrink-0\" />\n      Add\n      {{if this.data.length \"another\"}}\n      {{or @itemName \"row\"}}\n    </V2::Button>\n  {{/unless}}\n  */\n  {\n    \"id\": \"qDB7bWuc\",\n    \"block\": \"[[[10,\\\"table\\\"],[14,0,\\\"grid-input block w-full md:table\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"thead\\\"],[14,0,\\\"block md:table-header-group\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1],[[[1,\\\"      \\\"],[10,\\\"tr\\\"],[14,0,\\\"hidden md:table-row\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,5],[[28,[37,5],[[30,2]],null]],null],null,[[[41,[28,[37,6],null,[[\\\"question\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"formLogic\\\",\\\"touch\\\",\\\"model\\\"],[[30,3],[30,4],[30,5],[30,0,[\\\"formLogic\\\"]],[30,4,[\\\"touch\\\"]],[30,6]]]],[[[1,\\\"            \\\"],[10,\\\"th\\\"],[14,0,\\\"block pr-2 text-left md:table-cell\\\"],[12],[1,\\\"\\\\n              \\\"],[1,[28,[35,8],[[30,3,[\\\"columnHeader\\\"]]],[[\\\"model\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,3],[30,4],[30,5]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[3]],null],[1,\\\"        \\\"],[10,\\\"th\\\"],[14,0,\\\"delete-column\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,\\\"tbody\\\"],[14,0,\\\"block md:table-row-group\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,5],[[28,[37,5],[[30,0,[\\\"sourcedRows\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[10,\\\"tr\\\"],[14,0,\\\"mb-5 block md:mb-0 md:table-row\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,5],[[28,[37,5],[[30,2]],null]],null],null,[[[41,[28,[37,6],null,[[\\\"question\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"formLogic\\\",\\\"touch\\\",\\\"model\\\"],[[30,8],[30,4],[30,5],[30,0,[\\\"formLogic\\\"]],[30,4,[\\\"touch\\\"]],[30,6]]]],[[[1,\\\"            \\\"],[10,\\\"td\\\"],[14,0,\\\"cell block py-1 before:block before:font-semibold before:content-[attr(data-column-header)] md:table-cell md:pr-2 before:md:hidden\\\"],[15,\\\"data-column-header\\\",[29,[[28,[37,8],[[30,8,[\\\"columnHeader\\\"]]],[[\\\"model\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,8],[30,4],[30,5]]]]]]],[12],[1,\\\"\\\\n\\\"],[41,[30,8,[\\\"sourcedRowsReadOnly\\\"]],[[[1,\\\"                \\\"],[1,[28,[35,8],[[30,8,[\\\"sourcedRowsContent\\\"]]],[[\\\"model\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,7],[30,4],[30,5]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                \\\"],[8,[39,11],null,[[\\\"@model\\\",\\\"@question\\\",\\\"@context\\\",\\\"@adminMode\\\",\\\"@clientRecord\\\",\\\"@afterValueSet\\\"],[[30,7],[30,8],[30,5],[30,9],[30,4],[30,0,[\\\"calculateTotals\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[8]],null],[1,\\\"        \\\"],[10,\\\"td\\\"],[14,0,\\\"delete-column cell mt-2 block md:table-cell\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[7]],null],[1,\\\"\\\\n\\\"],[42,[28,[37,5],[[28,[37,5],[[30,6]],null]],null],null,[[[1,\\\"      \\\"],[10,\\\"tr\\\"],[14,0,\\\"mb-5 block md:mb-0 md:table-row\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,5],[[28,[37,5],[[30,2]],null]],null],null,[[[41,[28,[37,6],null,[[\\\"question\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"formLogic\\\",\\\"touch\\\",\\\"model\\\"],[[30,11],[30,4],[30,5],[30,0,[\\\"formLogic\\\"]],[30,4,[\\\"touch\\\"]],[30,6]]]],[[[1,\\\"            \\\"],[10,\\\"td\\\"],[14,0,\\\"cell block py-1 before:block before:font-semibold before:content-[attr(data-column-header)] md:table-cell md:pr-2 before:md:hidden\\\"],[15,\\\"data-column-header\\\",[29,[[28,[37,8],[[30,11,[\\\"columnHeader\\\"]]],[[\\\"model\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,11],[30,4],[30,5]]]]]]],[12],[1,\\\"\\\\n              \\\"],[8,[39,11],null,[[\\\"@model\\\",\\\"@question\\\",\\\"@context\\\",\\\"@adminMode\\\",\\\"@clientRecord\\\",\\\"@afterValueSet\\\"],[[30,10],[30,11],[30,5],[30,9],[30,4],[30,0,[\\\"calculateTotals\\\"]]]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[11]],null],[1,\\\"        \\\"],[10,\\\"td\\\"],[14,0,\\\"delete-column cell mt-2 block md:table-cell\\\"],[12],[1,\\\"\\\\n\\\"],[41,[51,[30,10,[\\\"noDelete\\\"]]],[[[1,\\\"            \\\"],[8,[39,13],[[24,0,\\\"delete-button inline-flex w-full items-center justify-center gap-2 py-2 text-gray-600\\\"],[4,[38,14],[\\\"click\\\",[28,[37,15],[[30,0,[\\\"removeRow\\\"]],[30,10]],null]],null]],[[\\\"@variant\\\",\\\"@size\\\"],[\\\"outlined\\\",\\\"small\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[39,16],[[24,0,\\\"size-4 flex-shrink-0 text-red-500\\\"]],[[\\\"@icon\\\"],[\\\"trash\\\"]],null],[1,\\\"\\\\n              Delete \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"this \\\"],[1,[28,[35,18],[[30,12],\\\"row\\\"],null]],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[10]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,\\\"tfoot\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showTotalColumn\\\"]],[[[1,\\\"      \\\"],[10,\\\"tr\\\"],[14,0,\\\"block md:table-row\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,5],[[28,[37,5],[[30,2]],null]],null],null,[[[1,\\\"          \\\"],[10,\\\"td\\\"],[15,0,[29,[\\\"block py-1 text-sm font-semibold md:table-cell md:pr-2 \\\",[52,[28,[37,20],[[28,[37,21],[[30,0,[\\\"totals\\\"]],[30,13,[\\\"id\\\"]]],null]],null],\\\"total-cell\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,20],[[28,[37,21],[[30,0,[\\\"totals\\\"]],[30,13,[\\\"id\\\"]]],null]],null],[[[1,\\\"              Total:\\\\n\\\"],[41,[28,[37,22],[[30,13,[\\\"type\\\"]],\\\"money\\\"],null],[[[1,\\\"                \\\"],[1,[28,[35,23],[[28,[37,21],[[30,0,[\\\"totals\\\"]],[30,13,[\\\"id\\\"]]],null]],[[\\\"money\\\"],[true]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                \\\"],[1,[28,[35,21],[[30,0,[\\\"totals\\\"]],[30,13,[\\\"id\\\"]]],null]],[1,\\\"\\\\n\\\"]],[]]]],[]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\"]],[13]],null],[1,\\\"        \\\"],[10,\\\"td\\\"],[14,0,\\\"delete-column\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[51,[30,14]],[[[1,\\\"  \\\"],[8,[39,13],[[24,0,\\\"add-button mt-4 flex w-full items-center justify-center gap-2 py-2 text-brand-primary-color md:w-auto\\\"],[4,[38,14],[\\\"click\\\",[30,0,[\\\"addRow\\\"]]],null]],[[\\\"@variant\\\",\\\"@size\\\"],[\\\"outlined\\\",\\\"small\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[39,16],[[24,0,\\\"size-4 flex-shrink-0\\\"]],[[\\\"@icon\\\"],[\\\"circle-plus\\\"]],null],[1,\\\"\\\\n    Add\\\\n    \\\"],[1,[52,[30,0,[\\\"data\\\",\\\"length\\\"]],\\\"another\\\"]],[1,\\\"\\\\n    \\\"],[1,[28,[35,18],[[30,12],\\\"row\\\"],null]],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@showColumnHeaders\\\",\\\"@columns\\\",\\\"column\\\",\\\"@clientRecord\\\",\\\"@context\\\",\\\"@rows\\\",\\\"row\\\",\\\"column\\\",\\\"@adminMode\\\",\\\"row\\\",\\\"column\\\",\\\"@itemName\\\",\\\"column\\\",\\\"@hideAddRowButton\\\"],false,[\\\"table\\\",\\\"thead\\\",\\\"if\\\",\\\"tr\\\",\\\"each\\\",\\\"-track-array\\\",\\\"should-display\\\",\\\"th\\\",\\\"parse-text\\\",\\\"tbody\\\",\\\"td\\\",\\\"v2/question-type-switcher\\\",\\\"unless\\\",\\\"v2/button\\\",\\\"on\\\",\\\"fn\\\",\\\"v2/svg-icon\\\",\\\"span\\\",\\\"or\\\",\\\"tfoot\\\",\\\"defined\\\",\\\"get\\\",\\\"eq\\\",\\\"format-number\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/grid-input/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component representing grid input field.\n   * @class GridInputComponent\n   * @param {array} [this.args.columns] - Collection of data containing all the details related to grid columns.\n   * @param {boolean} [this.args.showColumnHeaders] - Property which controls visibility of the grid headers.\n   * @param {Object} [this.args.clientRecord] - Client record object.\n   * @param {Object} [this.args.context] - The context object containing additional data for answer retrieval.\n   * @param {array} [this.args.rows] - Array containing stored answer data.\n   * @param {array} [this.args.startingRows] - Array containing info about starting grid rows\n   * @param {array} [this.args.sourceList] - Array containing info about location from where the answers will be fetched.\n   * @param {boolean} [this.args.hideAddRowButton] - Controls whether \"Add new row\" link/button is present.\n   * @param {string} [this.args.itemName] - Name of the item being added or removed\n   *\n   * @example\n   * ```hbs\n   * <V2::GridInput\n   *   @showColumnHeaders={{this.question.showColumnHeaders}}\n   *   @columns={{this.question.columns}}\n   *   @clientRecord={{this.clientRecord}}\n   *   @context={{this.context}}\n   *   @rows={{mut (get this.model this.variableStorageName)}}\n   *   @startingRows={{this.question.startingRows}}\n   *   @sourceList={{this.question.sourceListIDs}}\n   *   @hideAddRowButton={{this.question.hideAddRowButton}}\n   *   @itemName={{this.question.itemName}}\n   * />\n   * ```\n   */\n  let GridInputComponent = _exports.default = (_class = (_GridInputComponent_brand = /*#__PURE__*/new WeakSet(), class GridInputComponent extends _component2.default {\n    constructor() {\n      super(...arguments);\n      /**\n       * Initializes starting rows for the grid based on `this.args.startingRows`.\n       */\n      _classPrivateMethodInitSpec(this, _GridInputComponent_brand);\n      _initializerDefineProperty(this, \"formLogic\", _descriptor, this);\n      _defineProperty(this, \"assignUUIDs\", true);\n      _initializerDefineProperty(this, \"sourcedRows\", _descriptor2, this);\n      _initializerDefineProperty(this, \"localRows\", _descriptor3, this);\n      _initializerDefineProperty(this, \"totals\", _descriptor4, this);\n      /**\n       * Calculates the totals for columns marked with 'autoTotal'.\n       * @returns {Object} An object containing the totals for each column.\n       */\n      _defineProperty(this, \"calculateTotals\", () => {\n        if (!this.showTotalColumn) return;\n        const sourcedRows = this.sourcedRows || [];\n        this.localRows = [...this.args.rows, ...sourcedRows];\n        const tColumns = this.args?.columns.filter(column => column.autoTotal).map(column => column.id);\n        const totals = {};\n        for (let i = 0; this.localRows && i < this.localRows.length; i++) {\n          const row = this.localRows[i];\n          for (let j = 0; j < tColumns.length; j++) {\n            const tName = tColumns[j];\n            if ((0, _utils.isNone)(totals[tName])) {\n              totals[tName] = 0;\n            }\n            totals[tName] += row[tName] || 0;\n          }\n        }\n        this.totals = {\n          ...totals\n        };\n      });\n      this.defaultsObjectInitializer = new _defaultsObjectInitializer.DefaultsObjectInitializer(this.defaults, this.assignUUIDs);\n      _assertClassBrand(_GridInputComponent_brand, this, _setStartingRow).call(this);\n      this.sourcedRows = _assertClassBrand(_GridInputComponent_brand, this, _getSourceListAsArray).call(this);\n      this.calculateTotals(); // Calculate initial total value\n    }\n\n    /**\n     * Checks if any column in the grid needs to display a total.\n     * @returns {boolean} True if a \"total\" column should be displayed, false otherwise.\n     */\n    get showTotalColumn() {\n      return this.args?.columns.length && this.args?.columns.some(column => column.autoTotal);\n    }\n    /**\n     * Removes a row from the grid data.\n     * @param {Object} row - The row object to be removed.\n     */\n    removeRow(row) {\n      this.args.rows.removeObject(row);\n      this.calculateTotals();\n    }\n\n    /**\n     * Adds a new row to the grid data.\n     */\n    addRow() {\n      this.args.rows.pushObject(this.defaultsObjectInitializer.createDefaultItem());\n      this.calculateTotals();\n    }\n    willDestroy() {\n      _assertClassBrand(_GridInputComponent_brand, this, _removeEmptyModelItems).call(this);\n      super.willDestroy(...arguments);\n    }\n  }), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"formLogic\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"sourcedRows\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return [];\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"localRows\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return [];\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"totals\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return {};\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"removeRow\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"removeRow\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"addRow\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"addRow\"), _class.prototype), _class);\n  function _setStartingRow() {\n    if (!this.args?.rows?.length && this.args?.startingRows?.length) {\n      this.args.startingRows.forEach(row => {\n        const element = this.defaultsObjectInitializer.createDefaultItem();\n\n        // Find the column name for each key in row\n        for (const key in row) {\n          if (Object.prototype.hasOwnProperty.call(row, key)) {\n            const column = this.args?.columns.find(column => column.id === key);\n            if (column) {\n              element[column.id] = row[key];\n              element[`${column.id}ReadOnly`] = row[`${column.id}ReadOnly`] || false;\n            }\n          }\n        }\n        element.noDelete = row.noDelete || false;\n        this.args.rows.push(element);\n      });\n    }\n  }\n  /**\n   * Retrieves and processes the source list as an array.\n   * @returns {Array} An array of source objects.\n   * TODO: Move this into separate utility class.\n   * Previously this was mixin so make sure to remove that as well\n   */\n  function _getSourceListAsArray() {\n    const sourceList = this.args?.sourceList;\n    if (!sourceList) {\n      return [];\n    }\n    if (typeof sourceList === \"string\") {\n      const answers = sourceList.split(/[\\s,;]+/).map(s => {\n        if (s.trim()) {\n          return (0, _getAnswersFrom.getAnswersFrom)([], {\n            client: this.args.clientRecord,\n            induction: this.args.context.induction,\n            chapter: this.args.context.chapter,\n            page: this.args.context.page,\n            repeatToken: this.args.context.repeat,\n            create: null,\n            answersLocation: s.trim(),\n            loop: this.args.context.loop\n          });\n        }\n      }).flat();\n\n      // Filter out any falsey items or items without an id\n      return answers.filter(a => a?.id);\n    }\n    return sourceList;\n  }\n  /**\n   * Hook called when the component is being destroyed.\n   * Removes empty rows items\n   */\n  function _removeEmptyModelItems() {\n    this.args.rows.forEach(item => {\n      if ((0, _isEmptyObjectChecker.default)(item, {\n        ignoreEmptySubobjects: true\n      })) {\n        this.removeRow(item);\n      }\n    });\n  }\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, GridInputComponent);\n});","define(\"settify-mvp/components/v2/immutable-list/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@glimmer/tracking\", \"settify-mvp/utils/is-empty-object-checker\", \"settify-mvp/helpers/get-answers-from\", \"settify-mvp/helpers/get-people-from-ids\", \"@ember/object/internals\", \"@ember/template-factory\"], function (_exports, _component, _component2, _tracking, _isEmptyObjectChecker, _getAnswersFrom, _getPeopleFromIds, _internals, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@glimmer/tracking\",0,\"settify-mvp/utils/is-empty-object-checker\",0,\"settify-mvp/helpers/get-answers-from\",0,\"settify-mvp/helpers/get-people-from-ids\",0,\"@ember/object/internals\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::List\n    @values={{this.immutableListItems}}\n    @label={{@label}}\n    @isImmutableList={{true}}\n    @noBorder={{true}}\n    @clientRecord={{@clientRecord}}\n    @defaults={{@defaults}}\n    @id={{this.id}}\n  >\n    <:listContent as |listItem itemIndex|>\n      {{yield listItem itemIndex to=\"listContent\"}}\n    </:listContent>\n  </V2::List>\n  */\n  {\n    \"id\": \"gRXHNrWy\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@values\\\",\\\"@label\\\",\\\"@isImmutableList\\\",\\\"@noBorder\\\",\\\"@clientRecord\\\",\\\"@defaults\\\",\\\"@id\\\"],[[30,0,[\\\"immutableListItems\\\"]],[30,1],true,true,[30,2],[30,3],[30,0,[\\\"id\\\"]]]],[[\\\"listContent\\\"],[[[[1,\\\"\\\\n    \\\"],[18,6,[[30,4],[30,5]]],[1,\\\"\\\\n  \\\"]],[4,5]]]]]],[\\\"@label\\\",\\\"@clientRecord\\\",\\\"@defaults\\\",\\\"listItem\\\",\\\"itemIndex\\\",\\\"&listContent\\\"],false,[\\\"v2/list\\\",\\\":listContent\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/immutable-list/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component for handling an immutable list of items based on a dynamic source list.\n   *\n   * @class ImmutableListComponent\n   * @extends Component\n   *\n   * @param {Array|string} this.args.sourceList - The source list of items or a string representation of items.\n   * @param {string} [this.args.id] - Optional unique identifier for the component instance.\n   * @param {Object} [this.args.answersFrom] - Optional object containing answers for model-based sourcing.\n   * @param {Object} this.args.clientRecord - The client record object for retrieving people information.\n   * @param {Object} this.args.context - The context object containing additional data for answer retrieval.\n   *\n   * @example\n   * <V2::ImmutableList\n   *   @sourceList={{this.sourceList}}\n   *   @answersFrom={{this.answersFrom}}\n   *   @clientRecord={{this.clientRecord}}\n   *   @context={{this.context}}\n   * >\n   *   {{!-- List item rendering goes here --}}\n   * </V2::ImmutableList>\n   */\n  let ImmutableListComponent = _exports.default = (_class = class ImmutableListComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"sourceList\", _descriptor, this);\n    }\n    get id() {\n      return this.args.id ?? `immutable-list-component-${(0, _internals.guidFor)(this)}`;\n    }\n\n    /**\n     * Cached getter to retrieve immutable list items.\n     * Parses and deduplicates source list, and filters out empty objects.\n     * @returns {Array} The parsed, deduplicated, and filtered source list items.\n     */\n    get immutableListItems() {\n      // Parse and deduplicate source list\n      const parsedList = this.parseSourceList();\n\n      // Use Set to remove duplicates based on item.id\n      const uniqueItems = Array.from(new Set(parsedList.map(item => item.id))).map(id => parsedList.find(item => item.id === id));\n      return uniqueItems.filter(answer => !(0, _isEmptyObjectChecker.default)(answer));\n    }\n\n    /**\n     * Parses the source list based on its type (string or array).\n     * Splits string source list into items and processes each item.\n     * @returns {Array} The parsed and processed source list.\n     */\n    parseSourceList() {\n      if (typeof this.sourceList !== \"string\") return this.sourceList;\n      return this.sourceList.split(/[\\s,;]+/).flatMap(sourceItem => this.parseSourceItem(sourceItem));\n    }\n\n    /**\n     * Parses an individual source item to determine its type and processes it accordingly.\n     * @param {string} sourceItem - The individual source item to parse.\n     * @returns {Array} The parsed and processed source item.\n     */\n    parseSourceItem(sourceItem) {\n      const trimmedSourceItem = sourceItem.trim();\n      if (trimmedSourceItem.startsWith(\"model.\")) return this.getSourceModel(trimmedSourceItem);\n      return this.getSourceAnswer(trimmedSourceItem);\n    }\n\n    /**\n     * Retrieves and returns nested properties based on the `model.*` prefix and fetches associated people.\n     * @param {string} sourceItem - The model source item to process, e.g. \"model.knownEntities\"\n     * @returns {Array} The processed list of people associated with the model source item.\n     */\n    getSourceModel(sourceItem) {\n      const idSections = sourceItem.split(\".\").slice(1);\n      let {\n        answersFrom\n      } = this.args;\n      if (answersFrom && typeof answersFrom === \"object\") {\n        for (const section of idSections) {\n          answersFrom = answersFrom[section];\n        }\n      }\n      if (answersFrom) {\n        return answersFrom.flatMap(answer => (0, _getPeopleFromIds.getPeopleFromIds)([answer], {\n          clientRecord: this.args.clientRecord\n        }));\n      }\n      return [];\n    }\n\n    /**\n     * Retrieves and returns answers based on the provided answers location and context.\n     * @param {string} answersLocation - The location identifier for fetching answers , e.g. \"chapter1.page2.question3\"\n     * @returns {Array} The processed list of answers fetched from the answers location.\n     */\n    getSourceAnswer(answersLocation) {\n      return (0, _getAnswersFrom.getAnswersFrom)([], {\n        client: this.args.clientRecord,\n        induction: this.args.context.induction,\n        chapter: this.args.context.chapter,\n        page: this.args.context.page,\n        repeatToken: this.args.context.repeat,\n        create: null,\n        loop: this.args.context.loop,\n        answersLocation\n      });\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"sourceList\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return this.args.sourceList || [];\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"immutableListItems\", [_tracking.cached], Object.getOwnPropertyDescriptor(_class.prototype, \"immutableListItems\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, ImmutableListComponent);\n});","define(\"settify-mvp/components/v2/invitation-not-completed-excerpt-data/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"settify-mvp/helpers/pretty-date\", \"settify-mvp/helpers/address-string\", \"@ember/template\", \"@ember/template-factory\"], function (_exports, _component, _component2, _prettyDate, _addressString, _template, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"settify-mvp/helpers/pretty-date\",0,\"settify-mvp/helpers/address-string\",0,\"@ember/template\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"rounded-md bg-yellow-50 p-4\">\n    <div class=\"flex flex-wrap items-center justify-center gap-2 text-sm text-yellow-800\">\n      <V2::SvgIcon @icon=\"triangle-exclamation\" class=\"size-5 text-yellow-500\" />\n      <h3 class=\"font-medium\">This client has been invited but has not yet completed the questionnaire.</h3>\n    </div>\n  </div>\n  \n  <div class=\"keeptogether\">\n    <div class=\"image-wrapper bold\">\n      <LineIcon @src=\"https://cdn.settify.com.au/icons/034-mail-box.png\" @inline={{true}} />\n      Contact Details\n    </div>\n  \n    <table class=\"settify-summary mb-4 break-all md:break-normal\">\n      <thead>\n        <tr>\n          <th>\n            {{! Empty header cell for the first column }}\n          </th>\n          <th scope=\"col\">\n            {{@clientRecord.title}}\n            <span class=\"settify-sensitive\">{{@clientRecord.firstName}}</span>\n            <span class=\"settify-sensitive\">{{@clientRecord.middleName}}</span>\n            <span class=\"settify-sensitive\">{{@clientRecord.surname}}</span>\n            {{#if (eq @clientRecord.practiceArea \"Family\")}}\n              <span class=\"font-normal\">(client)</span>\n            {{/if}}\n          </th>\n          {{#if this.showPartnerColumn}}\n            <th scope=\"col\">\n              {{@clientRecord.partnerTitle}}\n              <span class=\"settify-sensitive\">{{@clientRecord.partnerFirstName}}</span>\n              <span class=\"settify-sensitive\">{{@clientRecord.partnerMiddleName}}</span>\n              <span class=\"settify-sensitive\">{{@clientRecord.partnerSurname}}</span>\n            </th>\n          {{/if}}\n        </tr>\n      </thead>\n      <tbody>\n        {{#each this.tableBodyRows as |row|}}\n          <tr>\n            <td>{{row.title}}</td>\n            <td colspan=\"{{if row.span '2'}}\">\n              {{#if row.user}}\n                <span class=\"settify-sensitive whitespace-pre-line {{row.classes}}\">{{row.user}}</span>\n              {{else}}\n                <Admin::Nil />\n              {{/if}}\n            </td>\n            {{#if (and this.showPartnerColumn (not row.span))}}\n              <td class=\"min-w-24\">\n                {{#if row.spouse}}\n                  <span class=\"settify-sensitive\">{{row.spouse}}</span>\n                {{else}}\n                  <Admin::Nil />\n                {{/if}}\n              </td>\n            {{/if}}\n          </tr>\n        {{/each}}\n      </tbody>\n    </table>\n  \n    <div class=\"rounded-md bg-sky-50 px-6 py-4\">\n      <p>\n        The invitation email may sometimes end up in a client's spam folder. To give them a gentle reminder, you can share this link directly with the client to complete their\n        questionnaire.\n      </p>\n      <V2::Clipboard @value={{this.resumeLink}} class=\"mt-2 text-gray-500\" />\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"QWD52nr3\",\n    \"block\": \"[[[10,0],[14,0,\\\"rounded-md bg-yellow-50 p-4\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"flex flex-wrap items-center justify-center gap-2 text-sm text-yellow-800\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,1],[[24,0,\\\"size-5 text-yellow-500\\\"]],[[\\\"@icon\\\"],[\\\"triangle-exclamation\\\"]],null],[1,\\\"\\\\n    \\\"],[10,\\\"h3\\\"],[14,0,\\\"font-medium\\\"],[12],[1,\\\"This client has been invited but has not yet completed the questionnaire.\\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"keeptogether\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"image-wrapper bold\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,3],null,[[\\\"@src\\\",\\\"@inline\\\"],[\\\"https://cdn.settify.com.au/icons/034-mail-box.png\\\",true]],null],[1,\\\"\\\\n    Contact Details\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,\\\"table\\\"],[14,0,\\\"settify-summary mb-4 break-all md:break-normal\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"th\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[30,1,[\\\"title\\\"]]],[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,1,[\\\"firstName\\\"]]],[13],[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,1,[\\\"middleName\\\"]]],[13],[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,1,[\\\"surname\\\"]]],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,10],[[30,1,[\\\"practiceArea\\\"]],\\\"Family\\\"],null],[[[1,\\\"            \\\"],[10,1],[14,0,\\\"font-normal\\\"],[12],[1,\\\"(client)\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showPartnerColumn\\\"]],[[[1,\\\"          \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[30,1,[\\\"partnerTitle\\\"]]],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,1,[\\\"partnerFirstName\\\"]]],[13],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,1,[\\\"partnerMiddleName\\\"]]],[13],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,1,[\\\"partnerSurname\\\"]]],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,13],[[28,[37,13],[[30,0,[\\\"tableBodyRows\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[12],[1,[30,2,[\\\"title\\\"]]],[13],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[15,\\\"colspan\\\",[29,[[52,[30,2,[\\\"span\\\"]],\\\"2\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[30,2,[\\\"user\\\"]],[[[1,\\\"              \\\"],[10,1],[15,0,[29,[\\\"settify-sensitive whitespace-pre-line \\\",[30,2,[\\\"classes\\\"]]]]],[12],[1,[30,2,[\\\"user\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"              \\\"],[8,[39,15],null,null,null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,16],[[30,0,[\\\"showPartnerColumn\\\"]],[28,[37,17],[[30,2,[\\\"span\\\"]]],null]],null],[[[1,\\\"            \\\"],[10,\\\"td\\\"],[14,0,\\\"min-w-24\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,2,[\\\"spouse\\\"]],[[[1,\\\"                \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,2,[\\\"spouse\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                \\\"],[8,[39,15],null,null,null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"rounded-md bg-sky-50 px-6 py-4\\\"],[12],[1,\\\"\\\\n    \\\"],[10,2],[12],[1,\\\"\\\\n      The invitation email may sometimes end up in a client's spam folder. To give them a gentle reminder, you can share this link directly with the client to complete their\\\\n      questionnaire.\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,19],[[24,0,\\\"mt-2 text-gray-500\\\"]],[[\\\"@value\\\"],[[30,0,[\\\"resumeLink\\\"]]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@clientRecord\\\",\\\"row\\\"],false,[\\\"div\\\",\\\"v2/svg-icon\\\",\\\"h3\\\",\\\"line-icon\\\",\\\"table\\\",\\\"thead\\\",\\\"tr\\\",\\\"th\\\",\\\"span\\\",\\\"if\\\",\\\"eq\\\",\\\"tbody\\\",\\\"each\\\",\\\"-track-array\\\",\\\"td\\\",\\\"admin/nil\\\",\\\"and\\\",\\\"not\\\",\\\"p\\\",\\\"v2/clipboard\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/invitation-not-completed-excerpt-data/index.hbs\",\n    \"isStrictMode\": false\n  });\n  class V2InvitationNotCompletedExcerptData extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _defineProperty(this, \"questionnaireStatus\", () => {\n        const {\n          commencedSimpleInduction\n        } = this.args.metadata;\n        // Two possible statuses: \"Started\" and \"Sent\".\n        // \"Completed\" won't be visible because full client brief will be rendered in that case.\n        if (commencedSimpleInduction) return \"Started\";\n        return \"Not started\";\n      });\n    }\n    get resumeLink() {\n      return this.args?.clientRecord?.resumeLink();\n    }\n    get showPartnerColumn() {\n      return this.args.clientRecord?.partnerFirstName || this.args?.clientRecord?.partnerSurname;\n    }\n    get tableBodyRows() {\n      const {\n        clientRecord,\n        metadata\n      } = this.args;\n      return [{\n        title: \"Date of birth\",\n        user: (0, _prettyDate.prettyDate)([clientRecord?.dobDay, clientRecord?.dobMonth, clientRecord?.dobYear]),\n        spouse: (0, _prettyDate.prettyDate)([clientRecord?.partnerDobDay, clientRecord?.partnerDobMonth, clientRecord?.partnerDobYear])\n      }, {\n        title: \"Phone\",\n        user: clientRecord?.phone,\n        spouse: clientRecord?.partnerPhone\n      }, {\n        title: \"Email\",\n        user: clientRecord?.email,\n        spouse: clientRecord?.partnerEmail\n      }, {\n        title: \"Address\",\n        user: (0, _template.htmlSafe)((0, _addressString.addressString)([clientRecord?.postalAddress], {\n          detailed: true,\n          linebreaks: true\n        })),\n        spouse: (0, _template.htmlSafe)((0, _addressString.addressString)([clientRecord?.partnerPostalAddress], {\n          detailed: true,\n          linebreaks: true\n        }))\n      }, {\n        title: \"Invite sent\",\n        user: (0, _prettyDate.prettyDate)([metadata.becameLead]),\n        span: true\n      }, {\n        title: \"Progress\",\n        user: this.questionnaireStatus(),\n        span: true,\n        classes: `rounded-md px-2 py-1 text-xs font-medium ring-1 ring-inset ${this.questionnaireStatus() === \"Started\" ? \"text-green-700 bg-green-50 ring-green-600/20\" : \"text-yellow-800 bg-yellow-50 ring-yellow-600/20\"}`\n      }];\n    }\n  }\n  _exports.default = V2InvitationNotCompletedExcerptData;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, V2InvitationNotCompletedExcerptData);\n});","define(\"settify-mvp/components/v2/invite-client-form/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"settify-mvp/lib/customisations/form\", \"moment\", \"@ember/template-factory\"], function (_exports, _component, _component2, _form, _moment, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"settify-mvp/lib/customisations/form\",0,\"moment\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <form {{on \"submit\" @onSubmitData}} id=\"invite-form\">\n    <div class=\"mt-10 grid grid-cols-1 gap-x-6 gap-y-8 sm:grid-cols-6\">\n      {{#if this.allowQuestionnaireSelection}}\n        <div class=\"sm:col-span-6\">\n          <p class=\"required-field-marker\">\n            Which induction should the client complete?\n          </p>\n          <div class=\"mt-2 block sm:col-span-6 sm:inline-flex sm:gap-x-2\" role=\"group\" data-test-inductions>\n            {{#each @availableInductions as |induction|}}\n              <button\n                type=\"button\"\n                {{on \"click\" (if (eq induction.formID this.selectedInduction.id) (fn @removeInduction this.selectedInduction) (fn @addInduction induction))}}\n                class=\"mt-3 block w-full items-center rounded-md bg-white px-3 py-2 text-sm shadow-sm ring-1 ring-inset sm:mt-0 sm:inline-flex sm:w-auto\n                  {{if (eq induction.formID this.selectedInduction.id) 'ring-brand-primary-color-rgb'}}\n                  ring-gray-300 hover:bg-gray-50\"\n              >\n                {{#if (eq induction.formID this.selectedInduction.id)}}\n                  <V2::SvgIcon @icon=\"circle-check\" class=\"-ml-0.5 inline-flex size-5 pr-1 text-brand-primary-color-rgb\" />\n                {{/if}}\n                {{induction.title}}\n              </button>\n            {{/each}}\n          </div>\n        </div>\n      {{/if}}\n      {{#if @askForTitle}}\n        <div class=\"sm:col-span-3\">\n          <V2::SelectBox\n            @selectedItem={{@clientTitle}}\n            @options={{this.titleSelects}}\n            @label=\"Client's title\"\n            @id=\"client-title\"\n            @name=\"client-title-select\"\n            @onChange={{@onClientTitleChangeAction}}\n            @selectablePrompt={{true}}\n          />\n        </div>\n      {{/if}}\n      <div class=\"sm:col-span-3\">\n        <V2::Textline\n          @type=\"text\"\n          @label=\"Client's first name\"\n          @id=\"first-name\"\n          @value={{@clientFirstName}}\n          name=\"first-name\"\n          placeholder=\"eg. Sam\"\n          @required={{true}}\n          class=\"settify-sensitive\"\n        />\n      </div>\n  \n      <div class=\"sm:col-span-3\">\n        <V2::Textline\n          @type=\"text\"\n          @label=\"Client's last name\"\n          @id=\"last-name\"\n          @value={{@clientSurname}}\n          name=\"first-name\"\n          placeholder=\"eg. Smith\"\n          @required={{true}}\n          class=\"settify-sensitive\"\n        />\n      </div>\n  \n      <div class=\"sm:col-span-3\">\n        <V2::EmailInput\n          @value={{@clientEmail}}\n          @label=\"Client's email address\"\n          @placeholder=\"eg. client.name@gmail.com\"\n          @id=\"email\"\n          @required={{true}}\n          @validation={{@clientEmailValid}}\n          @setEmailValidation={{@setEmailValidation}}\n          class=\"settify-sensitive\"\n        />\n      </div>\n  \n      <div class=\"sm:col-span-3\">\n        <V2::SelectBox\n          @selectedItem={{@selectedLawyer}}\n          @onChange={{@onLawyerChange}}\n          @options={{@lawyerList}}\n          @label=\"Which lawyer will be assisting this client?\"\n          @prompt=\"No lawyer has been assigned yet\"\n          @selectablePrompt={{true}}\n        />\n        {{#if @lawyerName}}\n          <button type=\"button\" class=\"mt-2 rounded-md bg-transparent px-1.5 py-1.5 text-xs ring-1 ring-inset ring-gray-300 hover:bg-gray-50\" {{on \"click\" @toggleSecondLawyer}}>\n            <i class=\"fal {{if @secondLawyer 'fa-minus-circle' 'fa-plus-circle'}}\"></i>\n            {{if @secondLawyer \"Remove\" \"Add\"}}\n            second lawyer\n          </button>\n        {{/if}}\n      </div>\n      {{#if @lawyerDetails.sendFrom}}\n        <div class=\"sm:col-span-3\">\n          <p>\n            <V2::SelectBox\n              @selectedItem={{this.selectedAssistant}}\n              @onChange={{@onCustomSendFromChange}}\n              @options={{@assistantList}}\n              @label=\"Email to be sent from {{@sendFrom.name}}\"\n              @selectablePrompt={{false}}\n            />\n          </p>\n        </div>\n      {{/if}}\n      {{#if @secondLawyer}}\n        <div class=\"sm:col-span-3\">\n          <V2::SelectBox\n            @selectedItem={{@secondSelectedLawyer}}\n            @onChange={{@onSecondLawyerChange}}\n            @options={{@lawyerList}}\n            @label=\"Which other lawyer will be assisting this client?\"\n            @prompt=\"No lawyer has been assigned yet\"\n            @selectablePrompt={{true}}\n          />\n        </div>\n      {{/if}}\n      {{#if @lawyerName}}\n        <div class=\"sm:col-span-3 sm:col-start-1\">\n          <V2::SelectDate\n            @label=\"Appointment date\"\n            @placeholder=\"Click here to select a date\"\n            @helpText=\"Leave this blank if no appointment has been made\"\n            @id=\"appointment_date\"\n            @name=\"appointment_date_datepicker\"\n            @date={{this.formattedSelectedDate}}\n            @format=\"dddd D MMMM YYYY\"\n            @minDate={{this.minDate}}\n            @maxDate={{this.maxDate}}\n            @onChange={{@onSelectDateChangeAction}}\n          />\n        </div>\n  \n        {{#if @appointmentDate}}\n          <div class=\"sm:col-span-3\">\n            <V2::SelectBox\n              @selectedItem={{@selectedTime}}\n              @options={{this.selectableTimes}}\n              @label=\"Appointment time\"\n              @prompt=\"Click here to select a time\"\n              @id=\"appointment-time\"\n              @name=\"appointment-time-select\"\n              @onChange={{@onAppointmentTimeChange}}\n              @required={{and @lawyerName @appointmentDate}}\n              @selectablePrompt={{true}}\n            />\n          </div>\n        {{/if}}\n  \n        {{#if (and @appointmentDate @offices.length (not @initialPhoneMeeting))}}\n          <div class=\"sm:col-span-3\">\n            <V2::SelectBox\n              @selectedItem={{@selectedOfficeIndex}}\n              @options={{@offices}}\n              @label=\"Appointment location\"\n              @prompt=\"Click here to select an office\"\n              @id=\"appointment-location\"\n              @name=\"appointment-location-select\"\n              @onChange={{@onAppointmentLocationChange}}\n            />\n          </div>\n        {{/if}}\n      {{/if}}\n  \n      <div class=\"grid gap-4 text-sm sm:col-span-6 sm:grid-cols-2\">\n        {{#if @appointmentDate}}\n          <div class=\"flex items-center sm:col-span-2\">\n            <V2::Checkbox @value={{@sendCalendarInvite}} @label=\"Include a calendar appointment in the invitation email\" />\n          </div>\n  \n          <div class=\"flex items-center sm:col-span-2\">\n            <V2::Checkbox @value={{@initialPhoneMeeting}} @label=\"The initial meeting will be conducted by telephone / videoconference\" />\n          </div>\n  \n          {{#if @initialPhoneMeeting}}\n            <div class=\"flex items-center sm:col-span-2 sm:pl-6\">\n              <V2::Checkbox @value={{@includePhoneMeetingMessage}} @label=\"Include additional information or instructions about the meeting in the email\" />\n            </div>\n  \n            {{#if @includePhoneMeetingMessage}}\n              <V2::Textarea @value={{@phoneMeetingMessage}} class=\"sm:ml-6\" />\n            {{/if}}\n  \n            <div class=\"flex items-center sm:col-span-2 sm:pl-6\">\n              <V2::Checkbox @value={{@includeMeetingHyperlink}} @label=\"Add hyperlink to the invitation email\" />\n            </div>\n  \n            {{#if @includeMeetingHyperlink}}\n              <div class=\"flex flex-col sm:pl-6\">\n                <V2::Textline\n                  @type=\"text\"\n                  @label=\"Video conference link\"\n                  @value={{@hyperlinkURL}}\n                  name=\"hyperlink-url\"\n                  @id=\"hyperlink-url\"\n                  placeholder=\"Include the 'https://www.' prefix\"\n                  required={{true}}\n                />\n                {{#if (and @hyperlinkURL (not @hyperlinkParsed))}}\n                  <small class=\"mt-1 sm:mt-2\" id=\"hyperlink-url-warning\">That doesn't look like a valid URL</small>\n                {{/if}}\n              </div>\n  \n              <div class=\"flex flex-col\">\n                <V2::Textline\n                  @type=\"text\"\n                  @label=\"Link text\"\n                  @value={{@hyperlinkText}}\n                  name=\"hyperlink-text\"\n                  @id=\"hyperlink-text\"\n                  placeholder=\"E.G. 'click here to join the meeting room'\"\n                  required={{true}}\n                />\n              </div>\n              {{#if @sendCalendarInvite}}\n                <div class=\"flex items-center sm:pl-6\">\n                  <V2::Checkbox @value={{@includeAsAppointmentLocation}} @label=\"Include this link as the meeting location on the calendar appointment\" />\n                </div>\n              {{/if}}\n  \n              {{#if @phoneMeetingAttachments.length}}\n                <div class=\"flex items-center\">\n                  <V2::Checkbox @value={{@includePhoneMeetingAttachments}} @label=\"Attach your standard telephone / videoconference instruction document to the email\" />\n                </div>\n              {{/if}}\n            {{/if}}\n          {{/if}}\n          {{#if @model.client.detailedInductionComplete}}\n            <div class=\"flex items-center sm:col-span-2\">\n              <V2::Checkbox @value={{@forceIncludeSettifyButton}} @label=\"Include a link to revisit the Settify induction\" />\n            </div>\n          {{/if}}\n        {{/if}}\n        {{#if (and @inductions.length this.isEstatesOrProbateInduction)}}\n          <div class=\"sm-col-span-2 flex items-center\">\n            <V2::Checkbox @value={{@lawFirmAlreadyHasWill}} @label={{concat @firmName \" has the will\"}} @disabled={{@model.client.lawFirmHasWill}} />\n          </div>\n        {{/if}}\n        <div class=\"flex items-center sm:col-span-2\">\n          <V2::Checkbox @value={{@conflictCheckPerformed}} @label={{concat \"A conflict check has already been performed, and \" @firmName \" is able to act for this client\"}} />\n        </div>\n      </div>\n    </div>\n  </form>\n  */\n  {\n    \"id\": \"dqZ2D/0e\",\n    \"block\": \"[[[11,\\\"form\\\"],[24,1,\\\"invite-form\\\"],[4,[38,1],[\\\"submit\\\",[30,1]],null],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"mt-10 grid grid-cols-1 gap-x-6 gap-y-8 sm:grid-cols-6\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"allowQuestionnaireSelection\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"sm:col-span-6\\\"],[12],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"required-field-marker\\\"],[12],[1,\\\"\\\\n          Which induction should the client complete?\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"mt-2 block sm:col-span-6 sm:inline-flex sm:gap-x-2\\\"],[14,\\\"role\\\",\\\"group\\\"],[14,\\\"data-test-inductions\\\",\\\"\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,6],[[28,[37,6],[[30,2]],null]],null],null,[[[1,\\\"            \\\"],[11,\\\"button\\\"],[16,0,[29,[\\\"mt-3 block w-full items-center rounded-md bg-white px-3 py-2 text-sm shadow-sm ring-1 ring-inset sm:mt-0 sm:inline-flex sm:w-auto\\\\n                \\\",[52,[28,[37,8],[[30,3,[\\\"formID\\\"]],[30,0,[\\\"selectedInduction\\\",\\\"id\\\"]]],null],\\\"ring-brand-primary-color-rgb\\\"],\\\"\\\\n                ring-gray-300 hover:bg-gray-50\\\"]]],[24,4,\\\"button\\\"],[4,[38,1],[\\\"click\\\",[52,[28,[37,8],[[30,3,[\\\"formID\\\"]],[30,0,[\\\"selectedInduction\\\",\\\"id\\\"]]],null],[28,[37,9],[[30,4],[30,0,[\\\"selectedInduction\\\"]]],null],[28,[37,9],[[30,5],[30,3]],null]]],null],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,8],[[30,3,[\\\"formID\\\"]],[30,0,[\\\"selectedInduction\\\",\\\"id\\\"]]],null],[[[1,\\\"                \\\"],[8,[39,10],[[24,0,\\\"-ml-0.5 inline-flex size-5 pr-1 text-brand-primary-color-rgb\\\"]],[[\\\"@icon\\\"],[\\\"circle-check\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[1,[30,3,[\\\"title\\\"]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[3]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,6],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"sm:col-span-3\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,11],null,[[\\\"@selectedItem\\\",\\\"@options\\\",\\\"@label\\\",\\\"@id\\\",\\\"@name\\\",\\\"@onChange\\\",\\\"@selectablePrompt\\\"],[[30,7],[30,0,[\\\"titleSelects\\\"]],\\\"Client's title\\\",\\\"client-title\\\",\\\"client-title-select\\\",[30,8],true]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[10,0],[14,0,\\\"sm:col-span-3\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,12],[[24,3,\\\"first-name\\\"],[24,\\\"placeholder\\\",\\\"eg. Sam\\\"],[24,0,\\\"settify-sensitive\\\"]],[[\\\"@type\\\",\\\"@label\\\",\\\"@id\\\",\\\"@value\\\",\\\"@required\\\"],[\\\"text\\\",\\\"Client's first name\\\",\\\"first-name\\\",[30,9],true]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,0],[14,0,\\\"sm:col-span-3\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,12],[[24,3,\\\"first-name\\\"],[24,\\\"placeholder\\\",\\\"eg. Smith\\\"],[24,0,\\\"settify-sensitive\\\"]],[[\\\"@type\\\",\\\"@label\\\",\\\"@id\\\",\\\"@value\\\",\\\"@required\\\"],[\\\"text\\\",\\\"Client's last name\\\",\\\"last-name\\\",[30,10],true]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,0],[14,0,\\\"sm:col-span-3\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,13],[[24,0,\\\"settify-sensitive\\\"]],[[\\\"@value\\\",\\\"@label\\\",\\\"@placeholder\\\",\\\"@id\\\",\\\"@required\\\",\\\"@validation\\\",\\\"@setEmailValidation\\\"],[[30,11],\\\"Client's email address\\\",\\\"eg. client.name@gmail.com\\\",\\\"email\\\",true,[30,12],[30,13]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,0],[14,0,\\\"sm:col-span-3\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,11],null,[[\\\"@selectedItem\\\",\\\"@onChange\\\",\\\"@options\\\",\\\"@label\\\",\\\"@prompt\\\",\\\"@selectablePrompt\\\"],[[30,14],[30,15],[30,16],\\\"Which lawyer will be assisting this client?\\\",\\\"No lawyer has been assigned yet\\\",true]],null],[1,\\\"\\\\n\\\"],[41,[30,17],[[[1,\\\"        \\\"],[11,\\\"button\\\"],[24,0,\\\"mt-2 rounded-md bg-transparent px-1.5 py-1.5 text-xs ring-1 ring-inset ring-gray-300 hover:bg-gray-50\\\"],[24,4,\\\"button\\\"],[4,[38,1],[\\\"click\\\",[30,18]],null],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal \\\",[52,[30,19],\\\"fa-minus-circle\\\",\\\"fa-plus-circle\\\"]]]],[12],[13],[1,\\\"\\\\n          \\\"],[1,[52,[30,19],\\\"Remove\\\",\\\"Add\\\"]],[1,\\\"\\\\n          second lawyer\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,20,[\\\"sendFrom\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"sm:col-span-3\\\"],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[8,[39,11],null,[[\\\"@selectedItem\\\",\\\"@onChange\\\",\\\"@options\\\",\\\"@label\\\",\\\"@selectablePrompt\\\"],[[30,0,[\\\"selectedAssistant\\\"]],[30,21],[30,22],[29,[\\\"Email to be sent from \\\",[30,23,[\\\"name\\\"]]]],false]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,19],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"sm:col-span-3\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,11],null,[[\\\"@selectedItem\\\",\\\"@onChange\\\",\\\"@options\\\",\\\"@label\\\",\\\"@prompt\\\",\\\"@selectablePrompt\\\"],[[30,24],[30,25],[30,16],\\\"Which other lawyer will be assisting this client?\\\",\\\"No lawyer has been assigned yet\\\",true]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,17],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"sm:col-span-3 sm:col-start-1\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,15],null,[[\\\"@label\\\",\\\"@placeholder\\\",\\\"@helpText\\\",\\\"@id\\\",\\\"@name\\\",\\\"@date\\\",\\\"@format\\\",\\\"@minDate\\\",\\\"@maxDate\\\",\\\"@onChange\\\"],[\\\"Appointment date\\\",\\\"Click here to select a date\\\",\\\"Leave this blank if no appointment has been made\\\",\\\"appointment_date\\\",\\\"appointment_date_datepicker\\\",[30,0,[\\\"formattedSelectedDate\\\"]],\\\"dddd D MMMM YYYY\\\",[30,0,[\\\"minDate\\\"]],[30,0,[\\\"maxDate\\\"]],[30,26]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,27],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"sm:col-span-3\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,11],null,[[\\\"@selectedItem\\\",\\\"@options\\\",\\\"@label\\\",\\\"@prompt\\\",\\\"@id\\\",\\\"@name\\\",\\\"@onChange\\\",\\\"@required\\\",\\\"@selectablePrompt\\\"],[[30,28],[30,0,[\\\"selectableTimes\\\"]],\\\"Appointment time\\\",\\\"Click here to select a time\\\",\\\"appointment-time\\\",\\\"appointment-time-select\\\",[30,29],[28,[37,16],[[30,17],[30,27]],null],true]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,16],[[30,27],[30,30,[\\\"length\\\"]],[28,[37,17],[[30,31]],null]],null],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"sm:col-span-3\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,11],null,[[\\\"@selectedItem\\\",\\\"@options\\\",\\\"@label\\\",\\\"@prompt\\\",\\\"@id\\\",\\\"@name\\\",\\\"@onChange\\\"],[[30,32],[30,30],\\\"Appointment location\\\",\\\"Click here to select an office\\\",\\\"appointment-location\\\",\\\"appointment-location-select\\\",[30,33]]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"grid gap-4 text-sm sm:col-span-6 sm:grid-cols-2\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,27],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"flex items-center sm:col-span-2\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,18],null,[[\\\"@value\\\",\\\"@label\\\"],[[30,34],\\\"Include a calendar appointment in the invitation email\\\"]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[10,0],[14,0,\\\"flex items-center sm:col-span-2\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,18],null,[[\\\"@value\\\",\\\"@label\\\"],[[30,31],\\\"The initial meeting will be conducted by telephone / videoconference\\\"]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,31],[[[1,\\\"          \\\"],[10,0],[14,0,\\\"flex items-center sm:col-span-2 sm:pl-6\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,18],null,[[\\\"@value\\\",\\\"@label\\\"],[[30,35],\\\"Include additional information or instructions about the meeting in the email\\\"]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,35],[[[1,\\\"            \\\"],[8,[39,19],[[24,0,\\\"sm:ml-6\\\"]],[[\\\"@value\\\"],[[30,36]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"flex items-center sm:col-span-2 sm:pl-6\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,18],null,[[\\\"@value\\\",\\\"@label\\\"],[[30,37],\\\"Add hyperlink to the invitation email\\\"]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,37],[[[1,\\\"            \\\"],[10,0],[14,0,\\\"flex flex-col sm:pl-6\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,12],[[24,3,\\\"hyperlink-url\\\"],[24,\\\"placeholder\\\",\\\"Include the 'https://www.' prefix\\\"],[16,\\\"required\\\",true]],[[\\\"@type\\\",\\\"@label\\\",\\\"@value\\\",\\\"@id\\\"],[\\\"text\\\",\\\"Video conference link\\\",[30,38],\\\"hyperlink-url\\\"]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,16],[[30,38],[28,[37,17],[[30,39]],null]],null],[[[1,\\\"                \\\"],[10,\\\"small\\\"],[14,0,\\\"mt-1 sm:mt-2\\\"],[14,1,\\\"hyperlink-url-warning\\\"],[12],[1,\\\"That doesn't look like a valid URL\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n\\\\n            \\\"],[10,0],[14,0,\\\"flex flex-col\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,12],[[24,3,\\\"hyperlink-text\\\"],[24,\\\"placeholder\\\",\\\"E.G. 'click here to join the meeting room'\\\"],[16,\\\"required\\\",true]],[[\\\"@type\\\",\\\"@label\\\",\\\"@value\\\",\\\"@id\\\"],[\\\"text\\\",\\\"Link text\\\",[30,40],\\\"hyperlink-text\\\"]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,34],[[[1,\\\"              \\\"],[10,0],[14,0,\\\"flex items-center sm:pl-6\\\"],[12],[1,\\\"\\\\n                \\\"],[8,[39,18],null,[[\\\"@value\\\",\\\"@label\\\"],[[30,41],\\\"Include this link as the meeting location on the calendar appointment\\\"]],null],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,42,[\\\"length\\\"]],[[[1,\\\"              \\\"],[10,0],[14,0,\\\"flex items-center\\\"],[12],[1,\\\"\\\\n                \\\"],[8,[39,18],null,[[\\\"@value\\\",\\\"@label\\\"],[[30,43],\\\"Attach your standard telephone / videoconference instruction document to the email\\\"]],null],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null]],[]],null],[41,[30,44,[\\\"client\\\",\\\"detailedInductionComplete\\\"]],[[[1,\\\"          \\\"],[10,0],[14,0,\\\"flex items-center sm:col-span-2\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,18],null,[[\\\"@value\\\",\\\"@label\\\"],[[30,45],\\\"Include a link to revisit the Settify induction\\\"]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[41,[28,[37,16],[[30,46,[\\\"length\\\"]],[30,0,[\\\"isEstatesOrProbateInduction\\\"]]],null],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"sm-col-span-2 flex items-center\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,18],null,[[\\\"@value\\\",\\\"@label\\\",\\\"@disabled\\\"],[[30,47],[28,[37,21],[[30,48],\\\" has the will\\\"],null],[30,44,[\\\"client\\\",\\\"lawFirmHasWill\\\"]]]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[10,0],[14,0,\\\"flex items-center sm:col-span-2\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,18],null,[[\\\"@value\\\",\\\"@label\\\"],[[30,49],[28,[37,21],[\\\"A conflict check has already been performed, and \\\",[30,48],\\\" is able to act for this client\\\"],null]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@onSubmitData\\\",\\\"@availableInductions\\\",\\\"induction\\\",\\\"@removeInduction\\\",\\\"@addInduction\\\",\\\"@askForTitle\\\",\\\"@clientTitle\\\",\\\"@onClientTitleChangeAction\\\",\\\"@clientFirstName\\\",\\\"@clientSurname\\\",\\\"@clientEmail\\\",\\\"@clientEmailValid\\\",\\\"@setEmailValidation\\\",\\\"@selectedLawyer\\\",\\\"@onLawyerChange\\\",\\\"@lawyerList\\\",\\\"@lawyerName\\\",\\\"@toggleSecondLawyer\\\",\\\"@secondLawyer\\\",\\\"@lawyerDetails\\\",\\\"@onCustomSendFromChange\\\",\\\"@assistantList\\\",\\\"@sendFrom\\\",\\\"@secondSelectedLawyer\\\",\\\"@onSecondLawyerChange\\\",\\\"@onSelectDateChangeAction\\\",\\\"@appointmentDate\\\",\\\"@selectedTime\\\",\\\"@onAppointmentTimeChange\\\",\\\"@offices\\\",\\\"@initialPhoneMeeting\\\",\\\"@selectedOfficeIndex\\\",\\\"@onAppointmentLocationChange\\\",\\\"@sendCalendarInvite\\\",\\\"@includePhoneMeetingMessage\\\",\\\"@phoneMeetingMessage\\\",\\\"@includeMeetingHyperlink\\\",\\\"@hyperlinkURL\\\",\\\"@hyperlinkParsed\\\",\\\"@hyperlinkText\\\",\\\"@includeAsAppointmentLocation\\\",\\\"@phoneMeetingAttachments\\\",\\\"@includePhoneMeetingAttachments\\\",\\\"@model\\\",\\\"@forceIncludeSettifyButton\\\",\\\"@inductions\\\",\\\"@lawFirmAlreadyHasWill\\\",\\\"@firmName\\\",\\\"@conflictCheckPerformed\\\"],false,[\\\"form\\\",\\\"on\\\",\\\"div\\\",\\\"if\\\",\\\"p\\\",\\\"each\\\",\\\"-track-array\\\",\\\"button\\\",\\\"eq\\\",\\\"fn\\\",\\\"v2/svg-icon\\\",\\\"v2/select-box\\\",\\\"v2/textline\\\",\\\"v2/email-input\\\",\\\"i\\\",\\\"v2/select-date\\\",\\\"and\\\",\\\"not\\\",\\\"v2/checkbox\\\",\\\"v2/textarea\\\",\\\"small\\\",\\\"concat\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/invite-client-form/index.hbs\",\n    \"isStrictMode\": false\n  });\n  class InviteClientFormComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _defineProperty(this, \"titleSelects\", _form.titleSelects);\n      _defineProperty(this, \"minDate\", new Date().toISOString().split(\"T\")[0]);\n      _defineProperty(this, \"selectableTimes\", this.generateSelectableTimes());\n    }\n    get formattedSelectedDate() {\n      return this.args.appointmentDate ? (0, _moment.default)(this.args.appointmentDate).format(\"YYYY-MM-DD\") : null;\n    }\n    get allowQuestionnaireSelection() {\n      return !this.args.model.client && this.args.availableInductions.length > 1;\n    }\n    generateSelectableTimes() {\n      const minHour = 6;\n      const maxHour = 20;\n      const interval = 30;\n      const startTime = (0, _moment.default)(minHour, \"HH:mm\");\n      const endTime = (0, _moment.default)(maxHour, \"HH:mm\");\n      const selectableTimes = [];\n      while (startTime.isSameOrBefore(endTime)) {\n        selectableTimes.push({\n          name: startTime.format(\"LT\"),\n          value: JSON.stringify({\n            hour: startTime.hour(),\n            minute: startTime.minute()\n          })\n        });\n        startTime.add(interval, \"minutes\");\n      }\n      return selectableTimes;\n    }\n    get selectedInduction() {\n      return this.args.inductions.firstObject || null;\n    }\n    get isEstatesOrProbateInduction() {\n      return this.args?.inductions?.findBy(\"practiceArea\", \"Estates\") || this.args?.inductions?.findBy(\"practiceArea\", \"Probate\");\n    }\n    get selectedAssistant() {\n      if (!this.args.sendFrom || !this.args.assistantList) {\n        return false;\n      }\n      const assistant = this.args.assistantList.find(assistant => assistant.personID === this.args.sendFrom.personID);\n      return assistant.value;\n    }\n  }\n  _exports.default = InviteClientFormComponent;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, InviteClientFormComponent);\n});","define(\"settify-mvp/components/v2/invite-client-preview/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/template-factory\"], function (_exports, _component, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"mx-auto flex w-full max-w-7xl flex-col items-start gap-x-6 xl:flex-row\">\n    <section class=\"min-h-[35rem] w-full border bg-white p-8 xl:min-h-[45rem] xl:flex-1\">\n      <p class=\"mt-2 text-center\">\n        <img class=\"m-auto mb-3 h-auto max-h-28 w-auto max-w-full text-center\" src={{@firm.logoURL}} alt=\"{{@firm.name}}\" />\n      </p>\n      <div id=\"preview-email-body\">\n        {{#if @editingCustomEmailBody}}\n          <p class=\"mb-5 text-sm\">\n            Compose your email in the box below. The word\n            <samp>[SETTIFY BUTTON]</samp>\n            shows where the clickable button will go to begin the online induction. The word\n            <samp>[LAWYER BIOGRAPHY]</samp>\n            shows where the lawyer's biography will go (if present).\n          </p>\n  \n          <V2::Textarea @value={{@inviteEmailCustomBody}} rows=\"15\" max=\"32000\" class=\"settify-sensitive\" />\n  \n          <p>\n            <button type=\"button\" {{on \"click\" @toggleCancelCustomMessage}} class=\"mb-4 text-sm text-brand-primary-color-rgb\">\n              Click here to discard your custom message and return to the automatic email system\n            </button>\n            {{#if @showCancelCustomMessageBody}}\n              <p class=\"mb-4 text-sm\">\n                Are you sure? You will lose any manual changes you have made to the email content.\n              </p>\n              <button type=\"button\" class=\"mb-2 block text-sm text-brand-primary-color-rgb\" {{on \"click\" @cancelCustomMessageBodyAction}}>\n                Yes, I'm sure\n              </button>\n              <button type=\"button\" class=\"mb-2 block text-sm text-brand-primary-color-rgb\" {{on \"click\" @toggleCancelCustomMessage}}>\n                Actually, I'll keep editing my custom message\n              </button>\n            {{/if}}\n          </p>\n        {{else}}\n          {{#if @showCustomInvitationEmail}}\n            <div id=\"preview-email-css-wrapper\">\n              <Invitation::Email\n                @firm={{@firm}}\n                @clientFirstName={{@clientFirstName}}\n                @lawyerName={{@lawyerName}}\n                @lawyerBio={{@lawyerBio}}\n                @lawyerPhotoURL={{@lawyerPhotoURL}}\n                @lawyerBioHeading={{@lawyerBioHeading}}\n                @lawyerReadMoreURL={{@lawyerReadMoreURL}}\n                @secondLawyerName={{@secondLawyerName}}\n                @secondLawyerBio={{@secondLawyerBio}}\n                @secondLawyerPhotoURL={{@secondLawyerPhotoURL}}\n                @secondLawyerBioHeading={{@secondLawyerBioHeading}}\n                @secondLawyerReadMoreURL={{@secondLawyerReadMoreURL}}\n                @appointmentDate={{@appointmentDate}}\n                @appointmentTime={{@appointmentTime}}\n                @formattedAppointmentDate={{@formattedAppointmentDate}}\n                @selectedOffice={{@selectedOffice}}\n                @initialPhoneMeeting={{@initialPhoneMeeting}}\n                @includePhoneMeetingMessage={{@includePhoneMeetingMessage}}\n                @phoneMeetingMessage={{@phoneMeetingMessage}}\n                @formattedPhoneMeetingMessage={{@formattedPhoneMeetingMessage}}\n                @hyperlinkParsed={{@hyperlinkParsed}}\n                @hyperlinkText={{@hyperlinkText}}\n                @model={{@model.client}}\n                @inductions={{@inductions}}\n                @forceIncludeSettifyButton={{@forceIncludeSettifyButton}}\n                @buttonLabel={{@buttonLabel}}\n                @showOptionalExtra={{@showOptionalExtra}}\n                @formattedOptionalMessage={{@formattedOptionalMessage}}\n                @optionalExtraMessage={{@optionalExtraMessage}}\n                @toggleOptionalExtra={{@toggleOptionalExtra}}\n                @previewOptionalExtra={{@previewOptionalExtra}}\n                @emailSenderName={{@emailSenderName}}\n                @emailSenderTitle={{@emailSenderTitle}}\n                @emailSenderEmail={{@emailSenderEmail}}\n                @emailSenderPhone={{@emailSenderPhone}}\n                @lawyerDetails={{@lawyerDetails}}\n              />\n            </div>\n          {{else}}\n            <V2::InviteNewClientEmail\n              @model={{@model}}\n              @firm={{@firm}}\n              @clientFirstName={{@clientFirstName}}\n              @lawyerName={{@lawyerName}}\n              @appointmentDate={{@appointmentDate}}\n              @appointmentTime={{@appointmentTime}}\n              @formattedAppointmentDate={{@formattedAppointmentDate}}\n              @formattedPhoneMeetingMessage={{@formattedPhoneMeetingMessage}}\n              @initialPhoneMeeting={{@initialPhoneMeeting}}\n              @availableOffices={{@availableOffices}}\n              @selectedOffice={{@selectedOffice}}\n              @includePhoneMeetingMessage={{@includePhoneMeetingMessage}}\n              @includeMeetingHyperlink={{@includeMeetingHyperlink}}\n              @hyperlinkParsed={{@hyperlinkParsed}}\n              @hyperlinkText={{@hyperlinkText}}\n              @forceIncludeSettifyButton={{@forceIncludeSettifyButton}}\n              @buttonLabel={{@buttonLabel}}\n              @lawyerBio={{@lawyerBio}}\n              @noLawyerBios={{@noLawyerBios}}\n              @lawyerPhotoURL={{@lawyerPhotoURL}}\n              @lawyerBioHeading={{@lawyerBioHeading}}\n              @lawyerReadMoreURL={{@lawyerReadMoreURL}}\n              @secondLawyerBio={{@secondLawyerBio}}\n              @secondLawyerPhotoURL={{@secondLawyerPhotoURL}}\n              @secondLawyerBioHeading={{@secondLawyerBioHeading}}\n              @secondLawyerReadMoreURL={{@secondLawyerReadMoreURL}}\n              @secondLawyerName={{@secondLawyerName}}\n              @emailSenderName={{@emailSenderName}}\n              @emailSenderTitle={{@emailSenderTitle}}\n              @emailSenderPhone={{@emailSenderPhone}}\n              @lawyerDetails={{@lawyerDetails}}\n              @showOptionalExtra={{@showOptionalExtra}}\n              @optionalExtraMessage={{@optionalExtraMessage}}\n              @formattedOptionalMessage={{@formattedOptionalMessage}}\n              @toggleOptionalExtra={{@toggleOptionalExtra}}\n              @previewOptionalExtra={{@previewOptionalExtra}}\n            />\n          {{/if}}\n        {{/if}}\n      </div>\n      {{#unless @editingCustomEmailBody}}\n        <p class=\"border-t border-gray-300 py-4 text-sm\">\n          <button type=\"button\" class=\"text-brand-primary-color-rgb\" {{on \"click\" @convertToCustomMessageBody}}>\n            Click here to edit the entire email yourself.\n          </button>\n          You will lose formatting, links, and maps, but you can always come back to the automated email later, if you want.\n        </p>\n      {{/unless}}\n    </section>\n  \n    <aside class=\"top-4 order-first mb-6 block w-full xl:sticky xl:order-none xl:mb-0 xl:w-96\">\n      <h2 class=\"sr-only\">Email summary</h2>\n      <div class=\"border bg-white p-6\">\n        <dl class=\"flex flex-wrap\">\n          <div class=\"flex w-full gap-x-4\">\n            <dt class=\"items-top flex flex-1\">\n              <span class=\"text-sm text-gray-400\"><span class=\"sr-only\">Send </span>To:</span>\n            </dt>\n            <dd class=\"text-right text-sm font-medium leading-6 text-gray-700\">\n              <span class=\"settify-sensitive\">\n                {{@clientFirstName}}\n                {{@clientSurname}}\n                &lt;{{@clientEmail}}&gt;\n              </span>\n            </dd>\n          </div>\n          {{#if @emailCCs.length}}\n            <div class=\"mt-4 flex w-full gap-x-4\">\n              <dt class=\"flex flex-1 items-center\">\n                <span class=\"text-sm text-gray-400\">CC:</span>\n              </dt>\n              <dd class=\"text-right text-sm font-medium leading-6 text-gray-700\">\n                {{this.emailsToString @emailCCs}}\n              </dd>\n            </div>\n          {{/if}}\n          {{#if @emailBCCs.length}}\n            <div class=\"mt-4 flex w-full gap-x-4\">\n              <dt class=\"flex flex-1 items-center\">\n                <span class=\"text-sm text-gray-400\">BCC:</span>\n              </dt>\n              <dd class=\"text-right text-sm font-medium leading-6 text-gray-700\">\n                {{this.emailsToString @emailBCCs}}\n              </dd>\n            </div>\n          {{/if}}\n          <div class=\"flex w-full gap-x-4\">\n            <dt class=\"items-top flex flex-1\">\n              <span class=\"text-sm text-gray-400\"><span class=\"sr-only\">Sending </span>From:</span>\n            </dt>\n            <dd class=\"text-right text-sm font-medium leading-6 text-gray-700\">\n              <span class=\"settify-sensitive\">\n                {{@emailSenderName}}\n                &lt;noreply@settify.com&gt;\n              </span>\n            </dd>\n          </div>\n          {{#if @attachments}}\n            <div class=\"flex w-full gap-x-4\">\n              <dt class=\"items-top flex flex-1\">\n                <span class=\"text-sm text-gray-400\"><span class=\"sr-only\">Email </span>Attachments:</span>\n              </dt>\n              <dd class=\"text-right text-sm font-medium leading-6 text-gray-700\">\n                {{this.attachmentsToString @attachments}}\n              </dd>\n            </div>\n          {{/if}}\n          <div class=\"flex w-full gap-x-4\">\n            <dt class=\"items-top flex flex-1\">\n              <span class=\"text-sm text-gray-400\"><span class=\"sr-only\">Email </span>Subject:</span>\n            </dt>\n            <dd class=\"text-right text-sm font-medium leading-6 text-gray-700\">\n              <span class=\"settify-sensitive\">{{@emailSubject}}</span>\n            </dd>\n          </div>\n        </dl>\n      </div>\n    </aside>\n  </div>\n  */\n  {\n    \"id\": \"39aMGXhO\",\n    \"block\": \"[[[10,0],[14,0,\\\"mx-auto flex w-full max-w-7xl flex-col items-start gap-x-6 xl:flex-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"section\\\"],[14,0,\\\"min-h-[35rem] w-full border bg-white p-8 xl:min-h-[45rem] xl:flex-1\\\"],[12],[1,\\\"\\\\n    \\\"],[10,2],[14,0,\\\"mt-2 text-center\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"img\\\"],[14,0,\\\"m-auto mb-3 h-auto max-h-28 w-auto max-w-full text-center\\\"],[15,\\\"src\\\",[30,1,[\\\"logoURL\\\"]]],[15,\\\"alt\\\",[29,[[30,1,[\\\"name\\\"]]]]],[12],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,1,\\\"preview-email-body\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,2],[[[1,\\\"        \\\"],[10,2],[14,0,\\\"mb-5 text-sm\\\"],[12],[1,\\\"\\\\n          Compose your email in the box below. The word\\\\n          \\\"],[10,\\\"samp\\\"],[12],[1,\\\"[SETTIFY BUTTON]\\\"],[13],[1,\\\"\\\\n          shows where the clickable button will go to begin the online induction. The word\\\\n          \\\"],[10,\\\"samp\\\"],[12],[1,\\\"[LAWYER BIOGRAPHY]\\\"],[13],[1,\\\"\\\\n          shows where the lawyer's biography will go (if present).\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,6],[[24,\\\"rows\\\",\\\"15\\\"],[24,\\\"max\\\",\\\"32000\\\"],[24,0,\\\"settify-sensitive\\\"]],[[\\\"@value\\\"],[[30,3]]],null],[1,\\\"\\\\n\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[11,\\\"button\\\"],[24,0,\\\"mb-4 text-sm text-brand-primary-color-rgb\\\"],[24,4,\\\"button\\\"],[4,[38,8],[\\\"click\\\",[30,4]],null],[12],[1,\\\"\\\\n            Click here to discard your custom message and return to the automatic email system\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,5],[[[1,\\\"            \\\"],[10,2],[14,0,\\\"mb-4 text-sm\\\"],[12],[1,\\\"\\\\n              Are you sure? You will lose any manual changes you have made to the email content.\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[11,\\\"button\\\"],[24,0,\\\"mb-2 block text-sm text-brand-primary-color-rgb\\\"],[24,4,\\\"button\\\"],[4,[38,8],[\\\"click\\\",[30,6]],null],[12],[1,\\\"\\\\n              Yes, I'm sure\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[11,\\\"button\\\"],[24,0,\\\"mb-2 block text-sm text-brand-primary-color-rgb\\\"],[24,4,\\\"button\\\"],[4,[38,8],[\\\"click\\\",[30,4]],null],[12],[1,\\\"\\\\n              Actually, I'll keep editing my custom message\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,7],[[[1,\\\"          \\\"],[10,0],[14,1,\\\"preview-email-css-wrapper\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,9],null,[[\\\"@firm\\\",\\\"@clientFirstName\\\",\\\"@lawyerName\\\",\\\"@lawyerBio\\\",\\\"@lawyerPhotoURL\\\",\\\"@lawyerBioHeading\\\",\\\"@lawyerReadMoreURL\\\",\\\"@secondLawyerName\\\",\\\"@secondLawyerBio\\\",\\\"@secondLawyerPhotoURL\\\",\\\"@secondLawyerBioHeading\\\",\\\"@secondLawyerReadMoreURL\\\",\\\"@appointmentDate\\\",\\\"@appointmentTime\\\",\\\"@formattedAppointmentDate\\\",\\\"@selectedOffice\\\",\\\"@initialPhoneMeeting\\\",\\\"@includePhoneMeetingMessage\\\",\\\"@phoneMeetingMessage\\\",\\\"@formattedPhoneMeetingMessage\\\",\\\"@hyperlinkParsed\\\",\\\"@hyperlinkText\\\",\\\"@model\\\",\\\"@inductions\\\",\\\"@forceIncludeSettifyButton\\\",\\\"@buttonLabel\\\",\\\"@showOptionalExtra\\\",\\\"@formattedOptionalMessage\\\",\\\"@optionalExtraMessage\\\",\\\"@toggleOptionalExtra\\\",\\\"@previewOptionalExtra\\\",\\\"@emailSenderName\\\",\\\"@emailSenderTitle\\\",\\\"@emailSenderEmail\\\",\\\"@emailSenderPhone\\\",\\\"@lawyerDetails\\\"],[[30,1],[30,8],[30,9],[30,10],[30,11],[30,12],[30,13],[30,14],[30,15],[30,16],[30,17],[30,18],[30,19],[30,20],[30,21],[30,22],[30,23],[30,24],[30,25],[30,26],[30,27],[30,28],[30,29,[\\\"client\\\"]],[30,30],[30,31],[30,32],[30,33],[30,34],[30,35],[30,36],[30,37],[30,38],[30,39],[30,40],[30,41],[30,42]]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[8,[39,10],null,[[\\\"@model\\\",\\\"@firm\\\",\\\"@clientFirstName\\\",\\\"@lawyerName\\\",\\\"@appointmentDate\\\",\\\"@appointmentTime\\\",\\\"@formattedAppointmentDate\\\",\\\"@formattedPhoneMeetingMessage\\\",\\\"@initialPhoneMeeting\\\",\\\"@availableOffices\\\",\\\"@selectedOffice\\\",\\\"@includePhoneMeetingMessage\\\",\\\"@includeMeetingHyperlink\\\",\\\"@hyperlinkParsed\\\",\\\"@hyperlinkText\\\",\\\"@forceIncludeSettifyButton\\\",\\\"@buttonLabel\\\",\\\"@lawyerBio\\\",\\\"@noLawyerBios\\\",\\\"@lawyerPhotoURL\\\",\\\"@lawyerBioHeading\\\",\\\"@lawyerReadMoreURL\\\",\\\"@secondLawyerBio\\\",\\\"@secondLawyerPhotoURL\\\",\\\"@secondLawyerBioHeading\\\",\\\"@secondLawyerReadMoreURL\\\",\\\"@secondLawyerName\\\",\\\"@emailSenderName\\\",\\\"@emailSenderTitle\\\",\\\"@emailSenderPhone\\\",\\\"@lawyerDetails\\\",\\\"@showOptionalExtra\\\",\\\"@optionalExtraMessage\\\",\\\"@formattedOptionalMessage\\\",\\\"@toggleOptionalExtra\\\",\\\"@previewOptionalExtra\\\"],[[30,29],[30,1],[30,8],[30,9],[30,19],[30,20],[30,21],[30,26],[30,23],[30,43],[30,22],[30,24],[30,44],[30,27],[30,28],[30,31],[30,32],[30,10],[30,45],[30,11],[30,12],[30,13],[30,15],[30,16],[30,17],[30,18],[30,14],[30,38],[30,39],[30,41],[30,42],[30,33],[30,35],[30,34],[30,36],[30,37]]],null],[1,\\\"\\\\n\\\"]],[]]]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"],[41,[51,[30,2]],[[[1,\\\"      \\\"],[10,2],[14,0,\\\"border-t border-gray-300 py-4 text-sm\\\"],[12],[1,\\\"\\\\n        \\\"],[11,\\\"button\\\"],[24,0,\\\"text-brand-primary-color-rgb\\\"],[24,4,\\\"button\\\"],[4,[38,8],[\\\"click\\\",[30,46]],null],[12],[1,\\\"\\\\n          Click here to edit the entire email yourself.\\\\n        \\\"],[13],[1,\\\"\\\\n        You will lose formatting, links, and maps, but you can always come back to the automated email later, if you want.\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,\\\"aside\\\"],[14,0,\\\"top-4 order-first mb-6 block w-full xl:sticky xl:order-none xl:mb-0 xl:w-96\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"h2\\\"],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Email summary\\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"border bg-white p-6\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"dl\\\"],[14,0,\\\"flex flex-wrap\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"flex w-full gap-x-4\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"dt\\\"],[14,0,\\\"items-top flex flex-1\\\"],[12],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"text-sm text-gray-400\\\"],[12],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Send \\\"],[13],[1,\\\"To:\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"dd\\\"],[14,0,\\\"text-right text-sm font-medium leading-6 text-gray-700\\\"],[12],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,\\\"\\\\n              \\\"],[1,[30,8]],[1,\\\"\\\\n              \\\"],[1,[30,47]],[1,\\\"\\\\n              <\\\"],[1,[30,48]],[1,\\\">\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,49,[\\\"length\\\"]],[[[1,\\\"          \\\"],[10,0],[14,0,\\\"mt-4 flex w-full gap-x-4\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"dt\\\"],[14,0,\\\"flex flex-1 items-center\\\"],[12],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"text-sm text-gray-400\\\"],[12],[1,\\\"CC:\\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"dd\\\"],[14,0,\\\"text-right text-sm font-medium leading-6 text-gray-700\\\"],[12],[1,\\\"\\\\n              \\\"],[1,[28,[30,0,[\\\"emailsToString\\\"]],[[30,49]],null]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,50,[\\\"length\\\"]],[[[1,\\\"          \\\"],[10,0],[14,0,\\\"mt-4 flex w-full gap-x-4\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"dt\\\"],[14,0,\\\"flex flex-1 items-center\\\"],[12],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"text-sm text-gray-400\\\"],[12],[1,\\\"BCC:\\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"dd\\\"],[14,0,\\\"text-right text-sm font-medium leading-6 text-gray-700\\\"],[12],[1,\\\"\\\\n              \\\"],[1,[28,[30,0,[\\\"emailsToString\\\"]],[[30,50]],null]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[10,0],[14,0,\\\"flex w-full gap-x-4\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"dt\\\"],[14,0,\\\"items-top flex flex-1\\\"],[12],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"text-sm text-gray-400\\\"],[12],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Sending \\\"],[13],[1,\\\"From:\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"dd\\\"],[14,0,\\\"text-right text-sm font-medium leading-6 text-gray-700\\\"],[12],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,\\\"\\\\n              \\\"],[1,[30,38]],[1,\\\"\\\\n              <noreply@settify.com>\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,51],[[[1,\\\"          \\\"],[10,0],[14,0,\\\"flex w-full gap-x-4\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"dt\\\"],[14,0,\\\"items-top flex flex-1\\\"],[12],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"text-sm text-gray-400\\\"],[12],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Email \\\"],[13],[1,\\\"Attachments:\\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"dd\\\"],[14,0,\\\"text-right text-sm font-medium leading-6 text-gray-700\\\"],[12],[1,\\\"\\\\n              \\\"],[1,[28,[30,0,[\\\"attachmentsToString\\\"]],[[30,51]],null]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[10,0],[14,0,\\\"flex w-full gap-x-4\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"dt\\\"],[14,0,\\\"items-top flex flex-1\\\"],[12],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"text-sm text-gray-400\\\"],[12],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Email \\\"],[13],[1,\\\"Subject:\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"dd\\\"],[14,0,\\\"text-right text-sm font-medium leading-6 text-gray-700\\\"],[12],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,52]],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@firm\\\",\\\"@editingCustomEmailBody\\\",\\\"@inviteEmailCustomBody\\\",\\\"@toggleCancelCustomMessage\\\",\\\"@showCancelCustomMessageBody\\\",\\\"@cancelCustomMessageBodyAction\\\",\\\"@showCustomInvitationEmail\\\",\\\"@clientFirstName\\\",\\\"@lawyerName\\\",\\\"@lawyerBio\\\",\\\"@lawyerPhotoURL\\\",\\\"@lawyerBioHeading\\\",\\\"@lawyerReadMoreURL\\\",\\\"@secondLawyerName\\\",\\\"@secondLawyerBio\\\",\\\"@secondLawyerPhotoURL\\\",\\\"@secondLawyerBioHeading\\\",\\\"@secondLawyerReadMoreURL\\\",\\\"@appointmentDate\\\",\\\"@appointmentTime\\\",\\\"@formattedAppointmentDate\\\",\\\"@selectedOffice\\\",\\\"@initialPhoneMeeting\\\",\\\"@includePhoneMeetingMessage\\\",\\\"@phoneMeetingMessage\\\",\\\"@formattedPhoneMeetingMessage\\\",\\\"@hyperlinkParsed\\\",\\\"@hyperlinkText\\\",\\\"@model\\\",\\\"@inductions\\\",\\\"@forceIncludeSettifyButton\\\",\\\"@buttonLabel\\\",\\\"@showOptionalExtra\\\",\\\"@formattedOptionalMessage\\\",\\\"@optionalExtraMessage\\\",\\\"@toggleOptionalExtra\\\",\\\"@previewOptionalExtra\\\",\\\"@emailSenderName\\\",\\\"@emailSenderTitle\\\",\\\"@emailSenderEmail\\\",\\\"@emailSenderPhone\\\",\\\"@lawyerDetails\\\",\\\"@availableOffices\\\",\\\"@includeMeetingHyperlink\\\",\\\"@noLawyerBios\\\",\\\"@convertToCustomMessageBody\\\",\\\"@clientSurname\\\",\\\"@clientEmail\\\",\\\"@emailCCs\\\",\\\"@emailBCCs\\\",\\\"@attachments\\\",\\\"@emailSubject\\\"],false,[\\\"div\\\",\\\"section\\\",\\\"p\\\",\\\"img\\\",\\\"if\\\",\\\"samp\\\",\\\"v2/textarea\\\",\\\"button\\\",\\\"on\\\",\\\"invitation/email\\\",\\\"v2/invite-new-client-email\\\",\\\"unless\\\",\\\"aside\\\",\\\"h2\\\",\\\"dl\\\",\\\"dt\\\",\\\"span\\\",\\\"dd\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/invite-client-preview/index.hbs\",\n    \"isStrictMode\": false\n  });\n  class InviteClientPreviewComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _defineProperty(this, \"emailsToString\", emailList => emailList?.join(\", \") ?? null);\n      _defineProperty(this, \"attachmentsToString\", attachmentList => attachmentList?.map(attachment => attachment?.Filename ?? attachment)?.join(\", \") ?? null);\n    }\n  }\n  _exports.default = InviteClientPreviewComponent;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, InviteClientPreviewComponent);\n});","define(\"settify-mvp/components/v2/invite-new-client-email/index\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div id=\"preview-email-css-wrapper\">\n    <p>\n      Dear\n      <span class=\"settify-sensitive\">{{trim @clientFirstName}}</span>,\n    </p>\n    <p>Thank you for allowing {{@firm.name}} to assist you with your matter.</p>\n    {{#if (and @lawyerName @appointmentDate @appointmentTime)}}\n      <p>\n        I confirm you have booked\n        {{#if @initialPhoneMeeting}}\n          a call\n        {{else}}\n          an appointment\n        {{/if}}\n        for\n        {{@formattedAppointmentDate}}\n        at\n        {{@appointmentTime}}.\n        {{#if (and (not @initialPhoneMeeting) (gt @availableOffices.length 1))}}\n          The appointment will be at our\n          {{@selectedOffice.suburb}}\n          offices, at\n          {{#if @selectedOffice.mapURL}}\n            <a href={{@selectedOffice.mapURL}} target=\"_blank\" rel=\"noopener noreferrer\">{{address-string @selectedOffice}}</a>.\n          {{else}}\n            {{address-string @selectedOffice}}.\n          {{/if}}\n        {{/if}}\n        Please allow approximately one hour for this first meeting.\n      </p>\n      {{#if (and @initialPhoneMeeting @includePhoneMeetingMessage @formattedPhoneMeetingMessage)}}\n        {{@formattedPhoneMeetingMessage}}\n      {{/if}}\n      {{#if (and @includeMeetingHyperlink @hyperlinkParsed)}}\n        <p>\n          <a href={{@hyperlinkParsed}} target=\"_blank\" rel=\"noopener noreferrer\">\n            {{or @hyperlinkText @hyperlinkParsed}}\n          </a>\n        </p>\n      {{/if}}\n      {{#unless @model.client.detailedInductionComplete}}\n        <p>\n          In order to make the most of our time when we first meet, I invite you to complete our short induction questionnaire online.\n        </p>\n        <p>\n          By completing this process in your own time and space, you will enable me to consider some of the key information on your matter ahead of our meeting, so that we can make\n          the most of our initial conference. If you have any problems or queries, I would be happy to address them when we meet.\n        </p>\n      {{/unless}}\n    {{else if @model.client}}\n      <p>\n        As discussed, the next step is for you to return to our online induction, and either complete the remaining sections, provide more detail where sections were skipped over, or\n        update it to reflect any change in your circumstances. This will be a significant help in gathering the information required to progress your matter, in an efficient and\n        effective manner.\n      </p>\n    {{else}}\n      <p>\n        We invite you to make use of our\n        {{unless @firm.disbursesFees \"free\"}}\n        online induction tool. This easy-to-use system will help you to understand the process, and ask a series of questions to help us both prepare for our first meeting together,\n        should you decide to engage us.\n      </p>\n    {{/if}}\n  \n    {{#if @forceIncludeSettifyButton}}\n      <p>\n        To assist us in preparing for the meeting, we would be grateful if you could return to our online induction, and either complete the remaining sections, provide more detail\n        where sections were skipped over, or update it to reflect any change in your circumstances. This will be a significant help in gathering the information required to progress\n        your matter, in an efficient and effective manner.\n      </p>\n    {{/if}}\n  \n    {{#if (or (not @model.client.detailedInductionComplete) @forceIncludeSettifyButton (and @model.client (not @appointmentDate)))}}\n      <div class=\"my-7 text-center\" id=\"email_button\">\n        <button type=\"button\" class=\"rounded-lg bg-brand-primary-color px-4 py-2.5 text-xl font-normal text-white shadow-sm\">\n          {{@buttonLabel}}\n        </button>\n      </div>\n    {{/if}}\n  \n    <div id=\"optionalExtra\">\n      <LiquidIf @predicate={{not @showOptionalExtra}}>\n        {{#if @formattedOptionalMessage}}\n          {{@formattedOptionalMessage}}\n        {{/if}}\n        <button type=\"button\" {{on \"click\" @toggleOptionalExtra}} class=\"mb-2 text-gray-500\">\n          <span class=\"optionalExtraButton clickable\">\n            <i class=\"fal fa-pencil\" />\n            {{#if @optionalExtraMessage}}\n              Edit custom message\n            {{else}}\n              Click here to add a custom message\n            {{/if}}\n          </span>\n        </button>\n      </LiquidIf>\n      <LiquidIf @predicate={{@showOptionalExtra}}>\n        <SettifyTextarea @model={{@optionalExtraMessage}} @max={{16384}} />\n        <button type=\"button\" {{on \"click\" @previewOptionalExtra}}>\n          <span class=\"optionalExtraButton clickable\">\n            <i class=\"fal fa-eye\" />\n            Preview\n          </span>\n        </button>\n        <button type=\"button\" {{on \"click\" @toggleOptionalExtra}}>\n          <span class=\"optionalExtraButton clickable\">\n            <i class=\"fal fa-times-circle\" />\n            Remove custom message\n          </span>\n        </button>\n      </LiquidIf>\n    </div>\n  \n    {{#if (and @lawyerBio (not @noLawyerBios))}}\n      <div id=\"inviteEmailLawyerBio\" class=\"inviteEmailLawyerBio\">\n        {{#if @lawyerPhotoURL}}\n          <table border=\"0\">\n            <tbody>\n              <tr>\n                <td valign=\"top\" class=\"lawyer-bio-heading\">\n                  <p class=\"purple\">\n                    <strong>{{@lawyerBioHeading}}</strong>\n                  </p>\n                  <p class=\"lawyer-bio-text\">\n                    {{@lawyerBio}}\n                  </p>\n                  {{#if @lawyerReadMoreURL}}\n                    <p>\n                      <a href={{@lawyerReadMoreURL}} target=\"_blank\" rel=\"noopener noreferrer\">Read more...</a>\n                    </p>\n                  {{/if}}\n                </td>\n                <td valign=\"top\" class=\"w-2/5\">\n                  <img src={{@lawyerPhotoURL}} width=\"200\" alt=\"{{@lawyerName}}\" />\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        {{else}}\n          <p class=\"purple\">\n            <strong>{{@lawyerBioHeading}}</strong>\n          </p>\n          <p class=\"lawyer-bio-text\">\n            {{@lawyerBio}}\n          </p>\n          {{#if @lawyerReadMoreURL}}\n            <p>\n              <a href={{@lawyerReadMoreURL}} target=\"_blank\" rel=\"noopener noreferrer\">Read more...</a>\n            </p>\n          {{/if}}\n        {{/if}}\n      </div>\n    {{/if}}\n  \n    {{#if (and @secondLawyerBio (not @noLawyerBios))}}\n      <div id=\"inviteEmailSecondLawyerBio\" class=\"inviteEmailLawyerBio second-lawyer-bio\">\n        {{#if @secondLawyerPhotoURL}}\n          <table border=\"0\">\n            <tbody>\n              <tr>\n                <td valign=\"top\" class=\"w-3/5 pr-[5px]\">\n                  <p class=\"purple\">\n                    <strong>{{@secondLawyerBioHeading}}</strong>\n                  </p>\n                  <p class=\"lawyer-bio-text\">\n                    {{@secondLawyerBio}}\n                  </p>\n                  {{#if @secondLawyerReadMoreURL}}\n                    <p>\n                      <a href={{@secondLawyerReadMoreURL}} target=\"_blank\" rel=\"noopener noreferrer\">Read more...</a>\n                    </p>\n                  {{/if}}\n                </td>\n                <td valign=\"top\" class=\"w-2/5\">\n                  <img src={{@secondLawyerPhotoURL}} width=\"200\" alt=\"{{@secondLawyerName}}\" />\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        {{else}}\n          <p class=\"purple\">\n            <strong>{{@secondLawyerBioHeading}}</strong>\n          </p>\n          <p class=\"lawyer-bio-text\">\n            {{@secondLawyerBio}}\n          </p>\n          {{#if @secondLawyerReadMoreURL}}\n            <p>\n              <a href={{@secondLawyerReadMoreURL}} target=\"_blank\" rel=\"noopener noreferrer\">Read more...</a>\n            </p>\n          {{/if}}\n        {{/if}}\n      </div>\n    {{/if}}\n  \n    {{#if (and @lawyerName @appointmentDate @appointmentTime)}}\n      {{#if @model.client}}\n        <p>\n          I look forward to\n          {{#if @initialPhoneMeeting}}\n            speaking\n          {{else}}\n            meeting\n          {{/if}}\n          with you soon.\n        </p>\n      {{else}}\n        <p>\n          I hope you find our online legal tools easy to use, and I look forward to\n          {{#if @initialPhoneMeeting}}\n            speaking\n          {{else}}\n            meeting\n          {{/if}}\n          with you soon.\n        </p>\n      {{/if}}\n    {{else}}\n      <p>\n        We hope that you find our system helpful, and look forward to assisting you further.\n      </p>\n    {{/if}}\n  \n    {{#if (not-eq @emailSenderName @firm.name)}}\n      <p>Kind regards,</p>\n      <p>\n        {{@emailSenderName}}\n        {{#if @emailSenderTitle}}\n          <br />\n          {{@emailSenderTitle}}\n        {{/if}}\n  \n        {{#if (and (eq @emailSenderName @lawyerName) @lawyerDetails.accreditedSpecialist)}}\n          <p>\n            <img class=\"float-none\" src=\"https://cdn.settify.com.au/accredited-specialist-{{@lawyerDetails.accreditedSpecialist}}.png\" alt=\"Accredited Specialist\" />\n          </p>\n        {{/if}}\n      </p>\n    {{else}}\n      <p>\n        Yours sincerely,\n      </p>\n    {{/if}}\n  \n    <p>\n      <strong>{{@firm.name}}</strong>\n      <br />\n      <small>\n        {{#if @emailSenderEmail}}\n          {{@emailSenderEmail}}\n          <br />\n        {{/if}}\n        {{#if @emailSenderPhone}}\n          {{@emailSenderPhone}}\n          <br />\n        {{/if}}\n        {{#if (and @lawyerName @appointmentDate @appointmentTime)}}\n          <AddressPrinter @address={{@selectedOffice}} />\n        {{/if}}\n      </small>\n    </p>\n  </div>\n  */\n  {\n    \"id\": \"3Q5P1J0B\",\n    \"block\": \"[[[10,0],[14,1,\\\"preview-email-css-wrapper\\\"],[12],[1,\\\"\\\\n  \\\"],[10,2],[12],[1,\\\"\\\\n    Dear\\\\n    \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[28,[35,3],[[30,1]],null]],[13],[1,\\\",\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,2],[12],[1,\\\"Thank you for allowing \\\"],[1,[30,2,[\\\"name\\\"]]],[1,\\\" to assist you with your matter.\\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[30,3],[30,4],[30,5]],null],[[[1,\\\"    \\\"],[10,2],[12],[1,\\\"\\\\n      I confirm you have booked\\\\n\\\"],[41,[30,6],[[[1,\\\"        a call\\\\n\\\"]],[]],[[[1,\\\"        an appointment\\\\n\\\"]],[]]],[1,\\\"      for\\\\n      \\\"],[1,[30,7]],[1,\\\"\\\\n      at\\\\n      \\\"],[1,[30,5]],[1,\\\".\\\\n\\\"],[41,[28,[37,5],[[28,[37,6],[[30,6]],null],[28,[37,7],[[30,8,[\\\"length\\\"]],1],null]],null],[[[1,\\\"        The appointment will be at our\\\\n        \\\"],[1,[30,9,[\\\"suburb\\\"]]],[1,\\\"\\\\n        offices, at\\\\n\\\"],[41,[30,9,[\\\"mapURL\\\"]],[[[1,\\\"          \\\"],[10,3],[15,6,[30,9,[\\\"mapURL\\\"]]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,[28,[35,9],[[30,9]],null]],[13],[1,\\\".\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[1,[28,[35,9],[[30,9]],null]],[1,\\\".\\\\n\\\"]],[]]]],[]],null],[1,\\\"      Please allow approximately one hour for this first meeting.\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[30,6],[30,10],[30,11]],null],[[[1,\\\"      \\\"],[1,[30,11]],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,5],[[30,12],[30,13]],null],[[[1,\\\"      \\\"],[10,2],[12],[1,\\\"\\\\n        \\\"],[10,3],[15,6,[30,13]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[28,[35,10],[[30,14],[30,13]],null]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[51,[30,15,[\\\"client\\\",\\\"detailedInductionComplete\\\"]]],[[[1,\\\"      \\\"],[10,2],[12],[1,\\\"\\\\n        In order to make the most of our time when we first meet, I invite you to complete our short induction questionnaire online.\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        By completing this process in your own time and space, you will enable me to consider some of the key information on your matter ahead of our meeting, so that we can make\\\\n        the most of our initial conference. If you have any problems or queries, I would be happy to address them when we meet.\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],[[[41,[30,15,[\\\"client\\\"]],[[[1,\\\"    \\\"],[10,2],[12],[1,\\\"\\\\n      As discussed, the next step is for you to return to our online induction, and either complete the remaining sections, provide more detail where sections were skipped over, or\\\\n      update it to reflect any change in your circumstances. This will be a significant help in gathering the information required to progress your matter, in an efficient and\\\\n      effective manner.\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[10,2],[12],[1,\\\"\\\\n      We invite you to make use of our\\\\n      \\\"],[1,[52,[51,[30,2,[\\\"disbursesFees\\\"]]],\\\"free\\\"]],[1,\\\"\\\\n      online induction tool. This easy-to-use system will help you to understand the process, and ask a series of questions to help us both prepare for our first meeting together,\\\\n      should you decide to engage us.\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]],[]]],[1,\\\"\\\\n\\\"],[41,[30,16],[[[1,\\\"    \\\"],[10,2],[12],[1,\\\"\\\\n      To assist us in preparing for the meeting, we would be grateful if you could return to our online induction, and either complete the remaining sections, provide more detail\\\\n      where sections were skipped over, or update it to reflect any change in your circumstances. This will be a significant help in gathering the information required to progress\\\\n      your matter, in an efficient and effective manner.\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,10],[[28,[37,6],[[30,15,[\\\"client\\\",\\\"detailedInductionComplete\\\"]]],null],[30,16],[28,[37,5],[[30,15,[\\\"client\\\"]],[28,[37,6],[[30,4]],null]],null]],null],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"my-7 text-center\\\"],[14,1,\\\"email_button\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"button\\\"],[14,0,\\\"rounded-lg bg-brand-primary-color px-4 py-2.5 text-xl font-normal text-white shadow-sm\\\"],[14,4,\\\"button\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[30,17]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[10,0],[14,1,\\\"optionalExtra\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[28,[37,6],[[30,18]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,19],[[[1,\\\"        \\\"],[1,[30,19]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[11,\\\"button\\\"],[24,0,\\\"mb-2 text-gray-500\\\"],[24,4,\\\"button\\\"],[4,[38,14],[\\\"click\\\",[30,20]],null],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"optionalExtraButton clickable\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-pencil\\\"],[12],[13],[1,\\\"\\\\n\\\"],[41,[30,21],[[[1,\\\"            Edit custom message\\\\n\\\"]],[]],[[[1,\\\"            Click here to add a custom message\\\\n\\\"]],[]]],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[30,18]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[39,16],null,[[\\\"@model\\\",\\\"@max\\\"],[[30,21],16384]],null],[1,\\\"\\\\n      \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,14],[\\\"click\\\",[30,22]],null],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"optionalExtraButton clickable\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-eye\\\"],[12],[13],[1,\\\"\\\\n          Preview\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,14],[\\\"click\\\",[30,20]],null],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"optionalExtraButton clickable\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-times-circle\\\"],[12],[13],[1,\\\"\\\\n          Remove custom message\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,5],[[30,23],[28,[37,6],[[30,24]],null]],null],[[[1,\\\"    \\\"],[10,0],[14,1,\\\"inviteEmailLawyerBio\\\"],[14,0,\\\"inviteEmailLawyerBio\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,25],[[[1,\\\"        \\\"],[10,\\\"table\\\"],[14,\\\"border\\\",\\\"0\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[14,\\\"valign\\\",\\\"top\\\"],[14,0,\\\"lawyer-bio-heading\\\"],[12],[1,\\\"\\\\n                \\\"],[10,2],[14,0,\\\"purple\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"strong\\\"],[12],[1,[30,26]],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,2],[14,0,\\\"lawyer-bio-text\\\"],[12],[1,\\\"\\\\n                  \\\"],[1,[30,23]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,27],[[[1,\\\"                  \\\"],[10,2],[12],[1,\\\"\\\\n                    \\\"],[10,3],[15,6,[30,27]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"Read more...\\\"],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[14,\\\"valign\\\",\\\"top\\\"],[14,0,\\\"w-2/5\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"img\\\"],[15,\\\"src\\\",[30,25]],[14,\\\"width\\\",\\\"200\\\"],[15,\\\"alt\\\",[29,[[30,3]]]],[12],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,2],[14,0,\\\"purple\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"strong\\\"],[12],[1,[30,26]],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"lawyer-bio-text\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[30,23]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,27],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[10,3],[15,6,[30,27]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"Read more...\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[30,28],[28,[37,6],[[30,24]],null]],null],[[[1,\\\"    \\\"],[10,0],[14,1,\\\"inviteEmailSecondLawyerBio\\\"],[14,0,\\\"inviteEmailLawyerBio second-lawyer-bio\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,29],[[[1,\\\"        \\\"],[10,\\\"table\\\"],[14,\\\"border\\\",\\\"0\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[14,\\\"valign\\\",\\\"top\\\"],[14,0,\\\"w-3/5 pr-[5px]\\\"],[12],[1,\\\"\\\\n                \\\"],[10,2],[14,0,\\\"purple\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"strong\\\"],[12],[1,[30,30]],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,2],[14,0,\\\"lawyer-bio-text\\\"],[12],[1,\\\"\\\\n                  \\\"],[1,[30,28]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,31],[[[1,\\\"                  \\\"],[10,2],[12],[1,\\\"\\\\n                    \\\"],[10,3],[15,6,[30,31]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"Read more...\\\"],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[14,\\\"valign\\\",\\\"top\\\"],[14,0,\\\"w-2/5\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"img\\\"],[15,\\\"src\\\",[30,29]],[14,\\\"width\\\",\\\"200\\\"],[15,\\\"alt\\\",[29,[[30,32]]]],[12],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,2],[14,0,\\\"purple\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"strong\\\"],[12],[1,[30,30]],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"lawyer-bio-text\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[30,28]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,31],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[10,3],[15,6,[30,31]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"Read more...\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[30,3],[30,4],[30,5]],null],[[[41,[30,15,[\\\"client\\\"]],[[[1,\\\"      \\\"],[10,2],[12],[1,\\\"\\\\n        I look forward to\\\\n\\\"],[41,[30,6],[[[1,\\\"          speaking\\\\n\\\"]],[]],[[[1,\\\"          meeting\\\\n\\\"]],[]]],[1,\\\"        with you soon.\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,2],[12],[1,\\\"\\\\n        I hope you find our online legal tools easy to use, and I look forward to\\\\n\\\"],[41,[30,6],[[[1,\\\"          speaking\\\\n\\\"]],[]],[[[1,\\\"          meeting\\\\n\\\"]],[]]],[1,\\\"        with you soon.\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[]],[[[1,\\\"    \\\"],[10,2],[12],[1,\\\"\\\\n      We hope that you find our system helpful, and look forward to assisting you further.\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n\\\"],[41,[28,[37,23],[[30,33],[30,2,[\\\"name\\\"]]],null],[[[1,\\\"    \\\"],[10,2],[12],[1,\\\"Kind regards,\\\"],[13],[1,\\\"\\\\n    \\\"],[10,2],[12],[1,\\\"\\\\n      \\\"],[1,[30,33]],[1,\\\"\\\\n\\\"],[41,[30,34],[[[1,\\\"        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[1,[30,34]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[28,[37,25],[[30,33],[30,3]],null],[30,35,[\\\"accreditedSpecialist\\\"]]],null],[[[1,\\\"        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[10,\\\"img\\\"],[14,0,\\\"float-none\\\"],[15,\\\"src\\\",[29,[\\\"https://cdn.settify.com.au/accredited-specialist-\\\",[30,35,[\\\"accreditedSpecialist\\\"]],\\\".png\\\"]]],[14,\\\"alt\\\",\\\"Accredited Specialist\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[10,2],[12],[1,\\\"\\\\n      Yours sincerely,\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n  \\\"],[10,2],[12],[1,\\\"\\\\n    \\\"],[10,\\\"strong\\\"],[12],[1,[30,2,[\\\"name\\\"]]],[13],[1,\\\"\\\\n    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,36],[[[1,\\\"        \\\"],[1,[30,36]],[1,\\\"\\\\n        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,37],[[[1,\\\"        \\\"],[1,[30,37]],[1,\\\"\\\\n        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,5],[[30,3],[30,4],[30,5]],null],[[[1,\\\"        \\\"],[8,[39,27],null,[[\\\"@address\\\"],[[30,9]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@clientFirstName\\\",\\\"@firm\\\",\\\"@lawyerName\\\",\\\"@appointmentDate\\\",\\\"@appointmentTime\\\",\\\"@initialPhoneMeeting\\\",\\\"@formattedAppointmentDate\\\",\\\"@availableOffices\\\",\\\"@selectedOffice\\\",\\\"@includePhoneMeetingMessage\\\",\\\"@formattedPhoneMeetingMessage\\\",\\\"@includeMeetingHyperlink\\\",\\\"@hyperlinkParsed\\\",\\\"@hyperlinkText\\\",\\\"@model\\\",\\\"@forceIncludeSettifyButton\\\",\\\"@buttonLabel\\\",\\\"@showOptionalExtra\\\",\\\"@formattedOptionalMessage\\\",\\\"@toggleOptionalExtra\\\",\\\"@optionalExtraMessage\\\",\\\"@previewOptionalExtra\\\",\\\"@lawyerBio\\\",\\\"@noLawyerBios\\\",\\\"@lawyerPhotoURL\\\",\\\"@lawyerBioHeading\\\",\\\"@lawyerReadMoreURL\\\",\\\"@secondLawyerBio\\\",\\\"@secondLawyerPhotoURL\\\",\\\"@secondLawyerBioHeading\\\",\\\"@secondLawyerReadMoreURL\\\",\\\"@secondLawyerName\\\",\\\"@emailSenderName\\\",\\\"@emailSenderTitle\\\",\\\"@lawyerDetails\\\",\\\"@emailSenderEmail\\\",\\\"@emailSenderPhone\\\"],false,[\\\"div\\\",\\\"p\\\",\\\"span\\\",\\\"trim\\\",\\\"if\\\",\\\"and\\\",\\\"not\\\",\\\"gt\\\",\\\"a\\\",\\\"address-string\\\",\\\"or\\\",\\\"unless\\\",\\\"button\\\",\\\"liquid-if\\\",\\\"on\\\",\\\"i\\\",\\\"settify-textarea\\\",\\\"table\\\",\\\"tbody\\\",\\\"tr\\\",\\\"td\\\",\\\"strong\\\",\\\"img\\\",\\\"not-eq\\\",\\\"br\\\",\\\"eq\\\",\\\"small\\\",\\\"address-printer\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/invite-new-client-email/index.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/v2/list/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@glimmer/tracking\", \"settify-mvp/utils/defaults-object-initializer\", \"settify-mvp/utils/is-empty-object-checker\", \"@ember/object/internals\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _tracking, _defaultsObjectInitializer, _isEmptyObjectChecker, _internals, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@glimmer/tracking\",0,\"settify-mvp/utils/defaults-object-initializer\",0,\"settify-mvp/utils/is-empty-object-checker\",0,\"@ember/object/internals\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @label}}\n    <label id=\"{{this.id}}-label\" for={{this.id}}>\n      {{@label}}\n    </label>\n  {{/if}}\n  \n  <div class=\"flex w-full flex-col gap-2\" {{did-insert this.initialiseList}}>\n    {{#each this.listItems as |item index|}}\n      <div id=\"{{this.id}}-{{index}}\" class=\"relative w-full rounded-lg {{if @noBorder '' 'border p-2 md:p-4'}}\">\n        {{yield item index to=\"listContent\"}}\n        {{#if this.shouldShowRemoveButton}}\n          <div class=\"md:flex md:justify-end\">\n            <V2::Button\n              @variant=\"outlined\"\n              @size=\"small\"\n              {{on \"click\" (fn this.removeItem item)}}\n              id=\"{{this.id}}-delete-item\"\n              class=\"mt-4 w-full md:w-auto\"\n              aria-label=\"Delete {{this.itemName}}\"\n            >\n              <span class=\"inline-flex items-center gap-1.5 text-gray-600\">\n                <V2::SvgIcon @icon=\"trash\" class=\"size-4 text-red-500\" />\n                Delete\n                <span class=\"sr-only\">{{this.itemName}}</span>\n              </span>\n            </V2::Button>\n          </div>\n        {{/if}}\n      </div>\n    {{/each}}\n  </div>\n  \n  {{#unless @isImmutableList}}\n    <V2::Button {{on \"click\" this.addItem}} @variant=\"outlined\" @size=\"small\" id=\"{{this.id}}-add-item\" class=\"mt-4 w-full md:w-auto\" aria-label=\"Add {{this.itemName}}\">\n      <span class=\"flex items-center justify-center gap-2\">\n        <V2::SvgIcon @icon=\"circle-plus\" class=\"size-4\" />\n        Add\n        {{this.itemName}}\n      </span>\n    </V2::Button>\n  {{/unless}}\n  */\n  {\n    \"id\": \"OKI61lYP\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[10,\\\"label\\\"],[15,1,[29,[[30,0,[\\\"id\\\"]],\\\"-label\\\"]]],[15,\\\"for\\\",[30,0,[\\\"id\\\"]]],[12],[1,\\\"\\\\n    \\\"],[1,[30,1]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[11,0],[24,0,\\\"flex w-full flex-col gap-2\\\"],[4,[38,3],[[30,0,[\\\"initialiseList\\\"]]],null],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,5],[[28,[37,5],[[30,0,[\\\"listItems\\\"]]],null]],null],null,[[[1,\\\"    \\\"],[10,0],[15,1,[29,[[30,0,[\\\"id\\\"]],\\\"-\\\",[30,3]]]],[15,0,[29,[\\\"relative w-full rounded-lg \\\",[52,[30,4],\\\"\\\",\\\"border p-2 md:p-4\\\"]]]],[12],[1,\\\"\\\\n      \\\"],[18,6,[[30,2],[30,3]]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"shouldShowRemoveButton\\\"]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"md:flex md:justify-end\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,7],[[16,1,[29,[[30,0,[\\\"id\\\"]],\\\"-delete-item\\\"]]],[24,0,\\\"mt-4 w-full md:w-auto\\\"],[16,\\\"aria-label\\\",[29,[\\\"Delete \\\",[30,0,[\\\"itemName\\\"]]]]],[4,[38,8],[\\\"click\\\",[28,[37,9],[[30,0,[\\\"removeItem\\\"]],[30,2]],null]],null]],[[\\\"@variant\\\",\\\"@size\\\"],[\\\"outlined\\\",\\\"small\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"inline-flex items-center gap-1.5 text-gray-600\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,11],[[24,0,\\\"size-4 text-red-500\\\"]],[[\\\"@icon\\\"],[\\\"trash\\\"]],null],[1,\\\"\\\\n              Delete\\\\n              \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,[30,0,[\\\"itemName\\\"]]],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[2,3]],null],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[51,[30,5]],[[[1,\\\"  \\\"],[8,[39,7],[[16,1,[29,[[30,0,[\\\"id\\\"]],\\\"-add-item\\\"]]],[24,0,\\\"mt-4 w-full md:w-auto\\\"],[16,\\\"aria-label\\\",[29,[\\\"Add \\\",[30,0,[\\\"itemName\\\"]]]]],[4,[38,8],[\\\"click\\\",[30,0,[\\\"addItem\\\"]]],null]],[[\\\"@variant\\\",\\\"@size\\\"],[\\\"outlined\\\",\\\"small\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,1],[14,0,\\\"flex items-center justify-center gap-2\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,11],[[24,0,\\\"size-4\\\"]],[[\\\"@icon\\\"],[\\\"circle-plus\\\"]],null],[1,\\\"\\\\n      Add\\\\n      \\\"],[1,[30,0,[\\\"itemName\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@label\\\",\\\"item\\\",\\\"index\\\",\\\"@noBorder\\\",\\\"@isImmutableList\\\",\\\"&listContent\\\"],false,[\\\"if\\\",\\\"label\\\",\\\"div\\\",\\\"did-insert\\\",\\\"each\\\",\\\"-track-array\\\",\\\"yield\\\",\\\"v2/button\\\",\\\"on\\\",\\\"fn\\\",\\\"span\\\",\\\"v2/svg-icon\\\",\\\"unless\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/list/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component for handling a dynamic list of items with optional actions like adding and removing items.\n   *\n   * @class ListComponent\n   * @extends Component\n   *\n   * @param {Array} [this.args.values=[]] - The array of items to display in the list.\n   * @param {string} [this.args.itemName=\"item\"] - The name of each item in the list.\n   * @param {Object} [this.args.defaults] - Optional defaults object to initialise items.\n   * @param {boolean} [this.args.isImmutableList=false] - Flag indicating if the list is immutable.\n   * @param {boolean} [this.args.preventEmptyLists=false] - Flag indicating if empty lists should be prevented.\n   * @param {boolean} [this.args.noDestroy=false] - Flag indicating if destruction of empty model items should be prevented.\n   * @param {Object} this.args.clientRecord - The client record object used for dereferencing entities.\n   * @param {string} [this.args.id] - Optional unique identifier for the component instance.\n   *\n   * @example\n   * <V2::List\n   *   @values={{this.items}}\n   *   @itemName=\"product\"\n   *   @defaults={{this.defaults}}\n   *   @isImmutableList={{true}}\n   *   @preventEmptyLists={{true}}\n   *   @noDestroy={{false}}\n   *   @clientRecord={{this.clientRecord}}\n   *   @id=\"list-component-1\"\n   * >\n   *   {{!-- List item rendering goes here --}}\n   * </V2::List>\n   */\n  let ListComponent = _exports.default = (_class = class ListComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"listItems\", _descriptor, this);\n      _defineProperty(this, \"itemName\", this.args.itemName || \"item\");\n      _defineProperty(this, \"defaultsObjectInitializer\", new _defaultsObjectInitializer.DefaultsObjectInitializer(this.args.defaults, true));\n    }\n    get id() {\n      return this.args.id ?? `list-component-${(0, _internals.guidFor)(this)}`;\n    }\n\n    /**\n     * Determines if the remove button should be shown based on list properties and arguments.\n     * @returns {boolean} True if the remove button should be shown, false otherwise.\n     */\n    get shouldShowRemoveButton() {\n      return !this.args.isImmutableList && (this.listItems.length > 1 || !this.args.preventEmptyLists);\n    }\n\n    /**\n     * Initialises the list based on arguments and default settings.\n     * Adds a default item if the list is empty.\n     * Dereferences entities if the list is marked as immutable and contains entity IDs.\n     */\n    initialiseList() {\n      // If the list is empty, we should add one start with\n      if (!this.listItems.length) {\n        return this.addItem();\n      }\n      // Check if this is an array of people that we should be dereferencing\n      if (this.args.isImmutableList && this.listItems.every(o => typeof o === \"string\" && o.length === 36)) {\n        this.listItems = this.listItems.map(o => this.args.clientRecord.getKnownEntity(o));\n        return;\n      }\n      // Assign default properties to any item that doesn't have them\n      for (const item of this.listItems) {\n        this.defaultsObjectInitializer.setDefaults(item);\n      }\n    }\n\n    /**\n     * Adds a new item to the list.\n     * Pushes the new item to `this.args.values` and updates `this.listItems`.\n     */\n    addItem() {\n      if (Array.isArray(this.args.values)) {\n        this.args.values.pushObject(this.defaultsObjectInitializer.createDefaultItem());\n        this.listItems = [...this.args.values];\n      }\n    }\n\n    /**\n     * Removes an item from the list.\n     * Removes the item from `this.args.values` and updates `this.listItems`.\n     * @param {Object} item - The item to remove from the list.\n     */\n    removeItem(item) {\n      if (Array.isArray(this.args.values)) {\n        this.args.values.removeObject(item);\n        this.listItems = [...this.args.values];\n      }\n    }\n\n    /**\n     * Hook called when the component is being destroyed.\n     * Removes empty model items if `this.args.noDestroy` is not set.\n     */\n    removeEmptyModelItems() {\n      for (const item of this.args.values) {\n        if ((0, _isEmptyObjectChecker.default)(item, {\n          ignoreEmptySubobjects: true\n        })) {\n          this.removeItem(item);\n        }\n      }\n    }\n    willDestroy() {\n      if (!this.args.noDestroy) {\n        this.removeEmptyModelItems();\n      }\n      super.willDestroy(...arguments);\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"listItems\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return this.args.values || [];\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"initialiseList\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"initialiseList\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"addItem\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"addItem\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"removeItem\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"removeItem\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, ListComponent);\n});","define(\"settify-mvp/components/v2/loading-button/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/template-factory\"], function (_exports, _component, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::Button @variant={{@variant}} @size={{@size}} @route={{@route}} @model={{@model}} disabled={{or @disabled @loading}} class={{this.classNames}} ...attributes>\n    {{#if @loading}}\n      <V2::SvgIcon @icon=\"spinner-third\" class=\"size-4 animate-spin\" role=\"progressbar\" aria-live=\"polite\" />\n      {{@loadingText}}\n    {{else}}\n      {{yield}}\n    {{/if}}\n  </V2::Button>\n  */\n  {\n    \"id\": \"qFbrcszt\",\n    \"block\": \"[[[8,[39,0],[[16,\\\"disabled\\\",[28,[37,1],[[30,1],[30,2]],null]],[16,0,[30,0,[\\\"classNames\\\"]]],[17,3]],[[\\\"@variant\\\",\\\"@size\\\",\\\"@route\\\",\\\"@model\\\"],[[30,4],[30,5],[30,6],[30,7]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,2],[[[1,\\\"    \\\"],[8,[39,3],[[24,0,\\\"size-4 animate-spin\\\"],[24,\\\"role\\\",\\\"progressbar\\\"],[24,\\\"aria-live\\\",\\\"polite\\\"]],[[\\\"@icon\\\"],[\\\"spinner-third\\\"]],null],[1,\\\"\\\\n    \\\"],[1,[30,8]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[18,9,null],[1,\\\"\\\\n\\\"]],[]]]],[]]]]]],[\\\"@disabled\\\",\\\"@loading\\\",\\\"&attrs\\\",\\\"@variant\\\",\\\"@size\\\",\\\"@route\\\",\\\"@model\\\",\\\"@loadingText\\\",\\\"&default\\\"],false,[\\\"v2/button\\\",\\\"or\\\",\\\"if\\\",\\\"v2/svg-icon\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/loading-button/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A loading button component that shows a loading state while performing an action.\n   *\n   * @class LoadingButtonComponent\n   * @extends {Component}\n   *\n   * @param {boolean} [loading=false] - If true, the loading indicator is shown and the button becomes disabled.\n   * @param {string} [loadingText] - Text shown when loading is true.\n   * @param {string} [loadingPosition='start'] - The loading indicator can be positioned at the \"start\" or \"end\" of the button.\n   * @param {boolean} [disabled=false] - If true, the button is disabled.\n   * @param {string} [variant] - The style variant of the button. Can be 'solid' or 'outlined'.\n   * @param {string} [size] - The size of the button. Can be 'small', 'medium', or 'large'.\n   * @param {string} [route] - The route for the LinkTo component. If provided, renders as a link.\n   * @param {Object} [model] - The model for the LinkTo component. If provided, will be passed as a model.\n   */\n  class LoadingButtonComponent extends _component2.default {\n    get classNames() {\n      const base = \"flex items-center justify-center gap-2\";\n      const position = this.positionClass;\n      return `${base} ${position}`;\n    }\n    get positionClass() {\n      const positionClasses = {\n        start: \"flex-row\",\n        // Align content to start\n        end: \"flex-row-reverse\" // Align content to end and reverse row direction\n      };\n      return positionClasses[this.args.loadingPosition] || positionClasses.start;\n    }\n  }\n  _exports.default = LoadingButtonComponent;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, LoadingButtonComponent);\n});","define(\"settify-mvp/components/v2/matrix-scale/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@ember/object/internals\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _internals, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@ember/object/internals\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <label id=\"{{this.id}}-label\" for={{this.id}} class=\"block mb-2 {{if @required \"required-field-marker\"}}\">\n    {{#if (has-block)}}\n      {{yield}}\n    {{else}}\n      {{@label}}\n    {{/if}}\n  </label>\n  \n  <div id={{this.id}} aria-labelledby=\"{{this.id}}-label\" ...attributes>\n    {{!-- Table with radio inputs for desktop view --}}\n    <div role=\"table\" class=\"hidden sm:block overflow-x-scroll\">\n      {{!-- Column Headers --}}\n      <div class=\"grid\" style={{html-safe (concat \"grid-template-columns: repeat(\" this.columnCount \", minmax(0, 1fr));\")}} role=\"row\">\n        <div class=\"p-3 border-b border-gray-200\" role=\"columnheader\" aria-hidden=\"true\"></div>\n        {{#each @columns as |column index|}}\n          <div class=\"p-3 text-center font-medium tracking-wider border-b border-gray-200\" id=\"{{this.id}}-column-{{index}}\" role=\"columnheader\">\n            {{column.title}}\n          </div>\n        {{/each}}\n      </div>\n  \n      {{!-- Rows and Cells --}}\n      {{#each @rows as |row rowIndex|}}\n        <div class=\"grid\" style={{html-safe (concat \"grid-template-columns: repeat(\" this.columnCount \", minmax(0, 1fr));\")}} role=\"row\">\n          <div class=\"p-3 font-medium border-b border-gray-200\" id=\"{{this.id}}-row-{{rowIndex}}\" role=\"rowheader\">\n            {{row.title}}\n          </div>\n          {{#each @columns as |column columnIndex|}}\n            <div class=\"p-3 flex justify-center items-center border-b border-gray-200\" role=\"cell\" aria-labelledby=\"{{this.id}}-row-{{rowIndex}} {{this.id}}-column-{{columnIndex}}\">\n              <V2::RadioButton\n                @value={{column.id}}\n                @name={{row.id}}\n                @checked={{eq column.id (get @values row.id)}}\n                @onChange={{fn this.onChange row.id}}\n                aria-label=\"Rate {{column.title}} for {{row.title}}\"\n              />\n            </div>\n          {{/each}}\n        </div>\n      {{/each}}\n    </div>\n  \n    {{!-- Select inputs for mobile view --}}\n    <div class=\"grid gap-3 sm:hidden w-full\">\n      {{#each @rows as |row rowIndex|}}\n        <div>\n          <V2::SelectBox @label={{row.title}} @options={{this.selectBoxOptions}} @name={{row.id}} @selectedItem={{get @values row.id}} @onChange={{fn this.onChange row.id}} />\n        </div>\n      {{/each}}\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"SGECh2d5\",\n    \"block\": \"[[[10,\\\"label\\\"],[15,1,[29,[[30,0,[\\\"id\\\"]],\\\"-label\\\"]]],[15,\\\"for\\\",[30,0,[\\\"id\\\"]]],[15,0,[29,[\\\"block mb-2 \\\",[52,[30,1],\\\"required-field-marker\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[48,[30,15]],[[[1,\\\"    \\\"],[18,15,null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[1,[30,2]],[1,\\\"\\\\n\\\"]],[]]],[13],[1,\\\"\\\\n\\\\n\\\"],[11,0],[16,1,[30,0,[\\\"id\\\"]]],[16,\\\"aria-labelledby\\\",[29,[[30,0,[\\\"id\\\"]],\\\"-label\\\"]]],[17,3],[12],[1,\\\"\\\\n\\\"],[1,\\\"  \\\"],[10,0],[14,\\\"role\\\",\\\"table\\\"],[14,0,\\\"hidden sm:block overflow-x-scroll\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"    \\\"],[10,0],[14,0,\\\"grid\\\"],[15,5,[28,[37,5],[[28,[37,6],[\\\"grid-template-columns: repeat(\\\",[30,0,[\\\"columnCount\\\"]],\\\", minmax(0, 1fr));\\\"],null]],null]],[14,\\\"role\\\",\\\"row\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"p-3 border-b border-gray-200\\\"],[14,\\\"role\\\",\\\"columnheader\\\"],[14,\\\"aria-hidden\\\",\\\"true\\\"],[12],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,8],[[28,[37,8],[[30,4]],null]],null],null,[[[1,\\\"        \\\"],[10,0],[14,0,\\\"p-3 text-center font-medium tracking-wider border-b border-gray-200\\\"],[15,1,[29,[[30,0,[\\\"id\\\"]],\\\"-column-\\\",[30,6]]]],[14,\\\"role\\\",\\\"columnheader\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[30,5,[\\\"title\\\"]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[5,6]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[42,[28,[37,8],[[28,[37,8],[[30,7]],null]],null],null,[[[1,\\\"      \\\"],[10,0],[14,0,\\\"grid\\\"],[15,5,[28,[37,5],[[28,[37,6],[\\\"grid-template-columns: repeat(\\\",[30,0,[\\\"columnCount\\\"]],\\\", minmax(0, 1fr));\\\"],null]],null]],[14,\\\"role\\\",\\\"row\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"p-3 font-medium border-b border-gray-200\\\"],[15,1,[29,[[30,0,[\\\"id\\\"]],\\\"-row-\\\",[30,9]]]],[14,\\\"role\\\",\\\"rowheader\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[30,8,[\\\"title\\\"]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,8],[[28,[37,8],[[30,4]],null]],null],null,[[[1,\\\"          \\\"],[10,0],[14,0,\\\"p-3 flex justify-center items-center border-b border-gray-200\\\"],[14,\\\"role\\\",\\\"cell\\\"],[15,\\\"aria-labelledby\\\",[29,[[30,0,[\\\"id\\\"]],\\\"-row-\\\",[30,9],\\\" \\\",[30,0,[\\\"id\\\"]],\\\"-column-\\\",[30,11]]]],[12],[1,\\\"\\\\n            \\\"],[8,[39,9],[[16,\\\"aria-label\\\",[29,[\\\"Rate \\\",[30,10,[\\\"title\\\"]],\\\" for \\\",[30,8,[\\\"title\\\"]]]]]],[[\\\"@value\\\",\\\"@name\\\",\\\"@checked\\\",\\\"@onChange\\\"],[[30,10,[\\\"id\\\"]],[30,8,[\\\"id\\\"]],[28,[37,10],[[30,10,[\\\"id\\\"]],[28,[37,11],[[30,12],[30,8,[\\\"id\\\"]]],null]],null],[28,[37,12],[[30,0,[\\\"onChange\\\"]],[30,8,[\\\"id\\\"]]],null]]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[10,11]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"]],[8,9]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"  \\\"],[10,0],[14,0,\\\"grid gap-3 sm:hidden w-full\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,8],[[28,[37,8],[[30,7]],null]],null],null,[[[1,\\\"      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[8,[39,13],null,[[\\\"@label\\\",\\\"@options\\\",\\\"@name\\\",\\\"@selectedItem\\\",\\\"@onChange\\\"],[[30,13,[\\\"title\\\"]],[30,0,[\\\"selectBoxOptions\\\"]],[30,13,[\\\"id\\\"]],[28,[37,11],[[30,12],[30,13,[\\\"id\\\"]]],null],[28,[37,12],[[30,0,[\\\"onChange\\\"]],[30,13,[\\\"id\\\"]]],null]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[13,14]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@required\\\",\\\"@label\\\",\\\"&attrs\\\",\\\"@columns\\\",\\\"column\\\",\\\"index\\\",\\\"@rows\\\",\\\"row\\\",\\\"rowIndex\\\",\\\"column\\\",\\\"columnIndex\\\",\\\"@values\\\",\\\"row\\\",\\\"rowIndex\\\",\\\"&default\\\"],false,[\\\"label\\\",\\\"if\\\",\\\"has-block\\\",\\\"yield\\\",\\\"div\\\",\\\"html-safe\\\",\\\"concat\\\",\\\"each\\\",\\\"-track-array\\\",\\\"v2/radio-button\\\",\\\"eq\\\",\\\"get\\\",\\\"fn\\\",\\\"v2/select-box\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/matrix-scale/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component for rendering a matrix scale (Likert scale) with rows and columns.\n   *\n   * @class MatrixScaleComponent\n   * @extends Component\n   *\n   * @param {Array} this.args.rows - Array of objects representing each row in the matrix.\n   * @param {Array} this.args.columns - Array of objects representing each column in the matrix.\n   * @param {string} [this.args.id] - Optional unique identifier for the component instance.\n   * @param {string} [this.args.label] - Optional label for the matrix scale.\n   * @param {Function} [this.args.onChange] - Optional callback that fires when a radio button is selected.\n   *\n   * @example\n   * <V2::MatrixScale\n   *   @id=\"matrix1\"\n   *   @label=\"Matrix Scale Example\"\n   *   @rows={{this.rows}}\n   *   @columns={{this.columns}}\n   *   @onChange={{this.handleMatrixChange}}\n   * />\n   */\n  let MatrixScaleComponent = _exports.default = (_class = class MatrixScaleComponent extends _component2.default {\n    get id() {\n      return this.args.id ?? `matrix-scale-component-${(0, _internals.guidFor)(this)}`;\n    }\n\n    /**\n     * Computes the number of columns for the Likert scale table, including an extra column for row headers.\n     * @returns {number} The total number of columns, including the row header column.\n     */\n    get columnCount() {\n      return this.args.columns.length + 1; // +1 for the row header column\n    }\n\n    /**\n     * Maps the columns to an array of options suitable for the V2 SelectBox component.\n     * @returns {Array<{label: string, value: string}>} An array of objects where each object represents a column with a label and value.\n     */\n    get selectBoxOptions() {\n      return this.args.columns.map(column => ({\n        label: column.title,\n        value: column.id\n      }));\n    }\n    onChange(rowID, columnID, event) {\n      if (this.args.onChange && typeof this.args.onChange === \"function\") {\n        const changeObject = {\n          name: rowID,\n          value: columnID\n        };\n        this.args.onChange(changeObject, event);\n      }\n    }\n  }, _applyDecoratedDescriptor(_class.prototype, \"onChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"onChange\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, MatrixScaleComponent);\n});","define(\"settify-mvp/components/v2/mfa-code/index\", [\"exports\", \"@ember/component\", \"@ember/service\", \"@glimmer/tracking\", \"@glimmer/component\", \"@ember/template-factory\"], function (_exports, _component, _service, _tracking, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _MfaCodeComponent_brand;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@glimmer/tracking\",0,\"@glimmer/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }\n  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div>\n    Please scan the QR Code or copy & paste your secret manually.\n    <div id=\"qrcode\" class=\"mt-2 flex w-full shrink-0 flex-col items-center justify-center\">{{this.qrCode}}</div>\n    <div>\n      <div class=\"mt-2\">\n        <label for=\"secret\" class=\"block text-sm font-medium leading-6 text-gray-900\">Secret:</label>\n        <span\n          id=\"secret\"\n          class=\"block w-full rounded-md border-0 py-1.5 font-mono text-gray-900 ring-0 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-brand-primary-color-rgb sm:text-sm sm:leading-6\"\n        >{{this.secret}}</span>\n      </div>\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"wzrU9/R0\",\n    \"block\": \"[[[10,0],[12],[1,\\\"\\\\n  Please scan the QR Code or copy & paste your secret manually.\\\\n  \\\"],[10,0],[14,1,\\\"qrcode\\\"],[14,0,\\\"mt-2 flex w-full shrink-0 flex-col items-center justify-center\\\"],[12],[1,[30,0,[\\\"qrCode\\\"]]],[13],[1,\\\"\\\\n  \\\"],[10,0],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"mt-2\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"secret\\\"],[14,0,\\\"block text-sm font-medium leading-6 text-gray-900\\\"],[12],[1,\\\"Secret:\\\"],[13],[1,\\\"\\\\n      \\\"],[10,1],[14,1,\\\"secret\\\"],[14,0,\\\"block w-full rounded-md border-0 py-1.5 font-mono text-gray-900 ring-0 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-brand-primary-color-rgb sm:text-sm sm:leading-6\\\"],[12],[1,[30,0,[\\\"secret\\\"]]],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[],false,[\\\"div\\\",\\\"label\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/mfa-code/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /* global QRCode */\n\n  /**\n   * A Glimmer component representing a MFA Code UI element.\n   */\n  let MfaCodeComponent = _exports.default = (_class = (_MfaCodeComponent_brand = /*#__PURE__*/new WeakSet(), class MfaCodeComponent extends _component2.default {\n    constructor() {\n      super(...arguments);\n      _classPrivateMethodInitSpec(this, _MfaCodeComponent_brand);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n      _initializerDefineProperty(this, \"session\", _descriptor2, this);\n      _initializerDefineProperty(this, \"cognitoUser\", _descriptor3, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor4, this);\n      _initializerDefineProperty(this, \"secret\", _descriptor5, this);\n      _defineProperty(this, \"issuer\", \"Settify\");\n      _assertClassBrand(_MfaCodeComponent_brand, this, _getMFASecret).call(this);\n    }\n  }), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"cognitoUser\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"secret\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n  async function _getMFASecret() {\n    if (!this.session.data.authenticated.mfaEnabled && !this.session.totpCreated) {\n      if (this.cognitoUser?.user) {\n        await this.cognitoUser.user.associateSoftwareToken({\n          associateSecretCode: secret => {\n            this.secret = secret;\n            this.encodedURI = `otpauth://totp/MFA:${this.firm.id}?secret=${secret}&issuer=Settify`;\n            const qrElement = document.getElementById(\"qrcode\");\n            if (qrElement) {\n              this.code = new QRCode(qrElement, this.encodedURI);\n            } else {\n              console.log(\"Unable to find element:\", this.encodedURI);\n            }\n          },\n          onFailure: err => {\n            this.eventLogging.logError(\"Failed to begin setup of MFA\", err);\n          },\n          onSuccess: () => {\n            console.log(\"Retrieved MFA code\");\n          }\n        });\n      }\n    }\n  }\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, MfaCodeComponent);\n});","define(\"settify-mvp/components/v2/modal/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/object/internals\", \"@ember/template-factory\"], function (_exports, _component, _component2, _tracking, _object, _internals, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"@ember/object/internals\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @isOpen}}\n    <dialog\n      class=\"relative w-full max-w-2xl rounded-lg bg-white shadow-xl backdrop:bg-gray-500 backdrop:bg-opacity-75 sm:w-full\"\n      id={{this.modalID}}\n      aria-labelledby=\"{{if @title (concat this.modalID '-title')}}\"\n      aria-describedby=\"{{this.modalID}}-content\"\n      aria-modal=\"true\"\n      {{did-insert this.toggleModal}}\n      {{on \"close\" this.closeModal}}\n      {{on \"click\" this.backdropClick}}\n      data-test-modal\n      ...attributes\n    >\n      <form class=\"flex flex-col gap-4 p-4 sm:gap-6 sm:px-6 sm:pb-6 sm:pt-10\" {{on \"submit\" this.submitAndClose}}>\n        {{#if @title}}\n          <h3 class=\"font-semibold leading-6 sm:-mt-4\" id=\"{{this.modalID}}-title\" data-test-modal-title>\n            {{@title}}\n          </h3>\n        {{/if}}\n  \n        <div id=\"{{this.modalID}}-content\" data-test-modal-content>\n          {{yield}}\n        </div>\n  \n        {{#unless @hideButtons}}\n          {{! Buttons }}\n          <div class=\"fleg-col flex gap-2 sm:flex-row sm:gap-2\">\n            <V2::Button @variant=\"outlined\" class=\"inline-flex w-full items-center justify-center gap-1\" {{on \"click\" this.closeModal}} data-test-cancel-button>\n              <V2::SvgIcon @icon=\"x-mark\" class=\"size-5\" />\n              {{this.cancelLabel}}\n            </V2::Button>\n            {{#if @onSubmit}}\n              <V2::Button\n                @variant=\"outlined\"\n                type=\"submit\"\n                disabled={{this.submissionInProgress}}\n                class=\"inline-flex w-full items-center justify-center gap-1 text-brand-primary-color-rgb\"\n                data-test-confirm-button\n              >\n                {{#if this.submissionInProgress}}\n                  <V2::SvgIcon @icon=\"spinner-third\" class=\"size-5 animate-spin text-brand-primary-color-rgb\" role=\"status\" />\n                  <span class=\"text-sm\">\n                    Processing...\n                  </span>\n                {{else}}\n                  <V2::SvgIcon @icon=\"check\" class=\"size-5\" />\n                  {{this.confirmLabel}}\n                {{/if}}\n              </V2::Button>\n            {{/if}}\n          </div>\n        {{/unless}}\n      </form>\n  \n      <V2::Button @size=\"small\" class=\"close-button absolute right-3 top-3 hidden !p-0 text-gray-400 hover:text-gray-500 sm:block\" {{on \"click\" this.closeModal}}>\n        <span class=\"sr-only\">Close</span>\n        <V2::SvgIcon @icon=\"x-mark\" class=\"size-6\" />\n      </V2::Button>\n    </dialog>\n  {{/if}}\n  */\n  {\n    \"id\": \"IGH8nM7L\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[11,\\\"dialog\\\"],[24,0,\\\"relative w-full max-w-2xl rounded-lg bg-white shadow-xl backdrop:bg-gray-500 backdrop:bg-opacity-75 sm:w-full\\\"],[16,1,[30,0,[\\\"modalID\\\"]]],[16,\\\"aria-labelledby\\\",[29,[[52,[30,2],[28,[37,2],[[30,0,[\\\"modalID\\\"]],\\\"-title\\\"],null]]]]],[16,\\\"aria-describedby\\\",[29,[[30,0,[\\\"modalID\\\"]],\\\"-content\\\"]]],[24,\\\"aria-modal\\\",\\\"true\\\"],[24,\\\"data-test-modal\\\",\\\"\\\"],[17,3],[4,[38,3],[[30,0,[\\\"toggleModal\\\"]]],null],[4,[38,4],[\\\"close\\\",[30,0,[\\\"closeModal\\\"]]],null],[4,[38,4],[\\\"click\\\",[30,0,[\\\"backdropClick\\\"]]],null],[12],[1,\\\"\\\\n    \\\"],[11,\\\"form\\\"],[24,0,\\\"flex flex-col gap-4 p-4 sm:gap-6 sm:px-6 sm:pb-6 sm:pt-10\\\"],[4,[38,4],[\\\"submit\\\",[30,0,[\\\"submitAndClose\\\"]]],null],[12],[1,\\\"\\\\n\\\"],[41,[30,2],[[[1,\\\"        \\\"],[10,\\\"h3\\\"],[14,0,\\\"font-semibold leading-6 sm:-mt-4\\\"],[15,1,[29,[[30,0,[\\\"modalID\\\"]],\\\"-title\\\"]]],[14,\\\"data-test-modal-title\\\",\\\"\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[30,2]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n      \\\"],[10,0],[15,1,[29,[[30,0,[\\\"modalID\\\"]],\\\"-content\\\"]]],[14,\\\"data-test-modal-content\\\",\\\"\\\"],[12],[1,\\\"\\\\n        \\\"],[18,6,null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[51,[30,4]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"fleg-col flex gap-2 sm:flex-row sm:gap-2\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,10],[[24,0,\\\"inline-flex w-full items-center justify-center gap-1\\\"],[24,\\\"data-test-cancel-button\\\",\\\"\\\"],[4,[38,4],[\\\"click\\\",[30,0,[\\\"closeModal\\\"]]],null]],[[\\\"@variant\\\"],[\\\"outlined\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,11],[[24,0,\\\"size-5\\\"]],[[\\\"@icon\\\"],[\\\"x-mark\\\"]],null],[1,\\\"\\\\n            \\\"],[1,[30,0,[\\\"cancelLabel\\\"]]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[30,5],[[[1,\\\"            \\\"],[8,[39,10],[[16,\\\"disabled\\\",[30,0,[\\\"submissionInProgress\\\"]]],[24,0,\\\"inline-flex w-full items-center justify-center gap-1 text-brand-primary-color-rgb\\\"],[24,\\\"data-test-confirm-button\\\",\\\"\\\"],[24,4,\\\"submit\\\"]],[[\\\"@variant\\\"],[\\\"outlined\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"submissionInProgress\\\"]],[[[1,\\\"                \\\"],[8,[39,11],[[24,0,\\\"size-5 animate-spin text-brand-primary-color-rgb\\\"],[24,\\\"role\\\",\\\"status\\\"]],[[\\\"@icon\\\"],[\\\"spinner-third\\\"]],null],[1,\\\"\\\\n                \\\"],[10,1],[14,0,\\\"text-sm\\\"],[12],[1,\\\"\\\\n                  Processing...\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                \\\"],[8,[39,11],[[24,0,\\\"size-5\\\"]],[[\\\"@icon\\\"],[\\\"check\\\"]],null],[1,\\\"\\\\n                \\\"],[1,[30,0,[\\\"confirmLabel\\\"]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"            \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[8,[39,10],[[24,0,\\\"close-button absolute right-3 top-3 hidden !p-0 text-gray-400 hover:text-gray-500 sm:block\\\"],[4,[38,4],[\\\"click\\\",[30,0,[\\\"closeModal\\\"]]],null]],[[\\\"@size\\\"],[\\\"small\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Close\\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,11],[[24,0,\\\"size-6\\\"]],[[\\\"@icon\\\"],[\\\"x-mark\\\"]],null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@isOpen\\\",\\\"@title\\\",\\\"&attrs\\\",\\\"@hideButtons\\\",\\\"@onSubmit\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"dialog\\\",\\\"concat\\\",\\\"did-insert\\\",\\\"on\\\",\\\"form\\\",\\\"h3\\\",\\\"div\\\",\\\"yield\\\",\\\"unless\\\",\\\"v2/button\\\",\\\"v2/svg-icon\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/modal/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component representing a modal UI element.\n   * @class ModalComponent\n   * @extends Component\n   *\n   * @param {Object} [this.args] - Arguments for configuring the component.\n   * @param {string} [this.args.id] - ID for the modal. If not provided, a default ID will be generated.\n   * @param {boolean} [this.args.isOpen=false] - Flag indicating whether the modal is open or closed.\n   * @param {string} [this.args.title] - The title/heading of the modal.\n   * @param {string} [this.args.confirmLabel=\"Confirm\"] - Label for the confirm button.\n   * @param {string} [this.args.cancelLabel=\"Cancel\"] - Label for the cancel button.\n   * @param {string} [this.args.width] - Optional width of the modal (e.g. max-w-lg, max-w-xl, max-w-2xl)\n   * @param {boolean} [this.args.hideButtons] - Hide buttons on the modal.\n   * @param {Function} this.args.onClose - Callback fired when the modal is closed.\n   * @param {Function} [this.args.onSubmit] - Callback fired when the modal is submitted.\n   */\n  let ModalComponent = _exports.default = (_class = class ModalComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"submissionInProgress\", _descriptor, this);\n    }\n    get confirmLabel() {\n      return this.args.confirmLabel ?? \"Confirm\";\n    }\n    get cancelLabel() {\n      return this.args.cancelLabel ?? \"Cancel\";\n    }\n    get modalID() {\n      // Have a fallback default ID\n      return this.args.id ?? `modal-component-${(0, _internals.guidFor)(this)}`;\n    }\n    closeModal() {\n      this.args.onClose();\n    }\n    async submitAndClose(event) {\n      event.preventDefault();\n      this.submissionInProgress = true;\n      await this.args.onSubmit(event);\n      this.submissionInProgress = false;\n      this.closeModal();\n    }\n    backdropClick(event) {\n      if (event.target.tagName === \"DIALOG\" && event.target === event.currentTarget) {\n        this.closeModal();\n      }\n    }\n    toggleModal(element) {\n      return element.open ? element.close() : element.showModal();\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"submissionInProgress\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"closeModal\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"closeModal\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"submitAndClose\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"submitAndClose\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"backdropClick\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"backdropClick\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"toggleModal\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleModal\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, ModalComponent);\n});","define(\"settify-mvp/components/v2/money-input/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/service\", \"@glimmer/tracking\", \"@ember/object/internals\", \"@ember/object\", \"@ember/utils\", \"settify-mvp/utils/clamp-value\", \"@ember/template-factory\"], function (_exports, _component, _component2, _service, _tracking, _internals, _object, _utils, _clampValue, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/service\",0,\"@glimmer/tracking\",0,\"@ember/object/internals\",0,\"@ember/object\",0,\"@ember/utils\",0,\"settify-mvp/utils/clamp-value\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (or (has-block) @label)}}\n    <label id=\"{{this.id}}-label\" for={{this.id}} class=\"mb-2 block {{if @required 'required-field-marker'}}\">\n      {{#if (has-block)}}\n        {{yield}}\n      {{else}}\n        {{@label}}\n      {{/if}}\n    </label>\n  {{/if}}\n  <div class=\"relative\">\n    <span class=\"pointer-events-none absolute inset-y-0 left-0 flex items-center pl-3 text-base text-gray-500\" id=\"{{this.id}}-icon\">\n      {{if (eq this.config.domain.id \"uk\") \"£\" \"$\"}}\n    </span>\n    {{! We use a HTML input element rather than Embers Input component because the the Input component uses 2 way binding }}\n    <input\n      id={{this.id}}\n      value={{this.formattedValue}}\n      label={{@label}}\n      required={{@required}}\n      min={{@min}}\n      max={{@max}}\n      type=\"text\"\n      class=\"block w-full rounded-md border-0 py-1.5 pl-7 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-brand-primary-color-rgb\"\n      aria-labelledby=\"{{this.id}}-label\"\n      aria-describedby={{if this.showWarning (concat this.id \"-warning\")}}\n      aria-invalid={{if this.showWarning \"true\"}}\n      {{on \"input\" this.handleChange}}\n      ...attributes\n    />\n  </div>\n  {{#if this.showWarning}}\n    <span class=\"text-sm text-red-600\" id=\"{{this.id}}-warning\" role=\"alert\" aria-live=\"assertive\">\n      That doesn't look like a number\n    </span>\n  {{/if}}\n  */\n  {\n    \"id\": \"NciI09Vn\",\n    \"block\": \"[[[41,[28,[37,1],[[48,[30,6]],[30,1]],null],[[[1,\\\"  \\\"],[10,\\\"label\\\"],[15,1,[29,[[30,0,[\\\"id\\\"]],\\\"-label\\\"]]],[15,\\\"for\\\",[30,0,[\\\"id\\\"]]],[15,0,[29,[\\\"mb-2 block \\\",[52,[30,2],\\\"required-field-marker\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[48,[30,6]],[[[1,\\\"      \\\"],[18,6,null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[1,[30,1]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[10,0],[14,0,\\\"relative\\\"],[12],[1,\\\"\\\\n  \\\"],[10,1],[14,0,\\\"pointer-events-none absolute inset-y-0 left-0 flex items-center pl-3 text-base text-gray-500\\\"],[15,1,[29,[[30,0,[\\\"id\\\"]],\\\"-icon\\\"]]],[12],[1,\\\"\\\\n    \\\"],[1,[52,[28,[37,7],[[30,0,[\\\"config\\\",\\\"domain\\\",\\\"id\\\"]],\\\"uk\\\"],null],\\\"£\\\",\\\"$\\\"]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[1,\\\"  \\\"],[11,\\\"input\\\"],[16,1,[30,0,[\\\"id\\\"]]],[16,2,[30,0,[\\\"formattedValue\\\"]]],[16,\\\"label\\\",[30,1]],[16,\\\"required\\\",[30,2]],[16,\\\"min\\\",[30,3]],[16,\\\"max\\\",[30,4]],[24,4,\\\"text\\\"],[24,0,\\\"block w-full rounded-md border-0 py-1.5 pl-7 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-brand-primary-color-rgb\\\"],[16,\\\"aria-labelledby\\\",[29,[[30,0,[\\\"id\\\"]],\\\"-label\\\"]]],[16,\\\"aria-describedby\\\",[52,[30,0,[\\\"showWarning\\\"]],[28,[37,9],[[30,0,[\\\"id\\\"]],\\\"-warning\\\"],null]]],[16,\\\"aria-invalid\\\",[52,[30,0,[\\\"showWarning\\\"]],\\\"true\\\"]],[17,5],[4,[38,10],[\\\"input\\\",[30,0,[\\\"handleChange\\\"]]],null],[12],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showWarning\\\"]],[[[1,\\\"  \\\"],[10,1],[14,0,\\\"text-sm text-red-600\\\"],[15,1,[29,[[30,0,[\\\"id\\\"]],\\\"-warning\\\"]]],[14,\\\"role\\\",\\\"alert\\\"],[14,\\\"aria-live\\\",\\\"assertive\\\"],[12],[1,\\\"\\\\n    That doesn't look like a number\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@label\\\",\\\"@required\\\",\\\"@min\\\",\\\"@max\\\",\\\"&attrs\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"or\\\",\\\"has-block\\\",\\\"label\\\",\\\"yield\\\",\\\"div\\\",\\\"span\\\",\\\"eq\\\",\\\"input\\\",\\\"concat\\\",\\\"on\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/money-input/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component representing input type number.\n   * @class V2::MoneyInput\n   * @extends Component\n   * @param {string} this.args.value - The value of the money input field.\n   * @param {string} [this.args.id] - ID of the money input. If not provided, a unique ID will be generated.\n   * @param {string} [this.args.label] - Text above the input.\n   * @param {boolean} [this.args.required] - Handles required state of the input.\n   * @param {number} [this.args.min] - Minimum value allowed for the input.\n   * @param {number} [this.args.max] - Maximum value allowed for the input.\n   * @param {function} [this.args.onChange] - Action to handle changes to the input value.\n   *\n   *\n   * @example\n   * ```handlebars\n   * <V2::MoneyInput\n   *   @id={{this.id}}\n   *   @label=\"Value\"\n   *   @value=\"5000\"\n   *   @required=true\n   *   @min=\"0\"\n   *   @max=\"9000\"\n   *   placeholder=\"How much is it worth\"\n   *   class=\"border-b-1\"\n   *   @onChange={{this.handleChange}}\n   * />\n   * ```\n   */\n  let MoneyInputComponent = _exports.default = (_dec = (0, _service.service)(\"dynamic-config\"), _class = class MoneyInputComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"config\", _descriptor, this);\n      _initializerDefineProperty(this, \"showWarning\", _descriptor2, this);\n    }\n    get id() {\n      return this.args.id ?? `money-input-component-${(0, _internals.guidFor)(this)}`;\n    }\n\n    /**\n     * Get the formatted value for display.\n     * @returns {string} The formatted value.\n     */\n    get formattedValue() {\n      return (0, _utils.isEmpty)(this.args.value) ? \"\" : this.formatValue(this.args.value);\n    }\n\n    /**\n     * Converts a string or number to a localized string with commas.\n     * If the input is not a valid number, returns the input value unchanged.\n     * @param {string|number} value - The value to format.\n     * @returns {string} - The formatted value.\n     */\n    formatValue(value = \"\") {\n      const numberValue = Number(value);\n      return isNaN(numberValue) ? value : numberValue.toLocaleString();\n    }\n\n    /**\n     * Parses a formatted string to a number by removing commas.\n     * @param {string} value - The value to parse.\n     * @returns {number} - The parsed number.\n     */\n    parseValue(value) {\n      return Number(value.replace(/,/g, \"\"));\n    }\n\n    /**\n     * Handles the input change event.\n     * Parses the input value, clamps it, and calls the onChange callback if provided.\n     * @param {Event} event - The input event.\n     */\n    handleChange(event) {\n      let {\n        value\n      } = event.target;\n      if (!(0, _utils.isEmpty)(value)) {\n        const numberValue = this.parseValue(value);\n        if (isNaN(numberValue)) {\n          this.showWarning = true;\n          return;\n        }\n        this.showWarning = false;\n        value = (0, _clampValue.default)(numberValue, this.args.min, this.args.max);\n      }\n      if (typeof this.args.onChange === \"function\") {\n        this.args.onChange(value, event);\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"config\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"showWarning\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"handleChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleChange\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, MoneyInputComponent);\n});","define(\"settify-mvp/components/v2/name-input/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/service\", \"@ember/object/internals\", \"@ember/template-factory\"], function (_exports, _component, _component2, _tracking, _object, _service, _internals, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/object/internals\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{!-- NAME INPUT --}}\n  <V2::Textline\n    @label={{@label}}\n    @value={{@value}}\n    @id={{this.id}}\n    @required={{@required}}\n    @onChange={{this.onNameChange}}\n    ...attributes\n  />\n  \n  {{#if (or @allowGender @allowPronouns)}}\n    <button type=\"button\" {{on \"click\" this.toggleShowGenderOrPronouns}} class=\"rounded-md px-2 py-1 text-center text-sm\" aria-expanded={{this.showGenderOrPronouns}} aria-controls=\"{{this.id}}-gender-pronouns\">\n      {{this.genderAndPronounButtonText}}\n    </button>\n  {{/if}}\n  \n  {{#if this.showGenderOrPronouns}}\n    <div id=\"{{this.id}}-gender-pronouns\" class=\"mt-3 grid grid-cols-1 sm:grid-cols-2 gap-3\">\n      {{#if @allowGender}}\n        <div>\n          {{!-- GENDER --}}\n          <V2::SelectBox\n            @prompt=\"Gender\"\n            @selectedItem={{@gender}}\n            @options={{this.genderOptions}}\n            @id=\"{{this.id}}-gender\"\n            @onChange={{this.onGenderChange}}\n            aria-label=\"Gender\"\n          />\n          <p class=\"text-sm text-gray-700\">\n            We will use gender-neutral language by default.\n          </p>\n        </div>\n      {{/if}}\n  \n      {{#if @allowPronouns}}\n        <div>\n          {{!-- PRONOUNS --}}\n          <V2::Textline\n            @value={{@pronouns}}\n            @id=\"{{this.id}}-pronouns\"\n            list=\"{{this.id}}-pronoun-suggestions\"\n            placeholder=\"Pronouns\"\n            aria-label=\"Pronouns\"\n          />\n          <datalist id=\"{{this.id}}-pronoun-suggestions\">\n            {{#each this.pronounSuggestions as |pronoun|}}\n              <option value={{pronoun}} />\n            {{/each}}\n          </datalist>\n          <p class=\"text-sm text-gray-700\">\n            This helps {{this.firm.name}} use the correct pronouns.\n          </p>\n        </div>\n      {{/if}}\n    </div>\n  {{/if}}\n  \n  \n  */\n  {\n    \"id\": \"AwqCvZ89\",\n    \"block\": \"[[[8,[39,0],[[17,1]],[[\\\"@label\\\",\\\"@value\\\",\\\"@id\\\",\\\"@required\\\",\\\"@onChange\\\"],[[30,2],[30,3],[30,0,[\\\"id\\\"]],[30,4],[30,0,[\\\"onNameChange\\\"]]]],null],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,2],[[30,5],[30,6]],null],[[[1,\\\"  \\\"],[11,\\\"button\\\"],[24,0,\\\"rounded-md px-2 py-1 text-center text-sm\\\"],[16,\\\"aria-expanded\\\",[30,0,[\\\"showGenderOrPronouns\\\"]]],[16,\\\"aria-controls\\\",[29,[[30,0,[\\\"id\\\"]],\\\"-gender-pronouns\\\"]]],[24,4,\\\"button\\\"],[4,[38,4],[\\\"click\\\",[30,0,[\\\"toggleShowGenderOrPronouns\\\"]]],null],[12],[1,\\\"\\\\n    \\\"],[1,[30,0,[\\\"genderAndPronounButtonText\\\"]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showGenderOrPronouns\\\"]],[[[1,\\\"  \\\"],[10,0],[15,1,[29,[[30,0,[\\\"id\\\"]],\\\"-gender-pronouns\\\"]]],[14,0,\\\"mt-3 grid grid-cols-1 sm:grid-cols-2 gap-3\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,5],[[[1,\\\"      \\\"],[10,0],[12],[1,\\\"\\\\n\\\"],[1,\\\"        \\\"],[8,[39,6],[[24,\\\"aria-label\\\",\\\"Gender\\\"]],[[\\\"@prompt\\\",\\\"@selectedItem\\\",\\\"@options\\\",\\\"@id\\\",\\\"@onChange\\\"],[\\\"Gender\\\",[30,7],[30,0,[\\\"genderOptions\\\"]],[29,[[30,0,[\\\"id\\\"]],\\\"-gender\\\"]],[30,0,[\\\"onGenderChange\\\"]]]],null],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"text-sm text-gray-700\\\"],[12],[1,\\\"\\\\n          We will use gender-neutral language by default.\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,6],[[[1,\\\"      \\\"],[10,0],[12],[1,\\\"\\\\n\\\"],[1,\\\"        \\\"],[8,[39,0],[[16,\\\"list\\\",[29,[[30,0,[\\\"id\\\"]],\\\"-pronoun-suggestions\\\"]]],[24,\\\"placeholder\\\",\\\"Pronouns\\\"],[24,\\\"aria-label\\\",\\\"Pronouns\\\"]],[[\\\"@value\\\",\\\"@id\\\"],[[30,8],[29,[[30,0,[\\\"id\\\"]],\\\"-pronouns\\\"]]]],null],[1,\\\"\\\\n        \\\"],[10,\\\"datalist\\\"],[15,1,[29,[[30,0,[\\\"id\\\"]],\\\"-pronoun-suggestions\\\"]]],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,10],[[28,[37,10],[[30,0,[\\\"pronounSuggestions\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[10,\\\"option\\\"],[15,2,[30,9]],[12],[13],[1,\\\"\\\\n\\\"]],[9]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"text-sm text-gray-700\\\"],[12],[1,\\\"\\\\n          This helps \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\" use the correct pronouns.\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"]],[\\\"&attrs\\\",\\\"@label\\\",\\\"@value\\\",\\\"@required\\\",\\\"@allowGender\\\",\\\"@allowPronouns\\\",\\\"@gender\\\",\\\"@pronouns\\\",\\\"pronoun\\\"],false,[\\\"v2/textline\\\",\\\"if\\\",\\\"or\\\",\\\"button\\\",\\\"on\\\",\\\"div\\\",\\\"v2/select-box\\\",\\\"p\\\",\\\"datalist\\\",\\\"each\\\",\\\"-track-array\\\",\\\"option\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/name-input/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A component that renders a name input with optional gender and pronouns fields.\n   *\n   * @class NameInputComponent\n   * @extends {Component}\n   *\n   * @param {string} value - The value of the name input.\n   * @param {string} [label] - The label text for the name input element.\n   * @param {boolean} [required] - Whether the name input element is required.\n   * @param {string} [id] - A unique id used by all elements.\n   * @param {string} [gender] - The selected gender value.\n   * @param {string} [pronouns] - The entered pronouns value.\n   * @param {boolean} [allowGender] - Whether to show the option to add gender.\n   * @param {boolean} [allowPronouns] - Whether to show the option to add pronouns.\n   * @param {function} [onNameChange] - The action to call when the name input value changes.\n   * @param {function} [onGenderChange] - The action to call when the gender value changes.\n   */\n  let NameInputComponent = _exports.default = (_class = class NameInputComponent extends _component2.default {\n    constructor() {\n      super(...arguments);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n      _initializerDefineProperty(this, \"showGenderOrPronouns\", _descriptor2, this);\n      _defineProperty(this, \"genderOptions\", [{\n        value: \"male\",\n        name: \"Male\"\n      }, {\n        value: \"female\",\n        name: \"Female\"\n      }, {\n        value: \"non-binary\",\n        name: \"Non-binary\"\n      }, {\n        value: \"undisclosed\",\n        name: \"Prefer not to say\"\n      }]);\n      _defineProperty(this, \"pronounSuggestions\", [\"he/him\", \"she/her\", \"they/them\"]);\n      if (this.args.gender || this.args.pronouns) this.showGenderOrPronouns = true;\n    }\n\n    /**\n     * Returns the id for the name input element.\n     * If no id is provided in the arguments, a default id is generated using `guidFor`.\n     *\n     * @returns {string} A unique ID.\n     */\n    get id() {\n      return this.args.id ?? `name-component-${(0, _internals.guidFor)(this)}`;\n    }\n\n    /**\n     * Computes the text for the button that toggles the display of gender and pronoun inputs.\n     *\n     * @returns {string} Button text.\n     */\n    get genderAndPronounButtonText() {\n      const {\n        allowGender,\n        allowPronouns\n      } = this.args;\n      const addOrHide = this.showGenderOrPronouns ? \"Hide\" : \"Add\";\n      if (allowGender && allowPronouns) return `${addOrHide} gender and/or pronouns`;\n      if (allowGender) return `${addOrHide} gender`;\n      if (allowPronouns) return `${addOrHide} pronouns`;\n      return \"\";\n    }\n\n    /**\n     * Action to enable the display of gender and pronouns inputs.\n     */\n    toggleShowGenderOrPronouns() {\n      this.showGenderOrPronouns = !this.showGenderOrPronouns;\n    }\n\n    /**\n     * Action triggered when the name input value changes.\n     *\n     * @param {string} value - The new value of the name input.\n     * @param {Event} event - The input event.\n     */\n    onNameChange(value, event) {\n      if (typeof this.args.onNameChange === \"function\") {\n        this.args.onNameChange(value, event);\n      }\n    }\n\n    /**\n     * Action triggered when the gender input value changes.\n     *\n     * @param {string} value - The new value of the gender input.\n     * @param {Event} event - The change event.\n     */\n    onGenderChange(value, event) {\n      if (typeof this.args.onGenderChange === \"function\") {\n        this.args.onGenderChange(value, event);\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"showGenderOrPronouns\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"toggleShowGenderOrPronouns\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleShowGenderOrPronouns\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"onNameChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"onNameChange\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"onGenderChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"onGenderChange\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, NameInputComponent);\n});","define(\"settify-mvp/components/v2/new-password/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@glimmer/tracking\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _tracking, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@glimmer/tracking\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::Textline\n    @type=\"password\"\n    @value={{@newPassword}}\n    @label={{or @label \"New password\"}}\n    @id=\"new-password\"\n    @required={{true}}\n    autocomplete=\"new-password\"\n    @onChange={{this.handleInputChange}}\n  />\n  \n  <div id=\"new-password-validation\">\n    <ul>\n      <li><V2::Checkbox @label=\"At least 8 characters long\" @value={{this.isLongEnough}} @disabled={{true}} /></li>\n      <li><V2::Checkbox @label=\"Contain at least one number\" @value={{this.hasNumber}} @disabled={{true}} /></li>\n      <li><V2::Checkbox @label=\"Contain at least one uppercase letter\" @value={{this.hasUppercase}} @disabled={{true}} /></li>\n      <li><V2::Checkbox @label=\"Contain at least one lowercase letter\" @value={{this.hasLowercase}} @disabled={{true}} /></li>\n    </ul>\n  </div>\n  */\n  {\n    \"id\": \"Dvts2oXd\",\n    \"block\": \"[[[8,[39,0],[[24,\\\"autocomplete\\\",\\\"new-password\\\"]],[[\\\"@type\\\",\\\"@value\\\",\\\"@label\\\",\\\"@id\\\",\\\"@required\\\",\\\"@onChange\\\"],[\\\"password\\\",[30,1],[28,[37,1],[[30,2],\\\"New password\\\"],null],\\\"new-password\\\",true,[30,0,[\\\"handleInputChange\\\"]]]],null],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,1,\\\"new-password-validation\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"ul\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"li\\\"],[12],[8,[39,5],null,[[\\\"@label\\\",\\\"@value\\\",\\\"@disabled\\\"],[\\\"At least 8 characters long\\\",[30,0,[\\\"isLongEnough\\\"]],true]],null],[13],[1,\\\"\\\\n    \\\"],[10,\\\"li\\\"],[12],[8,[39,5],null,[[\\\"@label\\\",\\\"@value\\\",\\\"@disabled\\\"],[\\\"Contain at least one number\\\",[30,0,[\\\"hasNumber\\\"]],true]],null],[13],[1,\\\"\\\\n    \\\"],[10,\\\"li\\\"],[12],[8,[39,5],null,[[\\\"@label\\\",\\\"@value\\\",\\\"@disabled\\\"],[\\\"Contain at least one uppercase letter\\\",[30,0,[\\\"hasUppercase\\\"]],true]],null],[13],[1,\\\"\\\\n    \\\"],[10,\\\"li\\\"],[12],[8,[39,5],null,[[\\\"@label\\\",\\\"@value\\\",\\\"@disabled\\\"],[\\\"Contain at least one lowercase letter\\\",[30,0,[\\\"hasLowercase\\\"]],true]],null],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@newPassword\\\",\\\"@label\\\"],false,[\\\"v2/textline\\\",\\\"or\\\",\\\"div\\\",\\\"ul\\\",\\\"li\\\",\\\"v2/checkbox\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/new-password/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component representing a new password UI element.\n   * @class NewPasswordComponent\n   * @extends Component\n   * @param {string} this.args.newPassword - The new password being set\n   * @param {Function} this.args.setValidation - Action to set whether the password is valid or not\n   *\n   * @example\n   * newPassword = \"\";\n   * setValidation = isValid => console.log('Password is valid: ', isValid);\n   * <V2::NewPassword @newPassword={{this.newPassword}} @setValidation={{this.setValidation}} />\n   */\n  let NewPasswordComponent = _exports.default = (_class = class NewPasswordComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"isLongEnough\", _descriptor, this);\n      // Used for \"At least 8 characters long\" checkbox\n      _initializerDefineProperty(this, \"hasNumber\", _descriptor2, this);\n      // Used for \"Contain at least one number\" checkbox\n      _initializerDefineProperty(this, \"hasUppercase\", _descriptor3, this);\n      // Used for \"Contain at least one upper case letter\" checkbox\n      _initializerDefineProperty(this, \"hasLowercase\", _descriptor4, this);\n    }\n    // Used for \"Contain at least one lower case letter\" checkbox\n\n    /**\n     * Handles the new password value and triggers validation.\n     * We use the new value argument from the input event to check validation, not the provided this.args.newPassword arg, as `this.args.newPassword` might not reflect the latest input value until after this event fires.\n     * @param {String} newPassword - The new input value\n     */\n    handleInputChange(newPassword) {\n      if (typeof this.args.setValidation === \"function\") {\n        this.args.setValidation(this.isPasswordValid(newPassword));\n      }\n    }\n\n    /**\n     * Checks if the password meets the complexity requirements.\n     * @param {string} newPassword - The new password value\n     * @returns {boolean} - Returns true if the password meets all criteria, otherwise false\n     */\n    isPasswordValid(newPassword) {\n      this.isLongEnough = newPassword.length >= 8;\n      this.hasNumber = /[0-9]/.test(newPassword);\n      this.hasUppercase = /[A-Z]/.test(newPassword);\n      this.hasLowercase = /[a-z]/.test(newPassword);\n      return this.isLongEnough && this.hasNumber && this.hasUppercase && this.hasLowercase;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"isLongEnough\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"hasNumber\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"hasUppercase\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"hasLowercase\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"handleInputChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleInputChange\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, NewPasswordComponent);\n});","define(\"settify-mvp/components/v2/number-input/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object/internals\", \"@ember/object\", \"settify-mvp/utils/clamp-value\", \"@ember/template-factory\"], function (_exports, _component, _component2, _internals, _object, _clampValue, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object/internals\",0,\"@ember/object\",0,\"settify-mvp/utils/clamp-value\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::Textline\n    @id={{this.id}}\n    @label={{@label}}\n    @type=\"number\"\n    @value={{@value}}\n    @required={{@required}}\n    min={{@min}}\n    max={{@max}}\n    @onBlur={{this.handleChange}}\n    ...attributes\n  />\n  */\n  {\n    \"id\": \"mDLuanTy\",\n    \"block\": \"[[[8,[39,0],[[16,\\\"min\\\",[30,1]],[16,\\\"max\\\",[30,2]],[17,3]],[[\\\"@id\\\",\\\"@label\\\",\\\"@type\\\",\\\"@value\\\",\\\"@required\\\",\\\"@onBlur\\\"],[[30,0,[\\\"id\\\"]],[30,4],\\\"number\\\",[30,5],[30,6],[30,0,[\\\"handleChange\\\"]]]],null]],[\\\"@min\\\",\\\"@max\\\",\\\"&attrs\\\",\\\"@label\\\",\\\"@value\\\",\\\"@required\\\"],false,[\\\"v2/textline\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/number-input/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component representing input type number.\n   * @class V2::NumberInput\n   * @extends Component\n   * @param {string} [this.id] - The id of the <V2::Textline /> input - replacement for default id generated there.\n   * @param {string} [this.args.label] - The text label displayed above the number input on the <V2::Textline /> component.\n   * @param {string} this.args.value - REQUIRED: The value of the input element in the <V2::Textline />.\n   * @param {Boolean} [this.args.required] - Controls whether the input element is required.\n   * @param {Boolean} [this.args.assumeTwoDigitYears] - Controls whather the clamp value function should treats two-digit years (sent as an argument to the clampValue)\n   * @param {function} [this.args.onChange] - REQUIRED: An action to be called when the radio button's state changes\n   *\n   * @example\n   * ```handlebars\n   * <V2::NumberInput\n   *   @id={{this.id}}\n   *   @label=\"Age\"\n   *   @value=\"10\"\n   *   @required=true\n   *   @min=\"0\"\n   *   @max=\"120\"\n   *   @assumeTwoDigitYears=true\n   *   placeholder=\"Enter your age\"\n   *   class=\"border-b-1\"\n   *   @onChange={{this.handleChange}}\n   * />\n   * ```\n   */\n  let NumberInputComponent = _exports.default = (_class = class NumberInputComponent extends _component2.default {\n    get id() {\n      return this.args.id ?? `number-input-component-${(0, _internals.guidFor)(this)}`;\n    }\n    handleChange(value, event) {\n      const clampedValue = (0, _clampValue.default)(value, this.args.min, this.args.max, this.args.assumeTwoDigitYears);\n      if (typeof this.args.onChange === \"function\") {\n        this.args.onChange(clampedValue, event);\n      }\n    }\n  }, _applyDecoratedDescriptor(_class.prototype, \"handleChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleChange\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, NumberInputComponent);\n});","define(\"settify-mvp/components/v2/office-select/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/service\", \"@ember/object\", \"@ember/object/internals\", \"settify-mvp/helpers/address-string\", \"@ember/template-factory\"], function (_exports, _component, _component2, _service, _object, _internals, _addressString, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/service\",0,\"@ember/object\",0,\"@ember/object/internals\",0,\"settify-mvp/helpers/address-string\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.firmHasMoreThanOneOffice}}\n    <V2::RadioButtonGroup\n      @label={{@label}}\n      @name=\"{{this.id}}-option\"\n      @value={{@value}}\n      @options={{this.options}}\n      @id={{this.id}}\n      @required={{@required}}\n      @onChange={{this.handleSelect}}\n    />\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"rU2gRfC5\",\n    \"block\": \"[[[41,[30,0,[\\\"firmHasMoreThanOneOffice\\\"]],[[[1,\\\"  \\\"],[8,[39,1],null,[[\\\"@label\\\",\\\"@name\\\",\\\"@value\\\",\\\"@options\\\",\\\"@id\\\",\\\"@required\\\",\\\"@onChange\\\"],[[30,1],[29,[[30,0,[\\\"id\\\"]],\\\"-option\\\"]],[30,2],[30,0,[\\\"options\\\"]],[30,0,[\\\"id\\\"]],[30,3],[30,0,[\\\"handleSelect\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@label\\\",\\\"@value\\\",\\\"@required\\\"],false,[\\\"if\\\",\\\"v2/radio-button-group\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/office-select/index.hbs\",\n    \"isStrictMode\": false\n  });\n  let OfficeSelectComponent = _exports.default = (_class = class OfficeSelectComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n    }\n    get firmHasMoreThanOneOffice() {\n      return this.firm?.addresses?.length > 1 ?? false;\n    }\n    get id() {\n      return this.args.id ?? `office-select-component-${(0, _internals.guidFor)(this)}`;\n    }\n    get options() {\n      const firmOffices = this.firm?.addresses?.map(office => ({\n        title: (0, _addressString.addressString)([office]),\n        id: (0, _addressString.addressString)([office])\n      })) || [];\n      return [...firmOffices, ...(this.args?.options || [])];\n    }\n    handleSelect(selectedOffice, event) {\n      if (this.args.onChange && typeof this.args.onChange === \"function\") {\n        this.args.onChange(selectedOffice, event);\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"handleSelect\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleSelect\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, OfficeSelectComponent);\n});","define(\"settify-mvp/components/v2/pagination/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (gt this.totalPages 1)}}\n    <nav class=\"pagination flex items-center justify-between border-t border-gray-200 py-4 px-3\" aria-label=\"Pagination\">\n      <div class=\"flex w-0 flex-1\">\n        <V2::Button @variant=\"outlined\" {{on \"click\" this.previousPage}} aria-label=\"Previous Page\" disabled={{this.disablePrevButton}}>\n          Previous\n        </V2::Button>\n      </div>\n      <div class=\"hidden md:-mt-px md:flex\">\n        <p class=\"pagination-info text-sm text-gray-700\">\n          Page\n          <span class=\"font-medium\">{{this.currentPage}}</span>\n          of\n          <span class=\"font-medium\">{{this.totalPages}}</span>\n        </p>\n      </div>\n      <div class=\"flex w-0 flex-1 justify-end\">\n        <V2::Button @variant=\"outlined\" {{on \"click\" this.nextPage}} aria-label=\"Next Page\" disabled={{this.disableNextButton}}>\n          Next\n        </V2::Button>\n      </div>\n    </nav>\n  {{/if}}\n  */\n  {\n    \"id\": \"d5kZOS/W\",\n    \"block\": \"[[[41,[28,[37,1],[[30,0,[\\\"totalPages\\\"]],1],null],[[[1,\\\"  \\\"],[10,\\\"nav\\\"],[14,0,\\\"pagination flex items-center justify-between border-t border-gray-200 py-4 px-3\\\"],[14,\\\"aria-label\\\",\\\"Pagination\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"flex w-0 flex-1\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,4],[[24,\\\"aria-label\\\",\\\"Previous Page\\\"],[16,\\\"disabled\\\",[30,0,[\\\"disablePrevButton\\\"]]],[4,[38,5],[\\\"click\\\",[30,0,[\\\"previousPage\\\"]]],null]],[[\\\"@variant\\\"],[\\\"outlined\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        Previous\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"hidden md:-mt-px md:flex\\\"],[12],[1,\\\"\\\\n      \\\"],[10,2],[14,0,\\\"pagination-info text-sm text-gray-700\\\"],[12],[1,\\\"\\\\n        Page\\\\n        \\\"],[10,1],[14,0,\\\"font-medium\\\"],[12],[1,[30,0,[\\\"currentPage\\\"]]],[13],[1,\\\"\\\\n        of\\\\n        \\\"],[10,1],[14,0,\\\"font-medium\\\"],[12],[1,[30,0,[\\\"totalPages\\\"]]],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"flex w-0 flex-1 justify-end\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,4],[[24,\\\"aria-label\\\",\\\"Next Page\\\"],[16,\\\"disabled\\\",[30,0,[\\\"disableNextButton\\\"]]],[4,[38,5],[\\\"click\\\",[30,0,[\\\"nextPage\\\"]]],null]],[[\\\"@variant\\\"],[\\\"outlined\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        Next\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[],false,[\\\"if\\\",\\\"gt\\\",\\\"nav\\\",\\\"div\\\",\\\"v2/button\\\",\\\"on\\\",\\\"p\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/pagination/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component representing a pagination UI element.\n   *\n   * @class PaginationComponent\n   * @extends Component\n   *\n   * @param {Object} [this.args] - Arguments for configuring the component.\n   * @param {number} [this.args.currentPage=1] - The current page.\n   * @param {number} [this.args.pageSize=10] - The number of items per page.\n   * @param {number} [this.args.totalCount=1] - The total number of items.\n   * @param {Function} [this.args.onChange] - Callback fired when the page is changed.\n   *\n   * @example\n   * <Pagination\n   *   @currentPage={{1}}\n   *   @totalCount={{100}}\n   *   @pageSize={{10}}\n   *   @onChange={{this.handlePageChange}}\n   * />\n   */\n  let PaginationComponent = _exports.default = (_class = class PaginationComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _defineProperty(this, \"defaultPage\", 1);\n      _defineProperty(this, \"defaultPageSize\", 10);\n    }\n    get currentPage() {\n      const pageNumber = this.args.currentPage || this.defaultPage;\n      // Ensure currentPage is within valid bounds\n      return Math.max(1, Math.min(pageNumber, this.totalPages));\n    }\n    get pageSize() {\n      return this.args.pageSize || this.defaultPageSize;\n    }\n    get totalPages() {\n      return Math.max(1, Math.ceil(this.args.totalCount / this.pageSize));\n    }\n    get disablePrevButton() {\n      return this.currentPage <= 1;\n    }\n    get disableNextButton() {\n      return this.currentPage >= this.totalPages;\n    }\n    previousPage() {\n      if (!this.disablePrevButton) {\n        this.args.onChange(this.currentPage - 1);\n      }\n    }\n    nextPage() {\n      if (!this.disableNextButton) {\n        this.args.onChange(this.currentPage + 1);\n      }\n    }\n  }, _applyDecoratedDescriptor(_class.prototype, \"previousPage\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"previousPage\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"nextPage\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"nextPage\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, PaginationComponent);\n});","define(\"settify-mvp/components/v2/phone-input/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object/internals\", \"@ember/object\", \"@glimmer/tracking\", \"@ember/runloop\", \"@ember/template-factory\"], function (_exports, _component, _component2, _internals, _object, _tracking, _runloop, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object/internals\",0,\"@ember/object\",0,\"@glimmer/tracking\",0,\"@ember/runloop\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::Textline\n    @id={{this.id}}\n    @value={{@value}}\n    @label={{@label}}\n    @type=\"tel\"\n    @onChange={{this.checkValidation}}\n    @required={{@required}}\n    name={{or @name \"phonenumber\"}}\n    aria-describedby={{if this.showWarning (concat this.id \"-warning\")}}\n    aria-required={{if @required \"true\"}}\n    aria-invalid={{if this.showWarning \"true\"}}\n    ...attributes\n  />\n  \n  {{#if this.showWarning}}\n    <span class=\"text-sm text-red-600\" id=\"{{this.id}}-warning\" role=\"alert\" aria-live=\"assertive\">\n      That doesn't look like a valid phone number to us.\n    </span>\n  {{/if}}\n  */\n  {\n    \"id\": \"/rzC5NXE\",\n    \"block\": \"[[[8,[39,0],[[16,3,[28,[37,1],[[30,1],\\\"phonenumber\\\"],null]],[16,\\\"aria-describedby\\\",[52,[30,0,[\\\"showWarning\\\"]],[28,[37,3],[[30,0,[\\\"id\\\"]],\\\"-warning\\\"],null]]],[16,\\\"aria-required\\\",[52,[30,2],\\\"true\\\"]],[16,\\\"aria-invalid\\\",[52,[30,0,[\\\"showWarning\\\"]],\\\"true\\\"]],[17,3]],[[\\\"@id\\\",\\\"@value\\\",\\\"@label\\\",\\\"@type\\\",\\\"@onChange\\\",\\\"@required\\\"],[[30,0,[\\\"id\\\"]],[30,4],[30,5],\\\"tel\\\",[30,0,[\\\"checkValidation\\\"]],[30,2]]],null],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"showWarning\\\"]],[[[1,\\\"  \\\"],[10,1],[14,0,\\\"text-sm text-red-600\\\"],[15,1,[29,[[30,0,[\\\"id\\\"]],\\\"-warning\\\"]]],[14,\\\"role\\\",\\\"alert\\\"],[14,\\\"aria-live\\\",\\\"assertive\\\"],[12],[1,\\\"\\\\n    That doesn't look like a valid phone number to us.\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@name\\\",\\\"@required\\\",\\\"&attrs\\\",\\\"@value\\\",\\\"@label\\\"],false,[\\\"v2/textline\\\",\\\"or\\\",\\\"if\\\",\\\"concat\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/phone-input/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component representing a phone number input field with validation.\n   *\n   * @class PhoneInputComponent\n   * @param {string} this.args.value - The value of the phone input field.\n   * @param {string} [this.args.id] - ID of the phone input. If not provided, a unique ID will be generated.\n   * @param {string} [this.args.label] - Text above the phone input.\n   * @param {boolean} [this.args.required] - Handles required state of the phone input.\n   * @param {function} [this.args.onChange] - Action to handle changes to the phone input value.\n   * @param {function} [this.args.setPhoneNumberValidation] - Action which sets the state of the validation of the phone input.\n   *\n   * @example\n   * ```hbs\n   * <PhoneInput @value={{this.phone}} @label=\"Phone number\" @placeholder=\"Enter your number\" @required={{true}} @setPhoneNumberValidation={{this.setValidation}} />\n   * ```\n   */\n  let PhoneInputComponent = _exports.default = (_class = class PhoneInputComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      // Regex patterns for different phone number formats\n      _defineProperty(this, \"localLandlineRegex\", /^[1-9][0-9]{7}$/);\n      _defineProperty(this, \"areaCodeLandlineRegex\", /^[(]?0[1-9][)]?[0-9]{8}$/);\n      _defineProperty(this, \"internationalLandlineRegex\", /^[+]?61[0-9]{9}$/);\n      _defineProperty(this, \"canadianUSRegex\", /^\\(?([0-9]{3})\\)?[-.]?([0-9]{3})[-.]?([0-9]{4})$/);\n      _defineProperty(this, \"flexibleRegex\", /^(([+][(]?[0-9]{1,3}[)]?)|([(]?[0-9]{4}[)]?))\\s*[)]?[-\\s.]?[(]?[0-9]{1,3}[)]?([-\\s.]?[0-9]{3})([-\\s.]?[0-9]{3,4})$/);\n      _initializerDefineProperty(this, \"showWarning\", _descriptor, this);\n    }\n    /**\n     * Returns the id for the input element.\n     * If no id is provided in the arguments, a default id is generated using `guidFor`.\n     *\n     * @returns {string} A unique ID.\n     */\n    get id() {\n      return this.args.id ?? `phone-component-${(0, _internals.guidFor)(this)}`;\n    }\n\n    /**\n     * Debounces the validate function to avoid frequent validation checks during typing.\n     * Calls the validate function with a delay of 1 second.\n     * @param {string} newValue - The new value of the phone input.\n     * @param {Event} event - The change event object.\n     */\n    checkValidation(newValue, event) {\n      (0, _runloop.debounce)(this, this.validate, newValue, event, 750);\n    }\n\n    /**\n     * Validates the given phone number and updates the warning status.\n     * @param {string} phoneNumber - The phone number to validate.\n     * @param {Event} event - The change event object.\n     */\n    validate(phoneNumber, event) {\n      if (this.isDestroyed || this.isDestroying) return;\n      const isPhoneNumberValid = this.isValidPhoneNumber(phoneNumber);\n      this.showWarning = !isPhoneNumberValid; // Show warning if it isn't valid\n      if (typeof this.args.setPhoneNumberValidation === \"function\") {\n        this.args.setPhoneNumberValidation(isPhoneNumberValid);\n      }\n      if (typeof this.args.onChange === \"function\") {\n        this.args.onChange(phoneNumber, event);\n      }\n    }\n\n    /**\n     * Checks if the phone number is valid based on predefined regex patterns.\n     * @param {string} phoneNumber - The phone number to check.\n     * @returns {boolean} True if valid, otherwise false.\n     */\n    isValidPhoneNumber(phoneNumber) {\n      if (!phoneNumber || typeof phoneNumber !== \"string\") return false;\n      phoneNumber = phoneNumber.replace(/[\\s\\-.]/g, \"\");\n      if (this.flexibleRegex.test(phoneNumber)) return true;\n      if (this.canadianUSRegex.test(phoneNumber)) return true;\n      if (this.localLandlineRegex.test(phoneNumber)) return true;\n      if (this.areaCodeLandlineRegex.test(phoneNumber)) return true;\n      return this.internationalLandlineRegex.test(phoneNumber);\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"showWarning\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"checkValidation\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"checkValidation\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, PhoneInputComponent);\n});","define(\"settify-mvp/components/v2/pin-input/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object/internals\", \"@ember/object\", \"@glimmer/tracking\", \"@ember/template-factory\"], function (_exports, _component, _component2, _internals, _object, _tracking, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object/internals\",0,\"@ember/object\",0,\"@glimmer/tracking\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div id={{this.id}} class=\"...attributes flex justify-center gap-2\">\n    <label for=\"code-1\" class=\"sr-only\">First code</label>\n    <V2::Textline\n      @value={{this.codeOne}}\n      @id=\"code-1\"\n      maxlength=\"1\"\n      class=\"size-9 py-3 text-center text-sm font-extrabold\"\n      data-focus-next=\"code-2\"\n      required\n      @onChange={{this.onChange}}\n    />\n  \n    <label for=\"code-2\" class=\"sr-only\">Second code</label>\n    <V2::Textline\n      @value={{this.codeTwo}}\n      maxlength=\"1\"\n      @id=\"code-2\"\n      class=\"size-9 py-3 text-center text-sm font-extrabold\"\n      data-focus-prev=\"code-1\"\n      data-focus-next=\"code-3\"\n      required\n      @onChange={{this.onChange}}\n    />\n  \n    <label for=\"code-3\" class=\"sr-only\">Third code</label>\n    <V2::Textline\n      @value={{this.codeThree}}\n      maxlength=\"1\"\n      @id=\"code-3\"\n      class=\"size-9 py-3 text-center text-sm font-extrabold\"\n      data-focus-prev=\"code-2\"\n      data-focus-next=\"code-4\"\n      required\n      @onChange={{this.onChange}}\n    />\n  \n    <label for=\"code-4\" class=\"sr-only\">Fourth code</label>\n    <V2::Textline\n      @value={{this.codeFour}}\n      maxlength=\"1\"\n      @id=\"code-4\"\n      class=\"size-9 py-3 text-center text-sm font-extrabold\"\n      data-focus-prev=\"code-3\"\n      data-focus-next=\"code-5\"\n      required\n      @onChange={{this.onChange}}\n    />\n  \n    <label for=\"code-5\" class=\"sr-only\">Fifth code</label>\n    <V2::Textline\n      @value={{this.codeFive}}\n      maxlength=\"1\"\n      @id=\"code-5\"\n      class=\"size-9 py-3 text-center text-sm font-extrabold\"\n      data-focus-prev=\"code-4\"\n      data-focus-next=\"code-6\"\n      required\n      @onChange={{this.onChange}}\n    />\n  \n    <label for=\"code-6\" class=\"sr-only\">Sixth code</label>\n    <V2::Textline\n      @value={{this.codeSix}}\n      @id=\"code-6\"\n      maxlength=\"1\"\n      class=\"size-9 py-3 text-center text-sm font-extrabold\"\n      data-focus-prev=\"code-5\"\n      required\n      @onChange={{this.onChange}}\n    />\n  </div>\n  */\n  {\n    \"id\": \"ID+w/yGG\",\n    \"block\": \"[[[10,0],[15,1,[30,0,[\\\"id\\\"]]],[14,0,\\\"...attributes flex justify-center gap-2\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"code-1\\\"],[14,0,\\\"sr-only\\\"],[12],[1,\\\"First code\\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,2],[[24,\\\"maxlength\\\",\\\"1\\\"],[24,0,\\\"size-9 py-3 text-center text-sm font-extrabold\\\"],[24,\\\"data-focus-next\\\",\\\"code-2\\\"],[24,\\\"required\\\",\\\"\\\"]],[[\\\"@value\\\",\\\"@id\\\",\\\"@onChange\\\"],[[30,0,[\\\"codeOne\\\"]],\\\"code-1\\\",[30,0,[\\\"onChange\\\"]]]],null],[1,\\\"\\\\n\\\\n  \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"code-2\\\"],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Second code\\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,2],[[24,\\\"maxlength\\\",\\\"1\\\"],[24,0,\\\"size-9 py-3 text-center text-sm font-extrabold\\\"],[24,\\\"data-focus-prev\\\",\\\"code-1\\\"],[24,\\\"data-focus-next\\\",\\\"code-3\\\"],[24,\\\"required\\\",\\\"\\\"]],[[\\\"@value\\\",\\\"@id\\\",\\\"@onChange\\\"],[[30,0,[\\\"codeTwo\\\"]],\\\"code-2\\\",[30,0,[\\\"onChange\\\"]]]],null],[1,\\\"\\\\n\\\\n  \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"code-3\\\"],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Third code\\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,2],[[24,\\\"maxlength\\\",\\\"1\\\"],[24,0,\\\"size-9 py-3 text-center text-sm font-extrabold\\\"],[24,\\\"data-focus-prev\\\",\\\"code-2\\\"],[24,\\\"data-focus-next\\\",\\\"code-4\\\"],[24,\\\"required\\\",\\\"\\\"]],[[\\\"@value\\\",\\\"@id\\\",\\\"@onChange\\\"],[[30,0,[\\\"codeThree\\\"]],\\\"code-3\\\",[30,0,[\\\"onChange\\\"]]]],null],[1,\\\"\\\\n\\\\n  \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"code-4\\\"],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Fourth code\\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,2],[[24,\\\"maxlength\\\",\\\"1\\\"],[24,0,\\\"size-9 py-3 text-center text-sm font-extrabold\\\"],[24,\\\"data-focus-prev\\\",\\\"code-3\\\"],[24,\\\"data-focus-next\\\",\\\"code-5\\\"],[24,\\\"required\\\",\\\"\\\"]],[[\\\"@value\\\",\\\"@id\\\",\\\"@onChange\\\"],[[30,0,[\\\"codeFour\\\"]],\\\"code-4\\\",[30,0,[\\\"onChange\\\"]]]],null],[1,\\\"\\\\n\\\\n  \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"code-5\\\"],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Fifth code\\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,2],[[24,\\\"maxlength\\\",\\\"1\\\"],[24,0,\\\"size-9 py-3 text-center text-sm font-extrabold\\\"],[24,\\\"data-focus-prev\\\",\\\"code-4\\\"],[24,\\\"data-focus-next\\\",\\\"code-6\\\"],[24,\\\"required\\\",\\\"\\\"]],[[\\\"@value\\\",\\\"@id\\\",\\\"@onChange\\\"],[[30,0,[\\\"codeFive\\\"]],\\\"code-5\\\",[30,0,[\\\"onChange\\\"]]]],null],[1,\\\"\\\\n\\\\n  \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"code-6\\\"],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Sixth code\\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,2],[[24,\\\"maxlength\\\",\\\"1\\\"],[24,0,\\\"size-9 py-3 text-center text-sm font-extrabold\\\"],[24,\\\"data-focus-prev\\\",\\\"code-5\\\"],[24,\\\"required\\\",\\\"\\\"]],[[\\\"@value\\\",\\\"@id\\\",\\\"@onChange\\\"],[[30,0,[\\\"codeSix\\\"]],\\\"code-6\\\",[30,0,[\\\"onChange\\\"]]]],null],[1,\\\"\\\\n\\\"],[13]],[],false,[\\\"div\\\",\\\"label\\\",\\\"v2/textline\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/pin-input/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component representing a PIN input field with validation.\n   *\n   * @class PinInputComponent\n   * @param {string} [this.args.id] - ID of the pin input. If not provided, a unique ID will be generated.\n   * @param {function} [this.args.onChange] - Action to handle changes to the pin input value.\n   *\n   * @example\n   * ```hbs\n   * <V2::PinInput @onChange={{this.setPin}} />\n   * ```\n   */\n  let PinInputComponent = _exports.default = (_class = class PinInputComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"codeOne\", _descriptor, this);\n      _initializerDefineProperty(this, \"codeTwo\", _descriptor2, this);\n      _initializerDefineProperty(this, \"codeThree\", _descriptor3, this);\n      _initializerDefineProperty(this, \"codeFour\", _descriptor4, this);\n      _initializerDefineProperty(this, \"codeFive\", _descriptor5, this);\n      _initializerDefineProperty(this, \"codeSix\", _descriptor6, this);\n    }\n    /**\n     * Returns the id for the input element.\n     * If no id is provided in the arguments, a default id is generated using `guidFor`.\n     *\n     * @returns {string} A unique ID.\n     */\n    get id() {\n      return this.args.id ?? `pin-component-${(0, _internals.guidFor)(this)}`;\n    }\n\n    /**\n     * Returns the individual inputs as a string.\n     *\n     * @returns {string} A string of up to six numbers.\n     */\n    get pin() {\n      return `${this.codeOne}${this.codeTwo}${this.codeThree}${this.codeFour}${this.codeFive}${this.codeSix}`;\n    }\n\n    /**\n     * Handles the onChange function and calls moveToNextInput\n     *\n     * @param {number} value - The value of the input.\n     * @param {Event} event - The change event object.\n     */\n    onChange(value, event) {\n      this.focusNextInput(event);\n      if (typeof this.args.onChange === \"function\") {\n        this.args.onChange(this.pin, event);\n      }\n    }\n\n    /**\n     * Moves to the next input element unless it is the last one.\n     *\n     * @param {Event} event - The change event object.\n     */\n    focusNextInput(event) {\n      if (event.target.value.length === 0) {\n        const prevId = event.target?.dataset?.focusPrev;\n        if (prevId) {\n          document.getElementById(prevId).focus();\n        }\n        return;\n      }\n      const nextId = event.target?.dataset?.focusNext;\n      if (nextId) {\n        document.getElementById(nextId).focus();\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"codeOne\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"codeTwo\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"codeThree\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"codeFour\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"codeFive\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"codeSix\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"onChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"onChange\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"focusNextInput\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"focusNextInput\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, PinInputComponent);\n});","define(\"settify-mvp/components/v2/pms-settings-inputs-leap/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#unless @pmsSettings.recurringMatterTypeId}}\n    <div class=\"grid grid-cols-1 gap-x-12 border-b border-gray-900/10 py-4 md:grid-cols-2\">\n      <label for=\"state-select\" class=\"text-base font-semibold leading-7\">State</label>\n      <V2::SelectBox\n        @selectedItem={{@pmsSettings.state}}\n        @options={{@options.state}}\n        @id=\"state-select\"\n        @onChange={{fn @updatePmsSetting \"state\"}}\n        @required={{@useRequiredAttribute}}\n      />\n    </div>\n  {{/unless}}\n  \n  <div class=\"grid grid-cols-1 gap-x-12 border-b border-gray-900/10 py-4 md:grid-cols-2\">\n    <label for=\"matter-type-select\" class=\"text-base font-semibold leading-7\">Matter type</label>\n    <V2::SelectBox\n      @selectedItem={{@pmsSettings.matterTypeId}}\n      @options={{this.matterTypes}}\n      @id=\"matter-type-select\"\n      @onChange={{this.updateMatterType}}\n      @required={{@useRequiredAttribute}}\n    />\n  </div>\n  \n  {{#if @options.allowFirmToSpecifyMatterNumber}}\n    <div class=\"grid grid-cols-1 gap-x-12 border-b border-gray-900/10 py-4 md:grid-cols-2\">\n      <label for=\"matter-number\" class=\"text-base font-semibold leading-7\">Matter number</label>\n      <V2::Textline @value={{@pmsSettings.matterNumber}} @required={{@useRequiredAttribute}} @id=\"matter-number\" @onChange={{this.updateMatterNumber}} />\n    </div>\n  {{/if}}\n  \n  <div class=\"grid grid-cols-1 gap-x-12 border-b border-gray-900/10 py-4 md:grid-cols-2\">\n    <label for=\"staff-credit-select\" class=\"text-base font-semibold leading-7\">Staff credit</label>\n    <V2::SelectBox @selectedItem={{@pmsSettings.staffCredit}} @options={{@options.staff}} @id=\"staff-credit-select\" @onChange={{fn @updatePmsSetting \"staffCredit\"}} />\n  </div>\n  \n  <div class=\"grid grid-cols-1 gap-x-12 border-b border-gray-900/10 py-4 md:grid-cols-2\">\n    <label for=\"staff-responsible-select\" class=\"text-base font-semibold leading-7\">Staff responsible</label>\n    <V2::SelectBox\n      @selectedItem={{@pmsSettings.staffResponsible}}\n      @options={{@options.staff}}\n      @id=\"staff-responsible-select\"\n      @onChange={{fn @updatePmsSetting \"staffResponsible\"}}\n      @required={{@useRequiredAttribute}}\n    />\n  </div>\n  \n  <div class=\"grid grid-cols-1 gap-x-12 border-b border-gray-900/10 py-4 md:grid-cols-2\">\n    <label for=\"staff-acting-select\" class=\"text-base font-semibold leading-7\">Staff acting</label>\n    <V2::SelectBox\n      @selectedItem={{@pmsSettings.staffActing}}\n      @options={{@options.staff}}\n      @id=\"staff-acting-select\"\n      @onChange={{fn @updatePmsSetting \"staffActing\"}}\n      @required={{@useRequiredAttribute}}\n    />\n  </div>\n  \n  <div class=\"grid grid-cols-1 gap-x-12 border-b border-gray-900/10 py-4 md:grid-cols-2\">\n    <label for=\"staff-assisting-select\" class=\"text-base font-semibold leading-7\">Staff assisting</label>\n    <V2::SelectBox @selectedItem={{@pmsSettings.staffAssisting}} @options={{@options.staff}} @id=\"staff-assisting-select\" @onChange={{fn @updatePmsSetting \"staffAssisting\"}} />\n  </div>\n  */\n  {\n    \"id\": \"ehWEgBa7\",\n    \"block\": \"[[[41,[51,[30,1,[\\\"recurringMatterTypeId\\\"]]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"grid grid-cols-1 gap-x-12 border-b border-gray-900/10 py-4 md:grid-cols-2\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"state-select\\\"],[14,0,\\\"text-base font-semibold leading-7\\\"],[12],[1,\\\"State\\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,3],null,[[\\\"@selectedItem\\\",\\\"@options\\\",\\\"@id\\\",\\\"@onChange\\\",\\\"@required\\\"],[[30,1,[\\\"state\\\"]],[30,2,[\\\"state\\\"]],\\\"state-select\\\",[28,[37,4],[[30,3],\\\"state\\\"],null],[30,4]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[10,0],[14,0,\\\"grid grid-cols-1 gap-x-12 border-b border-gray-900/10 py-4 md:grid-cols-2\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"matter-type-select\\\"],[14,0,\\\"text-base font-semibold leading-7\\\"],[12],[1,\\\"Matter type\\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,3],null,[[\\\"@selectedItem\\\",\\\"@options\\\",\\\"@id\\\",\\\"@onChange\\\",\\\"@required\\\"],[[30,1,[\\\"matterTypeId\\\"]],[30,0,[\\\"matterTypes\\\"]],\\\"matter-type-select\\\",[30,0,[\\\"updateMatterType\\\"]],[30,4]]],null],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,2,[\\\"allowFirmToSpecifyMatterNumber\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"grid grid-cols-1 gap-x-12 border-b border-gray-900/10 py-4 md:grid-cols-2\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"matter-number\\\"],[14,0,\\\"text-base font-semibold leading-7\\\"],[12],[1,\\\"Matter number\\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,6],null,[[\\\"@value\\\",\\\"@required\\\",\\\"@id\\\",\\\"@onChange\\\"],[[30,1,[\\\"matterNumber\\\"]],[30,4],\\\"matter-number\\\",[30,0,[\\\"updateMatterNumber\\\"]]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[10,0],[14,0,\\\"grid grid-cols-1 gap-x-12 border-b border-gray-900/10 py-4 md:grid-cols-2\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"staff-credit-select\\\"],[14,0,\\\"text-base font-semibold leading-7\\\"],[12],[1,\\\"Staff credit\\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,3],null,[[\\\"@selectedItem\\\",\\\"@options\\\",\\\"@id\\\",\\\"@onChange\\\"],[[30,1,[\\\"staffCredit\\\"]],[30,2,[\\\"staff\\\"]],\\\"staff-credit-select\\\",[28,[37,4],[[30,3],\\\"staffCredit\\\"],null]]],null],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"grid grid-cols-1 gap-x-12 border-b border-gray-900/10 py-4 md:grid-cols-2\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"staff-responsible-select\\\"],[14,0,\\\"text-base font-semibold leading-7\\\"],[12],[1,\\\"Staff responsible\\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,3],null,[[\\\"@selectedItem\\\",\\\"@options\\\",\\\"@id\\\",\\\"@onChange\\\",\\\"@required\\\"],[[30,1,[\\\"staffResponsible\\\"]],[30,2,[\\\"staff\\\"]],\\\"staff-responsible-select\\\",[28,[37,4],[[30,3],\\\"staffResponsible\\\"],null],[30,4]]],null],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"grid grid-cols-1 gap-x-12 border-b border-gray-900/10 py-4 md:grid-cols-2\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"staff-acting-select\\\"],[14,0,\\\"text-base font-semibold leading-7\\\"],[12],[1,\\\"Staff acting\\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,3],null,[[\\\"@selectedItem\\\",\\\"@options\\\",\\\"@id\\\",\\\"@onChange\\\",\\\"@required\\\"],[[30,1,[\\\"staffActing\\\"]],[30,2,[\\\"staff\\\"]],\\\"staff-acting-select\\\",[28,[37,4],[[30,3],\\\"staffActing\\\"],null],[30,4]]],null],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"grid grid-cols-1 gap-x-12 border-b border-gray-900/10 py-4 md:grid-cols-2\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"staff-assisting-select\\\"],[14,0,\\\"text-base font-semibold leading-7\\\"],[12],[1,\\\"Staff assisting\\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,3],null,[[\\\"@selectedItem\\\",\\\"@options\\\",\\\"@id\\\",\\\"@onChange\\\"],[[30,1,[\\\"staffAssisting\\\"]],[30,2,[\\\"staff\\\"]],\\\"staff-assisting-select\\\",[28,[37,4],[[30,3],\\\"staffAssisting\\\"],null]]],null],[1,\\\"\\\\n\\\"],[13]],[\\\"@pmsSettings\\\",\\\"@options\\\",\\\"@updatePmsSetting\\\",\\\"@useRequiredAttribute\\\"],false,[\\\"unless\\\",\\\"div\\\",\\\"label\\\",\\\"v2/select-box\\\",\\\"fn\\\",\\\"if\\\",\\\"v2/textline\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/pms-settings-inputs-leap/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * Glimmer component representing the Leap PMS settings inputs.\n   *\n   * @class PmsSettingsInputsLeapComponent\n   * @extends Component\n   *\n   * @note For a list of available arguments, refer to the documentation of the `pms-settings-inputs-selector` component.\n   */\n  let PmsSettingsInputsLeapComponent = _exports.default = (_class = class PmsSettingsInputsLeapComponent extends _component2.default {\n    get matterTypes() {\n      const defaultMattersByState = this.args.options?.matterTypeId?.filter(matter => this.filterMatterByState(matter));\n      const recurringMatters = this.args.options?.recurringMatterTypeId?.filter(matter => matter.value) || [];\n      if (!recurringMatters?.length) return defaultMattersByState;\n      return [{\n        groupLabel: \"Default matters\",\n        groupOptions: defaultMattersByState\n      }, {\n        groupLabel: \"Recurring matters\",\n        groupOptions: recurringMatters\n      }];\n    }\n    filterMatterByState(matter) {\n      const selectedState = this.args.pmsSettings?.state;\n      if (!selectedState || !matter.state) return true; // If a state hasn't been selected, or the matter doesn't have a state list, we don't want to hide it.\n      return matter?.state?.includes(selectedState) || matter?.state?.includes(\"All\");\n    }\n\n    // Because Leap has two matter types (default and recurring) we do updates on multiple values\n    updateMatterType(selectedMatter) {\n      const selectedValueIsRecurringMatter = this.args?.options?.recurringMatterTypeId?.some(matter => matter.value === selectedMatter);\n      this.args.updatePmsSetting(\"matterTypeId\", selectedMatter);\n      this.args.updatePmsSetting(\"recurringMatterTypeId\", selectedValueIsRecurringMatter ? selectedMatter : null);\n    }\n    updateMatterNumber(value, event) {\n      this.args.updatePmsSetting(\"matterNumber\", value, event);\n    }\n  }, _applyDecoratedDescriptor(_class.prototype, \"updateMatterType\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"updateMatterType\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"updateMatterNumber\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"updateMatterNumber\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, PmsSettingsInputsLeapComponent);\n});","define(\"settify-mvp/components/v2/pms-settings-inputs-selector/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/template-factory\"], function (_exports, _component, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div id=\"pms-settings-inputs-selector\" data-pms-component-type={{this.pmsComponent}}>\n    {{component this.pmsComponent\n      pmsSettings=this.pmsSettings\n      options=@pmsMetadata.options\n      useRequiredAttribute=@useRequiredAttribute\n      matterInformation=@matterInformation\n      updatePmsSetting=@updatePmsSetting\n    }}\n  </div>\n  */\n  {\n    \"id\": \"LAmrjP/3\",\n    \"block\": \"[[[10,0],[14,1,\\\"pms-settings-inputs-selector\\\"],[15,\\\"data-pms-component-type\\\",[30,0,[\\\"pmsComponent\\\"]]],[12],[1,\\\"\\\\n  \\\"],[46,[30,0,[\\\"pmsComponent\\\"]],null,[[\\\"pmsSettings\\\",\\\"options\\\",\\\"useRequiredAttribute\\\",\\\"matterInformation\\\",\\\"updatePmsSetting\\\"],[[30,0,[\\\"pmsSettings\\\"]],[30,1,[\\\"options\\\"]],[30,2],[30,3],[30,4]]],null],[1,\\\"\\\\n\\\"],[13]],[\\\"@pmsMetadata\\\",\\\"@useRequiredAttribute\\\",\\\"@matterInformation\\\",\\\"@updatePmsSetting\\\"],false,[\\\"div\\\",\\\"component\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/pms-settings-inputs-selector/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * Glimmer component for selecting PMS (Practice Management System) settings inputs.\n   *\n   * @class PmsSettingsInputsSelectorComponent\n   * @extends Component\n   *\n   * @param {Object} [this.args.pmsMetadata] - Metadata for the selected PMS.\n   * @param {Object} [this.args.pmsMetadata.options] - Options for the PMS settings such as a staff list, matter list, etc.\n   * @param {Object} [this.args.pmsSettings] - Settings for the selected PMS.\n   * @param {boolean} [this.args.useRequiredAttribute] - Indicates whether to use the required attributes on the PMS settings.\n   * @param {Object} [this.args.matterInformation] - Information that can be passed down to a PMS settings input component.\n   * @param {Function} [this.args.updatePmsSetting] - Callback fired when a PMS setting is updated. Will pass back 2 args, settingName and value\n   *\n   */\n  class PmsSettingsInputsSelectorComponent extends _component2.default {\n    get pmsComponent() {\n      const component = {\n        leap: \"v2/pms-settings-inputs-leap\",\n        smokeball: \"v2/pms-settings-inputs-smokeball\"\n      };\n      return component[this.args.pmsMetadata.id] ?? \"v2/under-construction\";\n    }\n    get pmsSettings() {\n      return {\n        ...this.args.pmsSettings,\n        matterTypeId: this.args.pmsSettings?.matterTypeId?.toString() // matterTypeId can be either a string or number so we normalise it for the inputs\n      };\n    }\n  }\n  _exports.default = PmsSettingsInputsSelectorComponent;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, PmsSettingsInputsSelectorComponent);\n});","define(\"settify-mvp/components/v2/pms-settings-inputs-smokeball/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@ember/runloop\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _runloop, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@ember/runloop\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"grid grid-cols-1 gap-x-12 border-b border-gray-900/10 py-4 md:grid-cols-2\">\n    <label for=\"state-select\" class=\"text-base font-semibold leading-7\">State</label>\n    <V2::SelectBox\n      @selectedItem={{@pmsSettings.state}}\n      @options={{@options.state}}\n      @id=\"state-select\"\n      @onChange={{fn @updatePmsSetting \"state\"}}\n      @required={{@useRequiredAttribute}}\n    />\n  </div>\n  \n  <div class=\"grid grid-cols-1 gap-x-12 border-b border-gray-900/10 py-4 md:grid-cols-2\">\n    <label for=\"matter-type-select\" class=\"text-base font-semibold leading-7\">Matter type</label>\n    <V2::SelectBox\n      @selectedItem={{@pmsSettings.matterTypeId}}\n      @options={{this.matterTypes}}\n      @id=\"matter-type-select\"\n      @onChange={{fn @updatePmsSetting \"matterTypeId\"}}\n      @required={{@useRequiredAttribute}}\n    />\n  </div>\n  \n  <div class=\"grid grid-cols-1 gap-x-12 border-b border-gray-900/10 py-4 md:grid-cols-2\">\n    <label for=\"user-role-select\" class=\"text-base font-semibold leading-7\">User's role</label>\n    <V2::SelectBox\n      @selectedItem={{@pmsSettings.userRole}}\n      @options={{this.userRolesFilteredByMatterTypeId}}\n      @id=\"user-role-select\"\n      @onChange={{fn @updatePmsSetting \"userRole\"}}\n      @required={{@useRequiredAttribute}}\n    />\n  </div>\n  \n  {{#if @matterInformation.includeSpouseOptions}}\n    <div class=\"grid grid-cols-1 gap-x-12 border-b border-gray-900/10 py-4 md:grid-cols-2\">\n      <label for=\"spouse-role-select\" class=\"text-base font-semibold leading-7\">Spouse's role</label>\n      <V2::SelectBox\n        @selectedItem={{@pmsSettings.spouseRole}}\n        @options={{this.spouseRolesFilteredByMatterTypeId}}\n        @id=\"spouse-role-select\"\n        @onChange={{fn @updatePmsSetting \"spouseRole\"}}\n        @required={{@useRequiredAttribute}}\n      />\n    </div>\n  {{/if}}\n  \n  <div class=\"grid grid-cols-1 gap-x-12 border-b border-gray-900/10 py-4 md:grid-cols-2\">\n    <label for=\"staff-responsible-select\" class=\"text-base font-semibold leading-7\">Staff responsible</label>\n    <V2::SelectBox\n      @selectedItem={{@pmsSettings.staffResponsible}}\n      @options={{@options.staff}}\n      @id=\"staff-responsible-select\"\n      @onChange={{fn @updatePmsSetting \"staffResponsible\"}}\n      @required={{@useRequiredAttribute}}\n    />\n  </div>\n  \n  <div class=\"grid grid-cols-1 gap-x-12 border-b border-gray-900/10 py-4 md:grid-cols-2\">\n    <label for=\"staff-assisting-select\" class=\"text-base font-semibold leading-7\">Staff assisting</label>\n    <V2::SelectBox @selectedItem={{@pmsSettings.staffAssisting}} @options={{@options.staff}} @id=\"staff-assisting-select\" @onChange={{fn @updatePmsSetting \"staffAssisting\"}} />\n  </div>\n  */\n  {\n    \"id\": \"vd0DjxDL\",\n    \"block\": \"[[[10,0],[14,0,\\\"grid grid-cols-1 gap-x-12 border-b border-gray-900/10 py-4 md:grid-cols-2\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"state-select\\\"],[14,0,\\\"text-base font-semibold leading-7\\\"],[12],[1,\\\"State\\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,2],null,[[\\\"@selectedItem\\\",\\\"@options\\\",\\\"@id\\\",\\\"@onChange\\\",\\\"@required\\\"],[[30,1,[\\\"state\\\"]],[30,2,[\\\"state\\\"]],\\\"state-select\\\",[28,[37,3],[[30,3],\\\"state\\\"],null],[30,4]]],null],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"grid grid-cols-1 gap-x-12 border-b border-gray-900/10 py-4 md:grid-cols-2\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"matter-type-select\\\"],[14,0,\\\"text-base font-semibold leading-7\\\"],[12],[1,\\\"Matter type\\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,2],null,[[\\\"@selectedItem\\\",\\\"@options\\\",\\\"@id\\\",\\\"@onChange\\\",\\\"@required\\\"],[[30,1,[\\\"matterTypeId\\\"]],[30,0,[\\\"matterTypes\\\"]],\\\"matter-type-select\\\",[28,[37,3],[[30,3],\\\"matterTypeId\\\"],null],[30,4]]],null],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"grid grid-cols-1 gap-x-12 border-b border-gray-900/10 py-4 md:grid-cols-2\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"user-role-select\\\"],[14,0,\\\"text-base font-semibold leading-7\\\"],[12],[1,\\\"User's role\\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,2],null,[[\\\"@selectedItem\\\",\\\"@options\\\",\\\"@id\\\",\\\"@onChange\\\",\\\"@required\\\"],[[30,1,[\\\"userRole\\\"]],[30,0,[\\\"userRolesFilteredByMatterTypeId\\\"]],\\\"user-role-select\\\",[28,[37,3],[[30,3],\\\"userRole\\\"],null],[30,4]]],null],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,5,[\\\"includeSpouseOptions\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"grid grid-cols-1 gap-x-12 border-b border-gray-900/10 py-4 md:grid-cols-2\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"spouse-role-select\\\"],[14,0,\\\"text-base font-semibold leading-7\\\"],[12],[1,\\\"Spouse's role\\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,2],null,[[\\\"@selectedItem\\\",\\\"@options\\\",\\\"@id\\\",\\\"@onChange\\\",\\\"@required\\\"],[[30,1,[\\\"spouseRole\\\"]],[30,0,[\\\"spouseRolesFilteredByMatterTypeId\\\"]],\\\"spouse-role-select\\\",[28,[37,3],[[30,3],\\\"spouseRole\\\"],null],[30,4]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[10,0],[14,0,\\\"grid grid-cols-1 gap-x-12 border-b border-gray-900/10 py-4 md:grid-cols-2\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"staff-responsible-select\\\"],[14,0,\\\"text-base font-semibold leading-7\\\"],[12],[1,\\\"Staff responsible\\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,2],null,[[\\\"@selectedItem\\\",\\\"@options\\\",\\\"@id\\\",\\\"@onChange\\\",\\\"@required\\\"],[[30,1,[\\\"staffResponsible\\\"]],[30,2,[\\\"staff\\\"]],\\\"staff-responsible-select\\\",[28,[37,3],[[30,3],\\\"staffResponsible\\\"],null],[30,4]]],null],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"grid grid-cols-1 gap-x-12 border-b border-gray-900/10 py-4 md:grid-cols-2\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"staff-assisting-select\\\"],[14,0,\\\"text-base font-semibold leading-7\\\"],[12],[1,\\\"Staff assisting\\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,2],null,[[\\\"@selectedItem\\\",\\\"@options\\\",\\\"@id\\\",\\\"@onChange\\\"],[[30,1,[\\\"staffAssisting\\\"]],[30,2,[\\\"staff\\\"]],\\\"staff-assisting-select\\\",[28,[37,3],[[30,3],\\\"staffAssisting\\\"],null]]],null],[1,\\\"\\\\n\\\"],[13]],[\\\"@pmsSettings\\\",\\\"@options\\\",\\\"@updatePmsSetting\\\",\\\"@useRequiredAttribute\\\",\\\"@matterInformation\\\"],false,[\\\"div\\\",\\\"label\\\",\\\"v2/select-box\\\",\\\"fn\\\",\\\"if\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/pms-settings-inputs-smokeball/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * Glimmer component representing the Smokeball PMS settings inputs.\n   *\n   * @class PmsSettingsInputsSmokeballComponent\n   * @extends Component\n   *\n   * @note For a list of available arguments, refer to the documentation of the `pms-settings-inputs-selector` component.\n   */\n  class PmsSettingsInputsSmokeballComponent extends _component2.default {\n    get matterTypes() {\n      const {\n        matterTypeId\n      } = this.args.options || {};\n      return matterTypeId?.filter(matter => this.filterMatterByState(matter));\n    }\n    filterMatterByState(matter) {\n      const selectedState = this.args.pmsSettings?.state;\n      if (!selectedState || !matter.state) return true; // If a state hasn't been selected, or the matter doesn't have a state list, we don't want to hide it.\n      return matter?.state?.includes(selectedState) || matter?.state?.includes(\"All\");\n    }\n    get userRolesFilteredByMatterTypeId() {\n      const userRoleOptions = this.args.options.userRole || [];\n      const availableOptions = userRoleOptions.filter(option => option?.applicableMatterTypeIds?.includes(this.args.pmsSettings.matterTypeId) ?? true);\n      this.clearPropertyIfInvalid(availableOptions, \"userRole\");\n      return availableOptions;\n    }\n    get spouseRolesFilteredByMatterTypeId() {\n      const spouseRoleOptions = this.args.options.spouseRole || [];\n      const availableOptions = spouseRoleOptions.filter(option => option?.applicableMatterTypeIds?.includes(this.args.pmsSettings.matterTypeId) ?? true);\n      this.clearPropertyIfInvalid(availableOptions, \"spouseRole\");\n      return availableOptions;\n    }\n    clearPropertyIfInvalid(possibleOptions, propertyToCheck) {\n      const pmsSettingsModel = this.args.pmsSettings;\n      const isPropertyInOptions = possibleOptions.some(possibleOption => possibleOption.value === pmsSettingsModel[propertyToCheck]);\n      if (!isPropertyInOptions) {\n        (0, _runloop.next)(() => (0, _object.set)(pmsSettingsModel, propertyToCheck, undefined));\n      }\n    }\n  }\n  _exports.default = PmsSettingsInputsSmokeballComponent;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, PmsSettingsInputsSmokeballComponent);\n});","define(\"settify-mvp/components/v2/question-label/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object/internals\", \"@ember/template-factory\"], function (_exports, _component, _component2, _internals, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object/internals\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (and this.isLabelType @id)}}\n    <label id={{this.labelId}} for={{@id}} ...attributes>\n      {{yield}}\n    </label>\n  {{else}}\n    <p id={{this.labelId}} ...attributes>\n      {{yield}}\n    </p>\n  {{/if}}\n  */\n  {\n    \"id\": \"R5n1mtrH\",\n    \"block\": \"[[[41,[28,[37,1],[[30,0,[\\\"isLabelType\\\"]],[30,1]],null],[[[1,\\\"  \\\"],[11,\\\"label\\\"],[16,1,[30,0,[\\\"labelId\\\"]]],[16,\\\"for\\\",[30,1]],[17,2],[12],[1,\\\"\\\\n    \\\"],[18,3,null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"  \\\"],[11,2],[16,1,[30,0,[\\\"labelId\\\"]]],[17,2],[12],[1,\\\"\\\\n    \\\"],[18,3,null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[\\\"@id\\\",\\\"&attrs\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"and\\\",\\\"label\\\",\\\"yield\\\",\\\"p\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/question-label/index.hbs\",\n    \"isStrictMode\": false\n  });\n  const LABEL_TYPES = [\"textline\", \"textarea\", \"number\", \"money\", \"phone\", \"firstname\", \"select\", \"title\", \"email\", \"inputslider\"];\n\n  /**\n   * A Glimmer component for rendering a label or paragraph element based on the provided type.\n   * @class QuestionLabelComponent\n   * @extends Component\n   * @param {string} this.args.id - The ID for the label or paragraph element. This ID is used to set the `for` attribute of the label and as part of the ID for the label or paragraph.\n   * @param {string} this.args.type - Determines if the element should be a `<label>` or a `<p>`. The value should be one of the predefined label types such as \"textline\", \"textarea\", etc.\n   * @param {object} [this.args.attributes] - Optional additional attributes to be spread onto the `<label>` or `<p>` element.\n   *\n   * @example\n   * ```handlebars\n   * <V2::QuestionLabel @id=\"question1\" @type=\"textline\" ...attributes>\n   *   Label Text\n   * </V2::QuestionLabel>\n   * ```\n   */\n  class QuestionLabelComponent extends _component2.default {\n    /**\n     * Generates a unique ID if one is not provided.\n     *\n     * @returns {string} - The ID to be used for the element.\n     */\n    get labelId() {\n      const id = this.args.id ?? `question-${(0, _internals.guidFor)(this)}`;\n      return `${id}-label`;\n    }\n\n    /**\n     * Determines if the element should be a <label> based on the provided type.\n     *\n     * @returns {boolean} - Returns true if the type is associated with a label, otherwise false.\n     */\n    get isLabelType() {\n      return LABEL_TYPES.includes(this.args.type ?? \"\");\n    }\n  }\n  _exports.default = QuestionLabelComponent;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, QuestionLabelComponent);\n});","define(\"settify-mvp/components/v2/question-type-switcher/index\", [\"exports\", \"@ember/component\", \"@ember/object/computed\", \"@ember/runloop\", \"@ember/object\", \"@ember/utils\", \"@ember/service\", \"settify-mvp/utils/filter-list-by-type\", \"settify-mvp/helpers/get-answers-from\", \"@ember/template\", \"uuid\", \"settify-mvp/helpers/parse-text\", \"@ember/template-factory\"], function (_exports, _component, _computed, _runloop, _object, _utils, _service, _filterListByType, _getAnswersFrom, _template, _uuid, _parseText, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\",0,\"@ember/object/computed\",0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/utils\",0,\"@ember/service\",0,\"settify-mvp/utils/filter-list-by-type\",0,\"settify-mvp/helpers/get-answers-from\",0,\"@ember/template\",0,\"uuid\",0,\"settify-mvp/helpers/parse-text\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.shouldDisplay}}\n    <div class=\"input-switcher relative {{this.containerStylingClasses}}\" data-question-id={{this.question.id}} data-question-type={{this.question.type}}>\n      {{#if this.question.title}}\n        <div class=\"flex items-start justify-between gap-x-2 sm:justify-start\">\n          {{! Question label }}\n          <V2::QuestionLabel @type={{this.question.type}} @id={{this.question.id}} class=\"mb-2 block {{if this.questionIsRequired 'required-field-marker'}}\">\n            {{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n          </V2::QuestionLabel>\n  \n          {{#if this.question.helpText}}\n            {{! Help toggle }}\n            <V2::Button @size=\"small\" class=\"help-text-button hover:text-sky-600\" {{on \"click\" (action \"toggleQuestionHelpText\")}}>\n              <span class=\"sr-only\">Toggle help information</span>\n              <V2::SvgIcon @icon=\"circle-info\" class=\"size-[18px]\" />\n            </V2::Button>\n          {{/if}}\n        </div>\n      {{/if}}\n  \n      {{#if this.shouldDisplayHelpText}}\n        {{! Question help text }}\n        <div class=\"help-text-content border-l-4 border-sky-300 p-2 text-sm text-sky-900\">\n          {{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n        </div>\n      {{/if}}\n  \n      {{#if (eq this.question.type \"textline\")}}\n        <V2::Textline\n          @value={{mut (get this.model this.variableStorageName)}}\n          @id={{this.question.id}}\n          @required={{this.questionIsRequired}}\n          placeholder={{parse-text this.question.placeholder model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n          @onChange={{action \"changed\"}}\n          class=\"settify-sensitive {{this.question.classes}}\"\n        />\n      {{else if (eq this.question.type \"textarea\")}}\n        <V2::Textarea\n          @value={{mut (get this.model this.variableStorageName)}}\n          @id={{this.question.id}}\n          @required={{this.questionIsRequired}}\n          placeholder={{parse-text this.question.placeholder model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n          @onChange={{action \"changed\"}}\n          class=\"settify-sensitive {{this.stylingClasses}} {{this.question.classes}}\"\n        />\n      {{else if (eq this.question.type \"address\")}}\n        <V2::AddressSelect\n          @value={{mut (get this.model this.variableStorageName)}}\n          aria-labelledby=\"{{if this.question.title (concat this.question.id '-label')}}\"\n          @id={{this.question.id}}\n          @required={{this.questionIsRequired}}\n          @detailed={{this.question.detailed}}\n          @addressOptions={{this.question.addressOptions}}\n          @clientRecord={{this.clientRecord}}\n          @filterType={{this.filterType}}\n          @filterList={{this.filterList}}\n          @onChange={{action \"changed\"}}\n          class={{this.question.classes}}\n        />\n      {{else if (eq this.question.type \"firstname\")}}\n        <V2::NameInput\n          @value={{mut (get this.model this.variableStorageName)}}\n          @gender={{mut (get this.model (sum this.variableStorageName \"-gender\"))}}\n          @pronouns={{mut (get this.model (sum this.variableStorageName \"-pronouns\"))}}\n          @allowGender={{this.practiceAreaSettings.settings.induction.allowGender}}\n          @allowPronouns={{this.practiceAreaSettings.settings.induction.allowGenderPronouns}}\n          @id={{this.question.id}}\n          @required={{this.questionIsRequired}}\n          placeholder={{parse-text this.question.placeholder model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n          class=\"settify-sensitive {{this.question.classes}}\"\n          @onNameChange={{action \"changed\"}}\n          @onGenderChange={{action \"secondaryChange\"}}\n        />\n      {{else if (eq this.question.type \"date\")}}\n        <V2::DateInput\n          aria-labelledby=\"{{if this.question.title (concat this.question.id '-label')}}\"\n          @id={{this.question.id}}\n          @day={{mut (get this.model (sum this.variableStorageName \"day\"))}}\n          @month={{mut (get this.model (sum this.variableStorageName \"month\"))}}\n          @year={{mut (get this.model (sum this.variableStorageName \"year\"))}}\n          @required={{this.questionIsRequired}}\n          @requiredSpecificity={{this.question.requiredSpecificity}}\n          @monthInputFirst={{eq this.question.dateLayout \"MM/DD/YYYY\"}}\n          @allowFuture={{this.question.allowFuture}}\n          class=\"settify-sensitive {{this.question.classes}}\"\n          @onChange={{action \"changed\"}}\n          @secondaryChange={{action \"secondaryChange\"}}\n        />\n      {{else if (eq this.question.type \"number\")}}\n        <V2::NumberInput\n          @value={{get this.model this.variableStorageName}}\n          @required={{this.questionIsRequired}}\n          @min={{this.question.min}}\n          @max={{this.question.max}}\n          placeholder={{parse-text this.question.placeholder model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n          @onChange={{action \"changed\"}}\n          class=\"settify-sensitive {{this.question.classes}}\"\n        />\n      {{else if (eq this.question.type \"money\")}}\n        <V2::MoneyInput\n          @value={{get this.model this.variableStorageName}}\n          @required={{this.questionIsRequired}}\n          @min={{this.question.min}}\n          @max={{this.question.max}}\n          @id={{this.question.id}}\n          placeholder={{parse-text this.question.placeholder model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n          class={{this.question.classes}}\n          @onChange={{action \"changed\"}}\n        />\n        {{#if (and this.question.showConfidenceSlider (get this.model this.variableStorageName))}}\n          <V2::ConfidenceRange\n            @value={{mut (get this.model (sum this.variableStorageName \"-confidence\"))}}\n            @maxConfidence={{this.question.confidenceSliderMaxValue}}\n            @id=\"{{this.question.id}}-confidence\"\n            @onChange={{action \"secondaryChange\"}}\n          />\n        {{/if}}\n      {{else if (eq this.question.type \"phone\")}}\n        <V2::PhoneInput\n          @value={{mut (get this.model this.variableStorageName)}}\n          @id={{this.question.id}}\n          @required={{this.questionIsRequired}}\n          @validation={{mut (get this.model (sum this.variableStorageName \"-valid\"))}}\n          placeholder={{parse-text this.question.placeholder model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n          @onChange={{action \"changed\"}}\n          @setPhoneNumberValidation={{action \"secondaryChange\"}}\n          class=\"settify-sensitive {{this.question.classes}}\"\n        />\n      {{else if (eq this.question.type \"email\")}}\n        <V2::EmailInput\n          @value={{mut (get this.model this.variableStorageName)}}\n          @placeholder={{parse-text this.question.placeholder model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n          @required={{this.questionIsRequired}}\n          @id={{this.question.id}}\n          @validation={{mut (get this.model (sum this.variableStorageName \"-valid\"))}}\n          placeholder={{parse-text this.question.placeholder model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n          @onChange={{action \"changed\"}}\n          class=\"settify-sensitive {{this.question.classes}}\"\n        />\n      {{else if (eq this.question.type \"paragraph\")}}\n        <p id={{this.question.id}} class=\"input-paragraph {{this.stylingClasses}}\">\n          {{parse-text this.question.content model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n        </p>\n      {{else if (eq this.question.type \"heading\")}}\n        <div class=\"mb-2 mt-4 border-b border-gray-200 {{this.stylingClasses}}\">\n          <h4 class=\"truncate text-2xl\" id={{this.question.id}}>\n            {{parse-text this.question.content model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n          </h4>\n          <ChapterAnimation @icon={{this.question.icons}} />\n        </div>\n      {{else if (eq this.question.type \"radio\")}}\n        <V2::RadioButtonGroup\n          aria-labelledby=\"{{if this.question.title (concat this.question.id '-label')}}\"\n          @name={{this.variableStorageName}}\n          @value={{get this.model this.variableStorageName}}\n          @options={{this.visibleOptions}}\n          @clientRecord={{this.clientRecord}}\n          @context={{this.context}}\n          @id={{this.question.id}}\n          @onChange={{action \"changed\"}}\n          @required={{this.questionIsRequired}}\n          class={{this.question.classes}}\n        />\n        {{#each this.question.options as |option|}}\n          {{#if\n            (and\n              (should-display question=option clientRecord=this.clientRecord context=this.context touch=this.clientRecord.touch)\n              option.feedback\n              (eq (get this.model this.variableStorageName) option.id)\n            )\n          }}\n            <p class=\"feedback-paragraph my-4 rounded-lg bg-sky-50 px-6 py-4\">\n              {{parse-text option.feedback model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n            </p>\n          {{/if}}\n        {{/each}}\n      {{else if (eq this.question.type \"yesno\")}}\n        <V2::YesNo\n          aria-labelledby=\"{{if this.question.title (concat this.question.id '-label')}}\"\n          @name={{this.question.id}}\n          @id={{this.question.id}}\n          @value={{mut (get this.model this.variableStorageName)}}\n          @required={{this.questionIsRequired}}\n          @excludeNotSure={{this.question.excludeNotSure}}\n          @onChange={{action \"changed\"}}\n        />\n        {{#if (and (eq (get this.model this.variableStorageName) \"yes\") this.question.onYes.feedback)}}\n          <p class=\"feedback-paragraph my-4 rounded-lg bg-sky-50 px-6 py-4\">\n            {{parse-text this.question.onYes.feedback model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n          </p>\n        {{/if}}\n        {{#if (and (eq (get this.model this.variableStorageName) \"no\") this.question.onNo.feedback)}}\n          <p class=\"feedback-paragraph my-4 rounded-lg bg-sky-50 px-6 py-4\">\n            {{parse-text this.question.onNo.feedback model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n          </p>\n        {{/if}}\n        {{#if (and (eq (get this.model this.variableStorageName) \"notsure\") this.question.onNotSure.feedback)}}\n          <p class=\"feedback-paragraph my-4 rounded-lg bg-sky-50 px-6 py-4\">\n            {{parse-text this.question.onNotSure.feedback model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n          </p>\n        {{/if}}\n      {{else if (eq this.question.type \"checkbox\")}}\n        <V2::CheckboxGroup\n          aria-labelledby=\"{{if this.question.title (concat this.question.id '-label')}}\"\n          @value={{mut this.model}}\n          @options={{this.visibleOptions}}\n          @id={{this.quesiton.id}}\n          @clientRecord={{this.clientRecord}}\n          @context={{this.context}}\n          @onChange={{action \"changed\"}}\n          @required={{this.questionIsRequired}}\n          class={{this.question.classes}}\n        />\n        {{! TODO: Look at creating a feedback component }}\n        {{#each this.question.options as |option|}}\n          {{#if\n            (and\n              (should-display question=option clientRecord=this.clientRecord context=this.context touch=this.clientRecord.touch)\n              option.feedback\n              (get this.model (or option.id option.title))\n            )\n          }}\n            <p class=\"feedback-paragraph my-4 rounded-lg bg-sky-50 px-6 py-4\">\n              {{parse-text option.feedback model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n            </p>\n          {{/if}}\n        {{/each}}\n      {{else if (eq this.question.type \"list\")}}\n        {{#if this.question.tabbedList}}\n          <V2::TabList\n            @tabs={{mut (get this.model this.variableStorageName)}}\n            @clientRecord={{this.clientRecord}}\n            @itemTypeString={{this.question.itemName}}\n            @itemLabelFormat={{this.question.itemLabelFormat}}\n            @defaults={{this.defaults}}\n            @id={{this.question.id}}\n          >\n            <:tabContent as |tabItem|>\n              {{#each this.question.content as |content|}}\n                <V2::QuestionTypeSwitcher\n                  @question={{content}}\n                  @context={{this.context}}\n                  @clientRecord={{this.clientRecord}}\n                  @practiceAreaSettings={{this.practiceAreaSettings}}\n                  @model={{tabItem}}\n                />\n              {{/each}}\n            </:tabContent>\n          </V2::TabList>\n        {{else}}\n          <V2::List\n            @values={{mut (get this.model this.variableStorageName)}}\n            @itemName={{this.question.itemName}}\n            @isImmutableList={{this.question.immutableList}}\n            @noBorder={{this.question.noBorder}}\n            @clientRecord={{this.clientRecord}}\n            @preventEmptyLists={{true}}\n            @defaults={{this.defaults}}\n            @id={{this.question.id}}\n          >\n            <:listContent as |listItem itemIndex|>\n              {{#each this.question.content as |questionContent|}}\n                <V2::QuestionTypeSwitcher\n                  @question={{questionContent}}\n                  @context={{this.context}}\n                  @clientRecord={{this.clientRecord}}\n                  @practiceAreaSettings={{this.practiceAreaSettings}}\n                  @model={{listItem}}\n                />\n              {{/each}}\n            </:listContent>\n          </V2::List>\n        {{/if}}\n      {{else if (eq this.question.type \"immutableList\")}}\n        <V2::ImmutableList\n          @sourceList={{or this.question.sourceListIDs this.clientRecord.knownEntities}}\n          @answersFrom={{this.model}}\n          @itemName={{this.question.itemName}}\n          @clientRecord={{this.clientRecord}}\n          @context={{this.context}}\n          @defaults={{this.defaults}}\n          @id={{this.question.id}}\n        >\n          <:listContent as |listItem itemIndex|>\n            {{#each this.question.content as |questionContent|}}\n              <V2::QuestionTypeSwitcher\n                @question={{questionContent}}\n                @context={{this.context}}\n                @clientRecord={{this.clientRecord}}\n                @practiceAreaSettings={{this.practiceAreaSettings}}\n                @model={{listItem}}\n                @level={{sum this.level 1}}\n              />\n            {{/each}}\n          </:listContent>\n        </V2::ImmutableList>\n      {{else if (eq this.question.type \"selectorcreate\")}}\n        {{#if (eq this.clientRecord.practiceArea \"Probate\")}}\n          <Dev::Todo @text=\"Add in a V2 {{this.question.type}} question component (for Probate). Currently using the legacy version.\" />\n          <SelectOrCreateLegacy\n            @sourceList={{this.clientRecord.knownEntitiesAndFamilyMembers}}\n            @outputList={{this.clientRecord.knownEntities}}\n            @addNewText={{or this.question.addNewText \"Someone else\"}}\n            @itemLabelFormat={{or this.question.itemLabelFormat \"firstName surname name\"}}\n            @model={{mut (get this.model this.variableStorageName)}}\n            @editExistingItems={{true}}\n            @required={{this.questionIsRequired}}\n            @itemName={{or this.question.itemName \"item\"}}\n            @multipleSelections={{this.question.multipleSelections}}\n            @hideSelectSuggest={{this.question.hideSelect}}\n            @useFamilyTree={{this.question.useFamilyTree}}\n            @filterType={{this.filterType}}\n            @filterList={{this.filterList}}\n            @allowPeople={{this.question.allowPeople}}\n            @allowCorporations={{this.question.allowCorporations}}\n            @editMode={{this.editMode}}\n            @setAsPrimaryContact={{this.question.setAsPrimaryContact}}\n            @allowDeceased={{this.question.allowDeceased}}\n            @clientRecord={{this.clientRecord}}\n            @practiceAreaSettings={{this.practiceAreaSettings}}\n            @onChange={{action \"changed\"}}\n            as |item editingExistingItem|\n          >\n            {{#unless this.question.customContentFirst}}\n              <V2::SelectOrCreatePresets\n                @item={{item}}\n                @editingExistingItem={{editingExistingItem}}\n                @question={{this.question}}\n                @context={{this.context}}\n                @clientRecord={{this.clientRecord}}\n                @filterList={{this.filterList}}\n                @filterType={{this.filterType}}\n              />\n            {{/unless}}\n            {{#each this.question.content as |c|}}\n              <V2::QuestionTypeSwitcher\n                @question={{c}}\n                @context={{augment-hash this.context editingExistingItem=editingExistingItem}}\n                @clientRecord={{this.clientRecord}}\n                @practiceAreaSettings={{this.practiceAreaSettings}}\n                @model={{item}}\n                @filterListOverride={{c.filterList}}\n                @filterTypeOverride={{c.filterType}}\n              />\n            {{/each}}\n            {{#if this.question.customContentFirst}}\n              <V2::SelectOrCreatePresets\n                @item={{item}}\n                @editingExistingItem={{editingExistingItem}}\n                @question={{this.question}}\n                @context={{this.context}}\n                @clientRecord={{this.clientRecord}}\n                @filterList={{this.filterList}}\n                @filterType={{this.filterType}}\n              />\n            {{/if}}\n          </SelectOrCreateLegacy>\n        {{else}}\n          {{#if this.question.multipleSelections}}\n            <Dev::Todo @text=\"Add in a V2 'multi' {{this.question.type}} question component. Currently using the legacy version.\" />\n            <SelectOrCreateMultiple\n              @sourceList={{this.clientRecord.knownEntities}}\n              @outputList={{this.clientRecord.knownEntities}}\n              @addNewText={{or this.question.addNewText \"Someone else\"}}\n              @itemLabelFormat={{or this.question.itemLabelFormat \"firstName surname name\"}}\n              @model={{mut (get this.model this.variableStorageName)}}\n              @editExistingItems={{true}}\n              @required={{this.questionIsRequired}}\n              @itemName={{or this.question.itemName \"item\"}}\n              @itemNamePluralNoun={{this.question.itemNamePluralNoun}}\n              @hideSelectSuggest={{this.question.hideSelect}}\n              @filterType={{this.filterType}}\n              @filterList={{this.filterList}}\n              @notSureOption={{this.question.notSureOption}}\n              @notSureOptionText={{this.question.notSureOptionText}}\n              @notSureModel={{mut (get this.model (sum this.variableStorageName \"-notsure\"))}}\n              @client={{this.model}}\n              @allowPeople={{this.question.allowPeople}}\n              @allowCorporations={{this.question.allowCorporations}}\n              @editMode={{this.editMode}}\n              @setAsPrimaryContact={{this.question.setAsPrimaryContact}}\n              @allowDeceased={{this.question.allowDeceased}}\n              @context={{this.context}}\n              @questionID={{this.question.id}}\n              @clientRecord={{this.clientRecord}}\n              @practiceAreaSettings={{this.practiceAreaSettings}}\n              @onChange={{action \"changed\"}}\n              as |item editingExistingItem|\n            >\n              {{#unless this.question.customContentFirst}}\n                <V2::SelectOrCreatePresets\n                  @item={{item}}\n                  @editingExistingItem={{editingExistingItem}}\n                  @question={{this.question}}\n                  @context={{this.context}}\n                  @clientRecord={{this.clientRecord}}\n                  @filterList={{this.filterList}}\n                  @filterType={{this.filterType}}\n                />\n              {{/unless}}\n              {{#each this.question.content as |c|}}\n                <V2::QuestionTypeSwitcher\n                  @question={{c}}\n                  @context={{augment-hash this.context editingExistingItem=editingExistingItem}}\n                  @clientRecord={{this.clientRecord}}\n                  @practiceAreaSettings={{this.practiceAreaSettings}}\n                  @model={{item}}\n                  @filterListOverride={{c.filterList}}\n                  @filterTypeOverride={{c.filterType}}\n                />\n              {{/each}}\n              {{#if this.question.customContentFirst}}\n                <V2::SelectOrCreatePresets\n                  @item={{item}}\n                  @editingExistingItem={{editingExistingItem}}\n                  @question={{this.question}}\n                  @context={{this.context}}\n                  @clientRecord={{this.clientRecord}}\n                  @filterList={{this.filterList}}\n                  @filterType={{this.filterType}}\n                />\n              {{/if}}\n            </SelectOrCreateMultiple>\n          {{else}}\n            <V2::SelectOrCreateSingle\n              @value={{get this.model this.variableStorageName}}\n              @options={{this.filteredKnownEntities}}\n              @itemTypeString={{this.question.itemName}}\n              @itemLabelFormat={{this.question.itemLabelFormat}}\n              @addNewButtonText={{this.question.addNewText}}\n              @hideSelect={{or this.question.hideSelect (eq this.filterType \"excludeall\")}}\n              @required={{this.questionIsRequired}}\n              @onChange={{action \"changed\"}}\n              @addNewOption={{action \"secondaryChange\"}}\n              as |item editingExistingItem|\n            >\n              {{#unless this.question.customContentFirst}}\n                <V2::SelectOrCreatePresets\n                  @item={{item}}\n                  @editingExistingItem={{editingExistingItem}}\n                  @question={{this.question}}\n                  @context={{this.context}}\n                  @clientRecord={{this.clientRecord}}\n                  @filterList={{this.filterList}}\n                  @filterType={{this.filterType}}\n                />\n              {{/unless}}\n              {{#each this.question.content as |contentItem|}}\n                <V2::QuestionTypeSwitcher\n                  @question={{contentItem}}\n                  @context={{augment-hash this.context editingExistingItem=editingExistingItem}}\n                  @clientRecord={{this.clientRecord}}\n                  @practiceAreaSettings={{this.practiceAreaSettings}}\n                  @model={{item}}\n                  @filterListOverride={{contentItem.filterList}}\n                  @filterTypeOverride={{contentItem.filterType}}\n                />\n              {{/each}}\n              {{#if this.question.customContentFirst}}\n                <V2::SelectOrCreatePresets\n                  @item={{item}}\n                  @editingExistingItem={{editingExistingItem}}\n                  @question={{this.question}}\n                  @context={{this.context}}\n                  @clientRecord={{this.clientRecord}}\n                  @filterList={{this.filterList}}\n                  @filterType={{this.filterType}}\n                />\n              {{/if}}\n            </V2::SelectOrCreateSingle>\n          {{/if}}\n        {{/if}}\n      {{else if (or (eq this.question.type \"select\") (eq this.question.type \"title\"))}}\n        <V2::SelectBox\n          @options={{this.selectOptions}}\n          @prompt={{if this.question.prompt (parse-text this.question.prompt model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context)}}\n          @selectedItem={{get this.model this.variableStorageName}}\n          @required={{this.questionIsRequired}}\n          @id={{this.question.id}}\n          @onChange={{action \"changed\"}}\n        />\n        {{! TODO: Look at creating a feedback component }}\n        {{#each this.question.options as |option|}}\n          <DocumentsRequiredFeedback\n            @documents={{option.documentsRequired}}\n            @showDocument={{eq (get this.model this.variableStorageName) option.id}}\n            @model={{this.model}}\n            @notSureButton={{this.notSureButton}}\n            @displayInline={{true}}\n            @objectID={{this.model.id}}\n            @context={{this.context}}\n            @clientID={{this.clientRecord.clientID}}\n            @questionID={{this.variableStorageName}}\n            @client={{this.clientRecord}}\n          />\n          {{#if (and option.feedback (eq (get this.model this.variableStorageName) option.id))}}\n            <p class=\"feedback-paragraph my-4 rounded-lg bg-sky-50 px-6 py-4\">\n              {{parse-text option.feedback model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n            </p>\n          {{/if}}\n        {{/each}}\n      {{else if (eq this.question.type \"button\")}}\n        <Dev::Todo @text=\"Add in a V2 {{this.question.type}} question component. Currently using the legacy version.\" />\n        <SettifyInputButton\n          @link={{this.question.link}}\n          @completeThisChapter={{this.question.completeThisChapter}}\n          @text={{this.question.title}}\n          @context={{this.context}}\n          @clientRecord={{this.clientRecord}}\n        />\n      {{else if (eq this.question.type \"image\")}}\n        <div class=\"image-wrapper my-4 flex flex-col items-center justify-center {{this.stylingClasses}}\" id={{this.question.id}}>\n          {{#if (or this.question.includeInSummary this.question.includeInFirmSummary)}}\n            <img src={{sum \"https://cdn.settify.com.au/icons/\" (de-fingerprint this.question.icon)}} alt=\"\" class=\"size-10 sm:size-12\" />\n          {{/if}}\n          {{#if this.question.content}}\n            {{parse-text this.question.content model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n          {{/if}}\n        </div>\n      {{else if (eq this.question.type \"link\")}}\n        <div class={{this.stylingClasses}}>\n          {{#if this.question.toggleButton}}\n            <V2::Button {{on \"click\" (action \"changed\")}} class=\"text-brand-link-color-rgb underline\" id={{this.question.id}}>\n              {{parse-text\n                (if (get this.model this.question.id) this.question.alternateContent this.question.content)\n                model=this.model\n                touch=this.clientRecord.touch\n                clientRecord=this.clientRecord\n                context=this.context\n              }}\n            </V2::Button>\n          {{else}}\n            <a href={{this.question.link}} target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-brand-link-color-rgb underline\" id={{this.question.id}}>\n              {{parse-text this.question.content model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n            </a>\n          {{/if}}\n        </div>\n      {{else if (eq this.question.type \"officeselect\")}}\n        <V2::OfficeSelect\n          @value={{mut (get this.model this.variableStorageName)}}\n          @options={{this.question.options}}\n          @id={{this.question.id}}\n          @required={{this.questionIsRequired}}\n          @onChange={{action \"changed\"}}\n        />\n      {{else if (eq this.question.type \"grid\")}}\n        <V2::GridInput\n          @showColumnHeaders={{this.question.showColumnHeaders}}\n          @columns={{this.question.columns}}\n          @clientRecord={{this.clientRecord}}\n          @context={{this.context}}\n          @rows={{mut (get this.model this.variableStorageName)}}\n          @startingRows={{this.question.startingRows}}\n          @sourceList={{this.question.sourceListIDs}}\n          @hideAddRowButton={{this.question.hideAddRowButton}}\n          @itemName={{this.question.itemName}}\n        />\n      {{else if (eq this.question.type \"multiradio\")}}\n        <V2::MatrixScale\n          @rows={{this.visibleMatrixRows}}\n          @columns={{this.visibleOptions}}\n          @values={{this.model}}\n          @id={{this.question.id}}\n          @onChange={{action \"changed\"}}\n          aria-labelledby=\"{{if this.question.title (concat this.question.id '-label')}}\"\n          class=\"text-base\"\n        />\n      {{else if (eq this.question.type \"checkboxlist\")}}\n        <Dev::Todo @text=\"Add in a V2 {{this.question.type}} question component. Currently using the legacy version.\" />\n        <CheckBoxList\n          @sourceList={{or this.question.sourceListIDs this.clientRecord.knownEntities}}\n          @content={{this.question.content}}\n          @checkboxProperty={{this.question.id}}\n          @required={{this.questionIsRequired}}\n          @context={{this.context}}\n          @itemLabelFormat={{or this.question.itemLabelFormat \"firstName surname name\"}}\n          @clientRecord={{this.clientRecord}}\n          @onChange={{action \"changed\"}}\n        />\n      {{else if (eq this.question.type \"inputslider\")}}\n        <V2::RangeSlider\n          @value={{mut (get this.model this.variableStorageName)}}\n          @options={{this.question.options}}\n          @defaultIndex={{this.question.defaultIndex}}\n          @includeSlidingScaleText={{this.question.includeSlidingScaleText}}\n          @slidingScaleLeftText={{this.question.slidingScaleLeftText}}\n          @slidingScaleRightText={{this.question.slidingScaleRightText}}\n          @id={{this.question.id}}\n          @onChange={{action \"changed\"}}\n        />\n      {{else if (eq this.question.type \"block\")}}\n        {{#each this.question.content as |c|}}\n          <V2::QuestionTypeSwitcher\n            @question={{c}}\n            @context={{this.context}}\n            @clientRecord={{this.clientRecord}}\n            @practiceAreaSettings={{this.practiceAreaSettings}}\n            @model={{this.model}}\n          />\n        {{/each}}\n      {{else if (eq this.question.type \"hiddenCalculatedField\")}}\n        <SettifyHiddenCalculatedField\n          @content={{this.question.content}}\n          @clientRecord={{this.clientRecord}}\n          @localAnswers={{this.model}}\n          @model={{mut (get this.model this.variableStorageName)}}\n          @context={{this.context}}\n          @touch={{this.clientRecord.touch}}\n          @onChange={{action \"changed\"}}\n        />\n      {{else if (eq this.question.type \"guessclient\")}}\n        <Dev::Todo @text=\"Add in a V2 {{this.question.type}} question component. Currently using the legacy version.\" />\n        <SettifyGuessClientInput @content={{this.question.content}} @clientRecord={{this.clientRecord}} @model={{this.model}} @context={{this.context}} />\n      {{else if (eq this.question.type \"summaryTable\")}}\n        <Dev::Todo @text=\"Add in a V2 {{this.question.type}} question component. Currently using the legacy version.\" />\n        <SettifySummaryTable @question={{this.question}} @clientRecord={{this.clientRecord}} @context={{this.context}} />\n      {{else if (eq this.question.type \"documentsRequiredList\")}}\n        <Dev::Todo @text=\"Add in a V2 {{this.question.type}} question component. Currently using the legacy version.\" />\n        <DocumentsRequiredList\n          @client={{this.clientRecord}}\n          @class={{this.stylingClasses}}\n          @label={{this.question.title}}\n          @induction={{this.context.induction}}\n          @displayOnly={{true}}\n          @filterList={{this.question.filterList}}\n          @filterType={{this.question.filterType}}\n        />\n      {{else if (eq this.question.type \"familytreeselect\")}}\n        <Dev::Todo @text=\"Add in a V2 {{this.question.type}} question component. Currently using the legacy version.\" />\n        {{#if (eq this.clientRecord.practiceArea \"Probate\")}}\n          <FamilyTreeProbate\n            @onChange={{action \"changed\"}}\n            @clientRecord={{this.clientRecord}}\n            @practiceAreaSettings={{this.practiceAreaSettings}}\n            @hideDetail={{false}}\n            @summaryMode={{this.summaryMode}}\n            @checkboxProperty={{this.question.id}}\n            @multipleSelections={{this.question.multipleSelections}}\n            @enableDeceased={{this.question.enableDeceased}}\n            @enableOrganisations={{this.question.enableOrganisations}}\n            @disableDeceasedPeople={{this.question.disableDeceasedPeople}}\n            @disableEditing={{this.question.disableEditing}}\n            as |item|\n          >\n            {{#each this.question.content as |c|}}\n              <V2::QuestionTypeSwitcher\n                @question={{c}}\n                @context={{this.context}}\n                @clientRecord={{this.clientRecord}}\n                @practiceAreaSettings={{this.practiceAreaSettings}}\n                @model={{get-known-entity this.clientRecord item}}\n              />\n            {{/each}}\n            {{#if this.question.askForMoreInfo}}\n              <SettifyTextarea\n                @label=\"Please tell us more\"\n                @model={{mut (get (get-known-entity this.clientRecord item) (concat this.question.id \"MoreInfo\"))}}\n                @onChange={{action \"changed\"}}\n                @headerLabel={{false}}\n              />\n            {{/if}}\n          </FamilyTreeProbate>\n        {{else}}\n          <FamilyTree\n            @onChange={{action \"changed\"}}\n            @clientRecord={{this.clientRecord}}\n            @practiceAreaSettings={{this.practiceAreaSettings}}\n            @hideDetail={{false}}\n            @summaryMode={{this.summaryMode}}\n            @checkboxProperty={{this.question.id}}\n            @multipleSelections={{this.question.multipleSelections}}\n            @enableDeceased={{this.question.enableDeceased}}\n            @enableOrganisations={{this.question.enableOrganisations}}\n            @disableDeceasedPeople={{this.question.disableDeceasedPeople}}\n            @disableEditing={{this.question.disableEditing}}\n            as |item|\n          >\n            {{#each this.question.content as |c|}}\n              <V2::QuestionTypeSwitcher\n                @question={{c}}\n                @context={{this.context}}\n                @clientRecord={{this.clientRecord}}\n                @practiceAreaSettings={{this.practiceAreaSettings}}\n                @model={{get-known-entity this.clientRecord item}}\n              />\n            {{/each}}\n            {{#if this.question.askForMoreInfo}}\n              <SettifyTextarea\n                @label=\"Please tell us more\"\n                @model={{mut (get (get-known-entity this.clientRecord item) (concat this.question.id \"MoreInfo\"))}}\n                @onChange={{action \"changed\"}}\n                @headerLabel={{false}}\n              />\n            {{/if}}\n          </FamilyTree>\n        {{/if}}\n      {{else if (eq this.question.type \"divider\")}}\n        <hr id={{this.question.id}} class=\"input-divider {{if this.question.whitespace 'hidden'}} {{if this.question.border 'min-h-0.5'}}\" />\n      {{else if (eq this.question.type \"unitsPer\")}}\n        <V2::UnitsPer\n          @unitsPer={{mut (get this.model (sum this.variableStorageName \"unitsPer\"))}}\n          @timePeriod={{mut (get this.model (sum this.variableStorageName \"timePeriod\"))}}\n          @required={{this.questionIsRequired}}\n          @unitType={{this.question.unitType}}\n          @timePeriodOptions={{this.question.timePeriodOptions}}\n          @id={{this.question.id}}\n          @onChange={{action \"changed\"}}\n          @secondaryChange={{action \"secondaryChange\"}}\n        />\n      {{else}}\n        <code>Missing a {{this.question.type}} question type</code>\n      {{/if}}\n  \n      {{yield}}\n    </div>\n  \n    {{#if this.question.notSureOption}}\n      <div data-question-id=\"{{this.question.id}}-notsure\" data-question-type=\"{{this.question.type}}-notsure\">\n        <V2::Checkbox\n          @label={{or this.question.notSureOptionText \"I'm not sure\"}}\n          @value={{get this.model (sum this.variableStorageName \"-notsure\")}}\n          @onChange={{action \"setNotSure\"}}\n        />\n      </div>\n    {{/if}}\n  {{/if}}\n  */\n  {\n    \"id\": \"6rgyYACJ\",\n    \"block\": \"[[[41,[30,0,[\\\"shouldDisplay\\\"]],[[[1,\\\"  \\\"],[10,0],[15,0,[29,[\\\"input-switcher relative \\\",[30,0,[\\\"containerStylingClasses\\\"]]]]],[15,\\\"data-question-id\\\",[30,0,[\\\"question\\\",\\\"id\\\"]]],[15,\\\"data-question-type\\\",[30,0,[\\\"question\\\",\\\"type\\\"]]],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"question\\\",\\\"title\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"flex items-start justify-between gap-x-2 sm:justify-start\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"        \\\"],[8,[39,2],[[16,0,[29,[\\\"mb-2 block \\\",[52,[30,0,[\\\"questionIsRequired\\\"]],\\\"required-field-marker\\\"]]]]],[[\\\"@type\\\",\\\"@id\\\"],[[30,0,[\\\"question\\\",\\\"type\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[1,[28,[35,3],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"question\\\",\\\"helpText\\\"]],[[[1,\\\"          \\\"],[8,[39,4],[[24,0,\\\"help-text-button hover:text-sky-600\\\"],[4,[38,5],[\\\"click\\\",[28,[37,6],[[30,0],\\\"toggleQuestionHelpText\\\"],null]],null]],[[\\\"@size\\\"],[\\\"small\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Toggle help information\\\"],[13],[1,\\\"\\\\n            \\\"],[8,[39,8],[[24,0,\\\"size-[18px]\\\"]],[[\\\"@icon\\\"],[\\\"circle-info\\\"]],null],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"shouldDisplayHelpText\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"help-text-content border-l-4 border-sky-300 p-2 text-sm text-sky-900\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[28,[35,3],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"textline\\\"],null],[[[1,\\\"      \\\"],[8,[39,10],[[16,\\\"placeholder\\\",[28,[37,3],[[30,0,[\\\"question\\\",\\\"placeholder\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[16,0,[29,[\\\"settify-sensitive \\\",[30,0,[\\\"question\\\",\\\"classes\\\"]]]]]],[[\\\"@value\\\",\\\"@id\\\",\\\"@required\\\",\\\"@onChange\\\"],[[28,[37,11],[[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"question\\\",\\\"id\\\"]],[30,0,[\\\"questionIsRequired\\\"]],[28,[37,6],[[30,0],\\\"changed\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"textarea\\\"],null],[[[1,\\\"      \\\"],[8,[39,13],[[16,\\\"placeholder\\\",[28,[37,3],[[30,0,[\\\"question\\\",\\\"placeholder\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[16,0,[29,[\\\"settify-sensitive \\\",[30,0,[\\\"stylingClasses\\\"]],\\\" \\\",[30,0,[\\\"question\\\",\\\"classes\\\"]]]]]],[[\\\"@value\\\",\\\"@id\\\",\\\"@required\\\",\\\"@onChange\\\"],[[28,[37,11],[[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"question\\\",\\\"id\\\"]],[30,0,[\\\"questionIsRequired\\\"]],[28,[37,6],[[30,0],\\\"changed\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"address\\\"],null],[[[1,\\\"      \\\"],[8,[39,14],[[16,\\\"aria-labelledby\\\",[29,[[52,[30,0,[\\\"question\\\",\\\"title\\\"]],[28,[37,15],[[30,0,[\\\"question\\\",\\\"id\\\"]],\\\"-label\\\"],null]]]]],[16,0,[30,0,[\\\"question\\\",\\\"classes\\\"]]]],[[\\\"@value\\\",\\\"@id\\\",\\\"@required\\\",\\\"@detailed\\\",\\\"@addressOptions\\\",\\\"@clientRecord\\\",\\\"@filterType\\\",\\\"@filterList\\\",\\\"@onChange\\\"],[[28,[37,11],[[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"question\\\",\\\"id\\\"]],[30,0,[\\\"questionIsRequired\\\"]],[30,0,[\\\"question\\\",\\\"detailed\\\"]],[30,0,[\\\"question\\\",\\\"addressOptions\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"filterType\\\"]],[30,0,[\\\"filterList\\\"]],[28,[37,6],[[30,0],\\\"changed\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"firstname\\\"],null],[[[1,\\\"      \\\"],[8,[39,16],[[16,\\\"placeholder\\\",[28,[37,3],[[30,0,[\\\"question\\\",\\\"placeholder\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[16,0,[29,[\\\"settify-sensitive \\\",[30,0,[\\\"question\\\",\\\"classes\\\"]]]]]],[[\\\"@value\\\",\\\"@gender\\\",\\\"@pronouns\\\",\\\"@allowGender\\\",\\\"@allowPronouns\\\",\\\"@id\\\",\\\"@required\\\",\\\"@onNameChange\\\",\\\"@onGenderChange\\\"],[[28,[37,11],[[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[28,[37,11],[[28,[37,12],[[30,0,[\\\"model\\\"]],[28,[37,17],[[30,0,[\\\"variableStorageName\\\"]],\\\"-gender\\\"],null]],null]],null],[28,[37,11],[[28,[37,12],[[30,0,[\\\"model\\\"]],[28,[37,17],[[30,0,[\\\"variableStorageName\\\"]],\\\"-pronouns\\\"],null]],null]],null],[30,0,[\\\"practiceAreaSettings\\\",\\\"settings\\\",\\\"induction\\\",\\\"allowGender\\\"]],[30,0,[\\\"practiceAreaSettings\\\",\\\"settings\\\",\\\"induction\\\",\\\"allowGenderPronouns\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]],[30,0,[\\\"questionIsRequired\\\"]],[28,[37,6],[[30,0],\\\"changed\\\"],null],[28,[37,6],[[30,0],\\\"secondaryChange\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"date\\\"],null],[[[1,\\\"      \\\"],[8,[39,18],[[16,\\\"aria-labelledby\\\",[29,[[52,[30,0,[\\\"question\\\",\\\"title\\\"]],[28,[37,15],[[30,0,[\\\"question\\\",\\\"id\\\"]],\\\"-label\\\"],null]]]]],[16,0,[29,[\\\"settify-sensitive \\\",[30,0,[\\\"question\\\",\\\"classes\\\"]]]]]],[[\\\"@id\\\",\\\"@day\\\",\\\"@month\\\",\\\"@year\\\",\\\"@required\\\",\\\"@requiredSpecificity\\\",\\\"@monthInputFirst\\\",\\\"@allowFuture\\\",\\\"@onChange\\\",\\\"@secondaryChange\\\"],[[30,0,[\\\"question\\\",\\\"id\\\"]],[28,[37,11],[[28,[37,12],[[30,0,[\\\"model\\\"]],[28,[37,17],[[30,0,[\\\"variableStorageName\\\"]],\\\"day\\\"],null]],null]],null],[28,[37,11],[[28,[37,12],[[30,0,[\\\"model\\\"]],[28,[37,17],[[30,0,[\\\"variableStorageName\\\"]],\\\"month\\\"],null]],null]],null],[28,[37,11],[[28,[37,12],[[30,0,[\\\"model\\\"]],[28,[37,17],[[30,0,[\\\"variableStorageName\\\"]],\\\"year\\\"],null]],null]],null],[30,0,[\\\"questionIsRequired\\\"]],[30,0,[\\\"question\\\",\\\"requiredSpecificity\\\"]],[28,[37,9],[[30,0,[\\\"question\\\",\\\"dateLayout\\\"]],\\\"MM/DD/YYYY\\\"],null],[30,0,[\\\"question\\\",\\\"allowFuture\\\"]],[28,[37,6],[[30,0],\\\"changed\\\"],null],[28,[37,6],[[30,0],\\\"secondaryChange\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"number\\\"],null],[[[1,\\\"      \\\"],[8,[39,19],[[16,\\\"placeholder\\\",[28,[37,3],[[30,0,[\\\"question\\\",\\\"placeholder\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[16,0,[29,[\\\"settify-sensitive \\\",[30,0,[\\\"question\\\",\\\"classes\\\"]]]]]],[[\\\"@value\\\",\\\"@required\\\",\\\"@min\\\",\\\"@max\\\",\\\"@onChange\\\"],[[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],[30,0,[\\\"questionIsRequired\\\"]],[30,0,[\\\"question\\\",\\\"min\\\"]],[30,0,[\\\"question\\\",\\\"max\\\"]],[28,[37,6],[[30,0],\\\"changed\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"money\\\"],null],[[[1,\\\"      \\\"],[8,[39,20],[[16,\\\"placeholder\\\",[28,[37,3],[[30,0,[\\\"question\\\",\\\"placeholder\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[16,0,[30,0,[\\\"question\\\",\\\"classes\\\"]]]],[[\\\"@value\\\",\\\"@required\\\",\\\"@min\\\",\\\"@max\\\",\\\"@id\\\",\\\"@onChange\\\"],[[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],[30,0,[\\\"questionIsRequired\\\"]],[30,0,[\\\"question\\\",\\\"min\\\"]],[30,0,[\\\"question\\\",\\\"max\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]],[28,[37,6],[[30,0],\\\"changed\\\"],null]]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,21],[[30,0,[\\\"question\\\",\\\"showConfidenceSlider\\\"]],[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[[[1,\\\"        \\\"],[8,[39,22],null,[[\\\"@value\\\",\\\"@maxConfidence\\\",\\\"@id\\\",\\\"@onChange\\\"],[[28,[37,11],[[28,[37,12],[[30,0,[\\\"model\\\"]],[28,[37,17],[[30,0,[\\\"variableStorageName\\\"]],\\\"-confidence\\\"],null]],null]],null],[30,0,[\\\"question\\\",\\\"confidenceSliderMaxValue\\\"]],[29,[[30,0,[\\\"question\\\",\\\"id\\\"]],\\\"-confidence\\\"]],[28,[37,6],[[30,0],\\\"secondaryChange\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"phone\\\"],null],[[[1,\\\"      \\\"],[8,[39,23],[[16,\\\"placeholder\\\",[28,[37,3],[[30,0,[\\\"question\\\",\\\"placeholder\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[16,0,[29,[\\\"settify-sensitive \\\",[30,0,[\\\"question\\\",\\\"classes\\\"]]]]]],[[\\\"@value\\\",\\\"@id\\\",\\\"@required\\\",\\\"@validation\\\",\\\"@onChange\\\",\\\"@setPhoneNumberValidation\\\"],[[28,[37,11],[[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"question\\\",\\\"id\\\"]],[30,0,[\\\"questionIsRequired\\\"]],[28,[37,11],[[28,[37,12],[[30,0,[\\\"model\\\"]],[28,[37,17],[[30,0,[\\\"variableStorageName\\\"]],\\\"-valid\\\"],null]],null]],null],[28,[37,6],[[30,0],\\\"changed\\\"],null],[28,[37,6],[[30,0],\\\"secondaryChange\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"email\\\"],null],[[[1,\\\"      \\\"],[8,[39,24],[[16,\\\"placeholder\\\",[28,[37,3],[[30,0,[\\\"question\\\",\\\"placeholder\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[16,0,[29,[\\\"settify-sensitive \\\",[30,0,[\\\"question\\\",\\\"classes\\\"]]]]]],[[\\\"@value\\\",\\\"@placeholder\\\",\\\"@required\\\",\\\"@id\\\",\\\"@validation\\\",\\\"@onChange\\\"],[[28,[37,11],[[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[28,[37,3],[[30,0,[\\\"question\\\",\\\"placeholder\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"questionIsRequired\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]],[28,[37,11],[[28,[37,12],[[30,0,[\\\"model\\\"]],[28,[37,17],[[30,0,[\\\"variableStorageName\\\"]],\\\"-valid\\\"],null]],null]],null],[28,[37,6],[[30,0],\\\"changed\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"paragraph\\\"],null],[[[1,\\\"      \\\"],[10,2],[15,1,[30,0,[\\\"question\\\",\\\"id\\\"]]],[15,0,[29,[\\\"input-paragraph \\\",[30,0,[\\\"stylingClasses\\\"]]]]],[12],[1,\\\"\\\\n        \\\"],[1,[28,[35,3],[[30,0,[\\\"question\\\",\\\"content\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"heading\\\"],null],[[[1,\\\"      \\\"],[10,0],[15,0,[29,[\\\"mb-2 mt-4 border-b border-gray-200 \\\",[30,0,[\\\"stylingClasses\\\"]]]]],[12],[1,\\\"\\\\n        \\\"],[10,\\\"h4\\\"],[14,0,\\\"truncate text-2xl\\\"],[15,1,[30,0,[\\\"question\\\",\\\"id\\\"]]],[12],[1,\\\"\\\\n          \\\"],[1,[28,[35,3],[[30,0,[\\\"question\\\",\\\"content\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,27],null,[[\\\"@icon\\\"],[[30,0,[\\\"question\\\",\\\"icons\\\"]]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"radio\\\"],null],[[[1,\\\"      \\\"],[8,[39,28],[[16,\\\"aria-labelledby\\\",[29,[[52,[30,0,[\\\"question\\\",\\\"title\\\"]],[28,[37,15],[[30,0,[\\\"question\\\",\\\"id\\\"]],\\\"-label\\\"],null]]]]],[16,0,[30,0,[\\\"question\\\",\\\"classes\\\"]]]],[[\\\"@name\\\",\\\"@value\\\",\\\"@options\\\",\\\"@clientRecord\\\",\\\"@context\\\",\\\"@id\\\",\\\"@onChange\\\",\\\"@required\\\"],[[30,0,[\\\"variableStorageName\\\"]],[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],[30,0,[\\\"visibleOptions\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]],[28,[37,6],[[30,0],\\\"changed\\\"],null],[30,0,[\\\"questionIsRequired\\\"]]]],null],[1,\\\"\\\\n\\\"],[42,[28,[37,30],[[28,[37,30],[[30,0,[\\\"question\\\",\\\"options\\\"]]],null]],null],null,[[[41,[28,[37,21],[[28,[37,31],null,[[\\\"question\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"touch\\\"],[[30,1],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]]]]],[30,1,[\\\"feedback\\\"]],[28,[37,9],[[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],[30,1,[\\\"id\\\"]]],null]],null],[[[1,\\\"          \\\"],[10,2],[14,0,\\\"feedback-paragraph my-4 rounded-lg bg-sky-50 px-6 py-4\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[28,[35,3],[[30,1,[\\\"feedback\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[1]],null]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"yesno\\\"],null],[[[1,\\\"      \\\"],[8,[39,32],[[16,\\\"aria-labelledby\\\",[29,[[52,[30,0,[\\\"question\\\",\\\"title\\\"]],[28,[37,15],[[30,0,[\\\"question\\\",\\\"id\\\"]],\\\"-label\\\"],null]]]]]],[[\\\"@name\\\",\\\"@id\\\",\\\"@value\\\",\\\"@required\\\",\\\"@excludeNotSure\\\",\\\"@onChange\\\"],[[30,0,[\\\"question\\\",\\\"id\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]],[28,[37,11],[[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"questionIsRequired\\\"]],[30,0,[\\\"question\\\",\\\"excludeNotSure\\\"]],[28,[37,6],[[30,0],\\\"changed\\\"],null]]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,21],[[28,[37,9],[[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],\\\"yes\\\"],null],[30,0,[\\\"question\\\",\\\"onYes\\\",\\\"feedback\\\"]]],null],[[[1,\\\"        \\\"],[10,2],[14,0,\\\"feedback-paragraph my-4 rounded-lg bg-sky-50 px-6 py-4\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[28,[35,3],[[30,0,[\\\"question\\\",\\\"onYes\\\",\\\"feedback\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,21],[[28,[37,9],[[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],\\\"no\\\"],null],[30,0,[\\\"question\\\",\\\"onNo\\\",\\\"feedback\\\"]]],null],[[[1,\\\"        \\\"],[10,2],[14,0,\\\"feedback-paragraph my-4 rounded-lg bg-sky-50 px-6 py-4\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[28,[35,3],[[30,0,[\\\"question\\\",\\\"onNo\\\",\\\"feedback\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,21],[[28,[37,9],[[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],\\\"notsure\\\"],null],[30,0,[\\\"question\\\",\\\"onNotSure\\\",\\\"feedback\\\"]]],null],[[[1,\\\"        \\\"],[10,2],[14,0,\\\"feedback-paragraph my-4 rounded-lg bg-sky-50 px-6 py-4\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[28,[35,3],[[30,0,[\\\"question\\\",\\\"onNotSure\\\",\\\"feedback\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"checkbox\\\"],null],[[[1,\\\"      \\\"],[8,[39,33],[[16,\\\"aria-labelledby\\\",[29,[[52,[30,0,[\\\"question\\\",\\\"title\\\"]],[28,[37,15],[[30,0,[\\\"question\\\",\\\"id\\\"]],\\\"-label\\\"],null]]]]],[16,0,[30,0,[\\\"question\\\",\\\"classes\\\"]]]],[[\\\"@value\\\",\\\"@options\\\",\\\"@id\\\",\\\"@clientRecord\\\",\\\"@context\\\",\\\"@onChange\\\",\\\"@required\\\"],[[28,[37,11],[[30,0,[\\\"model\\\"]]],null],[30,0,[\\\"visibleOptions\\\"]],[30,0,[\\\"quesiton\\\",\\\"id\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[28,[37,6],[[30,0],\\\"changed\\\"],null],[30,0,[\\\"questionIsRequired\\\"]]]],null],[1,\\\"\\\\n\\\"],[42,[28,[37,30],[[28,[37,30],[[30,0,[\\\"question\\\",\\\"options\\\"]]],null]],null],null,[[[41,[28,[37,21],[[28,[37,31],null,[[\\\"question\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"touch\\\"],[[30,2],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]]]]],[30,2,[\\\"feedback\\\"]],[28,[37,12],[[30,0,[\\\"model\\\"]],[28,[37,34],[[30,2,[\\\"id\\\"]],[30,2,[\\\"title\\\"]]],null]],null]],null],[[[1,\\\"          \\\"],[10,2],[14,0,\\\"feedback-paragraph my-4 rounded-lg bg-sky-50 px-6 py-4\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[28,[35,3],[[30,2,[\\\"feedback\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[2]],null]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"list\\\"],null],[[[41,[30,0,[\\\"question\\\",\\\"tabbedList\\\"]],[[[1,\\\"        \\\"],[8,[39,35],null,[[\\\"@tabs\\\",\\\"@clientRecord\\\",\\\"@itemTypeString\\\",\\\"@itemLabelFormat\\\",\\\"@defaults\\\",\\\"@id\\\"],[[28,[37,11],[[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"question\\\",\\\"itemName\\\"]],[30,0,[\\\"question\\\",\\\"itemLabelFormat\\\"]],[30,0,[\\\"defaults\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]]]],[[\\\"tabContent\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,30],[[28,[37,30],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"              \\\"],[8,[39,37],null,[[\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@model\\\"],[[30,4],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[30,3]]],null],[1,\\\"\\\\n\\\"]],[4]],null],[1,\\\"          \\\"]],[3]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[8,[39,38],null,[[\\\"@values\\\",\\\"@itemName\\\",\\\"@isImmutableList\\\",\\\"@noBorder\\\",\\\"@clientRecord\\\",\\\"@preventEmptyLists\\\",\\\"@defaults\\\",\\\"@id\\\"],[[28,[37,11],[[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"question\\\",\\\"itemName\\\"]],[30,0,[\\\"question\\\",\\\"immutableList\\\"]],[30,0,[\\\"question\\\",\\\"noBorder\\\"]],[30,0,[\\\"clientRecord\\\"]],true,[30,0,[\\\"defaults\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]]]],[[\\\"listContent\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,30],[[28,[37,30],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"              \\\"],[8,[39,37],null,[[\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@model\\\"],[[30,7],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[30,5]]],null],[1,\\\"\\\\n\\\"]],[7]],null],[1,\\\"          \\\"]],[5,6]]]]],[1,\\\"\\\\n\\\"]],[]]]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"immutableList\\\"],null],[[[1,\\\"      \\\"],[8,[39,40],null,[[\\\"@sourceList\\\",\\\"@answersFrom\\\",\\\"@itemName\\\",\\\"@clientRecord\\\",\\\"@context\\\",\\\"@defaults\\\",\\\"@id\\\"],[[28,[37,34],[[30,0,[\\\"question\\\",\\\"sourceListIDs\\\"]],[30,0,[\\\"clientRecord\\\",\\\"knownEntities\\\"]]],null],[30,0,[\\\"model\\\"]],[30,0,[\\\"question\\\",\\\"itemName\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"defaults\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]]]],[[\\\"listContent\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,30],[[28,[37,30],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[8,[39,37],null,[[\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@model\\\",\\\"@level\\\"],[[30,10],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[30,8],[28,[37,17],[[30,0,[\\\"level\\\"]],1],null]]],null],[1,\\\"\\\\n\\\"]],[10]],null],[1,\\\"        \\\"]],[8,9]]]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"selectorcreate\\\"],null],[[[41,[28,[37,9],[[30,0,[\\\"clientRecord\\\",\\\"practiceArea\\\"]],\\\"Probate\\\"],null],[[[1,\\\"        \\\"],[8,[39,41],null,[[\\\"@text\\\"],[[29,[\\\"Add in a V2 \\\",[30,0,[\\\"question\\\",\\\"type\\\"]],\\\" question component (for Probate). Currently using the legacy version.\\\"]]]],null],[1,\\\"\\\\n        \\\"],[8,[39,42],null,[[\\\"@sourceList\\\",\\\"@outputList\\\",\\\"@addNewText\\\",\\\"@itemLabelFormat\\\",\\\"@model\\\",\\\"@editExistingItems\\\",\\\"@required\\\",\\\"@itemName\\\",\\\"@multipleSelections\\\",\\\"@hideSelectSuggest\\\",\\\"@useFamilyTree\\\",\\\"@filterType\\\",\\\"@filterList\\\",\\\"@allowPeople\\\",\\\"@allowCorporations\\\",\\\"@editMode\\\",\\\"@setAsPrimaryContact\\\",\\\"@allowDeceased\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@onChange\\\"],[[30,0,[\\\"clientRecord\\\",\\\"knownEntitiesAndFamilyMembers\\\"]],[30,0,[\\\"clientRecord\\\",\\\"knownEntities\\\"]],[28,[37,34],[[30,0,[\\\"question\\\",\\\"addNewText\\\"]],\\\"Someone else\\\"],null],[28,[37,34],[[30,0,[\\\"question\\\",\\\"itemLabelFormat\\\"]],\\\"firstName surname name\\\"],null],[28,[37,11],[[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],true,[30,0,[\\\"questionIsRequired\\\"]],[28,[37,34],[[30,0,[\\\"question\\\",\\\"itemName\\\"]],\\\"item\\\"],null],[30,0,[\\\"question\\\",\\\"multipleSelections\\\"]],[30,0,[\\\"question\\\",\\\"hideSelect\\\"]],[30,0,[\\\"question\\\",\\\"useFamilyTree\\\"]],[30,0,[\\\"filterType\\\"]],[30,0,[\\\"filterList\\\"]],[30,0,[\\\"question\\\",\\\"allowPeople\\\"]],[30,0,[\\\"question\\\",\\\"allowCorporations\\\"]],[30,0,[\\\"editMode\\\"]],[30,0,[\\\"question\\\",\\\"setAsPrimaryContact\\\"]],[30,0,[\\\"question\\\",\\\"allowDeceased\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[28,[37,6],[[30,0],\\\"changed\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"question\\\",\\\"customContentFirst\\\"]]],[[[1,\\\"            \\\"],[8,[39,44],null,[[\\\"@item\\\",\\\"@editingExistingItem\\\",\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@filterList\\\",\\\"@filterType\\\"],[[30,11],[30,12],[30,0,[\\\"question\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"filterList\\\"]],[30,0,[\\\"filterType\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[42,[28,[37,30],[[28,[37,30],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[8,[39,37],null,[[\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@model\\\",\\\"@filterListOverride\\\",\\\"@filterTypeOverride\\\"],[[30,13],[28,[37,45],[[30,0,[\\\"context\\\"]]],[[\\\"editingExistingItem\\\"],[[30,12]]]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[30,11],[30,13,[\\\"filterList\\\"]],[30,13,[\\\"filterType\\\"]]]],null],[1,\\\"\\\\n\\\"]],[13]],null],[41,[30,0,[\\\"question\\\",\\\"customContentFirst\\\"]],[[[1,\\\"            \\\"],[8,[39,44],null,[[\\\"@item\\\",\\\"@editingExistingItem\\\",\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@filterList\\\",\\\"@filterType\\\"],[[30,11],[30,12],[30,0,[\\\"question\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"filterList\\\"]],[30,0,[\\\"filterType\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"]],[11,12]]]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"question\\\",\\\"multipleSelections\\\"]],[[[1,\\\"          \\\"],[8,[39,41],null,[[\\\"@text\\\"],[[29,[\\\"Add in a V2 'multi' \\\",[30,0,[\\\"question\\\",\\\"type\\\"]],\\\" question component. Currently using the legacy version.\\\"]]]],null],[1,\\\"\\\\n          \\\"],[8,[39,46],null,[[\\\"@sourceList\\\",\\\"@outputList\\\",\\\"@addNewText\\\",\\\"@itemLabelFormat\\\",\\\"@model\\\",\\\"@editExistingItems\\\",\\\"@required\\\",\\\"@itemName\\\",\\\"@itemNamePluralNoun\\\",\\\"@hideSelectSuggest\\\",\\\"@filterType\\\",\\\"@filterList\\\",\\\"@notSureOption\\\",\\\"@notSureOptionText\\\",\\\"@notSureModel\\\",\\\"@client\\\",\\\"@allowPeople\\\",\\\"@allowCorporations\\\",\\\"@editMode\\\",\\\"@setAsPrimaryContact\\\",\\\"@allowDeceased\\\",\\\"@context\\\",\\\"@questionID\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@onChange\\\"],[[30,0,[\\\"clientRecord\\\",\\\"knownEntities\\\"]],[30,0,[\\\"clientRecord\\\",\\\"knownEntities\\\"]],[28,[37,34],[[30,0,[\\\"question\\\",\\\"addNewText\\\"]],\\\"Someone else\\\"],null],[28,[37,34],[[30,0,[\\\"question\\\",\\\"itemLabelFormat\\\"]],\\\"firstName surname name\\\"],null],[28,[37,11],[[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],true,[30,0,[\\\"questionIsRequired\\\"]],[28,[37,34],[[30,0,[\\\"question\\\",\\\"itemName\\\"]],\\\"item\\\"],null],[30,0,[\\\"question\\\",\\\"itemNamePluralNoun\\\"]],[30,0,[\\\"question\\\",\\\"hideSelect\\\"]],[30,0,[\\\"filterType\\\"]],[30,0,[\\\"filterList\\\"]],[30,0,[\\\"question\\\",\\\"notSureOption\\\"]],[30,0,[\\\"question\\\",\\\"notSureOptionText\\\"]],[28,[37,11],[[28,[37,12],[[30,0,[\\\"model\\\"]],[28,[37,17],[[30,0,[\\\"variableStorageName\\\"]],\\\"-notsure\\\"],null]],null]],null],[30,0,[\\\"model\\\"]],[30,0,[\\\"question\\\",\\\"allowPeople\\\"]],[30,0,[\\\"question\\\",\\\"allowCorporations\\\"]],[30,0,[\\\"editMode\\\"]],[30,0,[\\\"question\\\",\\\"setAsPrimaryContact\\\"]],[30,0,[\\\"question\\\",\\\"allowDeceased\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[28,[37,6],[[30,0],\\\"changed\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"question\\\",\\\"customContentFirst\\\"]]],[[[1,\\\"              \\\"],[8,[39,44],null,[[\\\"@item\\\",\\\"@editingExistingItem\\\",\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@filterList\\\",\\\"@filterType\\\"],[[30,14],[30,15],[30,0,[\\\"question\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"filterList\\\"]],[30,0,[\\\"filterType\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[42,[28,[37,30],[[28,[37,30],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"              \\\"],[8,[39,37],null,[[\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@model\\\",\\\"@filterListOverride\\\",\\\"@filterTypeOverride\\\"],[[30,16],[28,[37,45],[[30,0,[\\\"context\\\"]]],[[\\\"editingExistingItem\\\"],[[30,15]]]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[30,14],[30,16,[\\\"filterList\\\"]],[30,16,[\\\"filterType\\\"]]]],null],[1,\\\"\\\\n\\\"]],[16]],null],[41,[30,0,[\\\"question\\\",\\\"customContentFirst\\\"]],[[[1,\\\"              \\\"],[8,[39,44],null,[[\\\"@item\\\",\\\"@editingExistingItem\\\",\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@filterList\\\",\\\"@filterType\\\"],[[30,14],[30,15],[30,0,[\\\"question\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"filterList\\\"]],[30,0,[\\\"filterType\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"]],[14,15]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[8,[39,47],null,[[\\\"@value\\\",\\\"@options\\\",\\\"@itemTypeString\\\",\\\"@itemLabelFormat\\\",\\\"@addNewButtonText\\\",\\\"@hideSelect\\\",\\\"@required\\\",\\\"@onChange\\\",\\\"@addNewOption\\\"],[[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],[30,0,[\\\"filteredKnownEntities\\\"]],[30,0,[\\\"question\\\",\\\"itemName\\\"]],[30,0,[\\\"question\\\",\\\"itemLabelFormat\\\"]],[30,0,[\\\"question\\\",\\\"addNewText\\\"]],[28,[37,34],[[30,0,[\\\"question\\\",\\\"hideSelect\\\"]],[28,[37,9],[[30,0,[\\\"filterType\\\"]],\\\"excludeall\\\"],null]],null],[30,0,[\\\"questionIsRequired\\\"]],[28,[37,6],[[30,0],\\\"changed\\\"],null],[28,[37,6],[[30,0],\\\"secondaryChange\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"question\\\",\\\"customContentFirst\\\"]]],[[[1,\\\"              \\\"],[8,[39,44],null,[[\\\"@item\\\",\\\"@editingExistingItem\\\",\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@filterList\\\",\\\"@filterType\\\"],[[30,17],[30,18],[30,0,[\\\"question\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"filterList\\\"]],[30,0,[\\\"filterType\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[42,[28,[37,30],[[28,[37,30],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"              \\\"],[8,[39,37],null,[[\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@model\\\",\\\"@filterListOverride\\\",\\\"@filterTypeOverride\\\"],[[30,19],[28,[37,45],[[30,0,[\\\"context\\\"]]],[[\\\"editingExistingItem\\\"],[[30,18]]]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[30,17],[30,19,[\\\"filterList\\\"]],[30,19,[\\\"filterType\\\"]]]],null],[1,\\\"\\\\n\\\"]],[19]],null],[41,[30,0,[\\\"question\\\",\\\"customContentFirst\\\"]],[[[1,\\\"              \\\"],[8,[39,44],null,[[\\\"@item\\\",\\\"@editingExistingItem\\\",\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@filterList\\\",\\\"@filterType\\\"],[[30,17],[30,18],[30,0,[\\\"question\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"filterList\\\"]],[30,0,[\\\"filterType\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"]],[17,18]]]]],[1,\\\"\\\\n\\\"]],[]]]],[]]]],[]],[[[41,[28,[37,34],[[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"select\\\"],null],[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"title\\\"],null]],null],[[[1,\\\"      \\\"],[8,[39,48],null,[[\\\"@options\\\",\\\"@prompt\\\",\\\"@selectedItem\\\",\\\"@required\\\",\\\"@id\\\",\\\"@onChange\\\"],[[30,0,[\\\"selectOptions\\\"]],[52,[30,0,[\\\"question\\\",\\\"prompt\\\"]],[28,[37,3],[[30,0,[\\\"question\\\",\\\"prompt\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],[30,0,[\\\"questionIsRequired\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]],[28,[37,6],[[30,0],\\\"changed\\\"],null]]],null],[1,\\\"\\\\n\\\"],[42,[28,[37,30],[[28,[37,30],[[30,0,[\\\"question\\\",\\\"options\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[8,[39,49],null,[[\\\"@documents\\\",\\\"@showDocument\\\",\\\"@model\\\",\\\"@notSureButton\\\",\\\"@displayInline\\\",\\\"@objectID\\\",\\\"@context\\\",\\\"@clientID\\\",\\\"@questionID\\\",\\\"@client\\\"],[[30,20,[\\\"documentsRequired\\\"]],[28,[37,9],[[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],[30,20,[\\\"id\\\"]]],null],[30,0,[\\\"model\\\"]],[30,0,[\\\"notSureButton\\\"]],true,[30,0,[\\\"model\\\",\\\"id\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"clientID\\\"]],[30,0,[\\\"variableStorageName\\\"]],[30,0,[\\\"clientRecord\\\"]]]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,21],[[30,20,[\\\"feedback\\\"]],[28,[37,9],[[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],[30,20,[\\\"id\\\"]]],null]],null],[[[1,\\\"          \\\"],[10,2],[14,0,\\\"feedback-paragraph my-4 rounded-lg bg-sky-50 px-6 py-4\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[28,[35,3],[[30,20,[\\\"feedback\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[20]],null]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"button\\\"],null],[[[1,\\\"      \\\"],[8,[39,41],null,[[\\\"@text\\\"],[[29,[\\\"Add in a V2 \\\",[30,0,[\\\"question\\\",\\\"type\\\"]],\\\" question component. Currently using the legacy version.\\\"]]]],null],[1,\\\"\\\\n      \\\"],[8,[39,50],null,[[\\\"@link\\\",\\\"@completeThisChapter\\\",\\\"@text\\\",\\\"@context\\\",\\\"@clientRecord\\\"],[[30,0,[\\\"question\\\",\\\"link\\\"]],[30,0,[\\\"question\\\",\\\"completeThisChapter\\\"]],[30,0,[\\\"question\\\",\\\"title\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"image\\\"],null],[[[1,\\\"      \\\"],[10,0],[15,0,[29,[\\\"image-wrapper my-4 flex flex-col items-center justify-center \\\",[30,0,[\\\"stylingClasses\\\"]]]]],[15,1,[30,0,[\\\"question\\\",\\\"id\\\"]]],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,34],[[30,0,[\\\"question\\\",\\\"includeInSummary\\\"]],[30,0,[\\\"question\\\",\\\"includeInFirmSummary\\\"]]],null],[[[1,\\\"          \\\"],[10,\\\"img\\\"],[15,\\\"src\\\",[28,[37,17],[\\\"https://cdn.settify.com.au/icons/\\\",[28,[37,52],[[30,0,[\\\"question\\\",\\\"icon\\\"]]],null]],null]],[14,\\\"alt\\\",\\\"\\\"],[14,0,\\\"size-10 sm:size-12\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"question\\\",\\\"content\\\"]],[[[1,\\\"          \\\"],[1,[28,[35,3],[[30,0,[\\\"question\\\",\\\"content\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"link\\\"],null],[[[1,\\\"      \\\"],[10,0],[15,0,[30,0,[\\\"stylingClasses\\\"]]],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"question\\\",\\\"toggleButton\\\"]],[[[1,\\\"          \\\"],[8,[39,4],[[24,0,\\\"text-brand-link-color-rgb underline\\\"],[16,1,[30,0,[\\\"question\\\",\\\"id\\\"]]],[4,[38,5],[\\\"click\\\",[28,[37,6],[[30,0],\\\"changed\\\"],null]],null]],null,[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[1,[28,[35,3],[[52,[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]]],null],[30,0,[\\\"question\\\",\\\"alternateContent\\\"]],[30,0,[\\\"question\\\",\\\"content\\\"]]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[10,3],[15,6,[30,0,[\\\"question\\\",\\\"link\\\"]]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[14,0,\\\"text-brand-link-color-rgb underline\\\"],[15,1,[30,0,[\\\"question\\\",\\\"id\\\"]]],[12],[1,\\\"\\\\n            \\\"],[1,[28,[35,3],[[30,0,[\\\"question\\\",\\\"content\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"officeselect\\\"],null],[[[1,\\\"      \\\"],[8,[39,54],null,[[\\\"@value\\\",\\\"@options\\\",\\\"@id\\\",\\\"@required\\\",\\\"@onChange\\\"],[[28,[37,11],[[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"question\\\",\\\"options\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]],[30,0,[\\\"questionIsRequired\\\"]],[28,[37,6],[[30,0],\\\"changed\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"grid\\\"],null],[[[1,\\\"      \\\"],[8,[39,55],null,[[\\\"@showColumnHeaders\\\",\\\"@columns\\\",\\\"@clientRecord\\\",\\\"@context\\\",\\\"@rows\\\",\\\"@startingRows\\\",\\\"@sourceList\\\",\\\"@hideAddRowButton\\\",\\\"@itemName\\\"],[[30,0,[\\\"question\\\",\\\"showColumnHeaders\\\"]],[30,0,[\\\"question\\\",\\\"columns\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[28,[37,11],[[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"question\\\",\\\"startingRows\\\"]],[30,0,[\\\"question\\\",\\\"sourceListIDs\\\"]],[30,0,[\\\"question\\\",\\\"hideAddRowButton\\\"]],[30,0,[\\\"question\\\",\\\"itemName\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"multiradio\\\"],null],[[[1,\\\"      \\\"],[8,[39,56],[[16,\\\"aria-labelledby\\\",[29,[[52,[30,0,[\\\"question\\\",\\\"title\\\"]],[28,[37,15],[[30,0,[\\\"question\\\",\\\"id\\\"]],\\\"-label\\\"],null]]]]],[24,0,\\\"text-base\\\"]],[[\\\"@rows\\\",\\\"@columns\\\",\\\"@values\\\",\\\"@id\\\",\\\"@onChange\\\"],[[30,0,[\\\"visibleMatrixRows\\\"]],[30,0,[\\\"visibleOptions\\\"]],[30,0,[\\\"model\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]],[28,[37,6],[[30,0],\\\"changed\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"checkboxlist\\\"],null],[[[1,\\\"      \\\"],[8,[39,41],null,[[\\\"@text\\\"],[[29,[\\\"Add in a V2 \\\",[30,0,[\\\"question\\\",\\\"type\\\"]],\\\" question component. Currently using the legacy version.\\\"]]]],null],[1,\\\"\\\\n      \\\"],[8,[39,57],null,[[\\\"@sourceList\\\",\\\"@content\\\",\\\"@checkboxProperty\\\",\\\"@required\\\",\\\"@context\\\",\\\"@itemLabelFormat\\\",\\\"@clientRecord\\\",\\\"@onChange\\\"],[[28,[37,34],[[30,0,[\\\"question\\\",\\\"sourceListIDs\\\"]],[30,0,[\\\"clientRecord\\\",\\\"knownEntities\\\"]]],null],[30,0,[\\\"question\\\",\\\"content\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]],[30,0,[\\\"questionIsRequired\\\"]],[30,0,[\\\"context\\\"]],[28,[37,34],[[30,0,[\\\"question\\\",\\\"itemLabelFormat\\\"]],\\\"firstName surname name\\\"],null],[30,0,[\\\"clientRecord\\\"]],[28,[37,6],[[30,0],\\\"changed\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"inputslider\\\"],null],[[[1,\\\"      \\\"],[8,[39,58],null,[[\\\"@value\\\",\\\"@options\\\",\\\"@defaultIndex\\\",\\\"@includeSlidingScaleText\\\",\\\"@slidingScaleLeftText\\\",\\\"@slidingScaleRightText\\\",\\\"@id\\\",\\\"@onChange\\\"],[[28,[37,11],[[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"question\\\",\\\"options\\\"]],[30,0,[\\\"question\\\",\\\"defaultIndex\\\"]],[30,0,[\\\"question\\\",\\\"includeSlidingScaleText\\\"]],[30,0,[\\\"question\\\",\\\"slidingScaleLeftText\\\"]],[30,0,[\\\"question\\\",\\\"slidingScaleRightText\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]],[28,[37,6],[[30,0],\\\"changed\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"block\\\"],null],[[[42,[28,[37,30],[[28,[37,30],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[8,[39,37],null,[[\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@model\\\"],[[30,21],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[30,0,[\\\"model\\\"]]]],null],[1,\\\"\\\\n\\\"]],[21]],null]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"hiddenCalculatedField\\\"],null],[[[1,\\\"      \\\"],[8,[39,59],null,[[\\\"@content\\\",\\\"@clientRecord\\\",\\\"@localAnswers\\\",\\\"@model\\\",\\\"@context\\\",\\\"@touch\\\",\\\"@onChange\\\"],[[30,0,[\\\"question\\\",\\\"content\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"model\\\"]],[28,[37,11],[[28,[37,12],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[28,[37,6],[[30,0],\\\"changed\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"guessclient\\\"],null],[[[1,\\\"      \\\"],[8,[39,41],null,[[\\\"@text\\\"],[[29,[\\\"Add in a V2 \\\",[30,0,[\\\"question\\\",\\\"type\\\"]],\\\" question component. Currently using the legacy version.\\\"]]]],null],[1,\\\"\\\\n      \\\"],[8,[39,60],null,[[\\\"@content\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@context\\\"],[[30,0,[\\\"question\\\",\\\"content\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"model\\\"]],[30,0,[\\\"context\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"summaryTable\\\"],null],[[[1,\\\"      \\\"],[8,[39,41],null,[[\\\"@text\\\"],[[29,[\\\"Add in a V2 \\\",[30,0,[\\\"question\\\",\\\"type\\\"]],\\\" question component. Currently using the legacy version.\\\"]]]],null],[1,\\\"\\\\n      \\\"],[8,[39,61],null,[[\\\"@question\\\",\\\"@clientRecord\\\",\\\"@context\\\"],[[30,0,[\\\"question\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"documentsRequiredList\\\"],null],[[[1,\\\"      \\\"],[8,[39,41],null,[[\\\"@text\\\"],[[29,[\\\"Add in a V2 \\\",[30,0,[\\\"question\\\",\\\"type\\\"]],\\\" question component. Currently using the legacy version.\\\"]]]],null],[1,\\\"\\\\n      \\\"],[8,[39,62],null,[[\\\"@client\\\",\\\"@class\\\",\\\"@label\\\",\\\"@induction\\\",\\\"@displayOnly\\\",\\\"@filterList\\\",\\\"@filterType\\\"],[[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"stylingClasses\\\"]],[30,0,[\\\"question\\\",\\\"title\\\"]],[30,0,[\\\"context\\\",\\\"induction\\\"]],true,[30,0,[\\\"question\\\",\\\"filterList\\\"]],[30,0,[\\\"question\\\",\\\"filterType\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"familytreeselect\\\"],null],[[[1,\\\"      \\\"],[8,[39,41],null,[[\\\"@text\\\"],[[29,[\\\"Add in a V2 \\\",[30,0,[\\\"question\\\",\\\"type\\\"]],\\\" question component. Currently using the legacy version.\\\"]]]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,9],[[30,0,[\\\"clientRecord\\\",\\\"practiceArea\\\"]],\\\"Probate\\\"],null],[[[1,\\\"        \\\"],[8,[39,63],null,[[\\\"@onChange\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@hideDetail\\\",\\\"@summaryMode\\\",\\\"@checkboxProperty\\\",\\\"@multipleSelections\\\",\\\"@enableDeceased\\\",\\\"@enableOrganisations\\\",\\\"@disableDeceasedPeople\\\",\\\"@disableEditing\\\"],[[28,[37,6],[[30,0],\\\"changed\\\"],null],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],false,[30,0,[\\\"summaryMode\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]],[30,0,[\\\"question\\\",\\\"multipleSelections\\\"]],[30,0,[\\\"question\\\",\\\"enableDeceased\\\"]],[30,0,[\\\"question\\\",\\\"enableOrganisations\\\"]],[30,0,[\\\"question\\\",\\\"disableDeceasedPeople\\\"]],[30,0,[\\\"question\\\",\\\"disableEditing\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,30],[[28,[37,30],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[8,[39,37],null,[[\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@model\\\"],[[30,23],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[28,[37,64],[[30,0,[\\\"clientRecord\\\"]],[30,22]],null]]],null],[1,\\\"\\\\n\\\"]],[23]],null],[41,[30,0,[\\\"question\\\",\\\"askForMoreInfo\\\"]],[[[1,\\\"            \\\"],[8,[39,65],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@onChange\\\",\\\"@headerLabel\\\"],[\\\"Please tell us more\\\",[28,[37,11],[[28,[37,12],[[28,[37,64],[[30,0,[\\\"clientRecord\\\"]],[30,22]],null],[28,[37,15],[[30,0,[\\\"question\\\",\\\"id\\\"]],\\\"MoreInfo\\\"],null]],null]],null],[28,[37,6],[[30,0],\\\"changed\\\"],null],false]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"]],[22]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[8,[39,66],null,[[\\\"@onChange\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@hideDetail\\\",\\\"@summaryMode\\\",\\\"@checkboxProperty\\\",\\\"@multipleSelections\\\",\\\"@enableDeceased\\\",\\\"@enableOrganisations\\\",\\\"@disableDeceasedPeople\\\",\\\"@disableEditing\\\"],[[28,[37,6],[[30,0],\\\"changed\\\"],null],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],false,[30,0,[\\\"summaryMode\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]],[30,0,[\\\"question\\\",\\\"multipleSelections\\\"]],[30,0,[\\\"question\\\",\\\"enableDeceased\\\"]],[30,0,[\\\"question\\\",\\\"enableOrganisations\\\"]],[30,0,[\\\"question\\\",\\\"disableDeceasedPeople\\\"]],[30,0,[\\\"question\\\",\\\"disableEditing\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,30],[[28,[37,30],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[8,[39,37],null,[[\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@model\\\"],[[30,25],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[28,[37,64],[[30,0,[\\\"clientRecord\\\"]],[30,24]],null]]],null],[1,\\\"\\\\n\\\"]],[25]],null],[41,[30,0,[\\\"question\\\",\\\"askForMoreInfo\\\"]],[[[1,\\\"            \\\"],[8,[39,65],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@onChange\\\",\\\"@headerLabel\\\"],[\\\"Please tell us more\\\",[28,[37,11],[[28,[37,12],[[28,[37,64],[[30,0,[\\\"clientRecord\\\"]],[30,24]],null],[28,[37,15],[[30,0,[\\\"question\\\",\\\"id\\\"]],\\\"MoreInfo\\\"],null]],null]],null],[28,[37,6],[[30,0],\\\"changed\\\"],null],false]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"]],[24]]]]],[1,\\\"\\\\n\\\"]],[]]]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"divider\\\"],null],[[[1,\\\"      \\\"],[10,\\\"hr\\\"],[15,1,[30,0,[\\\"question\\\",\\\"id\\\"]]],[15,0,[29,[\\\"input-divider \\\",[52,[30,0,[\\\"question\\\",\\\"whitespace\\\"]],\\\"hidden\\\"],\\\" \\\",[52,[30,0,[\\\"question\\\",\\\"border\\\"]],\\\"min-h-0.5\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,9],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"unitsPer\\\"],null],[[[1,\\\"      \\\"],[8,[39,68],null,[[\\\"@unitsPer\\\",\\\"@timePeriod\\\",\\\"@required\\\",\\\"@unitType\\\",\\\"@timePeriodOptions\\\",\\\"@id\\\",\\\"@onChange\\\",\\\"@secondaryChange\\\"],[[28,[37,11],[[28,[37,12],[[30,0,[\\\"model\\\"]],[28,[37,17],[[30,0,[\\\"variableStorageName\\\"]],\\\"unitsPer\\\"],null]],null]],null],[28,[37,11],[[28,[37,12],[[30,0,[\\\"model\\\"]],[28,[37,17],[[30,0,[\\\"variableStorageName\\\"]],\\\"timePeriod\\\"],null]],null]],null],[30,0,[\\\"questionIsRequired\\\"]],[30,0,[\\\"question\\\",\\\"unitType\\\"]],[30,0,[\\\"question\\\",\\\"timePeriodOptions\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]],[28,[37,6],[[30,0],\\\"changed\\\"],null],[28,[37,6],[[30,0],\\\"secondaryChange\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,\\\"code\\\"],[12],[1,\\\"Missing a \\\"],[1,[30,0,[\\\"question\\\",\\\"type\\\"]]],[1,\\\" question type\\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]],[1,\\\"\\\\n    \\\"],[18,26,null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"question\\\",\\\"notSureOption\\\"]],[[[1,\\\"    \\\"],[10,0],[15,\\\"data-question-id\\\",[29,[[30,0,[\\\"question\\\",\\\"id\\\"]],\\\"-notsure\\\"]]],[15,\\\"data-question-type\\\",[29,[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"-notsure\\\"]]],[12],[1,\\\"\\\\n      \\\"],[8,[39,71],null,[[\\\"@label\\\",\\\"@value\\\",\\\"@onChange\\\"],[[28,[37,34],[[30,0,[\\\"question\\\",\\\"notSureOptionText\\\"]],\\\"I'm not sure\\\"],null],[28,[37,12],[[30,0,[\\\"model\\\"]],[28,[37,17],[[30,0,[\\\"variableStorageName\\\"]],\\\"-notsure\\\"],null]],null],[28,[37,6],[[30,0],\\\"setNotSure\\\"],null]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null]],[\\\"option\\\",\\\"option\\\",\\\"tabItem\\\",\\\"content\\\",\\\"listItem\\\",\\\"itemIndex\\\",\\\"questionContent\\\",\\\"listItem\\\",\\\"itemIndex\\\",\\\"questionContent\\\",\\\"item\\\",\\\"editingExistingItem\\\",\\\"c\\\",\\\"item\\\",\\\"editingExistingItem\\\",\\\"c\\\",\\\"item\\\",\\\"editingExistingItem\\\",\\\"contentItem\\\",\\\"option\\\",\\\"c\\\",\\\"item\\\",\\\"c\\\",\\\"item\\\",\\\"c\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"v2/question-label\\\",\\\"parse-text\\\",\\\"v2/button\\\",\\\"on\\\",\\\"action\\\",\\\"span\\\",\\\"v2/svg-icon\\\",\\\"eq\\\",\\\"v2/textline\\\",\\\"mut\\\",\\\"get\\\",\\\"v2/textarea\\\",\\\"v2/address-select\\\",\\\"concat\\\",\\\"v2/name-input\\\",\\\"sum\\\",\\\"v2/date-input\\\",\\\"v2/number-input\\\",\\\"v2/money-input\\\",\\\"and\\\",\\\"v2/confidence-range\\\",\\\"v2/phone-input\\\",\\\"v2/email-input\\\",\\\"p\\\",\\\"h4\\\",\\\"chapter-animation\\\",\\\"v2/radio-button-group\\\",\\\"each\\\",\\\"-track-array\\\",\\\"should-display\\\",\\\"v2/yes-no\\\",\\\"v2/checkbox-group\\\",\\\"or\\\",\\\"v2/tab-list\\\",\\\":tabContent\\\",\\\"v2/question-type-switcher\\\",\\\"v2/list\\\",\\\":listContent\\\",\\\"v2/immutable-list\\\",\\\"dev/todo\\\",\\\"select-or-create-legacy\\\",\\\"unless\\\",\\\"v2/select-or-create-presets\\\",\\\"augment-hash\\\",\\\"select-or-create-multiple\\\",\\\"v2/select-or-create-single\\\",\\\"v2/select-box\\\",\\\"documents-required-feedback\\\",\\\"settify-input-button\\\",\\\"img\\\",\\\"de-fingerprint\\\",\\\"a\\\",\\\"v2/office-select\\\",\\\"v2/grid-input\\\",\\\"v2/matrix-scale\\\",\\\"check-box-list\\\",\\\"v2/range-slider\\\",\\\"settify-hidden-calculated-field\\\",\\\"settify-guess-client-input\\\",\\\"settify-summary-table\\\",\\\"documents-required-list\\\",\\\"family-tree-probate\\\",\\\"get-known-entity\\\",\\\"settify-textarea\\\",\\\"family-tree\\\",\\\"hr\\\",\\\"v2/units-per\\\",\\\"code\\\",\\\"yield\\\",\\\"v2/checkbox\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/question-type-switcher/index.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({\n    firm: (0, _service.service)(),\n    questionnaireLogic: (0, _service.service)(),\n    tagName: \"\",\n    lastSelectedOption: null,\n    previousShouldDisplay: null,\n    shouldDisplayHelpText: false,\n    init() {\n      this._super(...arguments);\n      this.setupModelForAlternateStorageLocation();\n      this.instantiateEmptyData();\n    },\n    reset() {\n      this.set(\"lastSelectedOption\", null);\n      this.set(\"previousShouldDisplay\", null);\n    },\n    /**\n     * Sets up the model for alternate storage location if applicable\n     */\n    setupModelForAlternateStorageLocation() {\n      if (!this.question?.answersLocation) return;\n      const answersLocationSplit = this.question.answersLocation.split(\".\");\n      if (answersLocationSplit.length === 2 || answersLocationSplit.length === 3) {\n        this.set(\"model\", (0, _getAnswersFrom.getAnswersFrom)([], {\n          create: true,\n          client: this.clientRecord,\n          induction: this.context.induction || this.context.inductionObject.id,\n          chapter: answersLocationSplit[0],\n          page: answersLocationSplit[1],\n          repeatToken: this.context.repeat\n        }));\n      } else if (answersLocationSplit.length > 3) {\n        this.set(\"answersLocationStorageOverride\", answersLocationSplit.pop());\n        this.set(\"model\", (0, _getAnswersFrom.getAnswersFrom)([], {\n          create: true,\n          client: this.clientRecord,\n          induction: this.context.induction || this.context.inductionObject.id,\n          answersLocation: answersLocationSplit.join(\".\"),\n          repeatToken: this.context.repeat\n        }));\n      }\n    },\n    /**\n     * Instantiate empty arrays/objects for the question if required.\n     */\n    instantiateEmptyData() {\n      if (this.model) {\n        if (!(0, _utils.isNone)(this.model?.[this.variableStorageName])) return; // If the value is not empty, we don't need to set anything up\n        if (this.question?.type === \"address\") {\n          (0, _object.set)(this.model, this.variableStorageName, {\n            id: (0, _uuid.v4)()\n          });\n        } else if ([\"list\", \"grid\"].includes(this.question.type)) {\n          (0, _object.set)(this.model, this.variableStorageName, []);\n        } else if (this.question.type === \"selectorcreate\" && this.question?.multipleSelections) {\n          (0, _object.set)(this.model, this.variableStorageName, []);\n        }\n        if (this.question?.default) {\n          const defaultValue = this.computeParseText(this.question.default, false);\n          if ((0, _template.isHTMLSafe)(defaultValue)) {\n            (0, _object.set)(this.model, this.variableStorageName, defaultValue.toString());\n          }\n        }\n      }\n    },\n    // Helper to be able to parse text\n    computeParseText(text, wrapInSensitiveSpan = true) {\n      const pt = _parseText.default.create();\n      return pt.compute([text], {\n        clientRecord: this.clientRecord,\n        context: this.context,\n        blueprintMode: this.blueprintMode,\n        doNotWrap: !wrapInSensitiveSpan\n      });\n    },\n    /**\n     * Determines what the key will be for saving to the model.\n     * @returns {string} - The variable storage name.\n     */\n    variableStorageName: (0, _computed.or)(\"answersLocationStorageOverride\", \"question.id\"),\n    /**\n     * Determines what the key will be for saving the \"not sure\" values, applicable to questions with a not-sure checkbox.\n     * Similar to `variableStorageName`.\n     * @returns {string} - The variable storage name for \"not sure\" option.\n     */\n    notSureVariableStorageName: (0, _object.computed)(\"variableStorageName\", \"question.notSureOptionLocationSuffix\", function () {\n      const suffix = this.question?.notSureOptionLocationSuffix ?? \"notsure\";\n      return `${this.variableStorageName}-${suffix}`;\n    }),\n    // TODO: Look at if we need this in new UI as all labels will be above the component\n    get headerLabelComputed() {\n      if ([true, false].includes(this.headerLabel)) return this.headerLabel;\n      if ([true, false].includes(this.question?.noHeaderLabel)) return !this.question?.noHeaderLabel;\n      return true;\n    },\n    displayChanged: (0, _object.observer)(\"shouldDisplay\", function () {\n      if (this.shouldDisplay === this.previousShouldDisplay) {\n        return;\n      }\n      if (!this.question?.options || !this.question || !this.model) {\n        return;\n      }\n      let selectedOptions = [];\n      if (this.get(\"question.type\") === \"checkbox\") {\n        const options = this.get(\"question.options\");\n        for (let i = 0; i < options.length; i++) {\n          const option = options[i];\n          if (this.model[option.id]) {\n            selectedOptions = [...selectedOptions, option];\n          }\n        }\n      } else {\n        const selectedOptionID = this.model[this.question.id];\n        selectedOptions = [this.getSelectedOption(this.question, selectedOptionID)];\n      }\n      if (selectedOptions.length) {\n        const shouldSet = this.shouldDisplay;\n        for (let oIdx = 0; oIdx < selectedOptions.length; oIdx++) {\n          const o = selectedOptions[oIdx];\n          this.setOtherValue(o, shouldSet);\n        }\n      }\n      this.set(\"previousShouldDisplay\", this.shouldDisplay);\n    }),\n    /**\n     * Retrieves the selected option based on question type and optional ID.\n     * @param {Object} question - The question object.\n     * @param {string} optionID - The ID of the selected option.\n     * @returns {Object} - The selected option.\n     */\n    getSelectedOption: function (question, optionID) {\n      if (question.type === \"yesno\") {\n        if (optionID === \"yes\") return question.onYes;\n        if (optionID === \"no\") return question.onNo;\n        if (optionID === \"notsure\") return question.onNotSure;\n      }\n      if (question.type === \"radio\" || question.type === \"select\") {\n        return question.options.find(o => o.id === optionID);\n      }\n    },\n    /**\n     * For question.type of \"title\", it returns an array of titles\n     * For question.type of \"select\", it gets and filters out deleted options and parses the title\n     * @returns {Array} - Array of options\n     */\n    selectOptions: (0, _object.computed)(\"question.type\", \"question.options.[]\", function () {\n      if (this.question?.type === \"select\") {\n        return this.question?.options.filter(option => !option.deleted).map(option => ({\n          value: option.id,\n          label: this.computeParseText(option.title, false)\n        }));\n      }\n      if (this.question?.type === \"title\") {\n        // TODO: Have a lib where we have titles saved\n        return [{\n          label: \"Ms\",\n          value: \"Ms\"\n        }, {\n          label: \"Mrs\",\n          value: \"Mrs\"\n        }, {\n          label: \"Miss\",\n          value: \"Miss\"\n        }, {\n          label: \"Mr\",\n          value: \"Mr\"\n        }, {\n          label: \"Dr\",\n          value: \"Dr\"\n        }];\n      }\n      return [];\n    }),\n    visibleOptions: (0, _object.computed)(\"clientRecord\", \"context\", \"model\", \"question.options\", function () {\n      return this.question.options.filter(option => this.questionnaireLogic.computeDisplayIf(option, this.clientRecord, this.context, this.model));\n    }),\n    visibleMatrixRows: (0, _object.computed)(\"clientRecord\", \"context\", \"model\", \"question.multiRadioRows\", function () {\n      return this.question.multiRadioRows.filter(option => this.questionnaireLogic.computeDisplayIf(option, this.clientRecord, this.context, this.model));\n    }),\n    labelToDisplay: (0, _object.computed)(\"question.title\", \"clientRecord.touch\", function () {\n      return this.question.title || \"\";\n    }),\n    actions: {\n      changed(selectedOption, event) {\n        (0, _runloop.later)(() => {\n          if (this.isDestroyed || this.isDestroying) return;\n          this.set(\"clientRecord.touch\", Date.now());\n          if (this.question.type === \"link\" && this.question?.toggleButton) {\n            this.set(`model.${this.variableStorageName}`, !this.get(`model.${this.variableStorageName}`));\n          }\n          if (this.question?.options && selectedOption) {\n            if (this.question.type === \"selectorcreate\" && !this.question.multipleSelections) {\n              this.set(`model.${this.variableStorageName}`, selectedOption);\n              if (this.question.setAsPrimaryContact) {\n                this.set(\"clientRecord.primaryContactPersonID\", selectedOption);\n              }\n            }\n            if (this.question.type === \"address\") {\n              this.set(`model.${this.variableStorageName}`, selectedOption);\n            }\n            if (this.question.type === \"multiradio\") {\n              // selectedOption is an object with the storage name and value of the option selected\n              this.set(`model.${selectedOption.name}`, selectedOption.value);\n            }\n            if (typeof selectedOption === \"object\" && !selectedOption?.setAnotherQuestion) {\n              return;\n            }\n            if (this.question.type === \"checkbox\") {\n              this.handleChangeCheckbox(this.model, selectedOption);\n            } else if (this.question.type === \"radio\") {\n              this.handleChangeRadio(this.model, selectedOption);\n            } else if (this.question.type === \"select\") {\n              this.handleChangeSelect(this.model, selectedOption);\n            }\n          }\n          if (this.question.type === \"yesno\") {\n            this.handleChangeYesNo(this.model, selectedOption);\n          }\n          if ([\"number\", \"money\"].includes(this.question.type)) {\n            this.set(`model.${this.variableStorageName}`, selectedOption);\n            if (this.afterValueSet) this.afterValueSet(); // Callback function to handle things like updating/recalculating totals or similar\n          }\n          if ([\"officeselect\", \"inputslider\", \"title\"].includes(this.question.type)) {\n            this.set(`model.${this.variableStorageName}`, selectedOption);\n          }\n          if (this.question.type === \"unitsPer\") {\n            this.set(`model.${this.variableStorageName}unitsPer`, selectedOption);\n          }\n          if (this.question.type === \"date\") {\n            const dateUnit = event.target.name; // Either day or year. Month handled as part of secondaryChange\n            this.set(`model.${this.variableStorageName}${dateUnit}`, selectedOption);\n          }\n        });\n      },\n      secondaryChange(value) {\n        if (this.isDestroyed || this.isDestroying) return;\n        if (this.question.type === \"firstname\") {\n          const genderStorageLocation = `model.${this.variableStorageName}-gender`;\n          this.set(genderStorageLocation, value);\n        }\n        if (this.question.type === \"phone\") {\n          const phoneValidationStorageLocation = `model.${this.variableStorageName}-valid`;\n          this.set(phoneValidationStorageLocation, value);\n        }\n        if (this.question.type === \"money\") {\n          const confidenceStorageLocation = `model.${this.variableStorageName}-confidence`;\n          this.set(confidenceStorageLocation, value);\n        }\n        if (this.question.type === \"date\") {\n          const monthSelectStorageLocation = `model.${this.variableStorageName}month`;\n          this.set(monthSelectStorageLocation, value);\n        }\n        if (this.question.type === \"unitsPer\") {\n          this.set(`model.${this.variableStorageName}timePeriod`, value);\n        }\n        if (this.question.type === \"selectorcreate\" && !this.question.multipleSelections) {\n          // Secondary call for select-or-create-single is to add a new option (value) to the knownEntities list\n          this.clientRecord.knownEntities = [...this.clientRecord.knownEntities, value];\n        }\n      },\n      setNotSure(value) {\n        this.set(\"clientRecord.touch\", Date.now());\n        this.set(`model.${this.variableStorageName}-notsure`, value);\n      },\n      toggleQuestionHelpText() {\n        this.set(\"shouldDisplayHelpText\", !this.shouldDisplayHelpText);\n      }\n    },\n    handleChangeCheckbox(model, selectedOption) {\n      if (model[selectedOption.id]) {\n        this.setOtherValue(selectedOption, true);\n      } else {\n        this.setOtherValue(selectedOption, false);\n      }\n    },\n    handleChangeSelect(model, selectedOptionValue) {\n      this.set(`model.${this.variableStorageName}`, selectedOptionValue); // Update the model\n      // selectedOption is an id in this case, lets get the actual option\n      const selectedOptionObject = this.getSelectedOption(this.question, selectedOptionValue);\n      if (selectedOptionObject && model && model[this.question.id] === selectedOptionObject.id) {\n        this.setOtherValue(selectedOptionObject);\n      }\n    },\n    handleChangeRadio(model, selectedOption) {\n      this.set(`model.${this.variableStorageName}`, selectedOption); // Update the model\n      if (selectedOption === undefined) {\n        // If the selectedOption is undefined, we have unselected an option\n        selectedOption = this.lastSelectedOption ? this.lastSelectedOption.id : null;\n      }\n      // selectedOption is an id in this case, lets get the actual option\n      selectedOption = this.getSelectedOption(this.question, selectedOption);\n      if (selectedOption && model && model[this.question.id] === selectedOption.id) {\n        this.setOtherValue(selectedOption, true);\n        this.set(\"lastSelectedOption\", selectedOption);\n      } else {\n        this.setOtherValue(selectedOption, false);\n      }\n    },\n    handleChangeYesNo(model, selectedOption) {\n      const optionWasSelected = model[this.question.id] === selectedOption;\n      this.set(`model.${this.variableStorageName}`, selectedOption); // Update the model\n      // selectedOption is an id (yes, no, or notsure)\n      selectedOption = this.getSelectedOption(this.question, selectedOption);\n      this.setOtherValue(selectedOption, optionWasSelected);\n    },\n    /**\n     * Parses a string representing boolean, null, undefined, or string literals into their respective types.\n     * @param {string} value - The value to parse.\n     * @returns {*} - The parsed value.\n     */\n    getAsSpecialValue(value) {\n      // parses a string into useful types\n      if (value === \"null\") return null;\n      if (value === \"true\") return true;\n      if (value === \"false\") return false;\n      if (value === \"undefined\") return undefined;\n      return value;\n    },\n    /**\n     * Sets the value of another question based on the selected option of the current question.\n     * @param {Object} option - The selected option of the current question.\n     * @param {boolean} [shouldSet=true] - Determines whether to set or unset the value of the other question. Defaults to true.\n     */\n    setOtherValue(option, shouldSet = true) {\n      if (option && option.setAnotherQuestion) {\n        for (let i = 0; i < option.setValues.length; i++) {\n          const updateVar = option.setValues[i];\n          const valueToSet = this.getAsSpecialValue(shouldSet ? updateVar.valueToSet : updateVar.valueToUnset);\n          if (valueToSet && !valueToSet.length && typeof valueToSet === \"string\") {\n            // empty string = do not set value\n            continue;\n          }\n          const segments = updateVar.variableToUpdate.split(\".\");\n          if (segments[0] === \"this\") {\n            (0, _object.set)(this.model, segments.slice(1).join(\".\"), valueToSet);\n            continue;\n          }\n\n          // get full context variable name if not expressly specified\n          const {\n            context\n          } = this;\n          const inductionID = context.inductionObject?.id ?? context.induction;\n          let chapterID = context.chapterObject?.id ?? context.chapter;\n          let pageID = context.pageObject?.id ?? context.page;\n          let questionID = \"\";\n          let subquestionID = \"\";\n          if (segments.length > 2) {\n            chapterID = segments[0];\n            pageID = segments[1];\n            questionID = segments[2];\n            subquestionID = segments[3];\n          }\n          if (segments.length === 2) {\n            pageID = segments[0];\n            questionID = segments[1];\n          }\n          if (segments.length === 1) {\n            questionID = segments[0];\n          }\n          const currValue = this.clientRecord.getPreciseAnswer(inductionID, chapterID, pageID, questionID, subquestionID, context.repeat, {});\n          const valueIsEmpty = (0, _utils.isEmpty)(currValue);\n          if (valueIsEmpty || !valueIsEmpty && updateVar.shouldOverrideValue) {\n            this.clientRecord.setPreciseAnswer(inductionID, chapterID, pageID, questionID, subquestionID, context.repeat, valueToSet);\n          }\n        }\n      }\n    },\n    /**\n     * Checks if a question is required using either the `question.required` field or computing the logic based on the `question.requiredIfLogic` value.\n     * @returns {boolean} - Returns true if the question is required, otherwise false.\n     */\n    questionIsRequired: (0, _object.computed)(\"clientRecord\", \"context\", \"model\", \"question.{required,requiredIfLogic}\", function () {\n      const {\n        required,\n        requiredIfLogic\n      } = this.question || {};\n      if (required && requiredIfLogic && Object.keys(requiredIfLogic).length) {\n        return this.questionnaireLogic.computeDisplayIf({\n          displayIf: requiredIfLogic\n        }, this.clientRecord, this.context, this.model);\n      }\n      return required;\n    }),\n    shouldDisplay: (0, _object.computed)(\"clientRecord.touch\", \"context.{chapter,induction,page,repeat}\", \"forceDisplay\", \"model\", \"question.{commentary,hideFromFirmIfFalsey,id,includeInFirmSummary,includeInSummary,type}\", function () {\n      if (this.forceDisplay) {\n        return true;\n      }\n      return this.questionnaireLogic.computeDisplayIf(this.question, this.clientRecord, this.context, this.model);\n    }),\n    /**\n     * The type of filter to use.\n     * Can be `excludeall` to have no options, `whitelist` to only show certain values, `blacklist` to exclude certain values, or undefined to include all.\n     * @returns {string|undefined}\n     */\n    filterType: (0, _computed.or)(\"filterTypeOverride\", \"question.filterType\"),\n    /**\n     * Retrieves values from specific locations in the clients answers object based on the IDs listed in `this.question.filterList`\n     * @returns {Array<Object>} - An array of objects with IDs.\n     */\n    filterList: (0, _object.computed)(\"clientRecord.touch\", \"context.{chapter,induction,loop,page,repeat}\", \"filterListOverride\", \"question.filterList\", function () {\n      if (this.filterListOverride) return this.filterListOverride;\n      if (!this.question?.filterList) return [];\n      return this.question.filterList.split(\"\\n\").flatMap(listItem => {\n        const location = listItem.trim();\n        let answers = (0, _getAnswersFrom.getAnswersFrom)([], {\n          client: this.clientRecord,\n          induction: this.context.induction,\n          chapter: this.context.chapter,\n          page: this.context.page,\n          repeatToken: this.context.repeat,\n          create: true,\n          answersLocation: location,\n          loop: this.context.loop\n        });\n        if (typeof answers === \"string\") {\n          answers = [{\n            id: answers\n          }];\n        }\n        if (!Array.isArray(answers)) {\n          answers = [answers];\n        }\n        return answers.map(obj => obj.id).filter(id => id && typeof id === \"string\");\n      });\n    }),\n    get filteredKnownEntities() {\n      const options = (0, _filterListByType.filterListByType)(this.clientRecord.knownEntities, this.filterType, this.filterList, {\n        selectedValue: this.model?.[this.variableStorageName]\n      });\n      if (this.question?.allowDeceased) return options; // Return all options\n      return options.filter(entity => entity.id !== this.clientRecord?.deceased?.id); // Remove the deceased from the list\n    },\n    /**\n     * Returns tailwind CSS classes for the wrapping container element of question types.\n     * @returns {string} The tailwind CSS classes for styling.\n     */\n    get containerStylingClasses() {\n      const classes = [];\n      const styles = this.question?.styles || {};\n      if (styles.center) {\n        classes.push(\"text-center\");\n      }\n      if (styles.removeLinebreak) {\n        classes.push(\"mb-0\");\n      }\n      return classes.join(\" \");\n    },\n    /**\n     * Returns tailwind CSS classes for styling a question type element.\n     * @returns {string} The tailwind CSS classes for styling.\n     */\n    get stylingClasses() {\n      const classes = [];\n      const styles = this.question?.styles || {};\n      const questionBoldText = this.question.boldText;\n      if (styles.bold || questionBoldText) {\n        classes.push(\"font-semibold\");\n      }\n      if (styles.italics) {\n        classes.push(\"italic\");\n      }\n      if (styles.bullet) {\n        classes.push(\"list-item list-disc list-inside\");\n      }\n      if (styles.indentation) {\n        const baseIndent = 4;\n        classes.push(`ml-${styles.indentation * baseIndent}`);\n      }\n      if (styles.removeLinebreak) {\n        classes.push(\"mb-0\");\n      }\n      if (styles.borderless) {\n        classes.push(\"border-none\");\n      }\n      return classes.join(\" \");\n    }\n  }));\n});","define(\"settify-mvp/components/v2/radio-button-group/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object/internals\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _component2, _internals, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object/internals\",0,\"@ember/object\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <fieldset role=\"radiogroup\" class=\"radio-group\" id={{this.id}} aria-labelledby={{if @label (concat this.id \"-label\")}} ...attributes>\n    {{#if @label}}\n      <legend id={{concat this.id \"-label\"}} class=\"mb-2 block {{if @required 'required-field-marker'}}\">\n        {{@label}}\n      </legend>\n    {{/if}}\n    {{#each @options as |option index|}}\n      <div class=\"radio-button-group-item\">\n        {{! required checks @required and @value because questions can set the value of another question (i.e. help wanted page other options) }}\n        <V2::RadioButton\n          @label={{parse-text option.title clientRecord=@clientRecord context=@context}}\n          @value={{option.id}}\n          @checked={{eq @value option.id}}\n          @id={{option.id}}\n          @name={{this.name}}\n          @onChange={{this.onChange}}\n          required={{and @required (not @value)}}\n        />\n      </div>\n    {{/each}}\n  </fieldset>\n  */\n  {\n    \"id\": \"s42DZ9Xg\",\n    \"block\": \"[[[11,\\\"fieldset\\\"],[24,\\\"role\\\",\\\"radiogroup\\\"],[24,0,\\\"radio-group\\\"],[16,1,[30,0,[\\\"id\\\"]]],[16,\\\"aria-labelledby\\\",[52,[30,1],[28,[37,2],[[30,0,[\\\"id\\\"]],\\\"-label\\\"],null]]],[17,2],[12],[1,\\\"\\\\n\\\"],[41,[30,1],[[[1,\\\"    \\\"],[10,\\\"legend\\\"],[15,1,[28,[37,2],[[30,0,[\\\"id\\\"]],\\\"-label\\\"],null]],[15,0,[29,[\\\"mb-2 block \\\",[52,[30,3],\\\"required-field-marker\\\"]]]],[12],[1,\\\"\\\\n      \\\"],[1,[30,1]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[42,[28,[37,5],[[28,[37,5],[[30,4]],null]],null],null,[[[1,\\\"    \\\"],[10,0],[14,0,\\\"radio-button-group-item\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"      \\\"],[8,[39,7],[[16,\\\"required\\\",[28,[37,8],[[30,3],[28,[37,9],[[30,7]],null]],null]]],[[\\\"@label\\\",\\\"@value\\\",\\\"@checked\\\",\\\"@id\\\",\\\"@name\\\",\\\"@onChange\\\"],[[28,[37,10],[[30,5,[\\\"title\\\"]]],[[\\\"clientRecord\\\",\\\"context\\\"],[[30,8],[30,9]]]],[30,5,[\\\"id\\\"]],[28,[37,11],[[30,7],[30,5,[\\\"id\\\"]]],null],[30,5,[\\\"id\\\"]],[30,0,[\\\"name\\\"]],[30,0,[\\\"onChange\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[5,6]],null],[13]],[\\\"@label\\\",\\\"&attrs\\\",\\\"@required\\\",\\\"@options\\\",\\\"option\\\",\\\"index\\\",\\\"@value\\\",\\\"@clientRecord\\\",\\\"@context\\\"],false,[\\\"fieldset\\\",\\\"if\\\",\\\"concat\\\",\\\"legend\\\",\\\"each\\\",\\\"-track-array\\\",\\\"div\\\",\\\"v2/radio-button\\\",\\\"and\\\",\\\"not\\\",\\\"parse-text\\\",\\\"eq\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/radio-button-group/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component representing a group of radio buttons.\n   * @class RadioButtonGroupComponent\n   * @extends Component\n   *\n   * @param {Array} options - REQUIRED: An array of objects representing the radio button options.\n   * @param {string} name - REQUIRED: Name attribute used to identify group of radio buttons.\n   * @param {Object} [clientRecord] - Client record used to get details like otherPersonName.\n   * @param {Object} [context] - Context in which the component is rendered. Contains information about the page, chapter, and induction the component is used in.\n   * @param {string} [value] - Preselected value used to control \"checked\" state.\n   * @param {string} [label] - Text used above the list of radio buttons.\n   * @param {string} [id] - ID for the group. If not provided, a default ID will be generated.\n   * @param {Boolean} [required] - Indicates whether the question is required or not.\n   * @param {Function} onChange - REQUIRED: Callback function which handles radio button state change.\n   *\n   * @example\n   * // Define the state and options for the radio button group\n   * options = [\n   *   { id: 'chocolate', title: 'Chocolate' },\n   *   { id: 'vanilla', title: 'Vanilla' },\n   *   { id: 'strawberry', title: 'Strawberry' }\n   * ];\n   *\n   * // Template HBS:\n   * <RadioButtonGroup @label=\"Would you like ice cream?\" @name=\"ice-cream-preferences\" @options={{this.options}} @id=\"ice-cream-preferences\" @onChange={{this.onChange}} />\n   */\n  let RadioButtonGroupComponent = _exports.default = (_class = class RadioButtonGroupComponent extends _component2.default {\n    /**\n     * Returns the id for the fieldset element.\n     * If no id is provided in the arguments, a default id is generated using `guidFor`.\n     * @returns {String} A unique ID.\n     */\n    get id() {\n      return this.args.id ?? `radio-button-group-${(0, _internals.guidFor)(this)}`;\n    }\n\n    /**\n     * Returns a unique name so if there are multiple yes/no questions on one page, they do not conflict.\n     * @returns {String} A unique name.\n     */\n    get name() {\n      return `${this.args.name || \"radio-button\"}-${(0, _internals.guidFor)(this)}`;\n    }\n\n    /**\n     * Handles the change event of radio button.\n     * @param {Object} selectedOption - The selected radio button option.\n     * @param {Event} event - The change event.\n     */\n    onChange(selectedOption, event) {\n      if (typeof this.args.onChange === \"function\") {\n        this.args.onChange(selectedOption, event);\n      }\n    }\n  }, _applyDecoratedDescriptor(_class.prototype, \"onChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"onChange\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, RadioButtonGroupComponent);\n});","define(\"settify-mvp/components/v2/radio-button/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object/internals\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _component2, _internals, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object/internals\",0,\"@ember/object\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <label class=\"inline-flex cursor-pointer items-start gap-x-2 align-middle {{if @disabled 'text-gray-500'}}\" {{on \"change\" this.handleChange}}>\n    <input\n      type=\"radio\"\n      id={{this.id}}\n      name={{@name}}\n      value={{@value}}\n      checked={{@checked}}\n      class=\"m-1 border-gray-300 p-2 text-brand-primary-color-rgb focus:ring-brand-primary-color-rgb\"\n      ...attributes\n    />\n    <span class=\"select-none leading-6\">{{@label}}</span>\n  </label>\n  */\n  {\n    \"id\": \"5hSaiGkZ\",\n    \"block\": \"[[[11,\\\"label\\\"],[16,0,[29,[\\\"inline-flex cursor-pointer items-start gap-x-2 align-middle \\\",[52,[30,1],\\\"text-gray-500\\\"]]]],[4,[38,2],[\\\"change\\\",[30,0,[\\\"handleChange\\\"]]],null],[12],[1,\\\"\\\\n  \\\"],[11,\\\"input\\\"],[24,4,\\\"radio\\\"],[16,1,[30,0,[\\\"id\\\"]]],[16,3,[30,2]],[16,2,[30,3]],[16,\\\"checked\\\",[30,4]],[24,0,\\\"m-1 border-gray-300 p-2 text-brand-primary-color-rgb focus:ring-brand-primary-color-rgb\\\"],[17,5],[12],[13],[1,\\\"\\\\n  \\\"],[10,1],[14,0,\\\"select-none leading-6\\\"],[12],[1,[30,6]],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@disabled\\\",\\\"@name\\\",\\\"@value\\\",\\\"@checked\\\",\\\"&attrs\\\",\\\"@label\\\"],false,[\\\"label\\\",\\\"if\\\",\\\"on\\\",\\\"input\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/radio-button/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component representing radio button.\n   * @class V2::RadioButton\n   * @extends Component\n   * @param {string} this.args.name - REQUIRED: Name of the radio button option\n   * @param {string} this.args.value - The value associated with this radio button option. This value will be passed to the `onChange` action when the radio button is selected.\n   * @param {string} [this.args.label] - The text label displayed next to the radio button.\n   * @param {string} [this.id] - ID of the option (coming in the form of argument or defined locally in the class)\n   * @param {Boolean} [this.args.checked] - Define checked state of the radio button\n   * @param {function} [this.args.onChange] - REQUIRED: An action to be called when the radio button's state changes\n   *\n   * @example\n   * ```handlebars\n   * <V2::RadioButton\n   *   @label=\"Option 1\"\n   *   @value=\"option1\"\n   *   @name=\"myRadioGroup\"\n   *   @onChange={{this.updateSelectedOption}}\n   * />\n   * ```\n   */\n  let RadioButtonComponent = _exports.default = (_class = class RadioButtonComponent extends _component2.default {\n    get id() {\n      return this.args.id ?? `radio-component-${(0, _internals.guidFor)(this)}`;\n    }\n    handleChange(event) {\n      if (typeof this.args.onChange === \"function\") {\n        return this.args.onChange(this.args.value, event);\n      }\n    }\n  }, _applyDecoratedDescriptor(_class.prototype, \"handleChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleChange\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, RadioButtonComponent);\n});","define(\"settify-mvp/components/v2/range-slider/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@glimmer/tracking\", \"@ember/object/internals\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _tracking, _internals, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@glimmer/tracking\",0,\"@ember/object/internals\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (or (has-block) @label)}}\n    <label id=\"{{this.id}}-label\" for={{this.id}}>\n      {{#if (has-block)}}\n        {{yield}}\n      {{else}}\n        {{parse-text @label}}\n      {{/if}}\n    </label>\n  {{/if}}\n  \n  <div class=\"text-center\">\n    <div class=\"m-auto sm:w-2/3 lg:w-1/2\">\n      <Input\n        id={{this.id}}\n        @value={{this.sliderValue}}\n        @type=\"range\"\n        step=\"any\"\n        min=\"0.01\"\n        max={{this.maxValue}}\n        aria-labelledby=\"{{this.id}}-label\"\n        aria-valuetext={{this.selectedOption.title}}\n        class=\"h-2 w-full cursor-pointer appearance-none rounded-lg bg-gray-200 accent-brand-primary-color-rgb\"\n        {{on \"input\" this.handleChange}}\n        ...attributes\n      />\n      {{#if @includeSlidingScaleText}}\n        <div class=\"flex justify-between\">\n          <span class=\"slider-left-text p-2 text-gray-500\">{{@slidingScaleLeftText}}</span>\n          <span class=\"slider-right-text ml-auto p-2 text-gray-500\">{{@slidingScaleRightText}}</span>\n        </div>\n      {{/if}}\n    </div>\n  </div>\n  <div class=\"slider-option-title text-center\">\n    <span>\n      {{parse-text this.selectedOption.title}}\n    </span>\n  </div>\n  */\n  {\n    \"id\": \"LKbTw8CA\",\n    \"block\": \"[[[41,[28,[37,1],[[48,[30,6]],[30,1]],null],[[[1,\\\"  \\\"],[10,\\\"label\\\"],[15,1,[29,[[30,0,[\\\"id\\\"]],\\\"-label\\\"]]],[15,\\\"for\\\",[30,0,[\\\"id\\\"]]],[12],[1,\\\"\\\\n\\\"],[41,[48,[30,6]],[[[1,\\\"      \\\"],[18,6,null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[1,[28,[35,5],[[30,1]],null]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[10,0],[14,0,\\\"text-center\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"m-auto sm:w-2/3 lg:w-1/2\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,7],[[16,1,[30,0,[\\\"id\\\"]]],[24,\\\"step\\\",\\\"any\\\"],[24,\\\"min\\\",\\\"0.01\\\"],[16,\\\"max\\\",[30,0,[\\\"maxValue\\\"]]],[16,\\\"aria-labelledby\\\",[29,[[30,0,[\\\"id\\\"]],\\\"-label\\\"]]],[16,\\\"aria-valuetext\\\",[30,0,[\\\"selectedOption\\\",\\\"title\\\"]]],[24,0,\\\"h-2 w-full cursor-pointer appearance-none rounded-lg bg-gray-200 accent-brand-primary-color-rgb\\\"],[17,2],[4,[38,8],[\\\"input\\\",[30,0,[\\\"handleChange\\\"]]],null]],[[\\\"@value\\\",\\\"@type\\\"],[[30,0,[\\\"sliderValue\\\"]],\\\"range\\\"]],null],[1,\\\"\\\\n\\\"],[41,[30,3],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"flex justify-between\\\"],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"slider-left-text p-2 text-gray-500\\\"],[12],[1,[30,4]],[13],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"slider-right-text ml-auto p-2 text-gray-500\\\"],[12],[1,[30,5]],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"],[10,0],[14,0,\\\"slider-option-title text-center\\\"],[12],[1,\\\"\\\\n  \\\"],[10,1],[12],[1,\\\"\\\\n    \\\"],[1,[28,[35,5],[[30,0,[\\\"selectedOption\\\",\\\"title\\\"]]],null]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@label\\\",\\\"&attrs\\\",\\\"@includeSlidingScaleText\\\",\\\"@slidingScaleLeftText\\\",\\\"@slidingScaleRightText\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"or\\\",\\\"has-block\\\",\\\"label\\\",\\\"yield\\\",\\\"parse-text\\\",\\\"div\\\",\\\"input\\\",\\\"on\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/range-slider/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A range slider component that renders an input element.\n   *\n   * @class RangeSliderComponent\n   * @extends {Component}\n   *\n   * @param {string} value - The value of the range slider element.\n   * @param {array} options - Array of answer options for the slider.\n   * @param {string} [id] - The id of the range slider element.\n   * @param {string} [label] - The label text for the range slider element.\n   * @param {boolean} [includeSlidingScaleText] - Boolean to display the slider scale text.\n   * @param {string} [slidingScaleLeftText] - The text on the left side of the slider.\n   * @param {string} [slidingScaleRightText] - The text on the right side of the slider.\n   * @param {number} [defaultIndex] - The index to be set as the default value when no value is passed in.\n   * @param {function} [onChange] - The action to call when the range slider value changes.\n   */\n  let RangeSliderComponent = _exports.default = (_class = class RangeSliderComponent extends _component2.default {\n    constructor() {\n      super(...arguments);\n      _initializerDefineProperty(this, \"selectedOption\", _descriptor, this);\n      _initializerDefineProperty(this, \"sliderValue\", _descriptor2, this);\n      _defineProperty(this, \"maxValue\", this.args.options.length);\n      const localValues = this.args.options;\n      const options = localValues || [];\n      if (this.args.value) {\n        const index = options.map(v => v.id).indexOf(this.args.value);\n        this.sliderValue = index + 1;\n        this.selectedOption = options[index];\n      } else {\n        let defaultIndex = parseInt(this.args.defaultIndex);\n        if (!defaultIndex || isNaN(defaultIndex)) {\n          defaultIndex = 0;\n        }\n        if (options[defaultIndex]) {\n          this.sliderValue = defaultIndex + 1;\n        }\n      }\n\n      // This is called so the initial value can be set on the model even if user does not click anything\n      this.handleChange();\n    }\n\n    /**\n     * Returns the id for the range slider element.\n     * If no id is provided in the arguments, a default id is generated using `guidFor`.\n     *\n     * @returns {string} A unique ID.\n     */\n    get id() {\n      return this.args.id ?? `range-slider-component-${(0, _internals.guidFor)(this)}`;\n    }\n\n    /**\n     * Handles the change event of the range slider element.\n     * If the onChange action is provided via the component's arguments, it will be called with the selected option id.\n     *\n     * @method handleChange\n     */\n    handleChange(event) {\n      const value = event?.target?.value || this.sliderValue;\n      const index = Math.ceil(value) - 1;\n      this.selectedOption = this.args.options[index];\n      if (typeof this.args.onChange === \"function\") {\n        this.args.onChange(this.selectedOption.id);\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"selectedOption\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"sliderValue\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return 0;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"handleChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleChange\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, RangeSliderComponent);\n});","define(\"settify-mvp/components/v2/select-box/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @label}}\n    <label for={{@id}} id=\"{{@id}}-label\" class=\"mb-2 block {{if @required 'required-field-marker'}}\">\n      {{@label}}\n    </label>\n  {{/if}}\n  <select\n    required={{@required}}\n    id={{@id}}\n    name={{or @name @id}}\n    class=\"settify-select block w-full rounded-md border-0 py-1.5 pl-3 pr-10\n      {{if (defined @selectedItem) 'text-gray-900' 'text-gray-500'}}\n      ring-1 ring-inset ring-gray-300 focus:ring-2 focus:ring-brand-primary-color-rgb\"\n    disabled={{this.disabled}}\n    {{on \"change\" this.handleChange}}\n    ...attributes\n  >\n    <option value=\"\" selected={{not @selectedItem}} disabled={{not this.selectablePrompt}}>{{this.prompt}}</option>\n    {{#each @options as |item|}}\n      {{#if item.groupOptions}}\n        <hr />\n        <optgroup label={{item.groupLabel}}>\n          {{#each item.groupOptions as |item|}}\n            <option value={{item.value}} selected={{eq @selectedItem item.value}}>{{or item.name item.label}}</option>\n          {{/each}}\n        </optgroup>\n      {{else}}\n        <option value={{item.value}} selected={{eq @selectedItem item.value}}>{{or item.name item.label}}</option>\n      {{/if}}\n    {{/each}}\n  </select>\n  */\n  {\n    \"id\": \"Fbl5ReiB\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[10,\\\"label\\\"],[15,\\\"for\\\",[30,2]],[15,1,[29,[[30,2],\\\"-label\\\"]]],[15,0,[29,[\\\"mb-2 block \\\",[52,[30,3],\\\"required-field-marker\\\"]]]],[12],[1,\\\"\\\\n    \\\"],[1,[30,1]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[11,\\\"select\\\"],[16,\\\"required\\\",[30,3]],[16,1,[30,2]],[16,3,[28,[37,3],[[30,4],[30,2]],null]],[16,0,[29,[\\\"settify-select block w-full rounded-md border-0 py-1.5 pl-3 pr-10\\\\n    \\\",[52,[28,[37,4],[[30,5]],null],\\\"text-gray-900\\\",\\\"text-gray-500\\\"],\\\"\\\\n    ring-1 ring-inset ring-gray-300 focus:ring-2 focus:ring-brand-primary-color-rgb\\\"]]],[16,\\\"disabled\\\",[30,0,[\\\"disabled\\\"]]],[17,6],[4,[38,5],[\\\"change\\\",[30,0,[\\\"handleChange\\\"]]],null],[12],[1,\\\"\\\\n  \\\"],[10,\\\"option\\\"],[14,2,\\\"\\\"],[15,\\\"selected\\\",[28,[37,7],[[30,5]],null]],[15,\\\"disabled\\\",[28,[37,7],[[30,0,[\\\"selectablePrompt\\\"]]],null]],[12],[1,[30,0,[\\\"prompt\\\"]]],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,9],[[28,[37,9],[[30,7]],null]],null],null,[[[41,[30,8,[\\\"groupOptions\\\"]],[[[1,\\\"      \\\"],[10,\\\"hr\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,\\\"optgroup\\\"],[15,\\\"label\\\",[30,8,[\\\"groupLabel\\\"]]],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,9],[[28,[37,9],[[30,8,[\\\"groupOptions\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[10,\\\"option\\\"],[15,2,[30,9,[\\\"value\\\"]]],[15,\\\"selected\\\",[28,[37,12],[[30,5],[30,9,[\\\"value\\\"]]],null]],[12],[1,[28,[35,3],[[30,9,[\\\"name\\\"]],[30,9,[\\\"label\\\"]]],null]],[13],[1,\\\"\\\\n\\\"]],[9]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,\\\"option\\\"],[15,2,[30,8,[\\\"value\\\"]]],[15,\\\"selected\\\",[28,[37,12],[[30,5],[30,8,[\\\"value\\\"]]],null]],[12],[1,[28,[35,3],[[30,8,[\\\"name\\\"]],[30,8,[\\\"label\\\"]]],null]],[13],[1,\\\"\\\\n\\\"]],[]]]],[8]],null],[13]],[\\\"@label\\\",\\\"@id\\\",\\\"@required\\\",\\\"@name\\\",\\\"@selectedItem\\\",\\\"&attrs\\\",\\\"@options\\\",\\\"item\\\",\\\"item\\\"],false,[\\\"if\\\",\\\"label\\\",\\\"select\\\",\\\"or\\\",\\\"defined\\\",\\\"on\\\",\\\"option\\\",\\\"not\\\",\\\"each\\\",\\\"-track-array\\\",\\\"hr\\\",\\\"optgroup\\\",\\\"eq\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/select-box/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component representing a select box UI element (component).\n   * @class SelectBoxComponent\n   * @extends Component\n   * @param {string} [this.args.selectedItem] - Selected item/option from the list of options (if provided)\n   * @param {array} [this.args.options] - Array of selectable options (content of the select box) in the form:\n   *        SingleOption: [{ [name|label]: String, value: String }]\n   *        OptionGroup: [{ groupLabel: String, groupOptions: [ SingleOption, ...] }, ...]\n   * @param {string} [this.args.id] - Select box ID (label \"for\" uses it as well)\n   * @param {string} [this.args.name] - Name of the select box\n   * @param {string} [this.args.label] - Text above the select field\n   * @param {string} [this.args.prompt] - Text for the empty option value\n   * @param {string} [this.args.selectablePrompt] - Handles disabled state of the prompt option\n   * @param {boolean} [this.args.disabled] - Handles disabled state of the select box\n   * @param {boolean} [this.args.required] - Handles required state of the select box\n   * @param {action} [this.args.onChange] - REQUIRED: Action triggered when an option is selected\n   */\n  let SelectBoxComponent = _exports.default = (_class = class SelectBoxComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _defineProperty(this, \"disabled\", this.args.disabled || false);\n      _defineProperty(this, \"prompt\", this.args.prompt ?? \"-- select --\");\n      _defineProperty(this, \"selectablePrompt\", this.args.selectablePrompt ?? false);\n    }\n    get optionSelected() {\n      if (typeof this.args.selectedItem === \"number\" && !isNaN(this.args.selectedItem)) {\n        return true;\n      }\n      if (typeof this.args.selectedItem === \"object\" && this.args.selectedItem !== null) {\n        // Selected item is object, let's check if there are any keys\n        return Object.keys(this.args.selectedItem).length > 0;\n      }\n      return Boolean(this.args.selectedItem);\n    }\n    handleChange(event) {\n      if (typeof this.args.onChange === \"function\") {\n        return this.args.onChange(event.target.value, event);\n      }\n    }\n  }, _applyDecoratedDescriptor(_class.prototype, \"handleChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleChange\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, SelectBoxComponent);\n});","define(\"settify-mvp/components/v2/select-date/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@glimmer/tracking\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _tracking, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@glimmer/tracking\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"block py-0.5 font-medium leading-6 sm:text-sm\">{{@label}}</div>\n  <div class=\"relative mt-2\" {{on \"click\" this.toggleDatePicker}}>\n    <label for={{@id}} class=\"w-9/10 absolute top-0.5 ml-1 block rounded-md border-0 bg-white py-1 pl-2 placeholder:text-gray-500 focus:ring-0 sm:text-sm sm:leading-6\">\n      {{#if this.selectedDate}}\n        {{pretty-date this.selectedDate customFormat=this.format}}\n      {{else}}\n        {{this.placeholder}}\n      {{/if}}\n    </label>\n    <Input\n      @type=\"date\"\n      @value={{this.selectedDate}}\n      id={{@id}}\n      name={{@name}}\n      min={{@minDate}}\n      max={{@maxDate}}\n      class=\"datepicker__input block w-full rounded-md border-0 py-1.5 ring-1 ring-inset ring-gray-300 focus:ring-2 focus:ring-inset focus:ring-brand-primary-color-rgb\"\n      {{on \"change\" this.handleChange}}\n    />\n  </div>\n  {{#if @helpText}}\n    <p class=\"mt-2 text-sm\">{{@helpText}}</p>\n  {{/if}}\n  */\n  {\n    \"id\": \"xIdDm4vj\",\n    \"block\": \"[[[10,0],[14,0,\\\"block py-0.5 font-medium leading-6 sm:text-sm\\\"],[12],[1,[30,1]],[13],[1,\\\"\\\\n\\\"],[11,0],[24,0,\\\"relative mt-2\\\"],[4,[38,1],[\\\"click\\\",[30,0,[\\\"toggleDatePicker\\\"]]],null],[12],[1,\\\"\\\\n  \\\"],[10,\\\"label\\\"],[15,\\\"for\\\",[30,2]],[14,0,\\\"w-9/10 absolute top-0.5 ml-1 block rounded-md border-0 bg-white py-1 pl-2 placeholder:text-gray-500 focus:ring-0 sm:text-sm sm:leading-6\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"selectedDate\\\"]],[[[1,\\\"      \\\"],[1,[28,[35,4],[[30,0,[\\\"selectedDate\\\"]]],[[\\\"customFormat\\\"],[[30,0,[\\\"format\\\"]]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[1,[30,0,[\\\"placeholder\\\"]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,5],[[16,1,[30,2]],[16,3,[30,3]],[16,\\\"min\\\",[30,4]],[16,\\\"max\\\",[30,5]],[24,0,\\\"datepicker__input block w-full rounded-md border-0 py-1.5 ring-1 ring-inset ring-gray-300 focus:ring-2 focus:ring-inset focus:ring-brand-primary-color-rgb\\\"],[4,[38,1],[\\\"change\\\",[30,0,[\\\"handleChange\\\"]]],null]],[[\\\"@type\\\",\\\"@value\\\"],[\\\"date\\\",[30,0,[\\\"selectedDate\\\"]]]],null],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,6],[[[1,\\\"  \\\"],[10,2],[14,0,\\\"mt-2 text-sm\\\"],[12],[1,[30,6]],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@label\\\",\\\"@id\\\",\\\"@name\\\",\\\"@minDate\\\",\\\"@maxDate\\\",\\\"@helpText\\\"],false,[\\\"div\\\",\\\"on\\\",\\\"label\\\",\\\"if\\\",\\\"pretty-date\\\",\\\"input\\\",\\\"p\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/select-date/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component representing a select date UI element (component).\n   * @class SelectDateComponent\n   * @extends Component\n   * @param {Date} [this.args.date] - Selected date (if provided).\n   * @param {string} [this.args.label] - Text above the input field - default value \"Date\".\n   * @param {string} [this.args.placeholder] - Date picker placeholder if the date is not defined.\n   * @param {string} [this.args.helpText] - Help text displayed under the date picker.\n   * @param {string} [this.args.id] - Id attribute for the input/label.\n   * @param {name} [this.args.name] - Name attribute for the input.\n   * @param {string} [this.args.format='YYYY-MM-DD'] - Format of the selected date.\n   * @param {string} [this.args.minDate] - Earliest date to accept - string representing date (e.g. '2023-07-01').\n   * @param {string} [this.args.maxDate] - Latest date to accept - string representing date (e.g. '2024-04-10').\n   * @param {onChange} [this.args.onChange] - Action triggered when the date is selected (REQUIRED).\n   */\n  let SelectDateComponent = _exports.default = (_class = class SelectDateComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"selectedDate\", _descriptor, this);\n      _defineProperty(this, \"defaultFormat\", \"YYYY-MM-DD\");\n      _defineProperty(this, \"format\", this.args.format || this.defaultFormat);\n      _defineProperty(this, \"label\", this.args.label || \"Date\");\n      _defineProperty(this, \"placeholder\", this.args.placeholder || \"Click here to select a date\");\n    }\n    toggleDatePicker(event) {\n      const wrapperElement = event.target.parentNode;\n      const element = wrapperElement.querySelector(\"input\");\n      element.showPicker() || false;\n    }\n    handleChange() {\n      if (!this.args.onChange) {\n        throw new Error(\"onChange action is not present in the arguments list\");\n      }\n      return this.args.onChange(this.selectedDate);\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"selectedDate\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return this.args.date || null;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"toggleDatePicker\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleDatePicker\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleChange\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, SelectDateComponent);\n});","define(\"settify-mvp/components/v2/select-or-create-presets/index\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#unless @question.disableDefaults}}\n    {{#if (and @question.allowPeople (not @item.name))}}\n      {{#if @question.askFor.title}}\n        <V2::QuestionTypeSwitcher\n          @question={{hash id=\"title\" type=\"title\" title=\"Title\" required=@question.requiredFields.title}}\n          @highlightRequiredFields={{@highlightRequiredFields}}\n          @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n          @clientRecord={{@clientRecord}}\n          @model={{@item}}\n          @adminMode={{@adminMode}}\n        />\n      {{/if}}\n      <V2::QuestionTypeSwitcher\n        @question={{hash id=\"firstName\" type=\"firstname\" title=\"First name\" required=@question.requiredFields.firstName}}\n        @highlightRequiredFields={{@highlightRequiredFields}}\n        @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n        @clientRecord={{@clientRecord}}\n        @model={{@item}}\n        @adminMode={{@adminMode}}\n      />\n      {{#if @question.askFor.middleName}}\n        <V2::QuestionTypeSwitcher\n          @question={{hash id=\"middleName\" type=\"textline\" title=\"Middle name\" required=@question.requiredFields.middleName}}\n          @highlightRequiredFields={{@highlightRequiredFields}}\n          @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n          @clientRecord={{@clientRecord}}\n          @model={{@item}}\n          @adminMode={{@adminMode}}\n        />\n      {{/if}}\n      {{#if @question.askFor.surname}}\n        <V2::QuestionTypeSwitcher\n          @question={{hash id=\"surname\" type=\"textline\" title=(if (eq @question.surnameOrLastNameLabel \"lastName\") \"Last name\" \"Surname\") required=@question.requiredFields.surname}}\n          @highlightRequiredFields={{@highlightRequiredFields}}\n          @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n          @clientRecord={{@clientRecord}}\n          @model={{@item}}\n          @adminMode={{@adminMode}}\n        />\n      {{/if}}\n      {{#if @question.askFor.dateOfBirth}}\n        <V2::QuestionTypeSwitcher\n          @question={{hash id=\"dob\" type=\"date\" title=\"Date of birth\" required=@question.requiredFields.dateOfBirth}}\n          @highlightRequiredFields={{@highlightRequiredFields}}\n          @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n          @clientRecord={{@clientRecord}}\n          @model={{@item}}\n          @adminMode={{@adminMode}}\n        />\n      {{/if}}\n      {{#if @question.askFor.placeOfBirth}}\n        <V2::QuestionTypeSwitcher\n          @question={{hash id=\"placeOfBirth\" type=\"textline\" title=\"Place of birth (city and country)\" required=@question.requiredFields.placeOfBirth}}\n          @highlightRequiredFields={{@highlightRequiredFields}}\n          @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n          @clientRecord={{@clientRecord}}\n          @model={{@item}}\n          @adminMode={{@adminMode}}\n        />\n      {{/if}}\n      {{#if @question.askFor.occupation}}\n        <V2::QuestionTypeSwitcher\n          @question={{hash id=\"occupation\" type=\"textline\" title=\"Occupation\" required=@question.requiredFields.occupation}}\n          @highlightRequiredFields={{@highlightRequiredFields}}\n          @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n          @clientRecord={{@clientRecord}}\n          @model={{@item}}\n          @adminMode={{@adminMode}}\n        />\n      {{/if}}\n    {{/if}}\n    {{#if (and @question.allowCorporations (not @item.firstName))}}\n      <V2::QuestionTypeSwitcher\n        @question={{hash id=\"name\" type=\"textline\" title=\"Company name\" required=@question.requiredFields.name}}\n        @highlightRequiredFields={{@highlightRequiredFields}}\n        @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n        @clientRecord={{@clientRecord}}\n        @model={{@item}}\n        @adminMode={{@adminMode}}\n      />\n      <V2::QuestionTypeSwitcher\n        @question={{hash id=\"acn\" type=\"textline\" title=\"Company ACN\" required=@question.requiredFields.acn}}\n        @highlightRequiredFields={{@highlightRequiredFields}}\n        @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n        @clientRecord={{@clientRecord}}\n        @model={{@item}}\n        @adminMode={{@adminMode}}\n      />\n      {{#if @item.name}}\n        {{#if @question.askFor.chairman}}\n          <V2::QuestionTypeSwitcher\n            @question={{hash id=\"chairman\" type=\"textline\" title=\"Chairman of Directors\" required=@question.requiredFields.chairman}}\n            @highlightRequiredFields={{@highlightRequiredFields}}\n            @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n            @clientRecord={{@clientRecord}}\n            @model={{@item}}\n            @adminMode={{@adminMode}}\n          />\n        {{/if}}\n        {{#if @question.askFor.authorisedRepresentative}}\n          <V2::QuestionTypeSwitcher\n            @question={{hash id=\"authorisedRepresentative\" type=\"textline\" title=\"Authorised representative\" required=@question.requiredFields.authorisedRepresentative}}\n            @highlightRequiredFields={{@highlightRequiredFields}}\n            @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n            @clientRecord={{@clientRecord}}\n            @model={{@item}}\n            @adminMode={{@adminMode}}\n          />\n          <V2::QuestionTypeSwitcher\n            @question={{hash\n              id=\"authorisedRepresentativeType\"\n              type=\"radio\"\n              title=\"What is the authorised representative's role?\"\n              shortTitle=\"Their role\"\n              options=this.authorisedRepresentativeTypeOptions\n              required=@question.requiredFields.authorisedRepresentative\n            }}\n            @highlightRequiredFields={{@highlightRequiredFields}}\n            @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n            @clientRecord={{@clientRecord}}\n            @model={{@item}}\n            @adminMode={{@adminMode}}\n          />\n        {{/if}}\n      {{/if}}\n    {{/if}}\n    {{#if @question.askFor.email}}\n      <V2::QuestionTypeSwitcher\n        @question={{hash id=\"email\" type=\"email\" title=\"Email address\" required=@question.requiredFields.email}}\n        @highlightRequiredFields={{@highlightRequiredFields}}\n        @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n        @clientRecord={{@clientRecord}}\n        @model={{@item}}\n        @adminMode={{@adminMode}}\n      />\n    {{/if}}\n    {{#if @question.askFor.phone}}\n      <V2::QuestionTypeSwitcher\n        @question={{hash id=\"phone\" type=\"phone\" title=\"Direct phone\" required=@question.requiredFields.phone}}\n        @highlightRequiredFields={{@highlightRequiredFields}}\n        @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n        @clientRecord={{@clientRecord}}\n        @model={{@item}}\n        @adminMode={{@adminMode}}\n      />\n    {{/if}}\n    {{#if @question.askFor.fax}}\n      <V2::QuestionTypeSwitcher\n        @question={{hash id=\"fax\" type=\"phone\" title=\"Fax number\" required=@question.requiredFields.fax}}\n        @highlightRequiredFields={{@highlightRequiredFields}}\n        @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n        @clientRecord={{@clientRecord}}\n        @model={{@item}}\n        @adminMode={{@adminMode}}\n      />\n    {{/if}}\n    {{#if @question.askFor.mobile}}\n      <V2::QuestionTypeSwitcher\n        @question={{hash id=\"mobile\" type=\"phone\" title=\"Mobile number\" required=@question.requiredFields.phone}}\n        @highlightRequiredFields={{@highlightRequiredFields}}\n        @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n        @clientRecord={{@clientRecord}}\n        @model={{@item}}\n        @adminMode={{@adminMode}}\n      />\n    {{/if}}\n    {{#if @question.askFor.address}}\n      <V2::QuestionTypeSwitcher\n        @question={{hash id=\"address\" type=\"address\" title=\"Address\" required=@question.requiredFields.address}}\n        @filterListOverride={{@filterList}}\n        @filterTypeOverride={{@filterType}}\n        @highlightRequiredFields={{@highlightRequiredFields}}\n        @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n        @clientRecord={{@clientRecord}}\n        @model={{@item}}\n        @adminMode={{@adminMode}}\n      />\n    {{/if}}\n  {{/unless}}\n  */\n  {\n    \"id\": \"h49RiCTq\",\n    \"block\": \"[[[41,[51,[30,1,[\\\"disableDefaults\\\"]]],[[[41,[28,[37,2],[[30,1,[\\\"allowPeople\\\"]],[28,[37,3],[[30,2,[\\\"name\\\"]]],null]],null],[[[41,[30,1,[\\\"askFor\\\",\\\"title\\\"]],[[[1,\\\"      \\\"],[8,[39,4],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,5],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"title\\\",\\\"title\\\",\\\"Title\\\",[30,1,[\\\"requiredFields\\\",\\\"title\\\"]]]]],[30,3],[28,[37,6],[[30,4]],[[\\\"editingExistingItem\\\"],[[30,5]]]],[30,6],[30,2],[30,7]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[8,[39,4],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,5],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"firstName\\\",\\\"firstname\\\",\\\"First name\\\",[30,1,[\\\"requiredFields\\\",\\\"firstName\\\"]]]]],[30,3],[28,[37,6],[[30,4]],[[\\\"editingExistingItem\\\"],[[30,5]]]],[30,6],[30,2],[30,7]]],null],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"askFor\\\",\\\"middleName\\\"]],[[[1,\\\"      \\\"],[8,[39,4],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,5],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"middleName\\\",\\\"textline\\\",\\\"Middle name\\\",[30,1,[\\\"requiredFields\\\",\\\"middleName\\\"]]]]],[30,3],[28,[37,6],[[30,4]],[[\\\"editingExistingItem\\\"],[[30,5]]]],[30,6],[30,2],[30,7]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,1,[\\\"askFor\\\",\\\"surname\\\"]],[[[1,\\\"      \\\"],[8,[39,4],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,5],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"surname\\\",\\\"textline\\\",[52,[28,[37,7],[[30,1,[\\\"surnameOrLastNameLabel\\\"]],\\\"lastName\\\"],null],\\\"Last name\\\",\\\"Surname\\\"],[30,1,[\\\"requiredFields\\\",\\\"surname\\\"]]]]],[30,3],[28,[37,6],[[30,4]],[[\\\"editingExistingItem\\\"],[[30,5]]]],[30,6],[30,2],[30,7]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,1,[\\\"askFor\\\",\\\"dateOfBirth\\\"]],[[[1,\\\"      \\\"],[8,[39,4],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,5],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"dob\\\",\\\"date\\\",\\\"Date of birth\\\",[30,1,[\\\"requiredFields\\\",\\\"dateOfBirth\\\"]]]]],[30,3],[28,[37,6],[[30,4]],[[\\\"editingExistingItem\\\"],[[30,5]]]],[30,6],[30,2],[30,7]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,1,[\\\"askFor\\\",\\\"placeOfBirth\\\"]],[[[1,\\\"      \\\"],[8,[39,4],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,5],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"placeOfBirth\\\",\\\"textline\\\",\\\"Place of birth (city and country)\\\",[30,1,[\\\"requiredFields\\\",\\\"placeOfBirth\\\"]]]]],[30,3],[28,[37,6],[[30,4]],[[\\\"editingExistingItem\\\"],[[30,5]]]],[30,6],[30,2],[30,7]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,1,[\\\"askFor\\\",\\\"occupation\\\"]],[[[1,\\\"      \\\"],[8,[39,4],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,5],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"occupation\\\",\\\"textline\\\",\\\"Occupation\\\",[30,1,[\\\"requiredFields\\\",\\\"occupation\\\"]]]]],[30,3],[28,[37,6],[[30,4]],[[\\\"editingExistingItem\\\"],[[30,5]]]],[30,6],[30,2],[30,7]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[41,[28,[37,2],[[30,1,[\\\"allowCorporations\\\"]],[28,[37,3],[[30,2,[\\\"firstName\\\"]]],null]],null],[[[1,\\\"    \\\"],[8,[39,4],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,5],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"name\\\",\\\"textline\\\",\\\"Company name\\\",[30,1,[\\\"requiredFields\\\",\\\"name\\\"]]]]],[30,3],[28,[37,6],[[30,4]],[[\\\"editingExistingItem\\\"],[[30,5]]]],[30,6],[30,2],[30,7]]],null],[1,\\\"\\\\n    \\\"],[8,[39,4],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,5],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"acn\\\",\\\"textline\\\",\\\"Company ACN\\\",[30,1,[\\\"requiredFields\\\",\\\"acn\\\"]]]]],[30,3],[28,[37,6],[[30,4]],[[\\\"editingExistingItem\\\"],[[30,5]]]],[30,6],[30,2],[30,7]]],null],[1,\\\"\\\\n\\\"],[41,[30,2,[\\\"name\\\"]],[[[41,[30,1,[\\\"askFor\\\",\\\"chairman\\\"]],[[[1,\\\"        \\\"],[8,[39,4],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,5],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"chairman\\\",\\\"textline\\\",\\\"Chairman of Directors\\\",[30,1,[\\\"requiredFields\\\",\\\"chairman\\\"]]]]],[30,3],[28,[37,6],[[30,4]],[[\\\"editingExistingItem\\\"],[[30,5]]]],[30,6],[30,2],[30,7]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,1,[\\\"askFor\\\",\\\"authorisedRepresentative\\\"]],[[[1,\\\"        \\\"],[8,[39,4],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,5],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"authorisedRepresentative\\\",\\\"textline\\\",\\\"Authorised representative\\\",[30,1,[\\\"requiredFields\\\",\\\"authorisedRepresentative\\\"]]]]],[30,3],[28,[37,6],[[30,4]],[[\\\"editingExistingItem\\\"],[[30,5]]]],[30,6],[30,2],[30,7]]],null],[1,\\\"\\\\n        \\\"],[8,[39,4],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,5],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"shortTitle\\\",\\\"options\\\",\\\"required\\\"],[\\\"authorisedRepresentativeType\\\",\\\"radio\\\",\\\"What is the authorised representative's role?\\\",\\\"Their role\\\",[30,0,[\\\"authorisedRepresentativeTypeOptions\\\"]],[30,1,[\\\"requiredFields\\\",\\\"authorisedRepresentative\\\"]]]]],[30,3],[28,[37,6],[[30,4]],[[\\\"editingExistingItem\\\"],[[30,5]]]],[30,6],[30,2],[30,7]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]],null]],[]],null],[41,[30,1,[\\\"askFor\\\",\\\"email\\\"]],[[[1,\\\"    \\\"],[8,[39,4],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,5],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"email\\\",\\\"email\\\",\\\"Email address\\\",[30,1,[\\\"requiredFields\\\",\\\"email\\\"]]]]],[30,3],[28,[37,6],[[30,4]],[[\\\"editingExistingItem\\\"],[[30,5]]]],[30,6],[30,2],[30,7]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,1,[\\\"askFor\\\",\\\"phone\\\"]],[[[1,\\\"    \\\"],[8,[39,4],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,5],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"phone\\\",\\\"phone\\\",\\\"Direct phone\\\",[30,1,[\\\"requiredFields\\\",\\\"phone\\\"]]]]],[30,3],[28,[37,6],[[30,4]],[[\\\"editingExistingItem\\\"],[[30,5]]]],[30,6],[30,2],[30,7]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,1,[\\\"askFor\\\",\\\"fax\\\"]],[[[1,\\\"    \\\"],[8,[39,4],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,5],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"fax\\\",\\\"phone\\\",\\\"Fax number\\\",[30,1,[\\\"requiredFields\\\",\\\"fax\\\"]]]]],[30,3],[28,[37,6],[[30,4]],[[\\\"editingExistingItem\\\"],[[30,5]]]],[30,6],[30,2],[30,7]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,1,[\\\"askFor\\\",\\\"mobile\\\"]],[[[1,\\\"    \\\"],[8,[39,4],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,5],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"mobile\\\",\\\"phone\\\",\\\"Mobile number\\\",[30,1,[\\\"requiredFields\\\",\\\"phone\\\"]]]]],[30,3],[28,[37,6],[[30,4]],[[\\\"editingExistingItem\\\"],[[30,5]]]],[30,6],[30,2],[30,7]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,1,[\\\"askFor\\\",\\\"address\\\"]],[[[1,\\\"    \\\"],[8,[39,4],null,[[\\\"@question\\\",\\\"@filterListOverride\\\",\\\"@filterTypeOverride\\\",\\\"@highlightRequiredFields\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,5],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"address\\\",\\\"address\\\",\\\"Address\\\",[30,1,[\\\"requiredFields\\\",\\\"address\\\"]]]]],[30,8],[30,9],[30,3],[28,[37,6],[[30,4]],[[\\\"editingExistingItem\\\"],[[30,5]]]],[30,6],[30,2],[30,7]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]],null]],[\\\"@question\\\",\\\"@item\\\",\\\"@highlightRequiredFields\\\",\\\"@context\\\",\\\"@editingExistingItem\\\",\\\"@clientRecord\\\",\\\"@adminMode\\\",\\\"@filterList\\\",\\\"@filterType\\\"],false,[\\\"unless\\\",\\\"if\\\",\\\"and\\\",\\\"not\\\",\\\"v2/question-type-switcher\\\",\\\"hash\\\",\\\"augment-hash\\\",\\\"eq\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/select-or-create-presets/index.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/v2/select-or-create-single/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@glimmer/tracking\", \"@ember/object/internals\", \"uuid\", \"settify-mvp/utils/format-item-label\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _tracking, _internals, _uuid, _formatItemLabel, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@glimmer/tracking\",0,\"@ember/object/internals\",0,\"uuid\",0,\"settify-mvp/utils/format-item-label\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div {{did-insert this.initialiseOptions}}>\n    {{#if (and this.availableOptions.length this.shouldShowRadioButtons)}}\n      <V2::RadioButtonGroup @value={{@value}} @options={{this.availableOptions}} @name={{this.id}} @clientRecord={{@clientRecord}} @onChange={{this.selectOption}} />\n      <V2::Button\n        @variant=\"outlined\"\n        @size=\"small\"\n        {{on \"click\" this.addNewOption}}\n        class=\"add-button mt-3 flex w-full items-center justify-center gap-2 py-2 text-brand-primary-color md:w-auto\"\n      >\n        <V2::SvgIcon @icon=\"circle-plus\" class=\"size-4 flex-shrink-0\" />\n        {{this.addNewButtonText}}\n      </V2::Button>\n    {{/if}}\n  \n    {{#if this.selectedOption}}\n      {{yield this.selectedOption this.isExistingItem}}\n    {{/if}}\n  </div>\n  */\n  {\n    \"id\": \"Ky5eCJgz\",\n    \"block\": \"[[[11,0],[4,[38,1],[[30,0,[\\\"initialiseOptions\\\"]]],null],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,3],[[30,0,[\\\"availableOptions\\\",\\\"length\\\"]],[30,0,[\\\"shouldShowRadioButtons\\\"]]],null],[[[1,\\\"    \\\"],[8,[39,4],null,[[\\\"@value\\\",\\\"@options\\\",\\\"@name\\\",\\\"@clientRecord\\\",\\\"@onChange\\\"],[[30,1],[30,0,[\\\"availableOptions\\\"]],[30,0,[\\\"id\\\"]],[30,2],[30,0,[\\\"selectOption\\\"]]]],null],[1,\\\"\\\\n    \\\"],[8,[39,5],[[24,0,\\\"add-button mt-3 flex w-full items-center justify-center gap-2 py-2 text-brand-primary-color md:w-auto\\\"],[4,[38,6],[\\\"click\\\",[30,0,[\\\"addNewOption\\\"]]],null]],[[\\\"@variant\\\",\\\"@size\\\"],[\\\"outlined\\\",\\\"small\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[39,7],[[24,0,\\\"size-4 flex-shrink-0\\\"]],[[\\\"@icon\\\"],[\\\"circle-plus\\\"]],null],[1,\\\"\\\\n      \\\"],[1,[30,0,[\\\"addNewButtonText\\\"]]],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"selectedOption\\\"]],[[[1,\\\"    \\\"],[18,3,[[30,0,[\\\"selectedOption\\\"]],[30,0,[\\\"isExistingItem\\\"]]]],[1,\\\"\\\\n\\\"]],[]],null],[13]],[\\\"@value\\\",\\\"@clientRecord\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"did-insert\\\",\\\"if\\\",\\\"and\\\",\\\"v2/radio-button-group\\\",\\\"v2/button\\\",\\\"on\\\",\\\"v2/svg-icon\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/select-or-create-single/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A component that allows users to either select a single existing option from a list or create a new option.\n   *\n   * @class SelectOrCreateSingleComponent\n   * @extends Component\n   *\n   * @param {string} this.args.value - The selected option ID.\n   * @param {Array<Object>} this.args.options - Array of selectable option objects.\n   * @param {boolean} [this.args.hideSelect=false] - If true, hides radio buttons for selection.\n   * @param {string} [this.args.itemLabelFormat=\"firstName surname name\"] - Format string for displaying option labels.\n   * @param {string} [this.args.addNewButtonText=\"Someone else\"] - Text for the button to add a new option.\n   * @param {string} [this.args.itemTypeString=\"option\"] - Type name for options, used in labels.\n   * @param {Function} [this.args.onChange] - Callback fired when an item is selected or created.\n   * @param {Function} [this.args.addNewOption] - Callback fired when a new item is being added.\n   *\n   * @example\n   * <V2::SelectOrCreateSingle\n   *   @options={{this.arrayOfOptions}}\n   *   @value={{this.selectedOption}}\n   *   @itemLabelFormat=\"name\"\n   *   @addNewButtonText=\"Someone else\"\n   *   @itemTypeString=\"person\"\n   *   @onChange={{this.handleSelectionChange}}\n   * />\n   */\n  let SelectOrCreateSingleComponent = _exports.default = (_class = class SelectOrCreateSingleComponent extends _component2.default {\n    constructor() {\n      super(...arguments);\n      _initializerDefineProperty(this, \"selectedOption\", _descriptor, this);\n      _initializerDefineProperty(this, \"isExistingItem\", _descriptor2, this);\n      _initializerDefineProperty(this, \"shouldShowRadioButtons\", _descriptor3, this);\n      // Determines whether radio buttons should be displayed for selection.\n      _initializerDefineProperty(this, \"localOptions\", _descriptor4, this);\n      // An isolated copy of the options passed in\n      _defineProperty(this, \"addNewButtonText\", this.args.addNewButtonText ?? \"Someone else\");\n      _defineProperty(this, \"optionLabelFormat\", this.args.itemLabelFormat ?? \"firstName surname name\");\n      _defineProperty(this, \"itemTypeString\", this.args.itemTypeString ?? \"option\");\n      this.localOptions = [...(this.args?.options || [])];\n      if (this.args?.value) {\n        this.selectExistingOption(this.args.value);\n      }\n    }\n    get id() {\n      return this.args.id ?? `single-soc-component-${(0, _internals.guidFor)(this)}`;\n    }\n\n    /**\n     * Returns a deduplicated and formatted list of available options.\n     * @type {Array<Object>}\n     */\n    get availableOptions() {\n      const entityList = this.removeDuplicates(this.localOptions || []);\n      return entityList.map(option => ({\n        id: option.id,\n        title: (0, _formatItemLabel.default)(option, this.optionLabelFormat) || `New ${this.itemTypeString}`,\n        source: option\n      }));\n    }\n\n    /**\n     * Initialises the options, adding a new option if necessary.\n     */\n    initialiseOptions() {\n      if (!this.selectedOption && (!this.availableOptions.length || !this.shouldShowRadioButtons)) {\n        this.addNewOption();\n        this.shouldShowRadioButtons = false; // We just created the first option, don't show the radio buttons\n      }\n    }\n\n    /**\n     * Selects an option based on its ID and triggers `onChange` if provided.\n     * @param {string} optionId - The ID of the selected option.\n     */\n    selectOption(optionId) {\n      this.selectExistingOption(optionId);\n      if (this.selectedOption) {\n        this.args.onChange?.(optionId);\n      }\n    }\n\n    /**\n     * Adds a new option to the options list and sets it as the selected option.\n     * @method addNewOption\n     */\n    addNewOption() {\n      const newOption = {\n        id: (0, _uuid.v4)()\n      };\n      this.selectedOption = newOption;\n      this.isExistingItem = false;\n      this.localOptions = [...this.localOptions, newOption]; // Add the new option to the local options list\n      this.args.addNewOption?.(newOption); // Notify the parent to update the `option` data source\n      this.args.onChange?.(newOption.id); // Trigger the `onChange` callback with the new option's ID\n    }\n\n    /**\n     * Sets an existing option as the selected option if it matches the provided ID.\n     * @param {string} optionId - The ID of the option to select.\n     */\n    selectExistingOption(optionId) {\n      const selectedOption = this.availableOptions.find(option => option?.id === optionId)?.source;\n      if (selectedOption) {\n        this.selectedOption = selectedOption;\n        this.isExistingItem = true;\n      }\n    }\n\n    /**\n     * Removes duplicate options based on their IDs.\n     * @param {Array<Object>} options - The list of options to filter for duplicates.\n     * @returns {Array<Object>} - The deduplicated list.\n     */\n    removeDuplicates(options) {\n      const uniqueIds = new Set();\n      return options.filter(option => {\n        if (uniqueIds.has(option.id)) return false;\n        uniqueIds.add(option.id);\n        return true;\n      });\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"selectedOption\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"isExistingItem\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"shouldShowRadioButtons\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return !this.args?.hideSelect;\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"localOptions\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return [];\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"availableOptions\", [_tracking.cached], Object.getOwnPropertyDescriptor(_class.prototype, \"availableOptions\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"initialiseOptions\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"initialiseOptions\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"selectOption\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"selectOption\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"addNewOption\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"addNewOption\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, SelectOrCreateSingleComponent);\n});","define(\"settify-mvp/components/v2/send-to-pms/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/service\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _component2, _service, _tracking, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/service\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.loading}}\n    <div role=\"status\" class=\"flex items-center justify-center\">\n      Loading...<span class=\"sr-only\">integration data</span>\n    </div>\n  {{/if}}\n  \n  {{#if this.pmsMetadata.isIntegrationAvailable}}\n    {{#if (or @client.integrationComplete @client.integrationInformation.currentInfo)}}\n      <div class=\"flex underline\" id=\"send-to-pms-complete\">\n        <span class=\"select-none\">\n          Sent to\n          {{or @client.integrationInformation.currentInfo.productName this.pmsMetadata.name}}\n        </span>\n        {{#if @client.integrationInformation.currentInfo.matterNumber}}\n          #{{~@client.integrationInformation.currentInfo.matterNumber~}}\n        {{/if}}\n      </div>\n    {{else}}\n      {{#if this.pmsMetadata.requiresAuthentication}}\n        <V2::Button @route=\"v2.admin.integrations\" @variant=\"solid\" title=\"The integration is not currently connected.\" id=\"re-connect-pms-link\">\n          Re-connect\n          {{this.pmsMetadata.name}}\n        </V2::Button>\n      {{else}}\n        <V2::Button @variant=\"solid\" id=\"send-to-pms-button\" disabled={{this.processing}} {{on \"click\" this.toggleSettingsModal}}>\n          Send to\n          {{this.pmsMetadata.name}}\n        </V2::Button>\n      {{/if}}\n    {{/if}}\n  {{/if}}\n  \n  <V2::Modal\n    @isOpen={{this.showSettingsModal}}\n    @title=\"{{this.pmsMetadata.name}} settings\"\n    @id=\"pms-settings-modal\"\n    @onClose={{this.toggleSettingsModal}}\n    @onSubmit={{this.submitIntegration}}\n  >\n    {{#if this.submitOption}}\n      <p class=\"mt-4 text-base leading-6\">{{this.submitOption.blurb}}</p>\n      <V2::PmsSettingsInputsSelector\n        @pmsMetadata={{this.pmsMetadata}}\n        @pmsSettings={{this.localPmsSettings}}\n        @useRequiredAttribute={{true}}\n        @matterInformation={{this.matterOptions}}\n        @updatePmsSetting={{this.updatePmsSetting}}\n      />\n    {{else}}\n      <p class=\"mt-4 text-base leading-6\">{{this.pmsMetadata.submitButtonsBlurb}}</p>\n      {{#each this.pmsMetadata.submitButtons as |submitOption|}}\n        <V2::Button @variant=\"outlined\" {{on \"click\" (fn this.setSubmitOption submitOption)}}>\n          {{submitOption.label}}\n        </V2::Button>\n      {{/each}}\n    {{/if}}\n  </V2::Modal>\n  */\n  {\n    \"id\": \"XQuucwur\",\n    \"block\": \"[[[41,[30,0,[\\\"loading\\\"]],[[[1,\\\"  \\\"],[10,0],[14,\\\"role\\\",\\\"status\\\"],[14,0,\\\"flex items-center justify-center\\\"],[12],[1,\\\"\\\\n    Loading...\\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"integration data\\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"pmsMetadata\\\",\\\"isIntegrationAvailable\\\"]],[[[41,[28,[37,3],[[30,1,[\\\"integrationComplete\\\"]],[30,1,[\\\"integrationInformation\\\",\\\"currentInfo\\\"]]],null],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"flex underline\\\"],[14,1,\\\"send-to-pms-complete\\\"],[12],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"select-none\\\"],[12],[1,\\\"\\\\n        Sent to\\\\n        \\\"],[1,[28,[35,3],[[30,1,[\\\"integrationInformation\\\",\\\"currentInfo\\\",\\\"productName\\\"]],[30,0,[\\\"pmsMetadata\\\",\\\"name\\\"]]],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"integrationInformation\\\",\\\"currentInfo\\\",\\\"matterNumber\\\"]],[[[1,\\\"        #\\\"],[1,[30,1,[\\\"integrationInformation\\\",\\\"currentInfo\\\",\\\"matterNumber\\\"]]]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"pmsMetadata\\\",\\\"requiresAuthentication\\\"]],[[[1,\\\"      \\\"],[8,[39,4],[[24,\\\"title\\\",\\\"The integration is not currently connected.\\\"],[24,1,\\\"re-connect-pms-link\\\"]],[[\\\"@route\\\",\\\"@variant\\\"],[\\\"v2.admin.integrations\\\",\\\"solid\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        Re-connect\\\\n        \\\"],[1,[30,0,[\\\"pmsMetadata\\\",\\\"name\\\"]]],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[39,4],[[24,1,\\\"send-to-pms-button\\\"],[16,\\\"disabled\\\",[30,0,[\\\"processing\\\"]]],[4,[38,5],[\\\"click\\\",[30,0,[\\\"toggleSettingsModal\\\"]]],null]],[[\\\"@variant\\\"],[\\\"solid\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        Send to\\\\n        \\\"],[1,[30,0,[\\\"pmsMetadata\\\",\\\"name\\\"]]],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]],[]]]],[]],null],[1,\\\"\\\\n\\\"],[8,[39,6],null,[[\\\"@isOpen\\\",\\\"@title\\\",\\\"@id\\\",\\\"@onClose\\\",\\\"@onSubmit\\\"],[[30,0,[\\\"showSettingsModal\\\"]],[29,[[30,0,[\\\"pmsMetadata\\\",\\\"name\\\"]],\\\" settings\\\"]],\\\"pms-settings-modal\\\",[30,0,[\\\"toggleSettingsModal\\\"]],[30,0,[\\\"submitIntegration\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"submitOption\\\"]],[[[1,\\\"    \\\"],[10,2],[14,0,\\\"mt-4 text-base leading-6\\\"],[12],[1,[30,0,[\\\"submitOption\\\",\\\"blurb\\\"]]],[13],[1,\\\"\\\\n    \\\"],[8,[39,8],null,[[\\\"@pmsMetadata\\\",\\\"@pmsSettings\\\",\\\"@useRequiredAttribute\\\",\\\"@matterInformation\\\",\\\"@updatePmsSetting\\\"],[[30,0,[\\\"pmsMetadata\\\"]],[30,0,[\\\"localPmsSettings\\\"]],true,[30,0,[\\\"matterOptions\\\"]],[30,0,[\\\"updatePmsSetting\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[10,2],[14,0,\\\"mt-4 text-base leading-6\\\"],[12],[1,[30,0,[\\\"pmsMetadata\\\",\\\"submitButtonsBlurb\\\"]]],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,10],[[28,[37,10],[[30,0,[\\\"pmsMetadata\\\",\\\"submitButtons\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[8,[39,4],[[4,[38,5],[\\\"click\\\",[28,[37,11],[[30,0,[\\\"setSubmitOption\\\"]],[30,2]],null]],null]],[[\\\"@variant\\\"],[\\\"outlined\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[1,[30,2,[\\\"label\\\"]]],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[2]],null]],[]]]],[]]]]]],[\\\"@client\\\",\\\"submitOption\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"span\\\",\\\"or\\\",\\\"v2/button\\\",\\\"on\\\",\\\"v2/modal\\\",\\\"p\\\",\\\"v2/pms-settings-inputs-selector\\\",\\\"each\\\",\\\"-track-array\\\",\\\"fn\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/send-to-pms/index.hbs\",\n    \"isStrictMode\": false\n  });\n  const SUPPORTED_DOCUMENT = [\"pdf\", \"docx\", \"xlsx\"];\n  const NEW_STYLE_INTEGRATIONS = [\"leap\", \"smokeball\"];\n\n  /**\n   * A Glimmer component for integrating with a Practice Management Systems (PMS) to handle matters and contacts.\n   * @class SendToPmsComponent\n   * @extends Component\n   * @param {Object} [this.args.client] - The client object containing information relevant to the matter.\n   */\n  let SendToPmsComponent = _exports.default = (_dec = (0, _service.service)(\"dynamic-config\"), _class = class SendToPmsComponent extends _component2.default {\n    constructor(owner, args) {\n      super(owner, args);\n      _initializerDefineProperty(this, \"lambda\", _descriptor, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor2, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor3, this);\n      _initializerDefineProperty(this, \"notifications\", _descriptor4, this);\n      _initializerDefineProperty(this, \"documentManager\", _descriptor5, this);\n      _initializerDefineProperty(this, \"config\", _descriptor6, this);\n      _initializerDefineProperty(this, \"loading\", _descriptor7, this);\n      _initializerDefineProperty(this, \"processing\", _descriptor8, this);\n      _initializerDefineProperty(this, \"pmsMetadata\", _descriptor9, this);\n      _initializerDefineProperty(this, \"localPmsSettings\", _descriptor10, this);\n      // Represents pms settings to be sent when creating a matter\n      _initializerDefineProperty(this, \"showSettingsModal\", _descriptor11, this);\n      _initializerDefineProperty(this, \"submitOption\", _descriptor12, this);\n      this.initFromMetadata();\n    }\n\n    /**\n     * Fetches metadata from the PMS.\n     * @returns {Promise<void>} A promise that resolves when metadata is retrieved.\n     * @todo Look at getting PMS data sooner so this doesn't have to load data\n     */\n    async initFromMetadata() {\n      this.loading = true;\n      this.pmsMetadata = await this.lambda.invoke(this.lambda.getSendToPmsMetadata, {\n        firmID: this.firm.id,\n        integrationInformation: this.args.client?.integrationInformation,\n        practiceArea: this.args.client.practiceArea\n      }).then(this.lambda.processResponse);\n      if (this.pmsMetadata?.submitButtons?.length === 1) {\n        this.submitOption = this.pmsMetadata.submitButtons[0];\n      }\n      const practiceAreaSettings = this.firm.getPracticeAreaSettings(this.args.client.practiceArea);\n      this.localPmsSettings = (0, _object.get)(practiceAreaSettings, this.pmsMetadata?.defaultSettingsPath || \"\") ?? {};\n      this.loading = false;\n    }\n\n    /**\n     * Generates options to be passed to the PMS selector.\n     * @todo Implement logic to calculate includeSpouseOptions for different practice areas (Eg. Wills when added to uno).\n     */\n    get matterOptions() {\n      return {\n        includeSpouseOptions: this.args.client.practiceArea === \"Family\"\n      };\n    }\n\n    /**\n     * Updates a specific PMS setting.\n     * @param {string} settingName - The name of the setting to update.\n     * @param {any} value - The new value for the setting.\n     */\n    updatePmsSetting(settingName, value) {\n      this.localPmsSettings = {\n        ...this.localPmsSettings,\n        [settingName]: value\n      };\n    }\n\n    /**\n     * Toggles the visibility of the PMS settings modal.\n     */\n    toggleSettingsModal() {\n      this.showSettingsModal = !this.showSettingsModal;\n    }\n\n    /**\n     * Updates this.submitOption to the provided option.\n     * @todo Implement logic to process the integration if there are no options to show (eg Clio create contacts)\n     */\n    setSubmitOption(option) {\n      this.submitOption = option;\n    }\n\n    /**\n     * Initiates the process of submitting integration requests.\n     * @note Does not await the response as this is handled by the notification service\n     */\n    submitIntegration() {\n      this.processIntegrationRequest();\n    }\n\n    /**\n     * Processes the integration request by handling notifications, fetching attachments, and posting integration data.\n     */\n    async processIntegrationRequest() {\n      const processingNotification = {\n        title: `Submitting ${this.pmsMetadata.name} request`,\n        icon: \"loading\",\n        message: this.submitOption.processingMessage,\n        canDismiss: false\n      };\n      try {\n        this.processing = true;\n        this.notifications.add(processingNotification);\n        const attachments = await this.getAttachments();\n        const response = await this.postIntegration(attachments);\n        if (!response.ok) {\n          this.setIntegrationFailedMessage(response.message);\n          return;\n        }\n        await this.updateClientInformation(response);\n        this.notifications.notify({\n          title: `Created ${this.pmsMetadata.name} ${this.submitOption.type}`,\n          icon: \"success\",\n          message: response.message,\n          canDismiss: true\n        }, 6000);\n      } catch (err) {\n        this.eventLogging.logError(`Unable to create ${this.pmsMetadata.name} matter`, err);\n        this.setIntegrationFailedMessage();\n      } finally {\n        this.processing = false;\n        this.notifications.remove(processingNotification);\n      }\n    }\n\n    /**\n     * Asynchronously retrieves attachments to be sent to the PMS.\n     * @returns {Promise<Array>} A promise that resolves with an array of attachments.\n     */\n    async getAttachments() {\n      if (this.submitOption.type !== \"matter\") return [];\n      const documentsToAttach = this.documentManager.getAvailableDocuments(this.args.client).filter(doc => SUPPORTED_DOCUMENT.includes(doc.value));\n      return Promise.all(documentsToAttach.map(async document => {\n        // We pass the option of `uploadToStorage` so that the generated document is saved to the cloud, and we are returned the saved bucket and key.\n        const [saveLocation] = await document.generate(this.args.client, {\n          uploadToStorage: true\n        });\n        return {\n          bucket: saveLocation.bucket,\n          key: saveLocation.key,\n          filename: saveLocation.fileName\n        }; // PMS integrations expect the `firmname` key to be all lowercase.\n      }));\n    }\n\n    /**\n     * Posts integration data either in old or new style, based on the PMS and submission type.\n     * @param {Array} attachments - Array of attachments to be sent.\n     * @returns {Promise<Object>} A promise that resolves with the integration response.\n     * @todo Remove the old flow when more integrations are migrated to the new style above\n     */\n    async postIntegration(attachments) {\n      const newStyleIntegration = NEW_STYLE_INTEGRATIONS.includes(this.pmsMetadata.id) && this.submitOption.type === \"matter\";\n      if (newStyleIntegration) {\n        const response = await this.postNewIntegration(attachments);\n        return response[this.pmsMetadata.id];\n      }\n      const response = this.postOldIntegration(attachments);\n      return response[this.pmsMetadata.id];\n    }\n    async postNewIntegration(attachments) {\n      const {\n        id: formId,\n        repeatToken\n      } = this.args.client.getInduction(this.args.client.inductions);\n      const integrationsData = {\n        [this.pmsMetadata.id]: {\n          type: \"matter\",\n          matterData: this.localPmsSettings\n        }\n      };\n      const payload = {\n        record: {\n          clientId: this.args.client.id,\n          formId,\n          repeatToken\n        },\n        attachments,\n        integrationsData\n      };\n      return await this.lambda.invoke(this.lambda.sendNewClientRecordToIntegrations, payload).then(this.lambda.processResponse);\n    }\n    async postOldIntegration(attachments) {\n      const clientForExport = await this.args.client.exportRecord();\n      const payload = {\n        firmID: this.firm.id,\n        additionalInfo: this.localPmsSettings,\n        record: clientForExport,\n        submitType: this.submitOption.type,\n        productName: this.pmsMetadata.id,\n        attachments\n      };\n      return await this.lambda.invoke(this.submitOption.submitArn, payload).then(this.lambda.processResponse);\n    }\n\n    /**\n     * Updates the client with the integration information.\n     * @param {Object} response - The integration response from the backend.\n     */\n    async updateClientInformation(response) {\n      const executionLog = this.args.client?.integrationInformation?.executions || [];\n      const executionObject = {\n        ...response,\n        submitType: this.submitOption.type,\n        additionalInfo: this.localPmsSettings,\n        timestamp: new Date().toString(),\n        productName: this.pmsMetadata.id\n      };\n      executionLog.push(executionObject);\n      this.args.client.integrationInformation = {\n        executions: executionLog,\n        currentInfo: {\n          ...response.info,\n          productName: this.pmsMetadata.name,\n          productId: this.pmsMetadata.id\n        }\n      };\n      this.args.client.readOnly = false;\n      await this.args.client.save();\n      this.args.client.readOnly = true;\n    }\n    setIntegrationFailedMessage(message) {\n      const defaultMessage = `Unable to send data to ${this.pmsMetadata.name}. Please try again or contact Settify for assistance.`;\n      this.notifications.add({\n        title: `Failed ${this.pmsMetadata.name} request`,\n        icon: \"error\",\n        message: message || defaultMessage,\n        canDismiss: true\n      });\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"notifications\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"documentManager\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"config\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"loading\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"processing\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor9 = _applyDecoratedDescriptor(_class.prototype, \"pmsMetadata\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return {};\n    }\n  }), _descriptor10 = _applyDecoratedDescriptor(_class.prototype, \"localPmsSettings\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return {};\n    }\n  }), _descriptor11 = _applyDecoratedDescriptor(_class.prototype, \"showSettingsModal\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor12 = _applyDecoratedDescriptor(_class.prototype, \"submitOption\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"updatePmsSetting\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"updatePmsSetting\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"toggleSettingsModal\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleSettingsModal\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"setSubmitOption\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"setSubmitOption\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"submitIntegration\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"submitIntegration\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, SendToPmsComponent);\n});","define(\"settify-mvp/components/v2/sidebar/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/object/internals\", \"@ember/template-factory\"], function (_exports, _component, _component2, _tracking, _object, _internals, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"@ember/object/internals\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div {{did-insert this.setupResizeListener}}>\n    {{! Overlay for small screens when the sidebar is open }}\n    <div class=\"overlay fixed inset-0 z-50 bg-gray-900/80 lg:hidden {{if @isSidebarOpen 'block' 'hidden'}}\" aria-hidden=\"true\" {{on \"click\" this.closeSidebar}}></div>\n    <div\n      id={{this.id}}\n      class=\"fixed inset-y-0 z-50 flex w-64 transform-gpu flex-col transition-transform duration-500 ease-in-out lg:translate-x-0 {{if @isSidebarOpen '' '-translate-x-full'}}\"\n      inert={{if this.disableInteraction \"inert\" null}}\n    >\n      {{! Close button for small screens }}\n      <div class=\"absolute left-full top-0 flex w-16 justify-center pt-5 {{if @isSidebarOpen 'block' 'hidden'}}\">\n        <button type=\"button\" {{on \"click\" this.closeSidebar}} class=\"close-button -m-2.5 p-2.5\">\n          <span class=\"sr-only\">Close sidebar</span>\n          <V2::SvgIcon @icon=\"x-mark\" class=\"size-6 text-white\" />\n        </button>\n      </div>\n  \n      <SideBarNav @isSidebarOpen={{@isSidebarOpen}} @setSidebarState={{@setSidebarState}} />\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"OzyIcksw\",\n    \"block\": \"[[[11,0],[4,[38,1],[[30,0,[\\\"setupResizeListener\\\"]]],null],[12],[1,\\\"\\\\n\\\"],[1,\\\"  \\\"],[11,0],[16,0,[29,[\\\"overlay fixed inset-0 z-50 bg-gray-900/80 lg:hidden \\\",[52,[30,1],\\\"block\\\",\\\"hidden\\\"]]]],[24,\\\"aria-hidden\\\",\\\"true\\\"],[4,[38,3],[\\\"click\\\",[30,0,[\\\"closeSidebar\\\"]]],null],[12],[13],[1,\\\"\\\\n  \\\"],[10,0],[15,1,[30,0,[\\\"id\\\"]]],[15,0,[29,[\\\"fixed inset-y-0 z-50 flex w-64 transform-gpu flex-col transition-transform duration-500 ease-in-out lg:translate-x-0 \\\",[52,[30,1],\\\"\\\",\\\"-translate-x-full\\\"]]]],[15,\\\"inert\\\",[52,[30,0,[\\\"disableInteraction\\\"]],\\\"inert\\\",null]],[12],[1,\\\"\\\\n\\\"],[1,\\\"    \\\"],[10,0],[15,0,[29,[\\\"absolute left-full top-0 flex w-16 justify-center pt-5 \\\",[52,[30,1],\\\"block\\\",\\\"hidden\\\"]]]],[12],[1,\\\"\\\\n      \\\"],[11,\\\"button\\\"],[24,0,\\\"close-button -m-2.5 p-2.5\\\"],[24,4,\\\"button\\\"],[4,[38,3],[\\\"click\\\",[30,0,[\\\"closeSidebar\\\"]]],null],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Close sidebar\\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,6],[[24,0,\\\"size-6 text-white\\\"]],[[\\\"@icon\\\"],[\\\"x-mark\\\"]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[8,[39,7],null,[[\\\"@isSidebarOpen\\\",\\\"@setSidebarState\\\"],[[30,1],[30,2]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@isSidebarOpen\\\",\\\"@setSidebarState\\\"],false,[\\\"div\\\",\\\"did-insert\\\",\\\"if\\\",\\\"on\\\",\\\"button\\\",\\\"span\\\",\\\"v2/svg-icon\\\",\\\"side-bar-nav\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/sidebar/index.hbs\",\n    \"isStrictMode\": false\n  });\n  const SMALL_SCREEN_BREAKPOINT = 1024;\n\n  /**\n   * A Glimmer component representing the primary sidebar.\n   *\n   * The sidebar can be toggled open or closed on small screens, and its interaction\n   * is disabled when it's closed on smaller screens by adding the `inert` attribute.\n   *\n   * @class SideBarComponent\n   * @extends Component\n   *\n   * @param {boolean} [this.args.isSidebarOpen] - A boolean flag indicating whether the sidebar is currently open.\n   * @param {Function} [this.args.setSidebarState] - A function to set the `isSidebarOpen` state, used for opening or closing the sidebar.\n   */\n  let SideBarComponent = _exports.default = (_class = class SideBarComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"screenWidth\", _descriptor, this);\n      _defineProperty(this, \"_resizeHandler\", null);\n    }\n    get id() {\n      return this.args.id ?? `sidebar-${(0, _internals.guidFor)(this)}`;\n    }\n    get isSidebarOpen() {\n      return this.args.isSidebarOpen ?? false;\n    }\n\n    /**\n     * Determines whether the sidebar is interactive.\n     *\n     * Returns `true` if the sidebar is closed and on smaller screens,\n     * applying the `inert` attribute to disable interaction and remove the sidebar from the accessibility tree.\n     * This ensures better behaviour on smaller screens.\n     *\n     * See: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inert\n     */\n    get disableInteraction() {\n      return this.screenWidth < SMALL_SCREEN_BREAKPOINT && !this.isSidebarOpen;\n    }\n    closeSidebar() {\n      return this.args.setSidebarState?.(false);\n    }\n    updateScreenWidth() {\n      this.screenWidth = window.innerWidth;\n    }\n    setupResizeListener() {\n      this._resizeHandler = this.updateScreenWidth.bind(this);\n      window.addEventListener(\"resize\", this._resizeHandler);\n    }\n    willDestroy() {\n      super.willDestroy(...arguments);\n      if (this._resizeHandler) {\n        window.removeEventListener(\"resize\", this._resizeHandler);\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"screenWidth\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return window.innerWidth;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"closeSidebar\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"closeSidebar\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"updateScreenWidth\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"updateScreenWidth\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"setupResizeListener\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"setupResizeListener\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, SideBarComponent);\n});","define(\"settify-mvp/components/v2/signup-button\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"mt-4 grid grid-cols-1 gap-y-6 sm:grid-cols-2 sm:gap-x-4\">\n    {{#each this.options as |option|}}\n      {{! template-lint-disable no-nested-interactive }}\n      <label\n        id={{option.id}}\n        aria-label={{option.name}}\n        aria-description={{option.description}}\n        {{on \"click\" (fn this.selectOption option)}}\n        class=\"relative flex cursor-pointer rounded-lg border bg-white p-4 shadow-sm focus:outline-none {{if option.selected 'border-transparent' ''}}\"\n      >\n        <input type=\"radio\" name=\"settify-plan\" value={{option.id}} checked={{option.selected}} class=\"sr-only\" />\n        <span class=\"flex flex-1\">\n          <span class=\"flex flex-col\">\n            <span class=\"block text-sm font-medium text-gray-900\">{{option.name}}</span>\n            {{#each option.body as |text|}}\n              <span class=\"mt-1 flex items-center text-sm text-gray-500\">{{text}}</span>\n            {{/each}}\n            <span class=\"mt-6 flex h-full items-end text-sm font-medium text-gray-900\">\n              {{#if option.link}}\n                <a\n                  href={{option.link.href}}\n                  target=\"_blank\"\n                  rel=\"noopener noreferrer\"\n                  class=\"hover:text-settify-green-dark font-medium text-settify-green underline\"\n                >{{option.link.label}}</a>\n              {{else}}\n                {{option.price}}\n              {{/if}}\n            </span>\n          </span>\n        </span>\n        {{#if option.selected}}\n          <V2::SvgIcon @icon=\"circle-check\" class=\"size-5 text-settify-green\" />\n        {{/if}}\n        <span class=\"pointer-events-none absolute -inset-px rounded-lg border-2 {{if option.selected 'border-settify-green' ''}}\" aria-hidden=\"true\"></span>\n      </label>\n    {{/each}}\n  </div>\n  */\n  {\n    \"id\": \"AqeWCGAi\",\n    \"block\": \"[[[10,0],[14,0,\\\"mt-4 grid grid-cols-1 gap-y-6 sm:grid-cols-2 sm:gap-x-4\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,2],[[28,[37,2],[[30,0,[\\\"options\\\"]]],null]],null],null,[[[1,\\\"    \\\"],[11,\\\"label\\\"],[16,1,[30,1,[\\\"id\\\"]]],[16,\\\"aria-label\\\",[30,1,[\\\"name\\\"]]],[16,\\\"aria-description\\\",[30,1,[\\\"description\\\"]]],[16,0,[29,[\\\"relative flex cursor-pointer rounded-lg border bg-white p-4 shadow-sm focus:outline-none \\\",[52,[30,1,[\\\"selected\\\"]],\\\"border-transparent\\\",\\\"\\\"]]]],[4,[38,5],[\\\"click\\\",[28,[37,6],[[30,0,[\\\"selectOption\\\"]],[30,1]],null]],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"input\\\"],[14,3,\\\"settify-plan\\\"],[15,2,[30,1,[\\\"id\\\"]]],[15,\\\"checked\\\",[30,1,[\\\"selected\\\"]]],[14,0,\\\"sr-only\\\"],[14,4,\\\"radio\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"flex flex-1\\\"],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"flex flex-col\\\"],[12],[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"block text-sm font-medium text-gray-900\\\"],[12],[1,[30,1,[\\\"name\\\"]]],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,2],[[28,[37,2],[[30,1,[\\\"body\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[10,1],[14,0,\\\"mt-1 flex items-center text-sm text-gray-500\\\"],[12],[1,[30,2]],[13],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"          \\\"],[10,1],[14,0,\\\"mt-6 flex h-full items-end text-sm font-medium text-gray-900\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"link\\\"]],[[[1,\\\"              \\\"],[10,3],[15,6,[30,1,[\\\"link\\\",\\\"href\\\"]]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[14,0,\\\"hover:text-settify-green-dark font-medium text-settify-green underline\\\"],[12],[1,[30,1,[\\\"link\\\",\\\"label\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"              \\\"],[1,[30,1,[\\\"price\\\"]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"selected\\\"]],[[[1,\\\"        \\\"],[8,[39,10],[[24,0,\\\"size-5 text-settify-green\\\"]],[[\\\"@icon\\\"],[\\\"circle-check\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[10,1],[15,0,[29,[\\\"pointer-events-none absolute -inset-px rounded-lg border-2 \\\",[52,[30,1,[\\\"selected\\\"]],\\\"border-settify-green\\\",\\\"\\\"]]]],[14,\\\"aria-hidden\\\",\\\"true\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[13]],[\\\"option\\\",\\\"text\\\"],false,[\\\"div\\\",\\\"each\\\",\\\"-track-array\\\",\\\"label\\\",\\\"if\\\",\\\"on\\\",\\\"fn\\\",\\\"input\\\",\\\"span\\\",\\\"a\\\",\\\"v2/svg-icon\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/signup-button.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * Component that renders plans for our sign up page\n   * @param {Array<Object>} options - Plan cards: { id, name, description, body: string[], price?, link?: { href, label }, selected }\n   * @param {Function} onSelect - Called with the plan when a card is clicked\n   */\n  let SignupButton = _exports.default = (_class = class SignupButton extends _component2.default {\n    /**\n     * Read straight from args so the cards re-render when the available plans change\n     * (e.g. the LEAP bundle appearing or disappearing as the country changes).\n     */\n    get options() {\n      return Array.isArray(this.args.options) ? this.args.options : [];\n    }\n    selectOption(option) {\n      if (typeof this.args.onSelect === \"function\") {\n        this.args.onSelect(option);\n      }\n    }\n  }, _applyDecoratedDescriptor(_class.prototype, \"selectOption\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"selectOption\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, SignupButton);\n});","define(\"settify-mvp/components/v2/signup-site\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/service\", \"@ember/template-factory\"], function (_exports, _component, _component2, _service, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/service\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"grid h-48 w-72 grid-cols-4 gap-0\">\n    <div class=\"bg-gray-800\">\n      <div class=\"mx-1 my-3 flex shrink-0 items-center justify-center\">\n        <img class=\"h-4 w-auto\" src=\"/assets/images/settify-logo-type.png\" alt=\"Settify\" />\n      </div>\n      {{#if this.signupService.email}}<div class=\"mx-2 my-1 animate-fade-in rounded-sm border-2 border-gray-500\"></div>{{/if}}\n      {{#if this.signupService.name}}<div class=\"mx-2 my-1 animate-fade-in rounded-sm border-2 border-gray-500\"></div>{{/if}}\n      {{#if this.signupService.firmName}}<div class=\"mx-2 my-1 animate-fade-in rounded-sm border-2 border-gray-500\"></div>{{/if}}\n      {{#if this.signupService.firmWebsite}}<div class=\"mx-2 my-1 animate-fade-in rounded-sm border-2 border-gray-500\"></div>{{/if}}\n      {{#if this.signupService.selectedRegion}}<div class=\"mx-2 my-1 animate-fade-in rounded-sm border-2 border-gray-500\"></div>{{/if}}\n    </div>\n    <div class=\"col-span-3 bg-white\">\n      <div class=\"border-1 flex h-4 justify-end border-b border-gray-200\">\n      </div>\n      <div class=\"-mt-4 flex h-full w-full items-center justify-around\">\n        {{yield}}\n      </div>\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"2j4FyG79\",\n    \"block\": \"[[[10,0],[14,0,\\\"grid h-48 w-72 grid-cols-4 gap-0\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"bg-gray-800\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"mx-1 my-3 flex shrink-0 items-center justify-center\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"img\\\"],[14,0,\\\"h-4 w-auto\\\"],[14,\\\"src\\\",\\\"/assets/images/settify-logo-type.png\\\"],[14,\\\"alt\\\",\\\"Settify\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[41,[30,0,[\\\"signupService\\\",\\\"email\\\"]],[[[10,0],[14,0,\\\"mx-2 my-1 animate-fade-in rounded-sm border-2 border-gray-500\\\"],[12],[13]],[]],null],[1,\\\"\\\\n    \\\"],[41,[30,0,[\\\"signupService\\\",\\\"name\\\"]],[[[10,0],[14,0,\\\"mx-2 my-1 animate-fade-in rounded-sm border-2 border-gray-500\\\"],[12],[13]],[]],null],[1,\\\"\\\\n    \\\"],[41,[30,0,[\\\"signupService\\\",\\\"firmName\\\"]],[[[10,0],[14,0,\\\"mx-2 my-1 animate-fade-in rounded-sm border-2 border-gray-500\\\"],[12],[13]],[]],null],[1,\\\"\\\\n    \\\"],[41,[30,0,[\\\"signupService\\\",\\\"firmWebsite\\\"]],[[[10,0],[14,0,\\\"mx-2 my-1 animate-fade-in rounded-sm border-2 border-gray-500\\\"],[12],[13]],[]],null],[1,\\\"\\\\n    \\\"],[41,[30,0,[\\\"signupService\\\",\\\"selectedRegion\\\"]],[[[10,0],[14,0,\\\"mx-2 my-1 animate-fade-in rounded-sm border-2 border-gray-500\\\"],[12],[13]],[]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"col-span-3 bg-white\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"border-1 flex h-4 justify-end border-b border-gray-200\\\"],[12],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"-mt-4 flex h-full w-full items-center justify-around\\\"],[12],[1,\\\"\\\\n      \\\"],[18,1,null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"&default\\\"],false,[\\\"div\\\",\\\"img\\\",\\\"if\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/signup-site.hbs\",\n    \"isStrictMode\": false\n  });\n  let SignupSite = _exports.default = (_class = class SignupSite extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"signupService\", _descriptor, this);\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"signupService\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, SignupSite);\n});","define(\"settify-mvp/components/v2/slide-over/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.open}}\n    <slide-over class=\"relative z-40\" aria-labelledby=\"slide-over-title\" role=\"dialog\" aria-modal=\"true\">\n      {{#if this.overlay}}\n        <div id=\"slide-over-overlay\" class=\"fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity\" {{on \"click\" this.closeDrawer}}></div>\n      {{/if}}\n  \n      <div class=\"pointer-events-auto fixed h-full {{this.maxWidthClass}} inset-y-0 right-0 box-border w-full bg-white shadow-2xl\">\n        <div class=\"flex h-full flex-col divide-y divide-gray-200 bg-white\">\n          <div class=\"flex min-h-0 flex-1 flex-col overflow-y-scroll py-6\">\n            <div class=\"px-4 sm:px-6\">\n              <div class=\"flex items-start justify-between\">\n                <h3 class=\"text-base font-semibold leading-6\" id=\"slide-over-title\">\n                  {{@title}}\n                </h3>\n                <div class=\"ml-3 flex h-7 items-center\">\n                  <button type=\"button\" class=\"group -m-2.5 rounded-md p-1.5 transition hover:bg-gray-50\" {{on \"click\" this.closeDrawer}}>\n                    <span class=\"sr-only\">Close panel</span>\n                    <V2::SvgIcon @icon=\"x-mark\" class=\"size-6\" />\n                  </button>\n                </div>\n              </div>\n            </div>\n            <div class=\"relative mt-4 flex-1 px-4 sm:px-6\">\n              {{yield}}\n            </div>\n          </div>\n          {{#if this.canSave}}\n            <div class=\"flex flex-shrink-0 justify-end gap-4 p-4\">\n              <V2::Button @variant=\"outlined\" aria-label=\"Close panel\" {{on \"click\" this.closeDrawer}}>\n                Cancel\n              </V2::Button>\n              <V2::Button type=\"submit\" @variant=\"solid\" {{on \"click\" this.saveChanges}}>\n                Save\n              </V2::Button>\n            </div>\n          {{/if}}\n        </div>\n      </div>\n    </slide-over>\n  {{/if}}\n  */\n  {\n    \"id\": \"URehhCKf\",\n    \"block\": \"[[[41,[30,0,[\\\"open\\\"]],[[[1,\\\"  \\\"],[10,\\\"slide-over\\\"],[14,0,\\\"relative z-40\\\"],[14,\\\"aria-labelledby\\\",\\\"slide-over-title\\\"],[14,\\\"role\\\",\\\"dialog\\\"],[14,\\\"aria-modal\\\",\\\"true\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"overlay\\\"]],[[[1,\\\"      \\\"],[11,0],[24,1,\\\"slide-over-overlay\\\"],[24,0,\\\"fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity\\\"],[4,[38,3],[\\\"click\\\",[30,0,[\\\"closeDrawer\\\"]]],null],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n    \\\"],[10,0],[15,0,[29,[\\\"pointer-events-auto fixed h-full \\\",[30,0,[\\\"maxWidthClass\\\"]],\\\" inset-y-0 right-0 box-border w-full bg-white shadow-2xl\\\"]]],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"flex h-full flex-col divide-y divide-gray-200 bg-white\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"flex min-h-0 flex-1 flex-col overflow-y-scroll py-6\\\"],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"px-4 sm:px-6\\\"],[12],[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"flex items-start justify-between\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"h3\\\"],[14,0,\\\"text-base font-semibold leading-6\\\"],[14,1,\\\"slide-over-title\\\"],[12],[1,\\\"\\\\n                \\\"],[1,[30,1]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"ml-3 flex h-7 items-center\\\"],[12],[1,\\\"\\\\n                \\\"],[11,\\\"button\\\"],[24,0,\\\"group -m-2.5 rounded-md p-1.5 transition hover:bg-gray-50\\\"],[24,4,\\\"button\\\"],[4,[38,3],[\\\"click\\\",[30,0,[\\\"closeDrawer\\\"]]],null],[12],[1,\\\"\\\\n                  \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Close panel\\\"],[13],[1,\\\"\\\\n                  \\\"],[8,[39,7],[[24,0,\\\"size-6\\\"]],[[\\\"@icon\\\"],[\\\"x-mark\\\"]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"relative mt-4 flex-1 px-4 sm:px-6\\\"],[12],[1,\\\"\\\\n            \\\"],[18,2,null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"canSave\\\"]],[[[1,\\\"          \\\"],[10,0],[14,0,\\\"flex flex-shrink-0 justify-end gap-4 p-4\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,9],[[24,\\\"aria-label\\\",\\\"Close panel\\\"],[4,[38,3],[\\\"click\\\",[30,0,[\\\"closeDrawer\\\"]]],null]],[[\\\"@variant\\\"],[\\\"outlined\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              Cancel\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[8,[39,9],[[24,4,\\\"submit\\\"],[4,[38,3],[\\\"click\\\",[30,0,[\\\"saveChanges\\\"]]],null]],[[\\\"@variant\\\"],[\\\"solid\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              Save\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@title\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"slide-over\\\",\\\"div\\\",\\\"on\\\",\\\"h3\\\",\\\"button\\\",\\\"span\\\",\\\"v2/svg-icon\\\",\\\"yield\\\",\\\"v2/button\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/slide-over/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component representing a slide-over/drawer UI element.\n   *\n   * @class SlideOverComponent\n   * @extends Component\n   *\n   * @param {Object} [this.args] - Arguments for configuring the component.\n   * @param {string} [this.args.title] - The title of the slide-over/drawer.\n   * @param {string} [this.args.maxWidth=md] - The max width of the slide over.\n   * @param {boolean} [this.args.overlay=true] - Controls whether the overlay is shown.\n   * @param {boolean} [this.args.open=false] - Controls whether the drawer is open.\n   * @param {Function} [this.args.onClose] - Callback function invoked when the drawer is closed.\n   * @param {Function} [this.args.onSave] - Callback function invoked when the save button is clicked.\n   */\n  let SlideOverComponent = _exports.default = (_class = class SlideOverComponent extends _component2.default {\n    get overlay() {\n      return this.args.overlay ?? true;\n    }\n    get open() {\n      return this.args.open ?? false;\n    }\n    get maxWidthClass() {\n      const styleMap = {\n        default: \"max-w-md\",\n        large: \"max-w-2xl\"\n      };\n      return styleMap[this.args.maxWidth] ?? styleMap.default;\n    }\n    get canSave() {\n      return typeof this.args.onSave === \"function\";\n    }\n    closeDrawer() {\n      if (this.args.onClose) {\n        return this.args.onClose();\n      }\n    }\n    saveChanges() {\n      return this.args.onSave();\n    }\n  }, _applyDecoratedDescriptor(_class.prototype, \"closeDrawer\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"closeDrawer\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"saveChanges\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"saveChanges\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, SlideOverComponent);\n});","define(\"settify-mvp/components/v2/summary-element/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/service\", \"settify-mvp/helpers/get-answers-from\", \"@ember/template-factory\"], function (_exports, _component, _component2, _service, _getAnswersFrom, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/service\",0,\"settify-mvp/helpers/get-answers-from\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (and this.shouldDisplay this.page)}}\n    {{! TODO: Handle chapter headings when needed }}\n    {{#if this.showHeading}}\n      {{#if this.page.title}}\n        {{#if this.page.bannerTitle}}\n          <div class=\"summary-element-header my-4 flex gap-2 rounded-md bg-brand-primary-color-rgb py-1 text-white\">\n            {{! TODO: determine if we support icons in banner title?? }}\n            <h2 class=\"grow text-center text-lg font-semibold leading-7 sm:truncate sm:text-xl sm:tracking-tight\">\n              {{parse-text this.page.title touch=@clientRecord.touch model=this.answersObject clientRecord=@clientRecord context=@context}}\n            </h2>\n          </div>\n        {{else}}\n          <div class=\"summary-element-header mb-0 mt-3 flex gap-2\">\n            {{#if this.page.icon}}\n              <LineIcon @src={{sum \"https://cdn.settify.com.au/icons/\" (de-fingerprint this.page.icon)}} />\n            {{/if}}\n            <h3 class=\"grow font-semibold\">\n              {{parse-text this.page.title touch=@clientRecord.touch model=this.answersObject clientRecord=@clientRecord context=@context}}\n            </h3>\n          </div>\n        {{/if}}\n      {{/if}}\n    {{/if}}\n  \n    {{#if this.showQuestion}}\n      {{#each this.page.questions as |question|}}\n        {{#if (or (eq this.contextObject.chapter \"standalone\") (eq question.id this.contextObject.question))}}\n          <SettifyInputSwitcher\n            @question={{question}}\n            @model={{this.answersObject}}\n            @clientRecord={{@clientRecord}}\n            @context={{this.contextObject}}\n            @displayOnly={{true}}\n            @adminMode={{true}}\n          />\n        {{/if}}\n      {{/each}}\n    {{/if}}\n  {{/if}}\n  */\n  {\n    \"id\": \"vY+/rfrK\",\n    \"block\": \"[[[41,[28,[37,1],[[30,0,[\\\"shouldDisplay\\\"]],[30,0,[\\\"page\\\"]]],null],[[[41,[30,0,[\\\"showHeading\\\"]],[[[41,[30,0,[\\\"page\\\",\\\"title\\\"]],[[[41,[30,0,[\\\"page\\\",\\\"bannerTitle\\\"]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"summary-element-header my-4 flex gap-2 rounded-md bg-brand-primary-color-rgb py-1 text-white\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"          \\\"],[10,\\\"h2\\\"],[14,0,\\\"grow text-center text-lg font-semibold leading-7 sm:truncate sm:text-xl sm:tracking-tight\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[28,[35,4],[[30,0,[\\\"page\\\",\\\"title\\\"]]],[[\\\"touch\\\",\\\"model\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,1,[\\\"touch\\\"]],[30,0,[\\\"answersObject\\\"]],[30,1],[30,2]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"summary-element-header mb-0 mt-3 flex gap-2\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"page\\\",\\\"icon\\\"]],[[[1,\\\"            \\\"],[8,[39,5],null,[[\\\"@src\\\"],[[28,[37,6],[\\\"https://cdn.settify.com.au/icons/\\\",[28,[37,7],[[30,0,[\\\"page\\\",\\\"icon\\\"]]],null]],null]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[10,\\\"h3\\\"],[14,0,\\\"grow font-semibold\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[28,[35,4],[[30,0,[\\\"page\\\",\\\"title\\\"]]],[[\\\"touch\\\",\\\"model\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,1,[\\\"touch\\\"]],[30,0,[\\\"answersObject\\\"]],[30,1],[30,2]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[]],null]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showQuestion\\\"]],[[[42,[28,[37,10],[[28,[37,10],[[30,0,[\\\"page\\\",\\\"questions\\\"]]],null]],null],null,[[[41,[28,[37,11],[[28,[37,12],[[30,0,[\\\"contextObject\\\",\\\"chapter\\\"]],\\\"standalone\\\"],null],[28,[37,12],[[30,3,[\\\"id\\\"]],[30,0,[\\\"contextObject\\\",\\\"question\\\"]]],null]],null],[[[1,\\\"        \\\"],[8,[39,13],null,[[\\\"@question\\\",\\\"@model\\\",\\\"@clientRecord\\\",\\\"@context\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\"],[[30,3],[30,0,[\\\"answersObject\\\"]],[30,1],[30,0,[\\\"contextObject\\\"]],true,true]],null],[1,\\\"\\\\n\\\"]],[]],null]],[3]],null]],[]],null]],[]],null]],[\\\"@clientRecord\\\",\\\"@context\\\",\\\"question\\\"],false,[\\\"if\\\",\\\"and\\\",\\\"div\\\",\\\"h2\\\",\\\"parse-text\\\",\\\"line-icon\\\",\\\"sum\\\",\\\"de-fingerprint\\\",\\\"h3\\\",\\\"each\\\",\\\"-track-array\\\",\\\"or\\\",\\\"eq\\\",\\\"settify-input-switcher\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/summary-element/index.hbs\",\n    \"isStrictMode\": false\n  });\n  let SummaryElementComponent = _exports.default = (_class = class SummaryElementComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"questionnaireLogic\", _descriptor, this);\n    }\n    /**\n     * Get the page definition based on the provided context.\n     *\n     * @method page\n     * @return {Object} The page definition.\n     * @example\n     * {\n     *  id: String,\n     *  title: String,\n     *  questions: [Array],\n     *  displayIf: {Object},\n     * }\n     */\n    get page() {\n      const context = this.generateContextObject();\n      return this.questionnaireLogic.getPageDefinition(context.induction, context.chapter, context.page);\n    }\n\n    /**\n     * Get the clients answers based on the provided context and page.\n     *\n     * @method answersObject\n     * @return {Object} The clients provided answers.\n     */\n    get answersObject() {\n      const context = this.generateContextObject();\n      return (0, _getAnswersFrom.getAnswersFrom)([], {\n        client: this.args.clientRecord,\n        induction: context.induction,\n        chapter: context.chapter,\n        page: this.page.id,\n        answersLocation: this.page.answersLocation,\n        repeatToken: context.repeat,\n        create: true\n      });\n    }\n\n    /**\n     * Determines if the page should be displayed or not\n     *\n     * @method shouldDisplay\n     * @return {Boolean} True if the page should be displayed.\n     */\n    get shouldDisplay() {\n      const context = this.generateContextObject();\n      const {\n        induction,\n        chapter,\n        page\n      } = this.questionnaireLogic.getPageDefinition(context.induction, context.chapter, context.page, true) || {}; // True on the end means we get the induction, chapter and page definition back\n      if (!induction || !chapter || !page) {\n        return false;\n      }\n      const pageDefinition = {\n        inductionObject: induction,\n        chapterObject: chapter,\n        pageObject: page,\n        repeat: induction.repeatToken\n      };\n      return this.questionnaireLogic.validPageOrChapter(pageDefinition, this.args.clientRecord, {\n        adminMode: true\n      });\n    }\n\n    /**\n     * Get the context of where in the induction we should be referencing\n     *\n     * @method shouldDisplay\n     * @return {Object} The context object.\n     */\n    get contextObject() {\n      return this.generateContextObject();\n    }\n\n    /**\n     * Generates a context object based on the summary element's ID.\n     *\n     * @method generateContextObject\n     * @return {Object} The generated context object.\n     */\n    generateContextObject() {\n      if (!this.args.summaryElement) {\n        return {};\n      }\n      const [chapter, page, question] = this.args.summaryElement.id.split(\".\");\n      return {\n        question,\n        page,\n        chapter,\n        induction: this.args.induction.id,\n        repeat: this.args.induction.repeatToken\n      };\n    }\n\n    /**\n     * Checks if the heading should be displayed.\n     *\n     * @method showHeading\n     * @return {Boolean} True if the heading should be displayed, false otherwise.\n     */\n    get showHeading() {\n      const type = this.getElementType(this.args.summaryElement);\n      return [\"fullPage\", \"pageHeading\"].includes(type) && this.page.title;\n    }\n\n    /**\n     * Checks if the question should be displayed.\n     *\n     * @method showQuestion\n     * @return {Boolean} True if the question should be displayed, false otherwise.\n     */\n    get showQuestion() {\n      const type = this.getElementType(this.args.summaryElement);\n      return [\"fullPage\", \"pageQuestion\"].includes(type);\n    }\n    getElementType(element = {}) {\n      if (element.loopedPage) {\n        return \"loopedPage\";\n      }\n      if (/^standalone\\..+/.test(element.id)) {\n        return \"fullPage\";\n      }\n      const numberOfPartsInId = element.id.split(\".\").length;\n      if (numberOfPartsInId === 1) {\n        return \"chapterHeading\";\n      }\n      if (numberOfPartsInId === 2) {\n        return \"pageHeading\";\n      }\n      return \"pageQuestion\";\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"questionnaireLogic\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, SummaryElementComponent);\n});","define(\"settify-mvp/components/v2/svg-icon/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <svg aria-hidden=\"true\" {{did-insert this.loadAndInsertSvg}} ...attributes></svg>\n  */\n  {\n    \"id\": \"Y/KwPTRz\",\n    \"block\": \"[[[11,\\\"svg\\\"],[24,\\\"aria-hidden\\\",\\\"true\\\"],[17,1],[4,[38,1],[[30,0,[\\\"loadAndInsertSvg\\\"]]],null],[12],[13]],[\\\"&attrs\\\"],false,[\\\"svg\\\",\\\"did-insert\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/svg-icon/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component responsible for dynamically loading and injecting SVG content into a <svg> element.\n   * @class SvgIconComponent\n   * @extends Component\n   *\n   * @param {string} this.args.icon - The name of the SVG file to load. This file should be located in the `/assets/icons/` directory.\n   *\n   * @example\n   * ```handlebars\n   * <V2::SvgIcon @icon=\"check\" class=\"text-green-600\" />\n   * ```\n   */\n  let SvgIconComponent = _exports.default = (_class = class SvgIconComponent extends _component2.default {\n    /**\n     * Loads and inserts SVG content into the current <svg> element.\n     * @param {HTMLElement} element - The <svg> element in the template.\n     */\n    async loadAndInsertSvg(element) {\n      const svgContent = await this.fetchSvg(this.args.icon);\n      if (!svgContent) {\n        console.error(`Failed to load SVG: ${this.args.icon}`);\n        return;\n      }\n      this.insertSvg(element, svgContent);\n    }\n\n    /**\n     * Fetches the SVG content from the server.\n     * @param {string} iconName - The name of the SVG file to load.\n     * @returns {Promise<string|null>} - The SVG content as a string, or null if the fetch fails.\n     */\n    async fetchSvg(iconName) {\n      try {\n        const response = await fetch(`/assets/icons/${iconName}.svg`);\n        return response.ok ? await response.text() : null;\n      } catch (error) {\n        console.error(`Error fetching SVG: ${error}`);\n        return null;\n      }\n    }\n\n    /**\n     * Inserts the fetched SVG content into the existing <svg> element.\n     * @param {HTMLElement} element - The existing <svg> element in the DOM.\n     * @param {string} svgContent - The SVG content as a string.\n     */\n    insertSvg(element, svgContent) {\n      const parser = new DOMParser();\n      const loadedSvg = parser.parseFromString(svgContent, \"image/svg+xml\").querySelector(\"svg\");\n      if (!loadedSvg) {\n        console.error(`The loaded content does not contain a valid <svg> element.`);\n        return;\n      }\n      this.applyAttributes(element, loadedSvg);\n      element.append(...loadedSvg.childNodes);\n    }\n\n    /**\n     * Applies attributes from the dynamically loaded SVG to the existing <svg> element.\n     * @param {HTMLElement} target - The existing <svg> element in the DOM.\n     * @param {HTMLElement} source - The dynamically loaded <svg> element.\n     */\n    applyAttributes(target, source) {\n      Array.from(source.attributes).forEach(attr => target.setAttribute(attr.name, attr.value));\n    }\n  }, _applyDecoratedDescriptor(_class.prototype, \"loadAndInsertSvg\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"loadAndInsertSvg\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, SvgIconComponent);\n});","define(\"settify-mvp/components/v2/tab-list/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@glimmer/tracking\", \"@ember/object\", \"settify-mvp/utils/defaults-object-initializer\", \"settify-mvp/utils/format-item-label\", \"@ember/object/internals\", \"@ember/template-factory\"], function (_exports, _component, _component2, _tracking, _object, _defaultsObjectInitializer, _formatItemLabel, _internals, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"settify-mvp/utils/defaults-object-initializer\",0,\"settify-mvp/utils/format-item-label\",0,\"@ember/object/internals\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"relative w-full rounded-lg md:flex md:border\" id={{this.id}} {{did-insert this.initialiseTabs}}>\n    {{! Tab list }}\n    <ul class=\"flex flex-col gap-4 p-2 text-base font-medium text-gray-600 md:w-1/5 md:p-4\" role=\"tablist\">\n      {{#each this.tabLabels as |tabLabel index|}}\n        {{! Tabs }}\n        <li\n          class=\"inline-flex w-full items-center rounded-lg {{if (eq this.activeTab index) 'bg-brand-primary-color-rgb text-white' 'bg-gray-50 hover:bg-gray-100'}}\"\n          role=\"presentation\"\n        >\n          <V2::Button\n            id=\"{{this.id}}-tab-{{index}}\"\n            class=\"settify-tab-item w-full truncate\"\n            role=\"tab\"\n            aria-selected={{if (eq this.activeTab index) \"true\" \"false\"}}\n            aria-controls=\"{{this.id}}-tabpanel\"\n            {{on \"click\" (fn this.selectTab index)}}\n          >\n            {{tabLabel}}\n          </V2::Button>\n        </li>\n      {{/each}}\n      {{! Add new tab }}\n      <li class=\"inline-flex w-full items-center rounded-lg bg-gray-50 hover:bg-gray-100\" role=\"presentation\">\n        <V2::Button {{on \"click\" this.addTab}} id=\"{{this.id}}-add-tab\" class=\"settify-tab-add w-full\">\n          <span class=\"flex items-center justify-center gap-2\">\n            <V2::SvgIcon @icon=\"circle-plus\" class=\"size-4\" />\n            Add\n            <span class=\"sr-only\">new {{this.itemType}}</span>\n          </span>\n        </V2::Button>\n      </li>\n    </ul>\n  \n    {{! Tab content }}\n    <div class=\"w-full border-l-0 p-2 md:border-l md:p-4\" role=\"tabpanel\" id=\"{{this.id}}-tabpanel\" aria-labelledby=\"tab-{{this.activeTab}}\">\n      {{#each this.tabItems as |tabItem index|}}\n        {{#if (eq this.activeTab index)}}\n          {{yield tabItem to=\"tabContent\"}}\n          <div class=\"md:flex md:justify-end\">\n            <V2::Button @variant=\"outlined\" @size=\"small\" {{on \"click\" (fn this.removeTab index)}} id=\"{{this.id}}-delete-tab\" class=\"mt-4 w-full md:w-auto\">\n              <span class=\"inline-flex items-center gap-1.5 text-gray-600\">\n                <V2::SvgIcon @icon=\"trash\" class=\"size-4 text-red-500\" />\n                Delete\n                <span class=\"sr-only\">{{this.itemType}}</span>\n              </span>\n            </V2::Button>\n          </div>\n        {{/if}}\n      {{else}}\n        <p class=\"inline-flex items-center text-base text-gray-600\">\n          No\n          {{this.itemType}}'s to display\n        </p>\n      {{/each}}\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"JtoLBXwn\",\n    \"block\": \"[[[11,0],[24,0,\\\"relative w-full rounded-lg md:flex md:border\\\"],[16,1,[30,0,[\\\"id\\\"]]],[4,[38,1],[[30,0,[\\\"initialiseTabs\\\"]]],null],[12],[1,\\\"\\\\n\\\"],[1,\\\"  \\\"],[10,\\\"ul\\\"],[14,0,\\\"flex flex-col gap-4 p-2 text-base font-medium text-gray-600 md:w-1/5 md:p-4\\\"],[14,\\\"role\\\",\\\"tablist\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,4],[[28,[37,4],[[30,0,[\\\"tabLabels\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[10,\\\"li\\\"],[15,0,[29,[\\\"inline-flex w-full items-center rounded-lg \\\",[52,[28,[37,7],[[30,0,[\\\"activeTab\\\"]],[30,2]],null],\\\"bg-brand-primary-color-rgb text-white\\\",\\\"bg-gray-50 hover:bg-gray-100\\\"]]]],[14,\\\"role\\\",\\\"presentation\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,8],[[16,1,[29,[[30,0,[\\\"id\\\"]],\\\"-tab-\\\",[30,2]]]],[24,0,\\\"settify-tab-item w-full truncate\\\"],[24,\\\"role\\\",\\\"tab\\\"],[16,\\\"aria-selected\\\",[52,[28,[37,7],[[30,0,[\\\"activeTab\\\"]],[30,2]],null],\\\"true\\\",\\\"false\\\"]],[16,\\\"aria-controls\\\",[29,[[30,0,[\\\"id\\\"]],\\\"-tabpanel\\\"]]],[4,[38,9],[\\\"click\\\",[28,[37,10],[[30,0,[\\\"selectTab\\\"]],[30,2]],null]],null]],null,[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[1,[30,1]],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[1,2]],null],[1,\\\"    \\\"],[10,\\\"li\\\"],[14,0,\\\"inline-flex w-full items-center rounded-lg bg-gray-50 hover:bg-gray-100\\\"],[14,\\\"role\\\",\\\"presentation\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,8],[[16,1,[29,[[30,0,[\\\"id\\\"]],\\\"-add-tab\\\"]]],[24,0,\\\"settify-tab-add w-full\\\"],[4,[38,9],[\\\"click\\\",[30,0,[\\\"addTab\\\"]]],null]],null,[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"flex items-center justify-center gap-2\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,12],[[24,0,\\\"size-4\\\"]],[[\\\"@icon\\\"],[\\\"circle-plus\\\"]],null],[1,\\\"\\\\n          Add\\\\n          \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"new \\\"],[1,[30,0,[\\\"itemType\\\"]]],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"  \\\"],[10,0],[14,0,\\\"w-full border-l-0 p-2 md:border-l md:p-4\\\"],[14,\\\"role\\\",\\\"tabpanel\\\"],[15,1,[29,[[30,0,[\\\"id\\\"]],\\\"-tabpanel\\\"]]],[15,\\\"aria-labelledby\\\",[29,[\\\"tab-\\\",[30,0,[\\\"activeTab\\\"]]]]],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,4],[[28,[37,4],[[30,0,[\\\"tabItems\\\"]]],null]],null],null,[[[41,[28,[37,7],[[30,0,[\\\"activeTab\\\"]],[30,4]],null],[[[1,\\\"        \\\"],[18,5,[[30,3]]],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"md:flex md:justify-end\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,8],[[16,1,[29,[[30,0,[\\\"id\\\"]],\\\"-delete-tab\\\"]]],[24,0,\\\"mt-4 w-full md:w-auto\\\"],[4,[38,9],[\\\"click\\\",[28,[37,10],[[30,0,[\\\"removeTab\\\"]],[30,4]],null]],null]],[[\\\"@variant\\\",\\\"@size\\\"],[\\\"outlined\\\",\\\"small\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"inline-flex items-center gap-1.5 text-gray-600\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,12],[[24,0,\\\"size-4 text-red-500\\\"]],[[\\\"@icon\\\"],[\\\"trash\\\"]],null],[1,\\\"\\\\n              Delete\\\\n              \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,[30,0,[\\\"itemType\\\"]]],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[3,4]],[[[1,\\\"      \\\"],[10,2],[14,0,\\\"inline-flex items-center text-base text-gray-600\\\"],[12],[1,\\\"\\\\n        No\\\\n        \\\"],[1,[30,0,[\\\"itemType\\\"]]],[1,\\\"'s to display\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"tabLabel\\\",\\\"index\\\",\\\"tabItem\\\",\\\"index\\\",\\\"&tabContent\\\"],false,[\\\"div\\\",\\\"did-insert\\\",\\\"ul\\\",\\\"each\\\",\\\"-track-array\\\",\\\"li\\\",\\\"if\\\",\\\"eq\\\",\\\"v2/button\\\",\\\"on\\\",\\\"fn\\\",\\\"span\\\",\\\"v2/svg-icon\\\",\\\"yield\\\",\\\"p\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/tab-list/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component for rendering a tabbed list with dynamic tabs.\n   *\n   * @class TabListComponent\n   * @extends Component\n   *\n   * @param {Array} this.args.tabs - Array of objects representing each tab in the list.\n   * @param {string} [this.args.id] - Optional unique identifier for the component instance.\n   * @param {string} [this.args.itemTypeString] - Optional string defining the type of each item (default: \"item\").\n   * @param {string} [this.args.itemLabelFormat] - Optional format string for displaying tab labels (default: \"label title\").\n   * @param {Object} clientRecord - The client record - currently only used to trigger reactivity of the tab labels when the `touch` value changes.\n   * @param {Function} [this.args.onChange] - Optional callback that fires when a tab is selected.\n   *\n   * @example\n   * <V2::TabList\n   *   @tabs={{this.tabs}}\n   *   @id=\"tablist1\"\n   *   @itemTypeString=\"section\"\n   *   @itemLabelFormat=\"title\"\n   *   @onChange={{this.handleTabChange}}\n   * >\n   *   {{!-- Tab content goes here --}}\n   * </V2::TabList>\n   */\n  let TabListComponent = _exports.default = (_class = class TabListComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"activeTab\", _descriptor, this);\n      _initializerDefineProperty(this, \"tabItems\", _descriptor2, this);\n      _defineProperty(this, \"defaultsObjectInitializer\", new _defaultsObjectInitializer.DefaultsObjectInitializer(this.args.defaults, true));\n    }\n    // TODO: Revisit this approach for better reactivity of tab labels\n    // Currently relying on accessing `this.args.clientRecord.touch` to trigger reactivity.\n    get tabLabels() {\n      // Accessing touch to trigger reactivity, no need to store it.\n      this.args?.clientRecord?.touch;\n\n      // Return an array of tab labels (strings)\n      return this.tabItems.map(tabItem => (0, _formatItemLabel.default)(tabItem, this.tabLabelFormat) || `New ${this.itemType}`);\n    }\n    get id() {\n      return this.args.id ?? `tab-list-component-${(0, _internals.guidFor)(this)}`;\n    }\n    get itemType() {\n      return this.args.itemTypeString ?? \"item\";\n    }\n    get tabLabelFormat() {\n      return this.args.itemLabelFormat ?? \"label title\";\n    }\n    selectTab(index) {\n      this.activeTab = index;\n    }\n    addTab() {\n      if (Array.isArray(this.args.tabs)) {\n        this.args.tabs.pushObject(this.defaultsObjectInitializer.createDefaultItem());\n        this.activeTab = this.args.tabs.length - 1;\n      }\n    }\n    removeTab(tabIndex) {\n      if (Array.isArray(this.args.tabs)) {\n        this.args.tabs.removeAt(tabIndex);\n        this.activeTab = this.args.tabs.length ? Math.min(this.activeTab, this.args.tabs.length - 1) : 0;\n      }\n    }\n    initialiseTabs() {\n      // If the tabs list is empty, we should add one start with\n      if (!this.tabItems.length) {\n        this.addTab();\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"activeTab\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return 0;\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"tabItems\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return this.args.tabs || [];\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"selectTab\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"selectTab\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"addTab\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"addTab\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"removeTab\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"removeTab\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"initialiseTabs\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"initialiseTabs\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, TabListComponent);\n});","define(\"settify-mvp/components/v2/team-mapping-select/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/service\", \"@ember/object\", \"@glimmer/tracking\", \"@ember/template-factory\"], function (_exports, _component, _component2, _service, _object, _tracking, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/service\",0,\"@ember/object\",0,\"@glimmer/tracking\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#each @teamMember.worksWith as |colleague|}}\n    <div class=\"my-2 flex items-start justify-between gap-2\">\n      <div>\n        <span class=\"block text-sm font-medium leading-6\">{{get (get this.lawyerList.byID colleague.personID) \"name\"}}</span>\n        <span class=\"block text-sm text-gray-600\">{{get (get this.lawyerList.byID colleague.personID) \"email\"}}</span>\n  \n        {{#if (eq @teamMember.personType \"lawyer\")}}\n          <V2::RadioButton\n            @value={{colleague.personID}}\n            @label=\"Send appointment confirmation emails from this email address\"\n            @name=\"send-from-radio\"\n            @checked={{eq @teamMember.sendFrom.personID colleague.personID}}\n            @id=\"send-from-{{colleague.personID}}\"\n            {{on \"change\" (fn this.selectSendFrom colleague.personID)}}\n          />\n          {{#if (not-eq @teamMember.sendFrom.personID colleague.personID)}}\n            <V2::Checkbox @value={{colleague.bcc}} @label=\"BCC into emails instead of CCing\" @id=\"bcc-colleague-{{colleague.personID}}\" />\n          {{/if}}\n        {{/if}}\n      </div>\n      <V2::Button @variant=\"outlined\" @size=\"small\" class=\"text-red-500\" {{on \"click\" (fn this.removeColleague colleague)}}>\n        <V2::SvgIcon @icon=\"trash\" class=\"size-4\" />\n        <span class=\"sr-only\">Remove</span>\n      </V2::Button>\n    </div>\n  {{/each}}\n  \n  <div class=\"my-4\">\n    {{#if this.addingColleague}}\n      <V2::SelectBox @options={{this.unaddedColleagues}} @selectedItem=\"\" @onChange={{this.addColleague}} />\n      <V2::Button @variant=\"outlined\" @size=\"small\" class=\"mt-2\" {{on \"click\" this.toggleAddingColleague}}>\n        Cancel\n      </V2::Button>\n    {{else}}\n      <V2::Button @variant=\"outlined\" @size=\"small\" {{on \"click\" this.toggleAddingColleague}}>\n        Add\n        {{if @teamMember.worksWith.length \"another\"}}\n        {{#if (eq @teamMember.personType \"lawyer\")}}\n          assistant\n        {{else}}\n          lawyer to support\n        {{/if}}\n      </V2::Button>\n    {{/if}}\n  </div>\n  \n  {{#if (eq @teamMember.personType \"lawyer\")}}\n    <div class=\"my-4\">\n      <V2::RadioButton\n        @value={{null}}\n        @label=\"Send appointment confirmation emails from {{@teamMember.name}} directly\"\n        @name=\"send-from-radio\"\n        @checked={{eq @teamMember.sendFrom.personID null}}\n        @id=\"send-from-self\"\n        {{on \"change\" (fn this.selectSendFrom null)}}\n      />\n      {{#if @teamMember.sendFrom.personID}}\n        <V2::Checkbox @value={{@teamMember.doNotBCC}} @label=\"Do not BCC {{@teamMember.name}} into emails\" @id=\"do-not-bcc-team-member\" />\n      {{/if}}\n    </div>\n  {{/if}}\n  */\n  {\n    \"id\": \"0pgsYpiX\",\n    \"block\": \"[[[42,[28,[37,1],[[28,[37,1],[[30,1,[\\\"worksWith\\\"]]],null]],null],null,[[[1,\\\"  \\\"],[10,0],[14,0,\\\"my-2 flex items-start justify-between gap-2\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[12],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"block text-sm font-medium leading-6\\\"],[12],[1,[28,[35,4],[[28,[37,4],[[30,0,[\\\"lawyerList\\\",\\\"byID\\\"]],[30,2,[\\\"personID\\\"]]],null],\\\"name\\\"],null]],[13],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"block text-sm text-gray-600\\\"],[12],[1,[28,[35,4],[[28,[37,4],[[30,0,[\\\"lawyerList\\\",\\\"byID\\\"]],[30,2,[\\\"personID\\\"]]],null],\\\"email\\\"],null]],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,6],[[30,1,[\\\"personType\\\"]],\\\"lawyer\\\"],null],[[[1,\\\"        \\\"],[8,[39,7],[[4,[38,8],[\\\"change\\\",[28,[37,9],[[30,0,[\\\"selectSendFrom\\\"]],[30,2,[\\\"personID\\\"]]],null]],null]],[[\\\"@value\\\",\\\"@label\\\",\\\"@name\\\",\\\"@checked\\\",\\\"@id\\\"],[[30,2,[\\\"personID\\\"]],\\\"Send appointment confirmation emails from this email address\\\",\\\"send-from-radio\\\",[28,[37,6],[[30,1,[\\\"sendFrom\\\",\\\"personID\\\"]],[30,2,[\\\"personID\\\"]]],null],[29,[\\\"send-from-\\\",[30,2,[\\\"personID\\\"]]]]]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,10],[[30,1,[\\\"sendFrom\\\",\\\"personID\\\"]],[30,2,[\\\"personID\\\"]]],null],[[[1,\\\"          \\\"],[8,[39,11],null,[[\\\"@value\\\",\\\"@label\\\",\\\"@id\\\"],[[30,2,[\\\"bcc\\\"]],\\\"BCC into emails instead of CCing\\\",[29,[\\\"bcc-colleague-\\\",[30,2,[\\\"personID\\\"]]]]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,12],[[24,0,\\\"text-red-500\\\"],[4,[38,8],[\\\"click\\\",[28,[37,9],[[30,0,[\\\"removeColleague\\\"]],[30,2]],null]],null]],[[\\\"@variant\\\",\\\"@size\\\"],[\\\"outlined\\\",\\\"small\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[39,13],[[24,0,\\\"size-4\\\"]],[[\\\"@icon\\\"],[\\\"trash\\\"]],null],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Remove\\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"\\\\n\\\"],[10,0],[14,0,\\\"my-4\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"addingColleague\\\"]],[[[1,\\\"    \\\"],[8,[39,14],null,[[\\\"@options\\\",\\\"@selectedItem\\\",\\\"@onChange\\\"],[[30,0,[\\\"unaddedColleagues\\\"]],\\\"\\\",[30,0,[\\\"addColleague\\\"]]]],null],[1,\\\"\\\\n    \\\"],[8,[39,12],[[24,0,\\\"mt-2\\\"],[4,[38,8],[\\\"click\\\",[30,0,[\\\"toggleAddingColleague\\\"]]],null]],[[\\\"@variant\\\",\\\"@size\\\"],[\\\"outlined\\\",\\\"small\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      Cancel\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[8,[39,12],[[4,[38,8],[\\\"click\\\",[30,0,[\\\"toggleAddingColleague\\\"]]],null]],[[\\\"@variant\\\",\\\"@size\\\"],[\\\"outlined\\\",\\\"small\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      Add\\\\n      \\\"],[1,[52,[30,1,[\\\"worksWith\\\",\\\"length\\\"]],\\\"another\\\"]],[1,\\\"\\\\n\\\"],[41,[28,[37,6],[[30,1,[\\\"personType\\\"]],\\\"lawyer\\\"],null],[[[1,\\\"        assistant\\\\n\\\"]],[]],[[[1,\\\"        lawyer to support\\\\n\\\"]],[]]],[1,\\\"    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,6],[[30,1,[\\\"personType\\\"]],\\\"lawyer\\\"],null],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"my-4\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,7],[[4,[38,8],[\\\"change\\\",[28,[37,9],[[30,0,[\\\"selectSendFrom\\\"]],null],null]],null]],[[\\\"@value\\\",\\\"@label\\\",\\\"@name\\\",\\\"@checked\\\",\\\"@id\\\"],[null,[29,[\\\"Send appointment confirmation emails from \\\",[30,1,[\\\"name\\\"]],\\\" directly\\\"]],\\\"send-from-radio\\\",[28,[37,6],[[30,1,[\\\"sendFrom\\\",\\\"personID\\\"]],null],null],\\\"send-from-self\\\"]],null],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"sendFrom\\\",\\\"personID\\\"]],[[[1,\\\"      \\\"],[8,[39,11],null,[[\\\"@value\\\",\\\"@label\\\",\\\"@id\\\"],[[30,1,[\\\"doNotBCC\\\"]],[29,[\\\"Do not BCC \\\",[30,1,[\\\"name\\\"]],\\\" into emails\\\"]],\\\"do-not-bcc-team-member\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@teamMember\\\",\\\"colleague\\\"],false,[\\\"each\\\",\\\"-track-array\\\",\\\"div\\\",\\\"span\\\",\\\"get\\\",\\\"if\\\",\\\"eq\\\",\\\"v2/radio-button\\\",\\\"on\\\",\\\"fn\\\",\\\"not-eq\\\",\\\"v2/checkbox\\\",\\\"v2/button\\\",\\\"v2/svg-icon\\\",\\\"v2/select-box\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/team-mapping-select/index.hbs\",\n    \"isStrictMode\": false\n  });\n  let TeamMappingSelectComponent = _exports.default = (_class = class TeamMappingSelectComponent extends _component2.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"lawyerList\", _descriptor, this);\n      _initializerDefineProperty(this, \"addingColleague\", _descriptor2, this);\n    }\n    get unaddedColleagues() {\n      const currentColleagues = this.args.teamMember.worksWith || [];\n      const unaddedColleagues = this.lawyerList.list.filter(p => p.personID !== this.args.teamMember.personID && !currentColleagues.any(c => c.personID === p.personID)).map(p => ({\n        name: p.name || p.email,\n        personID: p.personID,\n        personType: p.personType,\n        value: p.personID\n      }));\n      return unaddedColleagues;\n    }\n    addColleague(personID) {\n      if (!this.args.teamMember?.worksWith) {\n        this.args.teamMember.worksWith = [];\n      }\n      this.args.teamMember.worksWith.pushObject({\n        personID\n      });\n      this.addingColleague = false;\n    }\n    selectSendFrom(personID) {\n      this.args.teamMember.sendFrom = {\n        personID\n      };\n    }\n    removeColleague(colleague) {\n      const worksWith = this.args.teamMember?.worksWith || [];\n      const filtered = worksWith.filter(p => p.personID !== colleague.personID);\n      this.args.teamMember.worksWith = filtered;\n      if (this.args.teamMember?.sendFrom?.personID === colleague.personID) {\n        this.args.teamMember.sendFrom.personID = null;\n      }\n    }\n    toggleAddingColleague() {\n      this.addingColleague = !this.addingColleague;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"lawyerList\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"addingColleague\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"addColleague\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"addColleague\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"selectSendFrom\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"selectSendFrom\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"removeColleague\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"removeColleague\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"toggleAddingColleague\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleAddingColleague\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, TeamMappingSelectComponent);\n});","define(\"settify-mvp/components/v2/textarea/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@ember/object/internals\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _internals, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@ember/object/internals\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"textarea flex-col flex\">\n    {{#if (or (has-block) @label)}}\n      <label id=\"{{this.id}}-label\" for={{this.id}} class=\"mb-2 block {{if @required 'required-field-marker'}}\">\n        {{#if (has-block)}}\n          {{yield}}\n        {{else}}\n          {{@label}}\n        {{/if}}\n      </label>\n    {{/if}}\n  \n    <Textarea\n      @value={{@value}}\n      id={{this.id}}\n      required={{@required}}\n      aria-labelledby=\"{{if (or (has-block) @label) (concat this.id '-label')}}\"\n      {{on \"input\" this.handleChange}}\n      class=\"block w-full rounded-md border-0 p-1.5 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-brand-primary-color-rgb\"\n      ...attributes\n    />\n  </div>\n  */\n  {\n    \"id\": \"3AAYEjTk\",\n    \"block\": \"[[[10,0],[14,0,\\\"textarea flex-col flex\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,2],[[48,[30,5]],[30,1]],null],[[[1,\\\"    \\\"],[10,\\\"label\\\"],[15,1,[29,[[30,0,[\\\"id\\\"]],\\\"-label\\\"]]],[15,\\\"for\\\",[30,0,[\\\"id\\\"]]],[15,0,[29,[\\\"mb-2 block \\\",[52,[30,2],\\\"required-field-marker\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[48,[30,5]],[[[1,\\\"        \\\"],[18,5,null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[1,[30,1]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[8,[39,6],[[16,1,[30,0,[\\\"id\\\"]]],[16,\\\"required\\\",[30,2]],[16,\\\"aria-labelledby\\\",[29,[[52,[28,[37,2],[[48,[30,5]],[30,1]],null],[28,[37,7],[[30,0,[\\\"id\\\"]],\\\"-label\\\"],null]]]]],[24,0,\\\"block w-full rounded-md border-0 p-1.5 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-brand-primary-color-rgb\\\"],[17,3],[4,[38,8],[\\\"input\\\",[30,0,[\\\"handleChange\\\"]]],null]],[[\\\"@value\\\"],[[30,4]]],null],[1,\\\"\\\"],[13]],[\\\"@label\\\",\\\"@required\\\",\\\"&attrs\\\",\\\"@value\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"or\\\",\\\"has-block\\\",\\\"label\\\",\\\"yield\\\",\\\"textarea\\\",\\\"concat\\\",\\\"on\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/textarea/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A textarea component with base styles that renders a textarea element and a label if provided.\n   *\n   * @class TextareaComponent\n   * @extends {Component}\n   *\n   * @param {string} value - The value of the textarea element.\n   * @param {string} [id] - The id of the textarea element.\n   * @param {string} [label] - The label text for the textarea element.\n   * @param {boolean} [required] - Whether the textarea element is required.\n   * @param {function} [onChange] - The action to call when the textarea value changes.\n   *\n   * @example\n   * const textareaValue = \"\";\n   * const onChange = (newValue, event) => {};\n   * <V2::Textarea @value={{this.textareaValue}} @label=\"Add some text below\" @required={{true}} @id=\"unique-id\" @onChange={{this.onChange}} />\n   */\n  let TextareaComponent = _exports.default = (_class = class TextareaComponent extends _component2.default {\n    /**\n     * Returns the id for the textarea element.\n     * If no id is provided in the arguments, a default id is generated using `guidFor`.\n     *\n     * @returns {string} A unique ID.\n     */\n    get id() {\n      return this.args.id ?? `textarea-component-${(0, _internals.guidFor)(this)}`;\n    }\n\n    /**\n     * Handles the change event of the input element.\n     * If the onChange action is provided via the component's arguments, it will be called with the new value.\n     *\n     * @method handleChange\n     * @param {Event} event - The change event object.\n     */\n    handleChange(event) {\n      if (typeof this.args.onChange === \"function\") {\n        this.args.onChange(event.target.value, event);\n      }\n    }\n  }, _applyDecoratedDescriptor(_class.prototype, \"handleChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleChange\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, TextareaComponent);\n});","define(\"settify-mvp/components/v2/textline/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@ember/object/internals\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _internals, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@ember/object/internals\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"textline\">\n    {{#if (or (has-block) @label)}}\n      <label id=\"{{this.id}}-label\" for={{this.id}} class=\"mb-2 block {{if @required 'required-field-marker'}}\">\n        {{#if (has-block)}}\n          {{yield}}\n        {{else}}\n          {{@label}}\n        {{/if}}\n      </label>\n    {{/if}}\n  \n    <Input\n      id={{this.id}}\n      @value={{@value}}\n      @type={{@type}}\n      required={{@required}}\n      aria-labelledby=\"{{if (or (has-block) @label) (concat this.id '-label')}}\"\n      class=\"block w-full rounded-md border-0 py-1.5 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-brand-primary-color-rgb\"\n      {{did-insert this.handleInsert}}\n      {{on \"input\" this.handleChange}}\n      {{on \"blur\" this.handleBlur}}\n      ...attributes\n    />\n  </div>\n  */\n  {\n    \"id\": \"0ZRfLwiI\",\n    \"block\": \"[[[10,0],[14,0,\\\"textline\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,2],[[48,[30,6]],[30,1]],null],[[[1,\\\"    \\\"],[10,\\\"label\\\"],[15,1,[29,[[30,0,[\\\"id\\\"]],\\\"-label\\\"]]],[15,\\\"for\\\",[30,0,[\\\"id\\\"]]],[15,0,[29,[\\\"mb-2 block \\\",[52,[30,2],\\\"required-field-marker\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[48,[30,6]],[[[1,\\\"        \\\"],[18,6,null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[1,[30,1]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[8,[39,6],[[16,1,[30,0,[\\\"id\\\"]]],[16,\\\"required\\\",[30,2]],[16,\\\"aria-labelledby\\\",[29,[[52,[28,[37,2],[[48,[30,6]],[30,1]],null],[28,[37,7],[[30,0,[\\\"id\\\"]],\\\"-label\\\"],null]]]]],[24,0,\\\"block w-full rounded-md border-0 py-1.5 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-brand-primary-color-rgb\\\"],[17,3],[4,[38,8],[[30,0,[\\\"handleInsert\\\"]]],null],[4,[38,9],[\\\"input\\\",[30,0,[\\\"handleChange\\\"]]],null],[4,[38,9],[\\\"blur\\\",[30,0,[\\\"handleBlur\\\"]]],null]],[[\\\"@value\\\",\\\"@type\\\"],[[30,4],[30,5]]],null],[1,\\\"\\\\n\\\"],[13]],[\\\"@label\\\",\\\"@required\\\",\\\"&attrs\\\",\\\"@value\\\",\\\"@type\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"or\\\",\\\"has-block\\\",\\\"label\\\",\\\"yield\\\",\\\"input\\\",\\\"concat\\\",\\\"did-insert\\\",\\\"on\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/textline/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A text line component that renders an input element.\n   *\n   * @class TextlineComponent\n   * @extends {Component}\n   *\n   * @param {string} value - The value of the input element.\n   * @param {string} [id] - The id of the input element.\n   * @param {string} [label] - The label text for the input element.\n   * @param {string} [type=\"text\"] - The type of the input element (e.g., text, password, email).\n   * @param {boolean} [required] - Whether the input element is required.\n   * @param {function} [onInsert] - The action to call when the input element is inserted into the DOM.\n   * @param {function} [onChange] - The action to call when the input value changes.\n   * @param {function} [onBlur] - The action to call when the input blurs.\n   */\n  let TextlineComponent = _exports.default = (_class = class TextlineComponent extends _component2.default {\n    /**\n     * Returns the id for the input element.\n     * If no id is provided in the arguments, a default id is generated using `guidFor`.\n     *\n     * @returns {string} A unique ID.\n     */\n    get id() {\n      return this.args.id ?? `input-component-${(0, _internals.guidFor)(this)}`;\n    }\n\n    /**\n     * Handles the insertion of the component into the DOM.\n     * If the onInsert action is provided, it will be called.\n     *\n     * @method handleInsert\n     * @param {Element} element - The DOM element that was inserted.\n     */\n    handleInsert(element) {\n      if (this.args.onInsert) {\n        this.args.onInsert(element);\n      }\n    }\n\n    /**\n     * Handles the change event of the input element.\n     * If the onChange action is provided via the component's arguments, it will be called with the new value.\n     *\n     * @method handleChange\n     * @param {Event} event - The change event object.\n     */\n    handleChange(event) {\n      if (typeof this.args.onChange === \"function\") {\n        this.args.onChange(event.target.value, event);\n      }\n    }\n\n    /**\n     * Handles the blur event of the input element.\n     * If the onBlur action is provided via the component's arguments, it will be called with the new value.\n     *\n     * @method handleBlur\n     * @param {Event} event - The event object.\n     */\n    handleBlur(event) {\n      if (typeof this.args.onBlur === \"function\") {\n        this.args.onBlur(event.target.value, event);\n      }\n    }\n  }, _applyDecoratedDescriptor(_class.prototype, \"handleInsert\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleInsert\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleChange\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleBlur\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleBlur\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, TextlineComponent);\n});","define(\"settify-mvp/components/v2/toggle/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object/internals\", \"@ember/template-factory\"], function (_exports, _component, _component2, _internals, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object/internals\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <label class=\"inline-flex cursor-pointer items-center\" id={{this.id}} aria-checked={{if @model \"true\" \"false\"}} aria-disabled={{@disabled}}>\n    <Input @type=\"checkbox\" @checked={{@model}} disabled={{@disabled}} class=\"peer sr-only\" />\n    <div\n      class=\"peer relative h-6 w-11 rounded-full bg-gray-300 after:absolute after:start-[2px] after:top-[2px] after:h-5 after:w-5 after:rounded-full after:border after:border-gray-300 after:bg-white after:transition-all after:content-[''] peer-checked:bg-brand-primary-color-rgb peer-checked:after:translate-x-full peer-checked:after:border-white peer-focus:outline-none peer-focus:ring-2 peer-focus:ring-brand-primary-color-rgb peer-focus:ring-offset-2 rtl:peer-checked:after:-translate-x-full\"\n    ></div>\n    {{#if (or @label (has-block))}}\n      <span class=\"ms-3 text-sm font-medium {{if @disabled 'text-gray-400'}}\">\n        {{#if @label}}\n          {{@label}}\n        {{else}}\n          {{yield}}\n        {{/if}}\n      </span>\n    {{/if}}\n  </label>\n  */\n  {\n    \"id\": \"uIIKn9TZ\",\n    \"block\": \"[[[10,\\\"label\\\"],[14,0,\\\"inline-flex cursor-pointer items-center\\\"],[15,1,[30,0,[\\\"id\\\"]]],[15,\\\"aria-checked\\\",[52,[30,1],\\\"true\\\",\\\"false\\\"]],[15,\\\"aria-disabled\\\",[30,2]],[12],[1,\\\"\\\\n  \\\"],[8,[39,2],[[16,\\\"disabled\\\",[30,2]],[24,0,\\\"peer sr-only\\\"]],[[\\\"@type\\\",\\\"@checked\\\"],[\\\"checkbox\\\",[30,1]]],null],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"peer relative h-6 w-11 rounded-full bg-gray-300 after:absolute after:start-[2px] after:top-[2px] after:h-5 after:w-5 after:rounded-full after:border after:border-gray-300 after:bg-white after:transition-all after:content-[''] peer-checked:bg-brand-primary-color-rgb peer-checked:after:translate-x-full peer-checked:after:border-white peer-focus:outline-none peer-focus:ring-2 peer-focus:ring-brand-primary-color-rgb peer-focus:ring-offset-2 rtl:peer-checked:after:-translate-x-full\\\"],[12],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,4],[[30,3],[48,[30,4]]],null],[[[1,\\\"    \\\"],[10,1],[15,0,[29,[\\\"ms-3 text-sm font-medium \\\",[52,[30,2],\\\"text-gray-400\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[30,3],[[[1,\\\"        \\\"],[1,[30,3]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[18,4,null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[13]],[\\\"@model\\\",\\\"@disabled\\\",\\\"@label\\\",\\\"&default\\\"],false,[\\\"label\\\",\\\"if\\\",\\\"input\\\",\\\"div\\\",\\\"or\\\",\\\"has-block\\\",\\\"span\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/toggle/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component representing a toggle/switch.\n   * @class ToggleComponent\n   * @extends Component\n   * @param {string} [this.args.model] - REQUIRED: The value that is toggled to true or false\n   * @param {string} [this.args.label] - Text used for the toggle label\n   * @param {string} [this.args.id] - ID for the toggle. If not provided, a default ID will be generated\n   * @param {boolean} [this.args.disabled] - Handles disabled state of the toggle\n   */\n\n  class ToggleComponent extends _component2.default {\n    get id() {\n      return this.args.id ?? `toggle-component-${(0, _internals.guidFor)(this)}`;\n    }\n  }\n  _exports.default = ToggleComponent;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, ToggleComponent);\n});","define(\"settify-mvp/components/v2/under-construction/index\", [\"exports\", \"@ember/component\", \"@ember/component/template-only\", \"@ember/template-factory\"], function (_exports, _component, _templateOnly, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/template-only\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"relative block w-full rounded-lg border-2 border-dashed border-gray-300 p-12 text-center focus:outline-none focus:ring-2 focus:ring-offset-2\">\n    <V2::SvgIcon @icon=\"user-helmet\" class=\"mx-auto h-12 w-12 fill-brand-primary-color-rgb\" />\n    <span class=\"mt-2 block font-semibold\">Under construction</span>\n    <span class=\"mt-2 text-sm\">\n      We're in the process of making improvements to enhance your experience. Stay tuned for updates that will make the system more efficient and user-friendly for you and your team!\n    </span>\n  </div>\n  */\n  {\n    \"id\": \"ZbhlkL2m\",\n    \"block\": \"[[[10,0],[14,0,\\\"relative block w-full rounded-lg border-2 border-dashed border-gray-300 p-12 text-center focus:outline-none focus:ring-2 focus:ring-offset-2\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[39,1],[[24,0,\\\"mx-auto h-12 w-12 fill-brand-primary-color-rgb\\\"]],[[\\\"@icon\\\"],[\\\"user-helmet\\\"]],null],[1,\\\"\\\\n  \\\"],[10,1],[14,0,\\\"mt-2 block font-semibold\\\"],[12],[1,\\\"Under construction\\\"],[13],[1,\\\"\\\\n  \\\"],[10,1],[14,0,\\\"mt-2 text-sm\\\"],[12],[1,\\\"\\\\n    We're in the process of making improvements to enhance your experience. Stay tuned for updates that will make the system more efficient and user-friendly for you and your team!\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[],false,[\\\"div\\\",\\\"v2/svg-icon\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/under-construction/index.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, (0, _templateOnly.default)());\n});","define(\"settify-mvp/components/v2/units-per/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object/internals\", \"@ember/template-factory\"], function (_exports, _component, _component2, _internals, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object/internals\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (or (has-block) @label)}}\n    <label id=\"{{this.id}}-label\" for={{this.id}} class=\"mb-2 block {{if @required 'required-field-marker'}}\">\n      {{#if (has-block)}}\n        {{yield}}\n      {{else}}\n        {{@label}}\n      {{/if}}\n    </label>\n  {{/if}}\n  <div class=\"sm:flex sm:items-center sm:gap-4\" id={{this.id}}>\n    {{#if (eq @unitType \"money\")}}\n      <V2::MoneyInput @value={{@unitsPer}} @min=\"0\" @id=\"{{this.id}}-input\" name=\"timeperiod-input\" @required={{@required}} @onChange={{@onChange}} class=\"sm:min-w-52\" />\n      <p>per</p>\n    {{else}}\n      <V2::NumberInput\n        @value={{@unitsPer}}\n        @min={{0}}\n        @max={{this.maxValue}}\n        @id=\"{{this.id}}-input\"\n        name=\"timeperiod-input\"\n        @required={{@required}}\n        @onChange={{@onChange}}\n        class=\"sm:min-w-52\"\n      />\n      <p>days per</p>\n    {{/if}}\n    <div>\n      <V2::SelectBox\n        @selectedItem={{@timePeriod}}\n        @options={{this.timePeriods}}\n        @id=\"{{this.id}}-timeperiod-select\"\n        @required={{@required}}\n        @onChange={{@secondaryChange}}\n        @name=\"timeperiod\"\n        class=\"max-w-52\"\n      />\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"7ILdRnKd\",\n    \"block\": \"[[[41,[28,[37,1],[[48,[30,8]],[30,1]],null],[[[1,\\\"  \\\"],[10,\\\"label\\\"],[15,1,[29,[[30,0,[\\\"id\\\"]],\\\"-label\\\"]]],[15,\\\"for\\\",[30,0,[\\\"id\\\"]]],[15,0,[29,[\\\"mb-2 block \\\",[52,[30,2],\\\"required-field-marker\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[48,[30,8]],[[[1,\\\"      \\\"],[18,8,null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[1,[30,1]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[10,0],[14,0,\\\"sm:flex sm:items-center sm:gap-4\\\"],[15,1,[30,0,[\\\"id\\\"]]],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,6],[[30,3],\\\"money\\\"],null],[[[1,\\\"    \\\"],[8,[39,7],[[24,3,\\\"timeperiod-input\\\"],[24,0,\\\"sm:min-w-52\\\"]],[[\\\"@value\\\",\\\"@min\\\",\\\"@id\\\",\\\"@required\\\",\\\"@onChange\\\"],[[30,4],\\\"0\\\",[29,[[30,0,[\\\"id\\\"]],\\\"-input\\\"]],[30,2],[30,5]]],null],[1,\\\"\\\\n    \\\"],[10,2],[12],[1,\\\"per\\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[8,[39,9],[[24,3,\\\"timeperiod-input\\\"],[24,0,\\\"sm:min-w-52\\\"]],[[\\\"@value\\\",\\\"@min\\\",\\\"@max\\\",\\\"@id\\\",\\\"@required\\\",\\\"@onChange\\\"],[[30,4],0,[30,0,[\\\"maxValue\\\"]],[29,[[30,0,[\\\"id\\\"]],\\\"-input\\\"]],[30,2],[30,5]]],null],[1,\\\"\\\\n    \\\"],[10,2],[12],[1,\\\"days per\\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[10,0],[12],[1,\\\"\\\\n    \\\"],[8,[39,10],[[24,0,\\\"max-w-52\\\"]],[[\\\"@selectedItem\\\",\\\"@options\\\",\\\"@id\\\",\\\"@required\\\",\\\"@onChange\\\",\\\"@name\\\"],[[30,6],[30,0,[\\\"timePeriods\\\"]],[29,[[30,0,[\\\"id\\\"]],\\\"-timeperiod-select\\\"]],[30,2],[30,7],\\\"timeperiod\\\"]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@label\\\",\\\"@required\\\",\\\"@unitType\\\",\\\"@unitsPer\\\",\\\"@onChange\\\",\\\"@timePeriod\\\",\\\"@secondaryChange\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"or\\\",\\\"has-block\\\",\\\"label\\\",\\\"yield\\\",\\\"div\\\",\\\"eq\\\",\\\"v2/money-input\\\",\\\"p\\\",\\\"v2/number-input\\\",\\\"v2/select-box\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/units-per/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component representing a time period input.\n   * @class V2::UnitsPer\n   * @extends Component\n   * @param {number} this.args.unitsPer - The value of the unit input field.\n   * @param {string} this.args.timePeriod - The value of the time period select field.\n   * @param {string} [this.args.unitType] - Determines if it is a money or number input.\n   * @param {string} [this.args.id] - ID of the date input. If not provided, a unique ID will be generated.\n   * @param {string} [this.args.label] - Text above the input.\n   * @param {boolean} [this.args.required] - Determines if an answer is required.\n   * @param {function} [this.args.onChange] - Action to handle changes to the input value.\n   * @param {function} [this.args.secondaryChange] - Action to handle changes to the select input value.\n   *\n   * @example\n   * ```handlebars\n   * <V2::UnitsPer\n   *   @unitsPer=7\n   *   @timePeriod=\"week\"\n   *   @unitType=\"money\"\n   *   @id={{this.id}}\n   *   @label=\"How much do you spend?\"\n   *   @onChange={{this.handleChange}}\n   *   @secondaryChange={{this.secondaryChange}}\n   * />\n   * ```\n   */\n  class UnitsPerComponent extends _component2.default {\n    get id() {\n      return this.args.id ?? `units-per-component-${(0, _internals.guidFor)(this)}`;\n    }\n\n    /**\n     * Get the timeperiod options and sort descending by length of time.\n     * @returns {Object} The set of time period options as key value pairs.\n     */\n    get timePeriods() {\n      const timePeriodOptions = this.args.timePeriodOptions || {};\n      return Object.keys(timePeriodOptions).filter(time => timePeriodOptions[time]) // Filter out false key value pairs\n      .sort((a, b) => this.maxEnums[a] - this.maxEnums[b]) // Sort by max value lowest to highest\n      .map(time => {\n        return {\n          label: time,\n          value: time\n        };\n      });\n    }\n\n    /**\n     * Get the maximum value allowed for the input based on what timeperiod has been selected.\n     * @returns {number} The maximum allowed value for the input.\n     */\n    get maxValue() {\n      return this.maxEnums[this.args.timePeriod];\n    }\n\n    /**\n     * Get the time periods and there maximum allowed values.\n     * @returns {Object} Time periods with max values as key value pairs.\n     */\n    get maxEnums() {\n      return {\n        week: 7,\n        fortnight: 14,\n        \"every two weeks\": 14,\n        month: 31,\n        year: 365\n      };\n    }\n  }\n  _exports.default = UnitsPerComponent;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, UnitsPerComponent);\n});","define(\"settify-mvp/components/v2/yes-no/index\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/object\", \"@ember/template-factory\"], function (_exports, _component, _component2, _object, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/object\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::RadioButtonGroup\n    @label={{@label}}\n    @name={{@name}}\n    @id={{@id}}\n    @options={{this.options}}\n    @value={{@value}}\n    @required={{@required}}\n    @onChange={{this.handleChange}}\n  />\n  */\n  {\n    \"id\": \"7yAnuBfJ\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@label\\\",\\\"@name\\\",\\\"@id\\\",\\\"@options\\\",\\\"@value\\\",\\\"@required\\\",\\\"@onChange\\\"],[[30,1],[30,2],[30,3],[30,0,[\\\"options\\\"]],[30,4],[30,5],[30,0,[\\\"handleChange\\\"]]]],null]],[\\\"@label\\\",\\\"@name\\\",\\\"@id\\\",\\\"@value\\\",\\\"@required\\\"],false,[\\\"v2/radio-button-group\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/v2/yes-no/index.hbs\",\n    \"isStrictMode\": false\n  });\n\n  /**\n   * A Glimmer component representing a group of Yes/No option including the optional \"Not sure\" option.\n   * @class YesNoComponent\n   * @extends Component\n   *\n   * @param {string} name - REQUIRED: Name attribute used in the <RadioButton /> component.\n   * @param {string} [id] - ID for the radio button group - used in <RadioButtonGroup /> component.\n   * @param {string} [value] - Preselected value used to control \"checked\" state in the <RadioButton /> component.\n   * @param {string} [label] - Text used above the list of radio buttons in the <RadioButtonGroup /> component.\n   * @param {Boolean} [excludeNotSure] - Controls visibility of the \"Not sure\" option.\n   * @param {Boolean} [required] - Indicates wheather the question is required or not in the <RadioButtonGroup /> component.\n   * @param {Function} onChange - REQUIRED: Callback function which handles radio button state change.\n   *\n   * @example\n   *\n   * // Template HBS:\n   * <V2::YesNo\n   *  @label=\"Would you like ice cream?\"\n   *  @name=\"ice-cream-preferences\"\n   *  @id=\"ice-cream-preferences\"\n   *  @value={{this.selectedOption}}\n   *  @required={{this.isQuestionRequired}}\n   *  @excludeNotSure={{this.question.excludeNotSure}}\n   *  @onChange={{this.onChange}}\n   * />\n   */\n  let YesNoComponent = _exports.default = (_class = class YesNoComponent extends _component2.default {\n    get options() {\n      const isNotSureExcluded = this.args.excludeNotSure;\n      const options = [{\n        id: \"yes\",\n        title: \"Yes\"\n      }, {\n        id: \"no\",\n        title: \"No\"\n      }];\n      if (!isNotSureExcluded) {\n        options.push({\n          id: \"notsure\",\n          title: \"I'm not sure\"\n        });\n      }\n      return options;\n    }\n    handleChange(selectedOption, event) {\n      if (typeof this.args.onChange === \"function\") {\n        this.args.onChange(selectedOption, event);\n      }\n    }\n  }, _applyDecoratedDescriptor(_class.prototype, \"handleChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleChange\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, YesNoComponent);\n});","define(\"settify-mvp/components/variable-printer-branch\", [\"exports\", \"@ember/component\", \"@glimmer/component\", \"@ember/template-factory\"], function (_exports, _component, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@glimmer/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <LiquidIf @predicate={{and @isOpen @item.id (not @item.deleted) (not-eq @item.type \"paragraph\")}}>\n    <span class=\"{{if @subOption 'option' 'question'}} lineUpClass\">\n      <span class={{if (or @item.options @item.content (eq @item.type \"yesno\")) \"clickable\" \"\"}} {{on \"click\" (fn @toggleAction @item)}}>\n        {{#if (or @item.options @item.content (eq @item.type \"yesno\"))}}\n          <i class=\"fal {{if @item.open 'fa-angle-down' 'fa-angle-right'}} treeToggle\"></i>\n        {{/if}}\n        <span>{{@item.id}}</span>\n      </span>\n    </span>\n    <button type=\"button\" {{on \"click\" (fn @copyAction (question-context-string @chapter @page @question @item))}}>\n      <i class=\"fal fa-copy copyID\"></i>\n    </button>\n    <LiquidIf @predicate={{@item.options}}>\n      {{#each @item.options as |option|}}\n        <LiquidIf @predicate={{and @item.open option.id (not option.deleted)}}>\n          <div class=\"{{if @subOption 'sub-'}}option\">\n            <span><i class=\"fal fa-xxs fa-circle tight\" /> {{option.id}}</span>\n            <button type=\"button\" {{on \"click\" (fn @copyAction (question-context-string @chapter @page @question @item option))}}>\n              <i class=\"fal fa-copy copyID\"></i>\n            </button>\n          </div>\n        </LiquidIf>\n      {{/each}}\n    </LiquidIf>\n    <LiquidIf @predicate={{eq @item.type \"yesno\"}}>\n      <LiquidIf @predicate={{@item.open}}>\n        {{#each this.yesNoOptions as |option|}}\n          <div class=\"{{if @subOption 'sub-'}}option\">\n            <span><i class=\"fal fa-xxs fa-circle tight\" /> {{option}}</span>\n            <button type=\"button\" {{on \"click\" (fn @copyAction option)}}>\n              <i class=\"fal fa-copy copyID\"></i>\n            </button>\n          </div>\n        {{/each}}\n      </LiquidIf>\n    </LiquidIf>\n  \n    {{#if (eq @item.type \"firstname\")}}\n      <span class=\"{{if @subOption 'option' 'question'}} lineUpClass\">\n        {{@item.id}}\n        gender\n      </span>\n      <button type=\"button\" {{on \"click\" (fn @copyAction (question-context-string @chapter @page @question @item suffix=\"-gender\"))}}>\n        <i class=\"fal fa-copy copyID\"></i>\n      </button>\n    {{/if}}\n  \n    {{#if @item.content}}\n      {{#each @item.content as |content|}}\n        <VariablePrinterBranch\n          @question={{@item}}\n          @item={{content}}\n          @isOpen={{@item.open}}\n          @subOption={{true}}\n          @chapter={{@chapter}}\n          @page={{@page}}\n          @copyAction={{@copyAction}}\n          @toggleAction={{@toggleAction}}\n        />\n      {{/each}}\n    {{/if}}\n  </LiquidIf>\n  */\n  {\n    \"id\": \"7r7+i0Vf\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@predicate\\\"],[[28,[37,1],[[30,1],[30,2,[\\\"id\\\"]],[28,[37,2],[[30,2,[\\\"deleted\\\"]]],null],[28,[37,3],[[30,2,[\\\"type\\\"]],\\\"paragraph\\\"],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,1],[15,0,[29,[[52,[30,3],\\\"option\\\",\\\"question\\\"],\\\" lineUpClass\\\"]]],[12],[1,\\\"\\\\n    \\\"],[11,1],[16,0,[52,[28,[37,6],[[30,2,[\\\"options\\\"]],[30,2,[\\\"content\\\"]],[28,[37,7],[[30,2,[\\\"type\\\"]],\\\"yesno\\\"],null]],null],\\\"clickable\\\",\\\"\\\"]],[4,[38,8],[\\\"click\\\",[28,[37,9],[[30,4],[30,2]],null]],null],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,6],[[30,2,[\\\"options\\\"]],[30,2,[\\\"content\\\"]],[28,[37,7],[[30,2,[\\\"type\\\"]],\\\"yesno\\\"],null]],null],[[[1,\\\"        \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal \\\",[52,[30,2,[\\\"open\\\"]],\\\"fa-angle-down\\\",\\\"fa-angle-right\\\"],\\\" treeToggle\\\"]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[10,1],[12],[1,[30,2,[\\\"id\\\"]]],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,8],[\\\"click\\\",[28,[37,9],[[30,5],[28,[37,12],[[30,6],[30,7],[30,8],[30,2]],null]],null]],null],[12],[1,\\\"\\\\n    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-copy copyID\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,0],null,[[\\\"@predicate\\\"],[[30,2,[\\\"options\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,14],[[28,[37,14],[[30,2,[\\\"options\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[8,[39,0],null,[[\\\"@predicate\\\"],[[28,[37,1],[[30,2,[\\\"open\\\"]],[30,9,[\\\"id\\\"]],[28,[37,2],[[30,9,[\\\"deleted\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,0],[15,0,[29,[[52,[30,3],\\\"sub-\\\"],\\\"option\\\"]]],[12],[1,\\\"\\\\n          \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-xxs fa-circle tight\\\"],[12],[13],[1,\\\" \\\"],[1,[30,9,[\\\"id\\\"]]],[13],[1,\\\"\\\\n          \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,8],[\\\"click\\\",[28,[37,9],[[30,5],[28,[37,12],[[30,6],[30,7],[30,8],[30,2],[30,9]],null]],null]],null],[12],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-copy copyID\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[9]],null],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[39,0],null,[[\\\"@predicate\\\"],[[28,[37,7],[[30,2,[\\\"type\\\"]],\\\"yesno\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[39,0],null,[[\\\"@predicate\\\"],[[30,2,[\\\"open\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,14],[[28,[37,14],[[30,0,[\\\"yesNoOptions\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[10,0],[15,0,[29,[[52,[30,3],\\\"sub-\\\"],\\\"option\\\"]]],[12],[1,\\\"\\\\n          \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-xxs fa-circle tight\\\"],[12],[13],[1,\\\" \\\"],[1,[30,10]],[13],[1,\\\"\\\\n          \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,8],[\\\"click\\\",[28,[37,9],[[30,5],[30,10]],null]],null],[12],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-copy copyID\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[10]],null],[1,\\\"    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,7],[[30,2,[\\\"type\\\"]],\\\"firstname\\\"],null],[[[1,\\\"    \\\"],[10,1],[15,0,[29,[[52,[30,3],\\\"option\\\",\\\"question\\\"],\\\" lineUpClass\\\"]]],[12],[1,\\\"\\\\n      \\\"],[1,[30,2,[\\\"id\\\"]]],[1,\\\"\\\\n      gender\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,8],[\\\"click\\\",[28,[37,9],[[30,5],[28,[37,12],[[30,6],[30,7],[30,8],[30,2]],[[\\\"suffix\\\"],[\\\"-gender\\\"]]]],null]],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-copy copyID\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,2,[\\\"content\\\"]],[[[42,[28,[37,14],[[28,[37,14],[[30,2,[\\\"content\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[8,[39,16],null,[[\\\"@question\\\",\\\"@item\\\",\\\"@isOpen\\\",\\\"@subOption\\\",\\\"@chapter\\\",\\\"@page\\\",\\\"@copyAction\\\",\\\"@toggleAction\\\"],[[30,2],[30,11],[30,2,[\\\"open\\\"]],true,[30,6],[30,7],[30,5],[30,4]]],null],[1,\\\"\\\\n\\\"]],[11]],null]],[]],null]],[]]]]]],[\\\"@isOpen\\\",\\\"@item\\\",\\\"@subOption\\\",\\\"@toggleAction\\\",\\\"@copyAction\\\",\\\"@chapter\\\",\\\"@page\\\",\\\"@question\\\",\\\"option\\\",\\\"option\\\",\\\"content\\\"],false,[\\\"liquid-if\\\",\\\"and\\\",\\\"not\\\",\\\"not-eq\\\",\\\"span\\\",\\\"if\\\",\\\"or\\\",\\\"eq\\\",\\\"on\\\",\\\"fn\\\",\\\"i\\\",\\\"button\\\",\\\"question-context-string\\\",\\\"each\\\",\\\"-track-array\\\",\\\"div\\\",\\\"variable-printer-branch\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/variable-printer-branch.hbs\",\n    \"isStrictMode\": false\n  });\n  class VariablePrinterBranchComponent extends _component2.default {\n    constructor(owner, args) {\n      super(owner, args);\n      this.yesNoOptions = [\"yes\", \"no\", \"notsure\"];\n    }\n  }\n  _exports.default = VariablePrinterBranchComponent;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, VariablePrinterBranchComponent);\n});","define(\"settify-mvp/components/variable-printer\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@glimmer/component\", \"@ember/template-factory\"], function (_exports, _component, _object, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@glimmer/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.chapters}}\n    {{#each this.chapters as |chapter|}}\n      <LiquidIf @predicate={{not chapter.deleted}}>\n        <span class=\"chapter\">\n          <div class=\"clickable\" {{on \"click\" (fn this.toggleLevel chapter)}}>\n            <i class=\"fal {{if chapter.open 'fa-angle-down' 'fa-angle-right'}} treeToggle\"></i>\n            <span>{{chapter.id}}</span>\n          </div>\n        </span>\n        <button type=\"button\" {{on \"click\" (fn this.copyToClipboard (question-context-string chapter))}}>\n          <i class=\"fal fa-copy copyID\"></i>\n        </button>\n      </LiquidIf>\n      {{#each chapter.pages as |page|}}\n        <LiquidIf @predicate={{and chapter.open page.id (not page.deleted)}}>\n          <div class=\"page\">\n            <span class=\"clickable\" {{on \"click\" (fn this.toggleLevel page)}}>\n              <i class=\"fal {{if page.open 'fa-angle-down' 'fa-angle-right'}} treeToggle\"></i>\n              {{#if page.answersLocation}}\n                <span>{{page.answersLocation}}</span>\n              {{else}}\n                <span>{{page.id}}</span>\n              {{/if}}\n            </span>\n            <button type=\"button\" {{on \"click\" (fn this.copyToClipboard (question-context-string chapter page))}}>\n              <i class=\"fal fa-copy copyID clickable\"></i>\n            </button>\n          </div>\n          {{#each page.questions as |question|}}\n            <VariablePrinterBranch\n              @item={{question}}\n              @chapter={{chapter}}\n              @page={{page}}\n              @isOpen={{page.open}}\n              @copyAction={{this.copyToClipboard}}\n              @toggleAction={{this.toggleLevel}}\n            />\n          {{/each}}\n        </LiquidIf>\n      {{/each}}\n    {{/each}}\n    {{#if @specialVariables}}\n      <div class=\"chapter\">\n        <div class=\"clickable\" {{on \"click\" (fn this.toggleProperty \"showSpecialVariables\")}}>\n          <i class=\"fal {{if this.showSpecialVariables 'fa-angle-down' 'fa-angle-right'}} treeToggle\"></i>\n          <span>Special Variables</span>\n        </div>\n      </div>\n      <LiquidIf @predicate={{this.showSpecialVariables}}>\n        {{#each @specialVariables as |specialVar|}}\n          <div class=\"page\">\n            <span class=\"lineUpClass\">\n              <i class=\"fal fa-xxs fa-circle tight\" />\n              {{specialVar}}\n            </span>\n            <button type=\"button\" {{on \"click\" (fn this.copyToClipboard specialVar)}}>\n              <i class=\"fal fa-copy copyID\"></i>\n            </button>\n          </div>\n        {{/each}}\n      </LiquidIf>\n    {{/if}}\n    {{#if this.customVariableDefinitionsForDisplay.length}}\n      <div class=\"chapter\">\n        <div class=\"clickable\" {{on \"click\" (fn this.toggleProperty \"showCustomVariables\")}}>\n          <i class=\"fal {{if this.showCustomVariables 'fa-angle-down' 'fa-angle-right'}} treeToggle\"></i>\n          <span>Custom Variables</span>\n        </div>\n      </div>\n      <LiquidIf @predicate={{this.showCustomVariables}}>\n        {{#each this.customVariableDefinitionsForDisplay as |customVariable|}}\n          <div class=\"page\">\n            <span class=\"lineUpClass\">\n              <i class=\"fal {{customVariable.icon}} tight\" />\n              {{customVariable.id}}\n            </span>\n            <button type=\"button\" {{on \"click\" (fn this.copyToClipboard customVariable.id)}}>\n              <i class=\"fal fa-copy copyID\"></i>\n            </button>\n          </div>\n        {{/each}}\n      </LiquidIf>\n    {{/if}}\n  {{/if}}\n  */\n  {\n    \"id\": \"qWGRZDzx\",\n    \"block\": \"[[[41,[30,0,[\\\"chapters\\\"]],[[[42,[28,[37,2],[[28,[37,2],[[30,0,[\\\"chapters\\\"]]],null]],null],null,[[[1,\\\"    \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[28,[37,4],[[30,1,[\\\"deleted\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"chapter\\\"],[12],[1,\\\"\\\\n        \\\"],[11,0],[24,0,\\\"clickable\\\"],[4,[38,7],[\\\"click\\\",[28,[37,8],[[30,0,[\\\"toggleLevel\\\"]],[30,1]],null]],null],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal \\\",[52,[30,1,[\\\"open\\\"]],\\\"fa-angle-down\\\",\\\"fa-angle-right\\\"],\\\" treeToggle\\\"]]],[12],[13],[1,\\\"\\\\n          \\\"],[10,1],[12],[1,[30,1,[\\\"id\\\"]]],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,7],[\\\"click\\\",[28,[37,8],[[30,0,[\\\"copyToClipboard\\\"]],[28,[37,11],[[30,1]],null]],null]],null],[12],[1,\\\"\\\\n        \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-copy copyID\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[42,[28,[37,2],[[28,[37,2],[[30,1,[\\\"pages\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[28,[37,12],[[30,1,[\\\"open\\\"]],[30,2,[\\\"id\\\"]],[28,[37,4],[[30,2,[\\\"deleted\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"page\\\"],[12],[1,\\\"\\\\n          \\\"],[11,1],[24,0,\\\"clickable\\\"],[4,[38,7],[\\\"click\\\",[28,[37,8],[[30,0,[\\\"toggleLevel\\\"]],[30,2]],null]],null],[12],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal \\\",[52,[30,2,[\\\"open\\\"]],\\\"fa-angle-down\\\",\\\"fa-angle-right\\\"],\\\" treeToggle\\\"]]],[12],[13],[1,\\\"\\\\n\\\"],[41,[30,2,[\\\"answersLocation\\\"]],[[[1,\\\"              \\\"],[10,1],[12],[1,[30,2,[\\\"answersLocation\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"              \\\"],[10,1],[12],[1,[30,2,[\\\"id\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"          \\\"],[13],[1,\\\"\\\\n          \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,7],[\\\"click\\\",[28,[37,8],[[30,0,[\\\"copyToClipboard\\\"]],[28,[37,11],[[30,1],[30,2]],null]],null]],null],[12],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-copy copyID clickable\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,2],[[28,[37,2],[[30,2,[\\\"questions\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[8,[39,13],null,[[\\\"@item\\\",\\\"@chapter\\\",\\\"@page\\\",\\\"@isOpen\\\",\\\"@copyAction\\\",\\\"@toggleAction\\\"],[[30,3],[30,1],[30,2],[30,2,[\\\"open\\\"]],[30,0,[\\\"copyToClipboard\\\"]],[30,0,[\\\"toggleLevel\\\"]]]],null],[1,\\\"\\\\n\\\"]],[3]],null],[1,\\\"      \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[2]],null]],[1]],null],[41,[30,4],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"chapter\\\"],[12],[1,\\\"\\\\n      \\\"],[11,0],[24,0,\\\"clickable\\\"],[4,[38,7],[\\\"click\\\",[28,[37,8],[[30,0,[\\\"toggleProperty\\\"]],\\\"showSpecialVariables\\\"],null]],null],[12],[1,\\\"\\\\n        \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal \\\",[52,[30,0,[\\\"showSpecialVariables\\\"]],\\\"fa-angle-down\\\",\\\"fa-angle-right\\\"],\\\" treeToggle\\\"]]],[12],[13],[1,\\\"\\\\n        \\\"],[10,1],[12],[1,\\\"Special Variables\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showSpecialVariables\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,2],[[28,[37,2],[[30,4]],null]],null],null,[[[1,\\\"        \\\"],[10,0],[14,0,\\\"page\\\"],[12],[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"lineUpClass\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-xxs fa-circle tight\\\"],[12],[13],[1,\\\"\\\\n            \\\"],[1,[30,5]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,7],[\\\"click\\\",[28,[37,8],[[30,0,[\\\"copyToClipboard\\\"]],[30,5]],null]],null],[12],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-copy copyID\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[5]],null],[1,\\\"    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"customVariableDefinitionsForDisplay\\\",\\\"length\\\"]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"chapter\\\"],[12],[1,\\\"\\\\n      \\\"],[11,0],[24,0,\\\"clickable\\\"],[4,[38,7],[\\\"click\\\",[28,[37,8],[[30,0,[\\\"toggleProperty\\\"]],\\\"showCustomVariables\\\"],null]],null],[12],[1,\\\"\\\\n        \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal \\\",[52,[30,0,[\\\"showCustomVariables\\\"]],\\\"fa-angle-down\\\",\\\"fa-angle-right\\\"],\\\" treeToggle\\\"]]],[12],[13],[1,\\\"\\\\n        \\\"],[10,1],[12],[1,\\\"Custom Variables\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showCustomVariables\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,2],[[28,[37,2],[[30,0,[\\\"customVariableDefinitionsForDisplay\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[10,0],[14,0,\\\"page\\\"],[12],[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"lineUpClass\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal \\\",[30,6,[\\\"icon\\\"]],\\\" tight\\\"]]],[12],[13],[1,\\\"\\\\n            \\\"],[1,[30,6,[\\\"id\\\"]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,7],[\\\"click\\\",[28,[37,8],[[30,0,[\\\"copyToClipboard\\\"]],[30,6,[\\\"id\\\"]]],null]],null],[12],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-copy copyID\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[6]],null],[1,\\\"    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[]],null]],[\\\"chapter\\\",\\\"page\\\",\\\"question\\\",\\\"@specialVariables\\\",\\\"specialVar\\\",\\\"customVariable\\\"],false,[\\\"if\\\",\\\"each\\\",\\\"-track-array\\\",\\\"liquid-if\\\",\\\"not\\\",\\\"span\\\",\\\"div\\\",\\\"on\\\",\\\"fn\\\",\\\"i\\\",\\\"button\\\",\\\"question-context-string\\\",\\\"and\\\",\\\"variable-printer-branch\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/variable-printer.hbs\",\n    \"isStrictMode\": false\n  });\n  let VariablePrinterComponent = _exports.default = (_class = class VariablePrinterComponent extends _component2.default {\n    constructor(owner, args) {\n      super(owner, args);\n      this.specialVariables = null;\n      this.showSpecialVariables = false;\n    }\n    get chapters() {\n      return this.args?.variables?.chapters;\n    }\n    get customVariableDefinitionsForDisplay() {\n      const icons = {\n        undefined: \"fa-eye\",\n        constant: \"fa-brackets-curly\",\n        parseText: \"fa-filter\"\n      };\n      // We copy the array here to prevent janky behaviour where the variables on the locally stored induction are sorted in-place, but the actual induction definition doesn't get updated\n      const customVariables = [...(this.args?.variables?.customVariables || [])];\n      return customVariables.sort((firstVariable, secondVariable) => {\n        // This sorts by type (displayIf > parseText > constant), then alphabetically.\n        if (firstVariable.type === secondVariable.type) {\n          return firstVariable.id.localeCompare(secondVariable.id);\n        } else if (!firstVariable.type && secondVariable.type) {\n          return -1;\n        } else if (firstVariable.type && !secondVariable.type) {\n          return 1;\n        } else if (firstVariable.type === \"parseText\" && secondVariable.type === \"constant\") {\n          return -1;\n        } else if (firstVariable.type === \"constant\" && secondVariable.type === \"parseText\") {\n          return 1;\n        }\n      }).map(customVariable => ({\n        icon: icons[customVariable.type],\n        id: customVariable.id\n      }));\n    }\n    copyToClipboard(text) {\n      navigator.clipboard.writeText(text);\n    }\n    toggleLevel(level) {\n      (0, _object.set)(level, \"open\", !level.open);\n    }\n    toggleProperty(propertyName) {\n      (0, _object.set)(this, propertyName, !this[propertyName]);\n    }\n  }, _applyDecoratedDescriptor(_class.prototype, \"copyToClipboard\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"copyToClipboard\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"toggleLevel\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleLevel\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"toggleProperty\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleProperty\"), _class.prototype), _class);\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, VariablePrinterComponent);\n});","define(\"settify-mvp/components/whats-new\", [\"exports\", \"@ember/component\", \"@ember/runloop\", \"rsvp\", \"@ember/service\", \"moment\", \"@ember/template-factory\"], function (_exports, _component, _runloop, _rsvp, _service, _moment, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"rsvp\",0,\"@ember/service\",0,\"@ember/component\",0,\"moment\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @showWhatsNew}}\n    <div class=\"whats-new-modal-overlay\" {{action \"toggleWhatsNew\"}} />\n    <div class=\"whats-new-sidebar\">\n      <div class=\"whats-new-header\">\n        <div class=\"whats-new-header-title\">\n          <b>What's new</b>\n          <button type=\"button\" class=\"whats-new-close-btn\" {{action \"toggleWhatsNew\"}}>\n            <i class=\"fa-light fa-xmark\"></i>\n          </button>\n        </div>\n      </div>\n  \n      <LiquidIf @predicate={{this.loading}}>\n        <LoadingSpinner />\n      </LiquidIf>\n  \n      <LiquidIf @predicate={{this.errorMessage}}>\n        <div class=\"padding-20\">\n          <p>Oops, something went wrong. Please reload the page and try again.</p>\n        </div>\n      </LiquidIf>\n  \n      {{#if this.success}}\n        <div class=\"whats-new-body\">\n          <div class=\"whats-new-container\">\n            {{#each this.posts as |post|}}\n              <div class=\"whats-new-post\">\n                <div class=\"whats-new-post-title\">\n                  <h4>{{post.title}}</h4>\n                  <p>{{post.date}}</p>\n                </div>\n                <div class=\"whats-new-post-text\">\n                  {{html-safe post.body}}\n                </div>\n              </div>\n            {{/each}}\n          </div>\n        </div>\n      {{/if}}\n    </div>\n  {{/if}}\n  */\n  {\n    \"id\": \"Fg2OfUuX\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[11,0],[24,0,\\\"whats-new-modal-overlay\\\"],[4,[38,2],[[30,0],\\\"toggleWhatsNew\\\"],null],[12],[13],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"whats-new-sidebar\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"whats-new-header\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"whats-new-header-title\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"b\\\"],[12],[1,\\\"What's new\\\"],[13],[1,\\\"\\\\n        \\\"],[11,\\\"button\\\"],[24,0,\\\"whats-new-close-btn\\\"],[24,4,\\\"button\\\"],[4,[38,2],[[30,0],\\\"toggleWhatsNew\\\"],null],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fa-light fa-xmark\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[8,[39,6],null,[[\\\"@predicate\\\"],[[30,0,[\\\"loading\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[39,7],null,null,null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\\n    \\\"],[8,[39,6],null,[[\\\"@predicate\\\"],[[30,0,[\\\"errorMessage\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"padding-20\\\"],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"Oops, something went wrong. Please reload the page and try again.\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"success\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"whats-new-body\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"whats-new-container\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,10],[[28,[37,10],[[30,0,[\\\"posts\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[10,0],[14,0,\\\"whats-new-post\\\"],[12],[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"whats-new-post-title\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"h4\\\"],[12],[1,[30,2,[\\\"title\\\"]]],[13],[1,\\\"\\\\n                \\\"],[10,2],[12],[1,[30,2,[\\\"date\\\"]]],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"whats-new-post-text\\\"],[12],[1,\\\"\\\\n                \\\"],[1,[28,[35,12],[[30,2,[\\\"body\\\"]]],null]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@showWhatsNew\\\",\\\"post\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"action\\\",\\\"b\\\",\\\"button\\\",\\\"i\\\",\\\"liquid-if\\\",\\\"loading-spinner\\\",\\\"p\\\",\\\"each\\\",\\\"-track-array\\\",\\\"h4\\\",\\\"html-safe\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/whats-new.hbs\",\n    \"isStrictMode\": false\n  });\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, _component.default.extend({\n    awsService: (0, _service.inject)(),\n    init() {\n      this._super(...arguments);\n      this.set(\"loading\", true);\n      this.set(\"error\", false);\n      this.set(\"success\", false);\n      this.loadWhatsNewPosts();\n    },\n    reset() {\n      this.set(\"loading\", true);\n      this.set(\"error\", false);\n      this.set(\"success\", false);\n    },\n    loadWhatsNewPosts() {\n      return new _rsvp.Promise((resolve, reject) => {\n        (0, _runloop.next)(() => {\n          // If we have already stored the data from s3, load it from cache\n          if (sessionStorage.whatsNewPosts) {\n            console.log(\"Loading posts from cache...\");\n            this.checkLatestPost(sessionStorage.latestPostDate);\n            resolve(JSON.parse(sessionStorage.whatsNewPosts));\n          } else {\n            // AWS does not currently support getting all of the objects in a bucket in one call\n            // We need to get a list of keys from the bucket, then loop over that list and get each object individually\n            return this.awsService.getS3Client(\"assets\").then(s3Client => {\n              // Get a list of objects with their keys from s3\n              s3Client.listObjectsV2({\n                Prefix: \"whatsnew/\"\n              }, (error, response) => {\n                if (error) {\n                  console.log(error);\n                  reject(error);\n                } else if (!response.Contents.length) {\n                  reject(\"Nothing returned from s3 bucket\");\n                } else {\n                  const postsInDateOrder = response.Contents.reverse();\n                  this.checkLatestPost(Date.parse(postsInDateOrder[0].LastModified));\n                  const postDetailsPromises = _rsvp.Promise.all(postsInDateOrder.map(post => {\n                    return new _rsvp.Promise((res, rej) => {\n                      // Create array of promises by looping over the list of keys in the bucket to get each object\n                      s3Client.getObject({\n                        Key: post.Key\n                      }, (err, data) => {\n                        if (err) {\n                          rej(err);\n                        }\n                        // Response from s3 comes back as a buffer and needs to be parsed\n                        const json = JSON.parse(data.Body.toString());\n\n                        // Convert date from JS date object to readable string\n                        json.date = (0, _moment.default)(json.date).format(\"MMMM DD, YYYY\");\n                        res(json);\n                      });\n                    });\n                  }));\n                  resolve(postDetailsPromises);\n                }\n              });\n            });\n          }\n        });\n      }).then(postData => {\n        // If we haven't stored the data yet, store it in cache\n        if (!sessionStorage.whatsNewPosts) {\n          console.log(\"Caching post data...\");\n          sessionStorage.latestPostDate = Date.parse(postData[0].date);\n          sessionStorage.whatsNewPosts = JSON.stringify(postData);\n        }\n        this.set(\"posts\", postData);\n        this.set(\"loading\", false);\n        this.set(\"success\", true);\n      }).catch(postError => {\n        console.log(postError);\n        this.set(\"errorMessage\", true);\n        this.set(\"loading\", false);\n      });\n    },\n    actions: {\n      toggleWhatsNew() {\n        this.toggleProperty(\"showWhatsNew\");\n      }\n    }\n  }));\n});","define(\"settify-mvp/components/wills-cta\", [\"exports\", \"@ember/service\", \"@ember/component\", \"settify-mvp/mixins/create-wills-record\"], function (_exports, _service, _component, _createWillsRecord) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@ember/component\",0,\"settify-mvp/mixins/create-wills-record\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _component.default.extend(_createWillsRecord.default, {\n    createdWillsReminder: false,\n    creatingWillsAccount: false,\n    showWillsCTA: true,\n    eventLogging: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    init() {\n      this._super(...arguments);\n      if (this.get(\"model.willsNoThanks\")) {\n        this.set(\"showWillsCTA\", false);\n      }\n    },\n    actions: {\n      startWill() {\n        if (this.creatingWillsAccount) {\n          return;\n        }\n        // create the account, then navigate to the wills page\n        return this.createWillsRecord().then(willsConnection => {\n          if (willsConnection && willsConnection.settifyURL && willsConnection.clientID) {\n            // window.open(`${willsConnection.settifyURL}/?clientID=${willsConnection.clientID}`);\n            // don't use window.open, as it triggers popup blockers\n            window.location.href = `${willsConnection.settifyURL}/?clientID=${willsConnection.clientID}`;\n          } else {\n            this.eventLogging.logError(\"Error creating wills connection from family law app\");\n          }\n        });\n      },\n      remindWill() {\n        if (this.creatingWillsAccount) {\n          return;\n        }\n        // create the account, and the MySQL entry, and let the automatic reminders do their work\n        return this.createWillsRecord().then(() => {\n          this.set(\"createdWillsReminder\", true);\n        });\n      },\n      setNoThanks() {\n        this.set(\"model.willsNoThanks\", true);\n      }\n    }\n  });\n});","define(\"settify-mvp/components/yesnomaybe-icon\", [\"exports\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _component, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\",0,\"@ember/template-factory\",0,\"@ember/component\"eaimeta@70e063a35619d71f\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @displayAll}}\n    <button type=\"button\" title=\"Positive\" {{on \"click\" (fn @selectIcon @question \"positive\")}}>\n      <i class=\"fal fa-check-circle {{if (or (eq @question.icon \"positive\") (and (not @question.icon) (eq @key \"onYes\"))) \"selected\" \"unselected\"}}\" aria-hidden=\"true\" />\n    </button>\n    <button type=\"button\" title=\"Negative\" {{on \"click\" (fn @selectIcon @question \"negative\")}}>\n      <i class=\"fal fa-times-circle {{if (or (eq @question.icon \"negative\") (and (not @question.icon) (eq @key \"onNo\"))) \"selected\" \"unselected\"}}\" aria-hidden=\"true\" />\n    </button>\n    <button type=\"button\" title=\"Warning\" {{on \"click\" (fn @selectIcon @question \"warning\")}}>\n      <i class=\"fal fa-exclamation-circle {{if (eq @question.icon \"warning\") \"selected\" \"unselected\"}}\" aria-hidden=\"true\" />\n    </button>\n    <button type=\"button\" title=\"Not Sure\" {{on \"click\" (fn @selectIcon @question \"notsure\")}}>\n      <i class=\"fal fa-question-circle {{if (or (eq @question.icon \"notsure\") (and (not @question.icon) (eq @key \"onNotSure\"))) \"selected\" \"unselected\"}}\" aria-hidden=\"true\" />\n    </button>\n  {{else}}\n    {{#if (eq @icon \"positive\")}}\n      <i class=\"fal fa-check-circle\" />\n    {{else if (eq @icon \"negative\")}}\n      <i class=\"fal fa-times-circle\" />\n    {{else if (eq @icon \"notsure\")}}\n      <i class=\"fal fa-question-circle\" />\n    {{else if (eq @icon \"warning\")}}\n      <i class=\"fal fa-exclamation-circle\" />\n    {{/if}}\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"DEQBXrgK\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[11,\\\"button\\\"],[24,\\\"title\\\",\\\"Positive\\\"],[24,4,\\\"button\\\"],[4,[38,2],[\\\"click\\\",[28,[37,3],[[30,2],[30,3],\\\"positive\\\"],null]],null],[12],[1,\\\"\\\\n    \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-check-circle \\\",[52,[28,[37,5],[[28,[37,6],[[30,3,[\\\"icon\\\"]],\\\"positive\\\"],null],[28,[37,7],[[28,[37,8],[[30,3,[\\\"icon\\\"]]],null],[28,[37,6],[[30,4],\\\"onYes\\\"],null]],null]],null],\\\"selected\\\",\\\"unselected\\\"]]]],[14,\\\"aria-hidden\\\",\\\"true\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[11,\\\"button\\\"],[24,\\\"title\\\",\\\"Negative\\\"],[24,4,\\\"button\\\"],[4,[38,2],[\\\"click\\\",[28,[37,3],[[30,2],[30,3],\\\"negative\\\"],null]],null],[12],[1,\\\"\\\\n    \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-times-circle \\\",[52,[28,[37,5],[[28,[37,6],[[30,3,[\\\"icon\\\"]],\\\"negative\\\"],null],[28,[37,7],[[28,[37,8],[[30,3,[\\\"icon\\\"]]],null],[28,[37,6],[[30,4],\\\"onNo\\\"],null]],null]],null],\\\"selected\\\",\\\"unselected\\\"]]]],[14,\\\"aria-hidden\\\",\\\"true\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[11,\\\"button\\\"],[24,\\\"title\\\",\\\"Warning\\\"],[24,4,\\\"button\\\"],[4,[38,2],[\\\"click\\\",[28,[37,3],[[30,2],[30,3],\\\"warning\\\"],null]],null],[12],[1,\\\"\\\\n    \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-exclamation-circle \\\",[52,[28,[37,6],[[30,3,[\\\"icon\\\"]],\\\"warning\\\"],null],\\\"selected\\\",\\\"unselected\\\"]]]],[14,\\\"aria-hidden\\\",\\\"true\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[11,\\\"button\\\"],[24,\\\"title\\\",\\\"Not Sure\\\"],[24,4,\\\"button\\\"],[4,[38,2],[\\\"click\\\",[28,[37,3],[[30,2],[30,3],\\\"notsure\\\"],null]],null],[12],[1,\\\"\\\\n    \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-question-circle \\\",[52,[28,[37,5],[[28,[37,6],[[30,3,[\\\"icon\\\"]],\\\"notsure\\\"],null],[28,[37,7],[[28,[37,8],[[30,3,[\\\"icon\\\"]]],null],[28,[37,6],[[30,4],\\\"onNotSure\\\"],null]],null]],null],\\\"selected\\\",\\\"unselected\\\"]]]],[14,\\\"aria-hidden\\\",\\\"true\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,6],[[30,5],\\\"positive\\\"],null],[[[1,\\\"    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,6],[[30,5],\\\"negative\\\"],null],[[[1,\\\"    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-times-circle\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,6],[[30,5],\\\"notsure\\\"],null],[[[1,\\\"    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-question-circle\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,6],[[30,5],\\\"warning\\\"],null],[[[1,\\\"    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-exclamation-circle\\\"],[12],[13],[1,\\\"\\\\n  \\\"]],[]],null]],[]]]],[]]]],[]]]],[]]]],[\\\"@displayAll\\\",\\\"@selectIcon\\\",\\\"@question\\\",\\\"@key\\\",\\\"@icon\\\"],false,[\\\"if\\\",\\\"button\\\",\\\"on\\\",\\\"fn\\\",\\\"i\\\",\\\"or\\\",\\\"eq\\\",\\\"and\\\",\\\"not\\\"]]\",\n    \"moduleName\": \"settify-mvp/components/yesnomaybe-icon.hbs\",\n    \"isStrictMode\": false\n  });\n  class YesNoMaybeIconComponent extends _component.default {}\n  _exports.default = YesNoMaybeIconComponent;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, YesNoMaybeIconComponent);\n});","define(\"settify-mvp/container-debug-adapter\", [\"exports\", \"ember-resolver/container-debug-adapter\"], function (_exports, _containerDebugAdapter) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _containerDebugAdapter.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-resolver/container-debug-adapter\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/controllers/admin/accountmaintenance\", [\"exports\", \"settify-mvp/controllers/base\"], function (_exports, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/controllers/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    actions: {\n      resendVerificationCode() {\n        let emailAddress = this.cognitoUserEmail;\n        let cognitoUser = this.awsService.getCognitoUser(emailAddress, false);\n        cognitoUser.resendConfirmationCode(function (err, result) {\n          if (err) {\n            alert(err);\n            return;\n          }\n          alert(result);\n        });\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/clients\", [\"exports\", \"rsvp\", \"@ember/object\", \"@ember/service\", \"@ember/runloop\", \"settify-mvp/controllers/base\", \"settify-mvp/mixins/summary-page-mixin\", \"settify-mvp/mixins/upload-download\"], function (_exports, _rsvp, _object, _service, _runloop, _base, _summaryPageMixin, _uploadDownload) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"rsvp\",0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/runloop\",0,\"settify-mvp/controllers/base\",0,\"settify-mvp/mixins/summary-page-mixin\",0,\"settify-mvp/mixins/upload-download\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend(_summaryPageMixin.default, _uploadDownload.default, {\n    lawyerList: (0, _service.inject)(),\n    jsonExport: (0, _service.inject)(),\n    lambda: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    questionnaireLogic: (0, _service.inject)(),\n    config: (0, _service.inject)(\"dynamic-config\"),\n    condensedOutputMode: true,\n    adminMode: true,\n    showChronologyLink: true,\n    queryParams: [\"opendownloads\"],\n    qrCodeBase64: null,\n    saveClientRecord() {\n      this.set(\"model.client.readOnly\", false);\n      this.model.client.save().then(() => this.set(\"model.client.readOnly\", true));\n    },\n    onMatterNumberChanged: (0, _object.observer)(\"model.client.matterReferenceNumber\", function () {\n      if (this.get(\"model.client.matterReferenceNumber\")) {\n        (0, _runloop.debounce)(this, \"saveClientRecord\", 700);\n      }\n    }),\n    logoURL: (0, _object.computed)(\"config.settings.AssetsUrl\", \"model.client.firmID\", function () {\n      return `${this.get(\"config.settings.AssetsUrl\")}/logos/${this.get(\"model.client.firmID\")}.png`;\n    }),\n    onPasswordChanged: (0, _object.observer)(\"password\", function () {\n      (0, _runloop.debounce)(this, \"retrieveFullRecord\", 1000);\n    }),\n    retrieveFullRecord() {\n      let {\n        password\n      } = this;\n      if (!password) {\n        return;\n      }\n      this.send(\"retrieveFullRecord\", password);\n    },\n    canRemoveFromFirmList: (0, _object.computed)(\"model\", \"model.metadata\", \"model.client\", function () {\n      let {\n        model\n      } = this;\n      return model.metadata.referredToFirm && model.client.get(\"conflictCheck\") === \"noconflict\" || [\"practiceclient\", \"trainingclient\"].includes(model.metadata.referral);\n    }),\n    removeFromFirmListAnswered: (0, _object.computed)(\"removeFromFirmList\", function () {\n      return [true, false].includes(this.removeFromFirmList);\n    }),\n    onDeletePasswordChanged: (0, _object.observer)(\"deletepassword\", \"showDeleteRecordPassword\", \"showIdentifyingInformationPassword\", \"password\", \"canRemoveFromFirmList\", \"removeFromFirmList\", function () {\n      let password = this.deletepassword;\n      if (!password || !this.showDeleteRecordPassword || !this.showIdentifyingInformationPassword || !this.password || this.canRemoveFromFirmList && !this.removeFromFirmListAnswered) {\n        return;\n      }\n      this.set(\"deleteInProgress\", true);\n      this.set(\"deleteSuccess\", false);\n      this.set(\"deleteFailed\", false);\n      this.lambda.invoke(this.get(\"lambda.deleteClientLambda\"), {\n        id: this.get(\"model.client.id\"),\n        firmID: this.get(\"model.client.firmID\"),\n        password: password,\n        removeFromFirmList: this.removeFromFirmList\n      }).then(() => {\n        this.set(\"deleteSuccess\", true);\n      }).catch(() => {\n        this.set(\"deleteFailed\", true);\n      }).finally(() => {\n        this.set(\"deleteInProgress\", false);\n      });\n    }),\n    reset() {\n      this._super(...arguments);\n      this.set(\"showClearPasswordInformation\", false);\n      this.set(\"showClearConflictInformation\", false);\n      this.set(\"showTroubleshootingMetadata\", false);\n      this.set(\"integrationFailed\", false);\n      this.set(\"removeFromFirmList\", null);\n      this.set(\"integrationFailed\", false);\n      this.set(\"loadingClient\", true);\n      this.afterModel(this.model);\n      // Get the client metadata and inductions\n      return (0, _rsvp.hash)({\n        metadata: this.lambda.invoke(this.get(\"lambda.getClientMetadataLambda\"), {\n          firmID: this.get(\"firm.id\"),\n          clientID: this.get(\"model.client.id\")\n        }).then(this.get(\"lambda.processResponse\")),\n        inductions: this.questionnaireLogic.getInductions(this.get(\"model.client\"))\n      }).then(data => {\n        this.set(\"model\", {\n          ...data.inductions,\n          ...this.model,\n          metadata: data.metadata\n        });\n      }).catch(err => {\n        console.log(err);\n      }).finally(() => {\n        this.set(\"loadingClient\", false);\n      });\n    },\n    sendDataToIntegration(json) {\n      return (0, _rsvp.resolve)(json);\n    },\n    actions: {\n      clearPasswordInformation() {\n        this.set(\"clearPasswordInProgress\", true);\n        this.set(\"clearPasswordSuccess\", false);\n        this.set(\"clearPasswordFailure\", false);\n        this.lambda.invoke(this.get(\"lambda.repairClientRecordLambda\"), {\n          clientID: this.get(\"model.client.id\"),\n          firmID: this.get(\"model.client.firmID\"),\n          action: \"clearaccountcreation\"\n        }).then(() => {\n          this.set(\"clearPasswordSuccess\", true);\n        }).catch(err => {\n          this.set(\"clearPasswordFailure\", err);\n        }).finally(() => {\n          this.set(\"clearPasswordInProgress\", false);\n        });\n      },\n      clearConflictInformation() {\n        this.set(\"clearConflictInProgress\", true);\n        this.set(\"clearConflictSuccess\", false);\n        this.set(\"clearConflictFailure\", false);\n        this.lambda.invoke(this.get(\"lambda.undoConflictLambda\"), {\n          clientID: this.get(\"model.client.id\"),\n          firmID: this.get(\"model.client.firmID\"),\n          action: \"reset\"\n        }).then(() => {\n          this.set(\"clearConflictSuccess\", true);\n        }).catch(err => {\n          this.set(\"clearConflictFailure\", err);\n        }).finally(() => {\n          this.set(\"clearConflictInProgress\", false);\n        });\n      },\n      verifyEmailAddress() {\n        this.set(\"verifyEmailInProgress\", true);\n        this.set(\"verifyEmailSuccess\", false);\n        this.set(\"verifyEmailFailure\", false);\n        this.lambda.invoke(this.get(\"lambda.repairClientRecordLambda\"), {\n          clientID: this.get(\"model.client.id\"),\n          firmID: this.get(\"model.client.firmID\"),\n          action: \"verifyemailaddress\"\n        }).then(() => {\n          this.set(\"verifyEmailSuccess\", true);\n        }).catch(err => {\n          this.set(\"verifyEmailFailure\", err);\n        }).finally(() => {\n          this.set(\"verifyEmailInProgress\", false);\n        });\n      },\n      getCognitoInformation() {\n        this.set(\"loadingCognitoData\", true);\n        this.set(\"cognitoDataSuccess\", false);\n        this.set(\"cognitoDataFailure\", false);\n        this.lambda.invoke(this.get(\"lambda.getCognitoDetailsLambda\"), {\n          clientID: this.get(\"model.client.id\"),\n          firmID: this.get(\"model.client.firmID\"),\n          username: this.get(\"model.client.email\"),\n          practiceArea: this.get(\"model.client.practiceArea\")\n        }).then(this.get(\"lambda.processResponse\")).then(cognito => {\n          this.set(\"cognitoDataSuccess\", cognito);\n        }).catch(err => {\n          this.set(\"cognitoDataFailure\", err);\n        }).finally(() => {\n          this.set(\"loadingCognitoData\", false);\n        });\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/compare\", [\"exports\", \"@ember/template\", \"rsvp\", \"@ember/runloop\", \"@ember/object\", \"@ember/service\", \"settify-mvp/controllers/base\", \"settify-mvp/mixins/upload-download\", \"settify-mvp/mixins/summary-page-mixin\", \"moment\"], function (_exports, _template, _rsvp, _runloop, _object, _service, _base, _uploadDownload, _summaryPageMixin, _moment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template\",0,\"rsvp\",0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/service\",0,\"settify-mvp/controllers/base\",0,\"settify-mvp/mixins/upload-download\",0,\"settify-mvp/mixins/summary-page-mixin\",0,\"moment\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend(_uploadDownload.default, _summaryPageMixin.default, {\n    queryParams: [\"record\"],\n    lambda: (0, _service.inject)(),\n    eventLogging: (0, _service.inject)(),\n    clientRecords: (0, _service.inject)(),\n    store: (0, _service.inject)(),\n    waitTime: 0,\n    numberOfRecordsToLoad: 0,\n    recordsLoaded: 0,\n    reset() {\n      this._super(...arguments);\n      this.set(\"compareSnapshotOne\", null);\n      this.set(\"compareSnapshotTwo\", null);\n      this.set(\"compareHTML\", null);\n      this.set(\"noSnapshots\", false);\n      this.set(\"minimalChanges\", false);\n      this.set(\"waitTime\", 0);\n      this.set(\"recordsLoaded\", 0);\n    },\n    init() {\n      this._super(...arguments);\n      this.set(\"documentsSelected\", {\n        Compare: true\n      });\n      this.set(\"fileTypeExplanation\", this.fileTypeExplanationRaw);\n      (0, _object.set)(this, \"savedSnapshots\", []);\n    },\n    onGotModel: (0, _object.observer)(\"model\", function () {\n      this.eventLogging.adminLog(this.model?.client?.id, this.eventLogging.adminIDs.clientCompared);\n      if (this?.model?.client) {\n        this.set(\"loadingSnapshots\", true);\n        const timestamp = this.recordpolling.getReferenceLastModified(this.model.client.id);\n        this.set(\"lastModifiedString\", (0, _moment.default)(timestamp).format(\"dddd D MMMM YYYY\"));\n        return this.lambda.invoke(this.lambda.getClientSnapshotsLambda, {\n          id: this.model.client.id,\n          firmID: this.firm.id\n        }).then(this.lambda.processResponse).then(data => {\n          if (!data.length) {\n            this.set(\"noSnapshots\", true);\n            return;\n          }\n          data.forEach(e => {\n            // Modify dates from database to a human readable format\n            if (e.snapshotReason.toLowerCase().includes(\"documents\")) {\n              e.snapshotReason = `${e.snapshotReason} (${(0, _moment.default)(e.dateOfSnapshot).format(\"DD/MM\")})`;\n            }\n            e.dateOfSnapshot = (0, _moment.default)(e.dateOfSnapshot).format(\"dddd D MMMM YYYY\");\n          });\n          this.set(\"savedSnapshots\", [{\n            clientSuffix: 0,\n            dateOfSnapshot: this.lastModifiedString,\n            snapshotReason: \"Current / Most recent\"\n          }].concat(data));\n          if (this.record) {\n            const paramSuffix = parseInt(this.record);\n            if (isNaN(paramSuffix) || !paramSuffix) {\n              return;\n            }\n            this.set(\"compareSnapshotOne\", paramSuffix);\n            this.set(\"compareSnapshotTwo\", 0);\n          }\n        }).catch(err => {\n          this.eventLogging.logError(\"Couldn't download list of snapshots\", err);\n        });\n      }\n    }),\n    selectedOne: (0, _object.computed)(\"compareSnapshotOne\", \"savedSnapshots\", \"savedSnapshots@each\", function () {\n      const selected = this.savedSnapshots.filter(s => s.clientSuffix === this.compareSnapshotOne);\n      if (selected) {\n        return selected[0];\n      }\n      return;\n    }),\n    selectedTwo: (0, _object.computed)(\"compareSnapshotTwo\", \"savedSnapshots\", \"savedSnapshots@each\", function () {\n      const selected = this.savedSnapshots.filter(s => s.clientSuffix === this.compareSnapshotTwo);\n      if (selected) {\n        return selected[0];\n      }\n      return;\n    }),\n    getSnapshotData: (0, _object.observer)(\"selectedOne\", \"selectedTwo\", function () {\n      this.set(\"numberOfRecordsToLoad\", 0);\n      if (this.selectedOne && this.selectedTwo) {\n        this.set(\"loading\", true);\n        this.startWaitTimer();\n        let {\n          selectedOne,\n          selectedTwo\n        } = this;\n        if (selectedOne.clientSuffix > selectedTwo.clientSuffix && selectedTwo.clientSuffix !== 0 || selectedOne.clientSuffix === 0) {\n          // We reverse the selected variables to send to the compareHTML function this way when we get\n          // the HTML back its shows the correct format for added and deleted data\n          selectedOne = this.selectedTwo;\n          selectedTwo = this.selectedOne;\n        }\n        const clientID = this.model.client?.id;\n        this.set(\"recordsLoaded\", 0);\n        // Retrieve the client snapshot records for the two selected\n        return this.store.findRecord(\"catalogue\", clientID).then(() => {\n          return this.getClientRecordAsAdmin(clientID + (selectedOne.clientSuffix === 0 ? \"\" : `#${selectedOne.clientSuffix}`));\n        }).then(clientOne => {\n          this.set(\"clientSnapshotOne\", clientOne);\n          this.set(\"numberOfRecordsToLoad\", clientOne.inductions?.length);\n          return this.getClientRecordAsAdmin(clientID + (selectedTwo.clientSuffix === 0 ? \"\" : `#${selectedTwo.clientSuffix}`));\n        }).then(clientTwo => {\n          this.set(\"numberOfRecordsToLoad\", this.numberOfRecordsToLoad + clientTwo.inductions?.length);\n          this.set(\"clientSnapshotTwo\", clientTwo);\n        });\n      }\n    }),\n    startWaitTimer() {\n      (0, _runloop.later)(() => {\n        if (!this.loading || this.isDestroyed || this.isDestroying) {\n          return;\n        }\n        this.set(\"waitTime\", this.waitTime + 1);\n        this.startWaitTimer();\n      }, 1000);\n    },\n    getClientRecordAsAdmin(id) {\n      // Note: not using promise chaining because we don't need the events to process in order\n      this.set(\"attemptedClientIDToGet\", id);\n      this.eventLogging.log(id, this.eventLogging.IDs.FirmAccessed);\n      return this.clientRecords.getClientByID(id).then(client => {\n        // console.log(\"Setting tracked client\");\n        if (!client) {\n          throw new Error(\"Couldn't load client record, even as admin\");\n        }\n        if (client?.id) {\n          // record loaded successfully\n          client.set(\"readOnly\", true);\n        }\n        return client;\n      });\n    },\n    actions: {\n      compareHTML() {\n        this.incrementProperty(\"recordsLoaded\");\n        if (this.recordsLoaded < this.numberOfRecordsToLoad) {\n          return;\n        }\n        const that = this;\n        (0, _runloop.next)(() => {\n          new _rsvp.Promise((resolve, reject) => {\n            const el = document.getElementById(\"settify-summary-one\");\n            const el2 = document.getElementById(\"settify-summary-two\");\n            if (el && el2) {\n              resolve([el.innerHTML, el2.innerHTML]);\n            } else {\n              reject();\n            }\n          }).then(html => {\n            return this.lambda.invoke(this.lambda.compareHtmlLambda, {\n              html: html,\n              id: this.model?.client?.id,\n              firmID: this.firm?.id\n            }).then(this.lambda.processResponse).then(data => {\n              this.set(\"compareHTML\", (0, _template.htmlSafe)(data));\n            });\n          }).then(() => {\n            (0, _runloop.next)(() => {\n              this.set(\"minimalChanges\", false);\n              const insElements = that.element.querySelectorAll(\"ins\");\n              const delElements = that.element.querySelectorAll(\"del\");\n              let insNoChanges = 0;\n              let delNoChanges = 0;\n              for (let i = 0; i < insElements.length; i++) {\n                if (insElements[i].innerText.match(/^\\s*(with an underline)?\\s*$/g)) {\n                  insNoChanges++;\n                }\n              }\n              for (let d = 0; d < delElements.length; d++) {\n                if (delElements[d].innerText.match(/^\\s*(with a strikethrough)?\\s*$/g)) {\n                  delNoChanges++;\n                }\n              }\n              if (insElements.length === insNoChanges && delElements.length === delNoChanges) {\n                this.set(\"minimalChanges\", true);\n              }\n            });\n          }).catch(err => {\n            this.eventLogging.logError(\"Couldn't generate comparison HTML\", err);\n          }).finally(() => {\n            this.set(\"loading\", false);\n            this.set(\"waitTime\", 0);\n          });\n        });\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/config/accounts/index\", [\"exports\", \"@ember/service\", \"@ember/controller\"], function (_exports, _service, _controller) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@ember/controller\"eaimeta@70e063a35619d71f\n  /* global saveAs */\n  var _default = _exports.default = _controller.default.extend({\n    redirecting: false,\n    redirectingFailed: false,\n    lambda: (0, _service.inject)(),\n    eventLogging: (0, _service.inject)(),\n    awsService: (0, _service.inject)(),\n    init() {\n      this._super(...arguments);\n      this.set(\"downloadingInvoice\", false);\n      this.set(\"downloadingInvoiceError\", false);\n    },\n    centsToDollars(cents) {\n      return (cents / 100).toFixed(2);\n    },\n    actions: {\n      downloadFile(invoice) {\n        this.set(\"downloadingInvoice\", true);\n        this.awsService.getS3ByType(\"billing\").then(s3Client => {\n          s3Client.getObject({\n            Key: invoice.Key\n          }, (err, data) => {\n            this.set(\"downloadingInvoice\", false);\n            if (!err) {\n              const blob = new Blob([data.Body], {\n                type: data.ContentType\n              });\n              saveAs(blob, invoice.fileName);\n            } else {\n              this.set(\"downloadingInvoiceError\", true);\n            }\n          });\n        });\n      },\n      goToStripePortal() {\n        this.set(\"redirectingFailed\", false);\n        this.set(\"redirecting\", true);\n        this.lambda.invoke(this.lambda.getStripePortalUrlLambda, {\n          firmID: this.firmID,\n          returnURL: window.location.href\n        }).then(this.lambda.processResponse).then(data => {\n          if (data.portalURL) {\n            window.location.href = data.portalURL;\n          }\n        }).catch(error => {\n          this.set(\"redirecting\", false);\n          this.set(\"redirectingFailed\", \"Failed to redirect to Stripe. Please try again.\");\n          this.eventLogging.logError(\"Failed to load or navigate to a Stripe portal URL\", error);\n        });\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/config/accounts/invoice\", [\"exports\", \"@ember/object/computed\", \"@ember/object\", \"@ember/service\", \"settify-mvp/controllers/base\", \"moment\"], function (_exports, _computed, _object, _service, _base, _moment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object/computed\",0,\"@ember/object\",0,\"@ember/service\",0,\"settify-mvp/controllers/base\",0,\"moment\"eaimeta@70e063a35619d71f\n  /* global saveAs */\n  var _default = _exports.default = _base.default.extend({\n    lambda: (0, _service.inject)(),\n    eventLogging: (0, _service.inject)(),\n    accessDetails: true,\n    init() {\n      this._super(...arguments);\n      this.expand = {};\n    },\n    reset() {\n      this.set(\"downloading\", false);\n      this.set(\"downloadSuccessful\", false);\n      this.set(\"downloadFailed\", false);\n    },\n    invoiceIDForDisplay: (0, _computed.or)(\"model.invoiceRequest.invoiceNumber\", \"model.invoiceRequest.xeroInvoiceNumber\", \"model.invoiceRequest.id\"),\n    showPaymentLink: (0, _object.computed)(\"model.invoiceRequest.paymentUrl\", \"model.invoiceRequest.requestCompleted\", function () {\n      if (this.model?.invoiceRequest?.paymentUrl && this.model?.invoiceRequest?.requestCompleted) {\n        const daysSinceInvoiceURLWasCreated = (0, _moment.default)().diff(this.model?.invoiceRequest?.requestCompleted, \"days\");\n        // Stripe invoice URLs expire 30 days after the invoice due date\n        if (daysSinceInvoiceURLWasCreated < 30) {\n          return true;\n        }\n      }\n      return false;\n    }),\n    showDisbursementReport: (0, _object.computed)(\"model.allLeads.length\", \"model.firm\", \"model.invoiceRequest.paymentUrl\", \"model.unbilledLeads.length\", function () {\n      if (this.model?.invoiceRequest?.paymentUrl && this.model?.allLeads?.length && this.model?.allLeads?.length !== this.model?.unbilledLeads?.length) {\n        // Check if any practice area has a \"disbursesFee\" value\n        return Object.keys(this.model.firm).some(practiceArea => this.model.firm[practiceArea].disbursesFee);\n      }\n      return false;\n    }),\n    hasLeadsConversionTypeClients: (0, _object.computed)(\"model.allLeads\", function () {\n      return this.model.allLeads.some(l => l.conversionTypeAtReferralDate && l.conversionTypeAtReferralDate.startsWith(\"LEADS_\"));\n    }),\n    actions: {\n      toggleExpand(practiceArea) {\n        this.set(\"expand\", {\n          ...this.expand,\n          [practiceArea]: !this.get(`expand.${practiceArea}`)\n        });\n      },\n      downloadDisbursementReport() {\n        this.set(\"downloading\", true);\n        this.set(\"downloadSuccessful\", false);\n        this.set(\"downloadFailed\", false);\n        const payload = {\n          firmID: this.firm.id,\n          invoiceID: this.model?.invoiceRequest?.id\n        };\n        return this.lambda.invoke(this.lambda.disbursementReportLambda, payload).then(this.lambda.processResponse).then(reportBuffer => {\n          const blob = new Blob([reportBuffer], {\n            type: \"application/text;charset=utf-8\"\n          });\n          saveAs(blob, `Disbursement Report - ${this.invoiceIDForDisplay}.pdf`);\n          this.set(\"downloadSuccessful\", true);\n        }).catch(err => {\n          this.eventLogging.logError(`Error downloading the disburment report for invoice #${this.invoiceIDForDisplay}`, err);\n          this.set(\"downloadFailed\", true);\n        }).finally(() => this.set(\"downloading\", false));\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/config/accounts/settings\", [\"exports\", \"settify-mvp/controllers/base\", \"settify-mvp/mixins/edit-firm-settings\"], function (_exports, _base, _editFirmSettings) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/controllers/base\",0,\"settify-mvp/mixins/edit-firm-settings\"eaimeta@70e063a35619d71f\n  // import Ember from 'ember';\n  var _default = _exports.default = _base.default.extend(_editFirmSettings.default, {\n    accessDetails: true\n  });\n});","define(\"settify-mvp/controllers/admin/config/customisations\", [\"exports\", \"@ember/controller\", \"@ember/service\", \"@glimmer/tracking\", \"@ember/object\", \"settify-mvp/helpers/load-async-data\", \"settify-mvp/lib/customisations/landing_page_payload\", \"settify-mvp/lib/customisations/email_payload\", \"@ember/runloop\", \"@settify/latte-sdk\"], function (_exports, _controller, _service, _tracking, _object, _loadAsyncData, _landing_page_payload, _email_payload, _runloop, _latteSdk) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19, _descriptor20, _descriptor21, _CustomisationsAdmin_brand;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/service\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"settify-mvp/helpers/load-async-data\",0,\"settify-mvp/lib/customisations/landing_page_payload\",0,\"settify-mvp/lib/customisations/email_payload\",0,\"@ember/runloop\",0,\"@settify/latte-sdk\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }\n  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let CustomisationsAdmin = _exports.default = (_class = (_CustomisationsAdmin_brand = /*#__PURE__*/new WeakSet(), class CustomisationsAdmin extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      /**\n       * Fetches the email template JSON for the given practice area and template name.\n       * Lists customization files via the Latte firm files API, then downloads the\n       * template content from the CDN selfLink. Returns the default invitation object\n       * if no template is found or the download fails.\n       *\n       * @param {string} practiceArea - Lowercase practice area (e.g. \"family\", \"wills\").\n       * @param {string} template - Template name (e.g. \"generalenquiry\", \"generalenquiry_phonemeeting\").\n       * @returns {Promise<Object>} The parsed template JSON, or the default invitation object on failure.\n       */\n      _classPrivateMethodInitSpec(this, _CustomisationsAdmin_brand);\n      _initializerDefineProperty(this, \"firmSettings\", _descriptor, this);\n      _initializerDefineProperty(this, \"latteFirmFiles\", _descriptor2, this);\n      _defineProperty(this, \"queryParams\", [\"firmID\"]);\n      _initializerDefineProperty(this, \"_practiceArea\", _descriptor3, this);\n      _initializerDefineProperty(this, \"editor\", _descriptor4, this);\n      _initializerDefineProperty(this, \"selectedTemplate\", _descriptor5, this);\n      _initializerDefineProperty(this, \"initialPhoneMeeting\", _descriptor6, this);\n      _initializerDefineProperty(this, \"savingCustomTemplate\", _descriptor7, this);\n      _initializerDefineProperty(this, \"savingLandingPage\", _descriptor8, this);\n      _initializerDefineProperty(this, \"savingLandingPageError\", _descriptor9, this);\n      _initializerDefineProperty(this, \"pageContent\", _descriptor10, this);\n      _initializerDefineProperty(this, \"isUploadingAttachment\", _descriptor11, this);\n      _initializerDefineProperty(this, \"deletingAttachment\", _descriptor12, this);\n      _initializerDefineProperty(this, \"isAttachmentError\", _descriptor13, this);\n      _initializerDefineProperty(this, \"attachmentErrorMessage\", _descriptor14, this);\n      _initializerDefineProperty(this, \"confirmResetEmail\", _descriptor15, this);\n      _initializerDefineProperty(this, \"confirmResetLandingPage\", _descriptor16, this);\n      _initializerDefineProperty(this, \"resettingEmailTemplate\", _descriptor17, this);\n      _initializerDefineProperty(this, \"resettingLandingPage\", _descriptor18, this);\n      _initializerDefineProperty(this, \"resetEmailError\", _descriptor19, this);\n      _initializerDefineProperty(this, \"resetLandingPageError\", _descriptor20, this);\n      _defineProperty(this, \"buttonLabel\", \"Click here to get started\");\n      _defineProperty(this, \"customisationOptions\", {\n        customisations: [{\n          label: \"Email Templates\",\n          value: \"emails\"\n        }, {\n          label: \"Landing Pages\",\n          value: \"pages\"\n        }],\n        emailOptions: [{\n          label: \"General enquiry invitation\",\n          value: \"generalenquiry\"\n        }, {\n          label: \"Appointment confirmation invitation\",\n          value: \"confirmation\"\n        }, {\n          label: \"Follow-up invitation\",\n          value: \"followup\"\n        }]\n      });\n      /**\n       * List of firm email attachment files for the selected practice area/template.\n       * @type {Array}\n       */\n      _initializerDefineProperty(this, \"attachments\", _descriptor21, this);\n    }\n    /**\n     * Getter and setter for the `practiceArea` property.\n     *\n     * To maintain the correct default state of `initialPhoneMeeting`, which is\n     * dependent on the selected `practiceArea` settings (including on initial\n     * route/firm load), we use this getter/setter pattern.\n     *\n     * The getter simply returns the current value of the private `_practiceArea` property.\n     *\n     * The setter does the following:\n     * 1. Updates the `_practiceArea` property with the new practice area value.\n     * 2. Immediately updates the `initialPhoneMeeting` property to reflect the\n     * default value for the newly selected practice area, which is obtained\n     * from the `initialPhoneMeetingByDefault` getter.\n     *\n     * By using a setter, we ensure that `initialPhoneMeeting` remains\n     * synchronized with the currently selected practice area whenever it changes.\n     */\n    get practiceArea() {\n      return this._practiceArea;\n    }\n    set practiceArea(newPracticeArea) {\n      this._practiceArea = newPracticeArea;\n      this.initialPhoneMeeting = this.initialPhoneMeetingByDefault;\n    }\n\n    /**\n     * Retrieves the settings for the currently selected practice area.\n     *\n     * This getter accesses the `practiceAreasSettings` object (which is populated\n     * by the route's `model` hook) and returns the settings associated with the\n     * currently selected `practiceArea`.\n     *\n     * @returns {Object} The settings object for the selected practice area, or an\n     * empty object if no practice area is selected or settings are not yet loaded.\n     */\n    get selectedPracticeAreaSettings() {\n      if (!this.practiceArea || !this.model.settings) return {};\n      return this.model?.settings?.[this.practiceArea];\n    }\n\n    /**\n     * Returns the appropriate dynamic blocks based on current state\n     */\n    get dynamicBlocks() {\n      const blocks = [{\n        id: \"LAWYER_NAME\",\n        title: \"Lawyer name\",\n        description: \"Render lawyer name\"\n      }, {\n        id: \"FIRM_NAME\",\n        title: \"Firm name\",\n        description: \"Render firm name\"\n      }, {\n        id: \"FIRM_PHONE\",\n        title: \"Firm phone\",\n        description: \"Render firm phone number\"\n      }, {\n        id: \"CLIENT_FIRST_NAME\",\n        title: \"Client name\",\n        description: \"Render client name (e.g. John)\"\n      }, {\n        id: \"OFFICE_SUBURB\",\n        title: \"Office suburb\",\n        description: \"Render office suburb\"\n      }, {\n        id: \"CHARGE_OUT_RATE\",\n        title: \"Charge out rate\",\n        description: \"Render lawyer charge out rate (e.g. $400)\"\n      }, {\n        id: \"INITIAL_CONSULTATION_FEE\",\n        title: \"Initial consultation fee\",\n        description: \"Render lawyer initial consultation fee (e.g. $400)\"\n      }, {\n        id: \"LAWYER_BIO\",\n        title: \"Lawyer bio\",\n        description: \"Render the lawyer bio section\",\n        type: \"nonEditable\"\n      }];\n\n      // Show appointment information for invite templates\n      if (this.selectedTemplate === \"confirmation\") {\n        blocks.push({\n          id: \"APPOINTMENT_DATE\",\n          title: \"Appointment date\",\n          description: \"Render appointment date (e.g. Thursday 8 May 2025)\"\n        }, {\n          id: \"APPOINTMENT_TIME\",\n          title: \"Appointment time\",\n          description: \"Render appointment time (e.g. 9:30 AM)\"\n        }, {\n          id: \"APPOINTMENT_LOCATION\",\n          title: \"Appointment location\",\n          description: \"Render appointment location (e.g. 42 Wallaby Way, Sydney)\"\n        }, {\n          id: \"APPOINTMENT_DURATION\",\n          title: \"Appointment duration\",\n          description: \"Render appointment duration in minutes (e.g. 90 minutes)\"\n        });\n      }\n      return blocks;\n    }\n\n    /**\n     * Determines the default state of the 'initial phone meeting' setting\n     * based on the configuration of the currently selected practice area.\n     *\n     * @returns {boolean|undefined} A boolean indicating the default state of the 'initial phone meeting'\n     */\n    get initialPhoneMeetingByDefault() {\n      return this.selectedPracticeAreaSettings?.settings?.admin?.invitations?.phoneMeetingByDefault;\n    }\n\n    /**\n     * Determines the configured default appointment duration for the currently\n     * selected practice area.\n     *\n     * @returns {number|undefined} The default appointment duration in minutes for the selected practice area\n     */\n    get appointmentDuration() {\n      return this.selectedPracticeAreaSettings?.settings?.admin?.invitations?.appointmentDuration;\n    }\n\n    /**\n     * Asynchronously loads the content of the selected email template\n     * and for a specific practice area from S3 (through the Latte endpoint).\n     */\n    get emailTemplateContent() {\n      if (this.savingCustomTemplate || this.resettingEmailTemplate) return {\n        isLoading: true\n      };\n      const template = _assertClassBrand(_CustomisationsAdmin_brand, this, _getFullTemplateName).call(this);\n      const practiceArea = this.practiceArea.toLowerCase();\n      return (0, _loadAsyncData.load)(_assertClassBrand(_CustomisationsAdmin_brand, this, _fetchEmailTemplateContent).call(this, practiceArea, template));\n    }\n    /**\n     * Returns a list of available practice areas for selection.\n     * @returns {Array<{label: string, value: string}>}\n     */\n    get practiceAreaSelects() {\n      const {\n        otherSettifyURLs = {}\n      } = this.firmSettings.settings;\n      const practiceAreaNames = [...Object.keys(otherSettifyURLs)].filter(Boolean);\n      return practiceAreaNames.map(name => ({\n        label: name,\n        value: name\n      }));\n    }\n\n    /**\n     * Loads the landing page content for the selected practice area from S3.\n     * @returns {Promise<Object|null>}\n     */\n    get landingPageContent() {\n      if (!this.practiceArea) return null;\n      if (this.savingLandingPage || this.resettingLandingPage) return {\n        isLoading: true\n      };\n      return (0, _loadAsyncData.load)(_assertClassBrand(_CustomisationsAdmin_brand, this, _fetchLandingPageContent).call(this, this.practiceArea.toLowerCase()));\n    }\n\n    /**\n     * Fetches the landing page JSON for the given practice area.\n     * Lists customization files via the Latte firm files API, then downloads the\n     * content from the CDN selfLink into `this.pageContent`. Falls back to a\n     * default practice-area-specific payload if no content is found or the download fails.\n     *\n     * @param {string} practiceArea - Lowercase practice area (e.g. \"family\", \"wills\").\n     * @returns {Promise<void>}\n     */\n\n    /**\n     * Saves the current custom email template to S3 for the selected practice area/template.\n     * @returns {Promise<void>}\n     */\n    async saveCustomEmailTemplate() {\n      this.savingCustomTemplate = true;\n      if (!this.selectedTemplate) return;\n      const template = _assertClassBrand(_CustomisationsAdmin_brand, this, _getFullTemplateName).call(this);\n      const practiceArea = this.practiceArea.toLowerCase();\n      const body = JSON.stringify(this.editor.getJSON());\n      try {\n        const response = await this.latteFirmFiles.uploadFirmFile({\n          category: \"customisations\",\n          subPath: `templates/${practiceArea}/${template}`,\n          uploadFileName: `${template}.json`,\n          uploadFileSize: new Blob([body]).size\n        });\n        const uploadUrl = response?.data?.uploadUrl;\n        if (!uploadUrl) throw new Error(\"Failed to get upload URL\");\n        const fetchInvoker = new _latteSdk.FetchInvoker({\n          headers: {\n            \"Content-Type\": \"application/json\"\n          }\n        });\n        await fetchInvoker.fetch({\n          method: \"PUT\",\n          url: uploadUrl,\n          body\n        });\n      } catch (err) {\n        console.log(\"Couldn't upload custom template\", err);\n        throw new Error(\"Failed to upload the custom email template.\");\n      } finally {\n        this.savingCustomTemplate = false;\n      }\n    }\n    async resetEmailTemplate() {\n      this.resettingEmailTemplate = true;\n      this.resetEmailError = false;\n      try {\n        const template = _assertClassBrand(_CustomisationsAdmin_brand, this, _getFullTemplateName).call(this);\n        const practiceArea = this.practiceArea.toLowerCase();\n        await this.latteFirmFiles.deleteFirmFile({\n          category: \"customisations\",\n          subPath: `templates/${practiceArea}/${template}`\n        });\n        this.confirmResetEmail = false;\n      } catch (err) {\n        console.log(\"Couldn't reset email template\", err);\n        this.resetEmailError = true;\n      } finally {\n        this.resettingEmailTemplate = false;\n      }\n    }\n    async resetLandingPage() {\n      this.resettingLandingPage = true;\n      this.resetLandingPageError = false;\n      try {\n        const practiceArea = this.practiceArea.toLowerCase();\n        await this.latteFirmFiles.deleteFirmFile({\n          category: \"customisations\",\n          subPath: `pages/${practiceArea}`\n        });\n        this.confirmResetLandingPage = false;\n      } catch (err) {\n        console.log(\"Couldn't reset landing page\", err);\n        this.resetLandingPageError = true;\n      } finally {\n        this.resettingLandingPage = false;\n      }\n    }\n\n    /**\n     * Saves the current landing page to S3 for the selected practice area.\n     * @returns {Promise<void>}\n     */\n    async saveLandingPage() {\n      this.savingLandingPage = true;\n      this.savingLandingPageError = false;\n      const practiceArea = this.practiceArea.toLowerCase();\n      const body = JSON.stringify(this.editor.getJSON());\n      try {\n        const response = await this.latteFirmFiles.uploadFirmFile({\n          category: \"customisations\",\n          subPath: `pages/${practiceArea}`,\n          uploadFileName: \"landingpage.json\",\n          uploadFileSize: body.length\n        });\n        const uploadUrl = response?.data?.uploadUrl;\n        if (!uploadUrl) throw new Error(\"Failed to get upload URL\");\n        const fetchInvoker = new _latteSdk.FetchInvoker({\n          headers: {\n            \"Content-Type\": \"application/json\"\n          }\n        });\n        await fetchInvoker.fetch({\n          method: \"PUT\",\n          url: uploadUrl,\n          body\n        });\n      } catch (err) {\n        console.log(err, \"Couldn't upload custom page\");\n        this.savingLandingPageError = true;\n      } finally {\n        this.savingLandingPage = false;\n      }\n    }\n\n    /**\n     * Sets the editor instance for use in editing templates/pages.\n     * @param {Object} editor\n     */\n    setEditor(editor) {\n      this.editor = editor;\n    }\n\n    /**\n     * Handler for when the practice area or template changes.\n     * Debounces loading of attachments.\n     * @returns {Promise<void>}\n     */\n    async onPracticeAreaOrTemplateChange() {\n      this.confirmResetEmail = false;\n      this.resetEmailError = false;\n      // TODO look into why this needs to be debounced (settify-select action selectItem is being called twice)\n      (0, _runloop.debounce)(this, this.loadAttachments, 500, true);\n    }\n\n    /**\n     * Handles file upload for attachments, uploads to S3, and refreshes the attachments list.\n     * @param {Event} e\n     * @returns {Promise<void>}\n     */\n    async onFileUpload(e) {\n      try {\n        const file = e.target.files[0];\n        if (!file) {\n          return;\n        }\n        this.isUploadingAttachment = true;\n        this.isAttachmentError = false;\n\n        // get a signed upload url from latte\n        const template = _assertClassBrand(_CustomisationsAdmin_brand, this, _getFullTemplateName).call(this);\n        const response = await this.latteFirmFiles.uploadFirmFile({\n          category: \"attachments\",\n          subPath: `${this.practiceArea}/${template}`,\n          uploadFileName: file.name,\n          uploadFileSize: file.size\n        });\n        const uploadUrl = response?.data?.uploadUrl;\n        if (!uploadUrl) {\n          return;\n        }\n\n        // now PUT the file to the uploadUrl\n        const fetchInvoker = new _latteSdk.FetchInvoker({\n          headers: {\n            \"Content-Type\": file.type\n          }\n        });\n        await fetchInvoker.fetch({\n          method: \"PUT\",\n          url: uploadUrl,\n          body: file\n        });\n\n        // refresh the attachments so they reflect the one just uploaded\n        await this.loadAttachments();\n      } catch (error) {\n        this.isAttachmentError = true;\n        this.attachmentErrorMessage = `Failed to upload attachment: ${error.message}`;\n      } finally {\n        e.target.value = null;\n        this.isUploadingAttachment = false;\n      }\n    }\n\n    /**\n     * Deletes an attachment file from S3 and refreshes the attachments list.\n     * @param {string} attachment\n     * @returns {Promise<void>}\n     */\n    async deleteAttachment(attachment) {\n      try {\n        this.isAttachmentError = false;\n        this.deletingAttachment = attachment;\n        const template = _assertClassBrand(_CustomisationsAdmin_brand, this, _getFullTemplateName).call(this);\n        await this.latteFirmFiles.deleteFirmFile({\n          category: \"attachments\",\n          subPath: `${this.practiceArea}/${template}/${attachment}`\n        });\n        await this.loadAttachments();\n      } catch (error) {\n        this.isAttachmentError = true;\n        this.attachmentErrorMessage = `Failed to delete attachment: ${error.message}`;\n      } finally {\n        this.deletingAttachment = null;\n      }\n    }\n\n    /**\n     * Loads the list of attachments for the selected practice area/template.\n     * @returns {Promise<void>}\n     */\n    async loadAttachments() {\n      if (!this.practiceArea || !this.selectedTemplate) return;\n      try {\n        this.isAttachmentError = false;\n        this.attachmentErrorMessage = \"\";\n        const template = _assertClassBrand(_CustomisationsAdmin_brand, this, _getFullTemplateName).call(this);\n        const response = await this.latteFirmFiles.listFirmFiles({\n          category: \"attachments\",\n          subPath: `${this.practiceArea}/${template}`\n        });\n        this.attachments = response?.data?.items ?? [];\n      } catch (error) {\n        this.isAttachmentError = true;\n        this.attachmentErrorMessage = `Failed to load attachments: ${error.message}`;\n      }\n    }\n\n    /**\n     * Returns the full template name based on the\n     * `selectedTemplate` and the `initialPhoneMeeting` flag.\n     *\n     * @returns {String} The template name\n     */\n\n    /**\n     * Resets the controller state to initial values.\n     */\n    _reset() {\n      this.customisation = null;\n      this.initialPhoneMeeting = false;\n      this.savingCustomTemplate = false;\n      this.editor = null;\n      this.practiceArea = null;\n      this.selectedTemplate = null;\n      this.savingLandingPage = false;\n      this.savingLandingPageError = false;\n      this.pageContent = null;\n      this.isAttachmentError = false;\n      this.isUploadingAttachment = false;\n      this.deletingAttachment = null;\n      this.attachmentErrorMessage = \"\";\n      this.confirmResetEmail = false;\n      this.confirmResetLandingPage = false;\n      this.resettingEmailTemplate = false;\n      this.resettingLandingPage = false;\n      this.resetEmailError = false;\n      this.resetLandingPageError = false;\n    }\n  }), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firmSettings\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"latteFirmFiles\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"_practiceArea\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"editor\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"selectedTemplate\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"initialPhoneMeeting\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"savingCustomTemplate\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"savingLandingPage\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor9 = _applyDecoratedDescriptor(_class.prototype, \"savingLandingPageError\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor10 = _applyDecoratedDescriptor(_class.prototype, \"pageContent\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _descriptor11 = _applyDecoratedDescriptor(_class.prototype, \"isUploadingAttachment\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor12 = _applyDecoratedDescriptor(_class.prototype, \"deletingAttachment\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _descriptor13 = _applyDecoratedDescriptor(_class.prototype, \"isAttachmentError\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor14 = _applyDecoratedDescriptor(_class.prototype, \"attachmentErrorMessage\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor15 = _applyDecoratedDescriptor(_class.prototype, \"confirmResetEmail\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor16 = _applyDecoratedDescriptor(_class.prototype, \"confirmResetLandingPage\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor17 = _applyDecoratedDescriptor(_class.prototype, \"resettingEmailTemplate\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor18 = _applyDecoratedDescriptor(_class.prototype, \"resettingLandingPage\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor19 = _applyDecoratedDescriptor(_class.prototype, \"resetEmailError\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor20 = _applyDecoratedDescriptor(_class.prototype, \"resetLandingPageError\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor21 = _applyDecoratedDescriptor(_class.prototype, \"attachments\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return [];\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"saveCustomEmailTemplate\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"saveCustomEmailTemplate\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"resetEmailTemplate\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"resetEmailTemplate\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"resetLandingPage\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"resetLandingPage\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"saveLandingPage\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"saveLandingPage\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"setEditor\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"setEditor\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"onPracticeAreaOrTemplateChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"onPracticeAreaOrTemplateChange\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"onFileUpload\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"onFileUpload\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"deleteAttachment\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"deleteAttachment\"), _class.prototype), _class);\n  async function _fetchEmailTemplateContent(practiceArea, template) {\n    try {\n      const response = await this.latteFirmFiles.listFirmFiles({\n        category: \"customisations\",\n        subPath: `templates/${practiceArea}/${template}`\n      });\n      const items = response?.data?.items ?? [];\n      if (!items.length || !items[0].selfLink) return _assertClassBrand(_CustomisationsAdmin_brand, this, _defaultInvitationObject).call(this);\n\n      // no-store: the saved file is PUT straight to S3 and carries no Cache-Control, so without\n      // this the browser can serve a stale copy for days and edits look like they never applied.\n      const res = await fetch(items[0].selfLink, {\n        cache: \"no-store\"\n      });\n      if (!res.ok) return _assertClassBrand(_CustomisationsAdmin_brand, this, _defaultInvitationObject).call(this);\n      return await res.json();\n    } catch (err) {\n      return _assertClassBrand(_CustomisationsAdmin_brand, this, _defaultInvitationObject).call(this);\n    }\n  }\n  /**\n   * Returns the appropriate default invitation payload object based on the\n   * `selectedTemplate` and the `initialPhoneMeeting` flag.\n   *\n   * @returns {Object} The default invitation payload object.\n   */\n  function _defaultInvitationObject() {\n    const payloadMap = {\n      confirmation: () => this.initialPhoneMeeting ? (0, _email_payload.getInitialPhoneMeetingPayload)() : (0, _email_payload.getAppointmentConfirmationPayload)(),\n      followup: () => (0, _email_payload.getFollowUpPayload)(),\n      generalenquiry: () => (0, _email_payload.getGeneralEnquiryPayload)()\n    };\n    return payloadMap[this.selectedTemplate]();\n  }\n  async function _fetchLandingPageContent(practiceArea) {\n    try {\n      const response = await this.latteFirmFiles.listFirmFiles({\n        category: \"customisations\",\n        subPath: `pages/${practiceArea}`\n      });\n      const items = response?.data?.items ?? [];\n      if (items.length && items[0].selfLink) {\n        const res = await fetch(items[0].selfLink, {\n          cache: \"no-store\"\n        });\n        if (res.ok) {\n          this.pageContent = await res.json();\n          return;\n        }\n      }\n    } catch (err) {\n      console.log(\"No landing page content found\");\n    }\n    const payloadMap = {\n      family: () => (0, _landing_page_payload.getFamilyLandingPayload)(),\n      wills: () => (0, _landing_page_payload.getWillsLandingPayload)(),\n      probate: () => (0, _landing_page_payload.getProbateLandingPayload)(),\n      estates: () => (0, _landing_page_payload.getEstatesLandingPayload)()\n    };\n    this.pageContent = payloadMap[practiceArea]();\n  }\n  function _getFullTemplateName() {\n    return this.initialPhoneMeeting ? `${this.selectedTemplate}_phonemeeting` : this.selectedTemplate;\n  }\n});","define(\"settify-mvp/controllers/admin/config/dashboard\", [\"exports\", \"settify-mvp/controllers/admin/config/settingsbase\"], function (_exports, _settingsbase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/controllers/admin/config/settingsbase\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _settingsbase.default.extend({\n    queryParams: [\"firmID\", \"practiceArea\"],\n    settingsFilter(settingName) {\n      const allowedSettings = [`^contactEmail$`, `^contactEmailCCs$`, `^websiteURL$`, `^websitePretty$`, `^permittedEmailDomains$`, `^bookingNotificationCCs$`, `^settings.admin`, `^relationshipManagementContacts`];\n      const declineNestedSettings = [`settings.admin.invitations`, `settings.admin.integrations`];\n      return allowedSettings.some(regex => settingName.match(regex)) && !declineNestedSettings.some(regex => settingName.match(regex));\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/config/editform\", [\"exports\", \"@ember/template\", \"rsvp\", \"@ember/runloop\", \"@ember/object\", \"@ember/service\", \"settify-mvp/controllers/base\", \"settify-mvp/mixins/edit-helpers\", \"settify-mvp/mixins/summary-page-mixin\", \"settify-mvp/mixins/mock-data\"], function (_exports, _template, _rsvp, _runloop, _object, _service, _base, _editHelpers, _summaryPageMixin, _mockData) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template\",0,\"rsvp\",0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/service\",0,\"settify-mvp/controllers/base\",0,\"settify-mvp/mixins/edit-helpers\",0,\"settify-mvp/mixins/summary-page-mixin\",0,\"settify-mvp/mixins/mock-data\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend(_editHelpers.default, _summaryPageMixin.default, _mockData.default, {\n    editMode: true,\n    showAnswerToggles: true,\n    clientRecords: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    lambda: (0, _service.inject)(),\n    recordpolling: (0, _service.inject)(),\n    // we inject this to ensure the device fingerprint has been set\n\n    queryParams: [\"firmID\"],\n    init() {\n      this._super(...arguments);\n      this.backRoute = \"admin.config.forms\";\n      this.practiceAreaSelections = [{\n        label: \"Probate\",\n        value: \"Probate\"\n      }, {\n        label: \"Estates\",\n        value: \"Estates\"\n      }, {\n        label: \"Conveyancing\",\n        value: \"Conveyancing\"\n      }, {\n        label: \"Corporate & Commercial\",\n        value: \"Corporate\"\n      }, {\n        label: \"Personal Injury\",\n        value: \"PersonalInjury\"\n      }, {\n        label: \"Litigation\",\n        value: \"Litigation\"\n      }];\n      this.customNextButtonRoutes = [{\n        label: \"Request Appointment\",\n        value: \"requestappointment\"\n      }];\n      this.fieldsToStripOnSave = [\"creatingNewInduction\", \"showDelete\", \"expand\", \"open\", \"metadata\", \"adminEditing\", \"showDocumentsRequired\"];\n      this.fieldsToStripOnSaveIfEmpty = [\"onYes\", \"onNo\", \"onNotSure\", \"askFor\", \"requiredFields\", \"displayIf\", \"styles\"];\n      this.listsToStripOnSaveIfEmpty = [\"documentsRequired\", \"columns\", \"startingRows\", \"setValues\", \"icons\", \"rows\"];\n      (0, _object.set)(this, \"uniqueStandalonePages\", [{\n        value: \"basicDetails\",\n        label: \"Add content to display on the requestappointment route\"\n      }]);\n      (0, _object.set)(this, \"activeFilters\", []);\n    },\n    reset() {\n      this._super(...arguments);\n      this.set(\"savingChanges\", false);\n      this.set(\"saveComplete\", false);\n      this.set(\"saveError\", false);\n      this.set(\"editingLock\", false);\n      this.set(\"viewMode\", \"edit\");\n      this.set(\"showChanges\", false);\n      this.set(\"showVariables\", false);\n      this.set(\"showFilters\", false);\n      this.set(\"activeFilters\", []);\n      this.set(\"reviewingChanges\", false);\n      this.set(\"currentFormModel\", \"live\");\n      const formID = this.model?.id;\n      const repeatToken = 1;\n      const client = this.clientRecords.generateNewClientRecord({\n        noSave: true,\n        noEvents: true\n      });\n      client.set(\"readOnly\", true);\n      client.set(\"inductions\", [{\n        id: formID,\n        repeatToken\n      }]);\n      [{\n        id: \"8ded4171-dc1c-4804-baf0-b4380e9fafda\",\n        title: \"Ms\",\n        firstName: \"Jane\",\n        middleName: \"Elizabeth\",\n        surname: \"Doe\",\n        email: \"jane.doe@settify.com.au\",\n        phone: \"1234 5678\",\n        fax: \"8888 5678\",\n        mobile: \"0411 222 333\",\n        organisation: \"ACME Pty Ltd\",\n        occupation: \"Chief Financial Officer\",\n        dobday: 1,\n        dobmonth: 1,\n        dobyear: 1970,\n        placeOfBirth: \"Melbourne\",\n        language: \"English (but with an Aussie accent)\",\n        address: {\n          lineOne: \"123 Sample St\",\n          suburb: \"Melbourne\",\n          state: \"Victoria\",\n          postcode: \"3000\"\n        },\n        preferredContact: \"email\",\n        spouses: [],\n        relationship: \"sister\"\n      }, {\n        id: \"8ded4171-dc1c-4804-baf0-b4380e9fafdb\",\n        firstName: \"Michael\",\n        surname: \"Smith\"\n      }, {\n        id: \"8ded4171-dc1c-4804-baf0-b4380e9fafdc\",\n        firstName: \"Thomas\",\n        surname: \"Jones\"\n      }, {\n        id: \"8ded4171-dc1c-4804-baf0-b4380e9fafdd\",\n        firstName: \"Accountant Andy\"\n      }, {\n        id: \"8ded4171-dc1c-4804-baf0-b4380e9fafde\",\n        firstName: \"Financial Advisor Tom\"\n      }].forEach(p => client.get(\"knownEntities\").pushObject(p));\n\n      // set defaults for question and option sub-objects, sub-lists, etc\n      // otherwise, we won't be able to edit, eg, onYes.title, or push anything into documentsRequired\n      const induction = this.model;\n      let uniqueNumber = 1;\n      if (induction) {\n        for (let i = 0; induction.chapters && i < induction.chapters.length; i++) {\n          const chapter = induction.chapters[i];\n          uniqueNumber++;\n          for (let j = 0; chapter.pages && j < chapter.pages.length; j++) {\n            const page = chapter.pages[j];\n            uniqueNumber++;\n            for (let k = 0; page.questions && k < page.questions.length; k++) {\n              const question = page.questions[k];\n              uniqueNumber++;\n              const objectList = [question].concat(question.options || []).concat(question.content || []).filter(o => typeof o === \"object\");\n              for (let z = 0; z < objectList.length; z++) {\n                const object = objectList[z];\n                uniqueNumber++;\n                for (let field = 0; field < this.fieldsToStripOnSaveIfEmpty.length; field++) {\n                  const fieldName = this.fieldsToStripOnSaveIfEmpty[field];\n                  if (!Object.prototype.hasOwnProperty.call(object, fieldName)) {\n                    object[fieldName] = {};\n                  }\n                }\n                for (let field = 0; field < this.listsToStripOnSaveIfEmpty.length; field++) {\n                  const fieldName = this.listsToStripOnSaveIfEmpty[field];\n                  if (!Object.prototype.hasOwnProperty.call(object, fieldName)) {\n                    object[fieldName] = [];\n                  }\n                }\n\n                // add an empty documentsRequired for any yes/no sub objects, if they don't have one already\n                [\"onYes\", \"onNo\", \"onNotSure\"].forEach(fieldName => {\n                  if (object[fieldName]) {\n                    object[fieldName].documentsRequired = object[fieldName].documentsRequired || [];\n                    object[fieldName].setValues = object[fieldName].setValues || [];\n                  }\n                });\n              }\n            }\n          }\n        }\n      }\n      this.set(\"clientRecord\", client);\n      this.set(\"model.uniqueNumber\", this.get(\"model.uniqueNumber\") || uniqueNumber);\n      this.set(\"deviceID\", this.cookies.read(\"deviceFingerprint\"));\n\n      // lock our induction for editing\n      if (this.get(\"model.metadata.editingLockID\")) {\n        // record has been locked\n        if (this.get(\"model.metadata.editingLockID\") !== this.deviceID) {\n          // someone else has locked it\n          if (new Date(this.get(\"model.metadata.editingLockExpiry\")).getTime() > Date.now()) {\n            // the lock hasn't expired!\n            this.set(\"editingLock\", this.get(\"model.metadata.editingLockExpiry\"));\n          }\n        }\n      }\n      if (!this.editingLock) {\n        // MVPTODO: Don't try to lock MVP records\n        if (this.get(\"model.id.length\") > 30) {\n          // no one else has locked this record, so we should!\n          this.lambda.invoke(this.lambda.lockFormLambda, {\n            firmID: this.firmID,\n            formID: this.get(\"model.id\"),\n            deviceID: this.deviceID\n          });\n        }\n      }\n    },\n    remainingUniqueStandalonePages: (0, _object.computed)(\"hasStandAloneChapter.pages.@each.id\", \"model.chapters\", \"uniqueStandalonePages\", function () {\n      const standalonePages = this.model.chapters.find(chapter => chapter.id === \"standalone\");\n      if (!standalonePages) {\n        return this.uniqueStandalonePages;\n      }\n      const remainingUniqueStandalonePages = [];\n      for (const uniqueStandalonePage of this.uniqueStandalonePages) {\n        if (!standalonePages.pages.find(page => page.id === uniqueStandalonePage.value)) {\n          remainingUniqueStandalonePages.push(uniqueStandalonePage);\n        }\n      }\n      return remainingUniqueStandalonePages;\n    }),\n    inductionAsArray: (0, _object.computed)(\"model\", \"viewMode\", function () {\n      if ([\"summary\", \"firmSummary\"].includes(this.viewMode)) {\n        this.generateMockData();\n        return [this.model];\n      }\n      return [];\n    }),\n    stageForSavingForm: (0, _object.computed)(\"newOrBranchingForm\", \"reviewingChanges\", function () {\n      let stage;\n      if (this.newOrBranchingForm) {\n        stage = \"new\";\n      } else if (this.reviewingChanges) {\n        stage = \"promote\";\n      } else {\n        stage = \"draft\";\n      }\n      return stage;\n    }),\n    newOrBranchingForm: (0, _object.computed)(\"model.creatingNewInduction\", \"branching\", function () {\n      if (this.get(\"model.creatingNewInduction\") || this.branching) {\n        return true;\n      }\n      return false;\n    }),\n    onWillTransition() {\n      // unlock the record we're currently editing\n      this.lambda.invoke(this.lambda.unlockFormLambda, {\n        firmID: this.firmID,\n        formID: this.get(\"model.id\"),\n        deviceID: this.deviceID\n      });\n    },\n    readOnly: (0, _object.computed)(\"editingLock\", \"currentFormModel\", \"newOrBranchingForm\", function () {\n      if (this.newOrBranchingForm) {\n        return false;\n      }\n      return this.editingLock || this.currentFormModel === \"live\";\n    }),\n    getByIndexes(chapter, page, question) {\n      let chapterIndex = 0,\n        pageIndex = 0,\n        questionIndex = 0;\n      let chapterObject, pageObject, questionObject;\n      if (chapter) {\n        chapterIndex = this.model.chapters.findIndex(c => c.id === chapter.id);\n        chapterObject = this.model.chapters.find(c => c.id === chapter.id);\n      }\n      if (chapter && page) {\n        pageIndex = chapter.pages.findIndex(p => p.id === page.id);\n        pageObject = chapter.pages.find(p => p.id === page.id);\n      }\n      if (chapter && page && question) {\n        questionIndex = page.questions.findIndex(q => q.id === question.id && q.type === question.type && q.title === question.title);\n        questionObject = page.questions.find(q => q.id === question.id && q.type === question.type && q.title === question.title);\n      }\n      return {\n        chapterIndex,\n        chapterObject,\n        pageIndex,\n        pageObject,\n        questionIndex,\n        questionObject\n      };\n    },\n    stripFieldsBeforeSaving(obj) {\n      if (!obj || typeof obj !== \"object\") {\n        return;\n      }\n\n      // strip empty chapters from form\n      if (obj.chapters) {\n        obj.chapters = obj.chapters.filter(chap => chap.pages && chap.pages.length);\n      }\n      for (let i = 0; i < this.fieldsToStripOnSave.length; i++) {\n        const field = this.fieldsToStripOnSave[i];\n        delete obj[field];\n      }\n      for (let i = 0; i < this.fieldsToStripOnSaveIfEmpty.length; i++) {\n        const field = this.fieldsToStripOnSaveIfEmpty[i];\n        this.stripFieldsBeforeSaving(obj[field]);\n        const stringified = JSON.stringify(obj[field]);\n        if (stringified === \"{}\") {\n          delete obj[field];\n        }\n      }\n      for (let i = 0; i < this.listsToStripOnSaveIfEmpty.length; i++) {\n        const field = this.listsToStripOnSaveIfEmpty[i];\n        if (obj[field] && obj[field].length === 0) {\n          delete obj[field];\n        }\n      }\n      for (const key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\n          const element = obj[key];\n          if (element && typeof element === \"object\") {\n            this.stripFieldsBeforeSaving(element);\n          }\n        }\n      }\n    },\n    getModelForSaving() {\n      // remove any fields that shouldn't be sent to the server\n      // make a copy though, so that we preserve fields locally for the edit screen\n      const sourceModel = this.model;\n      const model = JSON.parse(JSON.stringify(sourceModel));\n      this.stripFieldsBeforeSaving(model);\n      return model;\n    },\n    actions: {\n      addObjectToArray(index, arrayName) {\n        let customVariables = this.get(`model.${arrayName}`);\n        if (!customVariables) {\n          (0, _object.set)(this.model, arrayName, []);\n          customVariables = this.get(`model.${arrayName}`);\n        }\n        customVariables.insertAt(index + 1, {\n          expand: true,\n          id: `${arrayName}${this.get(\"model.uniqueNumber\")}`\n        });\n        this.incrementProperty(\"model.uniqueNumber\");\n      },\n      removeObjectFromArray(index, arrayName) {\n        const {\n          model\n        } = this;\n        (0, _object.set)(model, arrayName, [...model[arrayName].slice(0, index), ...model[arrayName].slice(index + 1, model[arrayName].length)]);\n      },\n      saveChanges() {\n        if (this.savingChanges || this.saveComplete || this.saveError) {\n          return;\n        }\n        const stage = this.stageForSavingForm;\n        this.set(\"savingChanges\", true);\n        this.set(\"saveError\", false);\n        this.set(\"saveComplete\", false);\n        let promise;\n        if (this.model.creatingNewInduction) {\n          promise = this.lambda.invoke(this.lambda.createFormLambda, {\n            firmID: this.firmID,\n            deviceID: this.deviceID,\n            definition: this.getModelForSaving()\n          }).then(this.lambda.processResponse).then(data => {\n            this.set(\"model.id\", data.formID);\n            this.set(\"model.creatingNewInduction\", false);\n\n            // update the location URL without refreshing the page, so that IF the page is refreshed, it will load this form\n            window.history.replaceState({}, \"Edit form\", window.location.href.replace(\"/create\", `/${data.formID}`));\n            this.questionnaireLogic.getInductionObject(data.formID, true).then(form => {\n              this.set(\"liveModel\", form);\n              this.set(\"draftModel\", JSON.parse(JSON.stringify(form)));\n            });\n          });\n        } else {\n          promise = this.lambda.invoke(this.lambda.updateFormLambda, {\n            firmID: this.firmID,\n            formID: this.get(\"model.id\"),\n            deviceID: this.deviceID,\n            definition: this.getModelForSaving(),\n            basedOnFormID: this.get(\"model.metadata.basedOnFormID\"),\n            draft: stage === \"draft\"\n          });\n        }\n        promise.then(() => {\n          this.set(\"saveComplete\", true);\n          if (stage === \"promote\") {\n            const payload = {\n              firmID: this.firmID,\n              formID: this.get(\"model.id\"),\n              practiceArea: this.get(\"firm.practiceArea\"),\n              deleteDraftFormOnly: true\n            };\n            this.lambda.invoke(this.lambda.deleteFormLambda, payload).then(this.lambda.processResponse).then(() => {\n              console.log(\"Changes promoted, draft form deleted\");\n              this.set(\"promotionSuccess\", true);\n              this.questionnaireLogic.getInductionObject(this.get(\"model.id\"), true).then(form => {\n                this.set(\"liveModel\", form);\n                this.set(\"draftModel\", JSON.parse(JSON.stringify(form)));\n                this.set(\"draftFromS3\", false);\n                this.send(\"changeCurrentFormModel\", \"draft\");\n              });\n            });\n          }\n        }).catch(e => {\n          console.log(e);\n          this.set(\"saveError\", e);\n        }).finally(() => {\n          this.set(\"savingChanges\", false);\n          (0, _runloop.later)(() => {\n            this.set(\"saveComplete\", false);\n            this.set(\"saveError\", false);\n            this.set(\"promotionSuccess\", false);\n          }, 2000);\n        });\n      },\n      copyToClipboard(text) {\n        navigator.clipboard.writeText(text);\n      },\n      setViewMode(newMode) {\n        this.set(\"loadingSummary\", true);\n        (0, _runloop.later)(() => {\n          this.set(\"viewMode\", newMode);\n          this.set(\"loadingSummary\", false);\n          if (this.blueprintDiff) {\n            // We must be coming from the blueprint viewMode so we should clear the changes information\n            this.send(\"hideChanges\");\n          }\n        }, 300);\n      },\n      viewChange(changeLocation) {\n        (0, _runloop.next)(() => {\n          const [chapter, page, question, ...subquestions] = changeLocation.split(\".\");\n          let foundObject;\n          if (chapter) {\n            foundObject = this.model.chapters.find(c => c.id === chapter);\n            (0, _object.set)(foundObject, \"expand\", true);\n          }\n          if (page) {\n            foundObject = foundObject.pages.find(p => p.id === page);\n            (0, _object.set)(foundObject, \"expand\", true);\n          }\n          if (question) {\n            foundObject = foundObject.questions.find(q => q.id === question);\n            (0, _object.set)(foundObject, \"expand\", true);\n          }\n          while (subquestions.length) {\n            const subq = subquestions.shift();\n            if (foundObject.content) {\n              foundObject = foundObject.content.find(c => c.id === subq);\n            } else if (foundObject.options) {\n              foundObject = foundObject.options.find(c => c.id === subq);\n            }\n            (0, _object.set)(foundObject, \"expand\", true);\n          }\n          (0, _runloop.later)(() => {\n            document.getElementById(changeLocation).scrollIntoView({\n              behavior: \"smooth\",\n              block: \"center\"\n            });\n          }, changeLocation.split(\".\").length * 220); // We need to increase the time based on the depth because the liquid-if for each section can take a few milliseconds\n        });\n      },\n      toggleWidget(variable) {\n        if (variable) {\n          this.toggleProperty(variable);\n        }\n      },\n      toggleReview() {\n        this.toggleProperty(\"reviewingChanges\");\n      },\n      changeCurrentFormModel(currentFormModel) {\n        if (currentFormModel === \"live\") {\n          this.set(\"currentFormModel\", \"draft\");\n        } else {\n          this.set(\"currentFormModel\", \"live\");\n        }\n        this.set(\"model\", this.get(`${this.currentFormModel}Model`));\n      },\n      addFilter(reference, args) {\n        this.set(\"activeFilters\", this.activeFilters.concat({\n          reference,\n          args\n        }));\n\n        // in addition to building a long filter concatenation, we also just copy the last-clicked filter\n        // so that you can quickly copy one filter and use it immediately.\n        this.send(\"copyToClipboard\", `{placeholder | ${reference}${args ? ` ${args}` : \"\"}}`);\n      },\n      removeFilter() {\n        let newFilters = this.activeFilters;\n        if (newFilters.length) {\n          newFilters = newFilters.slice(0, -1);\n        }\n        this.set(\"activeFilters\", newFilters);\n      },\n      clearFilter() {\n        this.set(\"activeFilters\", []);\n      },\n      copyTotalFilter() {\n        this.send(\"copyToClipboard\", this.totalFilter);\n      },\n      getMasterBlueprint() {\n        this.set(\"loadingSummary\", true);\n        this.questionnaireLogic.getInductionObject(this.model.id, true, {\n          masterFormOnly: true,\n          firmID: this.firmID\n        }).then(masterForm => {\n          this.set(\"masterBlueprint\", masterForm);\n        });\n      },\n      compareBlueprints() {\n        new _rsvp.Promise((resolve, reject) => {\n          const masterBlueprints = document.getElementById(\"master-blueprints\");\n          const formBlueprints = document.getElementById(\"form-blueprints\");\n          if (masterBlueprints && formBlueprints) {\n            resolve([masterBlueprints.innerHTML, formBlueprints.innerHTML]);\n          } else {\n            reject();\n          }\n        }).then(html => {\n          return this.lambda.invoke(this.get(\"lambda.compareHtmlLambda\"), {\n            html: html,\n            firmID: this.firmID\n          }).then(this.lambda.processResponse).then(data => {\n            this.set(\"blueprintDiff\", (0, _template.htmlSafe)(data));\n          });\n        }).catch(err => {\n          this.eventLogging.logError(\"Couldn't generate comparison for blueprints\", err);\n        }).finally(() => {\n          this.set(\"loadingSummary\", false);\n        });\n      },\n      downloadComparePDF(summaryID) {\n        this.set(\"showLoadingSpinner\", \"download\");\n        this.downloadPDFFile(null, \"- Blueprint Compare\", summaryID).finally(() => {\n          this.set(\"showLoadingSpinner\", null);\n        });\n      },\n      hideChanges() {\n        this.set(\"masterBlueprint\", null);\n        this.set(\"blueprintDiff\", null);\n      }\n    },\n    totalFilter: (0, _object.computed)(\"activeFilters\", function () {\n      const filters = this.activeFilters;\n      if (!filters.length) {\n        return;\n      }\n      const list = [\"placeholder\", ...filters.map(f => `${f.reference}${f.args ? ` ${f.args}` : \"\"}`)];\n      return `{${list.join(\" | \")}}`;\n    }),\n    mockData: (0, _object.computed)(\"clientRecord\", \"inductionAsArray\", \"viewMode\", function () {\n      return {\n        client: this.clientRecord,\n        inductions: this.inductionAsArray\n      };\n    }),\n    changesArray: (0, _object.computed)(\"model.chapters\", function () {\n      return this.getAllPathsToChanges(this.get(\"model.chapters\"));\n    }),\n    getAllPathsToChanges(obj, currentPath = []) {\n      const allPaths = [];\n      if (Array.isArray(obj)) {\n        obj.forEach(val => {\n          allPaths.push(...this.getAllPathsToChanges(val, currentPath));\n        });\n      } else if (obj && typeof obj === \"object\") {\n        if (obj.id) {\n          if (obj.__newElement || obj.__diffs) {\n            // Found a path with a new or modified element\n            allPaths.push({\n              path: [...currentPath, obj.id].join(\".\"),\n              element: obj\n            });\n          }\n          Object.keys(obj).forEach(key => {\n            const value = obj[key];\n            if (Array.isArray(value) || value && typeof value === \"object\") {\n              allPaths.push(...this.getAllPathsToChanges(value, [...currentPath, obj.id]));\n            }\n          });\n        }\n      }\n      return allPaths;\n    },\n    iCan: (0, _object.computed)(\"editorModeOverride\", \"firm.initialised\", \"firm.settings.editorMode\", function () {\n      const levels = {\n        basic: 10,\n        advanced: 20,\n        power: 30,\n        administrator: 40\n      };\n      const editorMode = this.editorModeOverride || this.get(\"firm.settings.editorMode\");\n      const editorLevel = levels[editorMode] || levels.basic;\n      const retval = {};\n      if (editorLevel >= levels.basic) {\n        // 'basic' is the lowest setting, so anything accessible here\n        // doesn't need to be guarded in an if statement at all\n        // Edit titles\n        // Edit question text\n        // Edit placeholder text\n        // Edit option text for radio / checkbox / select\n        // Add new options\n        // Edit \"required\" checkbox\n        // Edit \"Ask for\" checkboxes in a select or create\n        // Edit the documents required\n        // Edit the help text\n        // Edit the feedback text\n        // Edit the onyes, onno, onmaybe responses / help text / documents required\n        // Edit bold text or links\n        // Enable and disable\n      }\n      if (editorLevel >= levels.advanced) {\n        // turn on all advanced (or above) editing abilities here\n        retval.editForm = true;\n        retval.editShortTitles = true;\n        retval.hideChapterTitles = true;\n        retval.viewSummaryMode = true;\n        retval.editIcons = true;\n        retval.editPracticeArea = true;\n        retval.addChapters = true;\n        retval.addPages = true;\n        retval.addQuestions = true;\n        retval.addOptions = true;\n        retval.editGridStructure = true;\n        retval.editQuestionType = true;\n        retval.editSimpleFormatting = true;\n        retval.customiseNumericFields = true;\n        retval.customiseRadioButtons = true;\n        retval.customiseInputSliders = true;\n        retval.toggleProgressIndicators = true;\n        retval.toggleFirmLogoOnChapter = true;\n        retval.hideFirmLogoOnPage = true;\n        retval.showFirmsLetterheadOnPage = true;\n      }\n      if (editorLevel >= levels.power) {\n        // turn on all power user (or above) editing abilities here\n        retval.editDisplayIf = true;\n        retval.editInductionPlacementRestrictions = true;\n        retval.hideItemsOnTheBrief = true;\n        retval.useAnswersLocation = true;\n        retval.customiseSelectOrCreates = true;\n        retval.customiseLists = true;\n        retval.customiseSourceLists = true;\n        retval.editBreadcrumbs = true;\n        retval.editDisplayNames = true;\n        retval.editFilters = true;\n        retval.customiseItemLabelFormat = true;\n        retval.setOtherQuestions = true;\n        retval.editFirmSummary = true;\n        retval.viewIntegrationInformation = true;\n        retval.customiseNextButtonNavigation = true;\n        retval.editFormVariables = true;\n        retval.addUniquePages = true;\n        retval.editChronology = true;\n        retval.disableChapterSkipButtons = true;\n      }\n      if (editorLevel >= levels.administrator) {\n        // turn on all Settify administrator editing abilities here\n\n        retval.editIDs = true;\n        retval.permanentlyDelete = true;\n        retval.viewJSONMode = true;\n        retval.setIconOffset = true;\n        retval.clearEditingLocks = true;\n        retval.approveChanges = true;\n\n        // (These are administrator-only thing for now, because it will break ID cross references. Of course, we could make it automatically update cross references, which would then allow this feature to be used by advanced or power user editors.)\n        retval.moveBetweenPages = true;\n        retval.moveBetweenChapters = true;\n      }\n      return retval;\n    }),\n    hasStandAloneChapter: (0, _object.computed)(\"model\", \"model.chapters\", \"model.chapters.length\", function () {\n      return this.model.chapters.find(c => c.standalonePages);\n    })\n  });\n});","define(\"settify-mvp/controllers/admin/config/editteam\", [\"exports\", \"rsvp\", \"@ember/runloop\", \"@ember/object\", \"@ember/service\", \"settify-mvp/controllers/base\"], function (_exports, _rsvp, _runloop, _object, _service, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"rsvp\",0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/service\",0,\"settify-mvp/controllers/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    awsService: (0, _service.inject)(),\n    lawyerList: (0, _service.inject)(),\n    lambda: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    router: (0, _service.inject)(),\n    sendEmailToSettify: (0, _service.inject)(),\n    eventLogging: (0, _service.inject)(),\n    config: (0, _service.inject)(\"dynamic-config\"),\n    queryParams: [\"editField\", \"firmID\"],\n    canSaveLawyer: (0, _object.computed)(\"model.{name,email}\", function () {\n      return !!this.model?.name && !!this.model?.email;\n    }),\n    init() {\n      this._super(...arguments);\n      this.roles = [{\n        label: \"Lawyer\",\n        value: \"lawyer\"\n      }, {\n        label: \"Assistant / Administrative Support\",\n        value: \"pa\"\n      }];\n    },\n    reset() {\n      this._super();\n      this.set(\"saveComplete\", false);\n      this.set(\"saveFailed\", false);\n      this.set(\"saving\", false);\n      this.set(\"showPhotoUpload\", false);\n      this.set(\"highlightRequiredFields\", false);\n      this.set(\"lawyerScrapeWorked\", true);\n      this.set(\"lawyerURL\", \"\");\n      this.set(\"showArchive\", false);\n      this.set(\"showDelete\", false);\n      this.set(\"photoUploadBucket\", this.config.getS3BucketName(\"assets\"));\n      this.set(\"photoUploadKey\", this.getKeyFromS3Url(this.model?.photoURL));\n      if ([\"showArchive\", \"showDelete\"].includes(this.editField)) {\n        if (!this.model?.disabled) {\n          // Only toggle if this person isn't disabled\n          this.send(\"toggleConfirmation\", this.editField);\n        }\n        (0, _runloop.next)(() => {\n          document.querySelector(\".archive-delete-buttons\").scrollIntoView({\n            behavior: \"smooth\"\n          });\n        });\n      }\n    },\n    onModelLoaded: (0, _object.observer)(\"model\", function () {\n      // We need to get the firm details for this selected firm and not the Settify firm details\n      return this.lambda.invoke(this.get(\"lambda.getFirmDetailsLambda\"), {\n        firmID: this.firmID\n      }).then(this.get(\"lambda.processResponse\")).then(details => {\n        this.set(\"selectedFirmPracticeAreas\", details.practiceAreas.filter(e => e.practiceArea !== \"global\").map(p => p.practiceArea));\n      });\n    }),\n    getKeyFromS3Url(url) {\n      if (!url) {\n        return null;\n      }\n      const key = url.split(this.photoUploadBucket)[1]; // split at the point of the bucket location\n      return key.replace(/^\\/+/, \"\");\n    },\n    tryCreateUser(allowRestrictedDomain) {\n      const lawyer = this.model;\n      let practiceArea;\n      let selectedPracticeAreas;\n      if (lawyer.practiceAreas && Object.keys(lawyer.practiceAreas).length === 1) {\n        practiceArea = Object.keys(lawyer.practiceAreas)[0];\n      }\n      if (lawyer.practiceAreas) {\n        selectedPracticeAreas = Object.keys(lawyer.practiceAreas);\n      }\n      if (!lawyer.email) {\n        return (0, _rsvp.resolve)(false);\n      }\n      // Create a login for this person\n      return this.lambda.invoke(this.lambda.createFirmUserLambda, {\n        firmID: this.firmID,\n        email: lawyer.email,\n        userEmail: this.session.data?.authenticated?.username,\n        practiceArea: practiceArea,\n        selectedPracticeAreas: selectedPracticeAreas,\n        onlyIfLive: true,\n        forceRestrictedDomain: allowRestrictedDomain\n      }).then(this.lambda.processResponse).then(response => {\n        if (response.failed && response.failed.length === 1 && typeof response.failed[0] === \"object\") {\n          this.set(\"createUserResponse\", response.failed[0].message);\n          this.set(\"saveFailed\", true);\n          return false;\n        }\n        return true;\n      }).catch(err => {\n        // silently fail\n        this.set(\"saving\", false);\n        this.eventLogging.logError(\"Failed to create login when user was created\", err);\n        return true;\n      });\n    },\n    actions: {\n      specifyPracticeAreas() {\n        this.set(\"model.practiceAreas\", {});\n      },\n      allowAllPracticeAreas() {\n        this.set(\"model.practiceAreas\", \"\");\n      },\n      saveChanges() {\n        if (!this.canSaveLawyer) {\n          this.set(\"highlightRequiredFields\", true);\n          return;\n        }\n        this.set(\"saveComplete\", false);\n        this.set(\"saveFailed\", false);\n        this.set(\"saving\", true);\n\n        // lowerCase email, since createFirmUser makes the email lowercase, and we don't want the user\n        // to get confused as to why they can't log in. (Not doing this also breaks the actions in 'config-person-block')\n        this.set(\"model.email\", this.model.email.toLowerCase());\n        if (this.model?.disabled && this.model?.worksWith?.length) {\n          this.set(\"model.worksWith\", []);\n          if (this.model?.sendFrom?.personID) {\n            this.set(\"model.sendFrom.personID\", null);\n          }\n        }\n        return this.lawyerList.saveLawyer(this.model).then(() => {\n          this.set(\"saveComplete\", true);\n        }).catch(() => {\n          this.set(\"saveFailed\", \"Changes could not be saved. Please try again.\");\n        }).finally(() => {\n          this.set(\"saving\", false);\n          this.set(\"highlightRequiredFields\", false);\n        });\n      },\n      createLawyer(forceRestricted = false) {\n        if (!this.canSaveLawyer) {\n          this.set(\"highlightRequiredFields\", true);\n          return;\n        }\n        // lowerCase email, since createFirmUser makes the email lowercase, and we don't want the user\n        // to get confused as to why they can't log in. (Not doing this also breaks the actions in 'config-person-block')\n        this.set(\"model.email\", this.model.email.toLowerCase());\n        this.set(\"saveComplete\", false);\n        this.set(\"saveFailed\", false);\n        this.set(\"saving\", true);\n        this.set(\"createUserResponse\", null);\n        this.tryCreateUser(forceRestricted).then(resp => {\n          if (!resp) {\n            return; // Don't actually create lawyer\n          }\n          return this.lawyerList.createLawyer(this.model).then(() => {\n            this.set(\"saveComplete\", true);\n          }).catch(() => {\n            this.set(\"saveFailed\", \"Team member could not be created. Please try again.\");\n          });\n        }).finally(() => {\n          this.set(\"saving\", false);\n          this.set(\"highlightRequiredFields\", false);\n        });\n      },\n      deleteLawyer() {\n        this.set(\"saveComplete\", false);\n        this.set(\"saveFailed\", false);\n        this.set(\"saving\", true);\n        const usernameToDelete = this.model?.email;\n        this.lawyerList.deleteLawyer(this.model).then(() => {\n          const payload = {\n            firmID: this.firmID,\n            username: usernameToDelete,\n            enabled: false\n          };\n          this.set(\"saving\", false);\n          this.set(\"model\", null);\n          return this.lambda.invoke(this.lambda.updateFirmUserLambda, payload).then(this.lambda.processResponse).then(() => {\n            // User disabled\n            this.router.transitionTo(\"admin.config.team\");\n          }).catch(() => {\n            this.set(\"saving\", false);\n            // Send tech support email to Settify\n\n            const subject = \"Tech Support Request - User disable failed\";\n            let body = \"<p>Tech Support Request</p>\";\n            body += `<p>${this.firmID}</p>`;\n            body += `${this.session?.data?.authenticated?.username} attempted to delete ${usernameToDelete} from the team list,\n          and we were unable to automatically disable the corresponding user account.\n          Please do this manually, and let ${this.session?.data?.authenticated?.username} know once complete.`;\n            return this.sendEmailToSettify.send(subject, body, \"support@settify.com.au\").then(() => {\n              this.router.transitionTo(\"admin.config.team\");\n            });\n          });\n        }).catch(() => {\n          this.set(\"saving\", false);\n          this.set(\"saveFailed\", \"Team member could not be deleted. Please try again.\");\n        });\n      },\n      cancelChanges() {\n        this.model.rollbackAttributes();\n        this.set(\"saveComplete\", false);\n        this.set(\"saveFailed\", false);\n        this.set(\"saving\", false);\n      },\n      toggleShowPhotoUpload() {\n        this.toggleProperty(\"showPhotoUpload\");\n      },\n      startDraggingFile(ev) {\n        this.set(\"fileDragging\", true);\n        ev.preventDefault();\n      },\n      stopDraggingFile(ev) {\n        this.set(\"fileDragging\", false);\n        ev.preventDefault();\n      },\n      dragOver(ev) {\n        ev.preventDefault();\n      },\n      dropFile(ev) {\n        if (ev.dataTransfer && ev.dataTransfer.files && ev.dataTransfer.files.length) {\n          this.uploadFile(ev.dataTransfer.files[0]);\n        }\n        ev.preventDefault();\n      },\n      uploadFile() {\n        const fileChooser = document.getElementById(`file-chooser-${this.model.personID}`);\n        const file = fileChooser.files[0];\n        this.uploadFile(file);\n      },\n      toggleConfirmation(showArea) {\n        const validAreas = [\"showDelete\", \"showArchive\"];\n        validAreas.forEach(area => {\n          if (area === showArea) {\n            this.toggleProperty(showArea);\n          } else {\n            this.set(area, false);\n          }\n        });\n      },\n      enableUser() {\n        this.set(\"model.disabled\", false);\n      }\n    },\n    uploadFile(file) {\n      if (file) {\n        this.set(\"s3result\", \"\");\n\n        // test file size\n        const fsize = file.size;\n        if (fsize > 200 * 1024) {\n          alert(\"Sorry, but that file is too large to be used in our system. Please resize or re-save the image so that it is 200kb or less\");\n          return;\n        }\n        const ftype = file.type;\n        let badFileType = true;\n        switch (ftype) {\n          case \"image/png\":\n          case \"image/gif\":\n          case \"image/jpeg\":\n          case \"image/pjpeg\":\n            badFileType = false;\n            break;\n        }\n\n        // // extract and test the file extension\n        const extStart = file.name.lastIndexOf(\".\");\n        let extension = \"\";\n        if (extStart >= 0) {\n          extension = file.name.substr(extStart + 1).toLowerCase();\n        }\n        const badExtension = ![\"jpg\", \"jpeg\", \"png\"].includes(extension);\n        if (badExtension || badFileType) {\n          // invalid file type\n          alert(\"Sorry, but that doesn't look like an image we understand. Please try again with a JPG or PNG\");\n          return;\n        }\n        const params = {\n          Key: `${this.generateHeadshotKey()}.${extension}`,\n          ContentType: file.type,\n          Body: file,\n          Tagging: `settify:fileUploads:targetBucket=${this.photoUploadBucket}`\n        };\n        this.set(\"uploading\", true);\n        this.set(\"s3result\", null);\n        this.awsService.getS3ByType(\"quarantine\").then(s3Client => {\n          s3Client.upload(params, (err /* , data */) => {\n            this.set(\"uploading\", false);\n            if (!err) {\n              this.set(\"photoUploadKey\", params.Key);\n              this.set(\"model.photoURL\", this.config.getS3UrlForBucket(\"assets\", params.Key));\n              this.set(\"showPhotoUpload\", false);\n              if (!this.model?.creating) {\n                // we can only save changes if we have previously created the lawyer\n                this.send(\"saveChanges\");\n              }\n            } else {\n              this.set(\"s3result\", `Couldn't upload file: ${err}`);\n            }\n          });\n        });\n      } else {\n        this.set(\"s3result\", \"Nothing to upload.\");\n      }\n    },\n    generateHeadshotKey() {\n      return `headshots/${this.config?.settings?.adminIdentityPoolID}/${this.model?.personID}-${Date.now().toString()}`;\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/config/emergency\", [\"exports\", \"settify-mvp/controllers/admin/config/settingsbase\"], function (_exports, _settingsbase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/controllers/admin/config/settingsbase\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _settingsbase.default.extend({\n    settingsFilter(settingName) {\n      const allowedSettings = [`^settings.emergency`];\n      return allowedSettings.some(regex => settingName.match(regex));\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/config/forms\", [\"exports\", \"@ember/runloop\", \"@ember/service\", \"settify-mvp/controllers/base\", \"settify-mvp/config/environment\", \"settify-mvp/mixins/master-form-mixin\"], function (_exports, _runloop, _service, _base, _environment, _masterFormMixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/service\",0,\"settify-mvp/controllers/base\",0,\"settify-mvp/config/environment\",0,\"settify-mvp/mixins/master-form-mixin\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend(_masterFormMixin.default, {\n    firm: (0, _service.inject)(),\n    questionnaireLogic: (0, _service.inject)(),\n    lambda: (0, _service.inject)(),\n    router: (0, _service.inject)(),\n    inDevelopmentMode: _environment.default.environment === \"development\",\n    queryParams: [\"firmID\"],\n    reset() {\n      this._super();\n      this.set(\"deletingForm\", false);\n      this.set(\"deletingFormSuccess\", false);\n      this.set(\"deletingFormError\", null);\n      this.set(\"firmName\", this.model.firmDetails.practiceAreas.find(e => e.practiceArea === \"global\").name);\n    },\n    actions: {\n      branchForm(induction) {\n        if (this.branching || !induction) {\n          return false;\n        }\n        const deviceID = this.cookies.read(\"deviceFingerprint\");\n        this.set(\"branching\", induction.formID);\n        this.set(\"branchingFail\", false);\n\n        // TODO: Move this to backend. There is no reason backend couldn't do this when a basedOnFormID is provided.\n        //       this is inspired by code from rollout-createmasterbranchform and createform lambda\n        const newFormDefinition = {\n          practiceArea: induction.practiceArea,\n          title: `Branched from ${induction.title}`,\n          regionTitle: induction.regionTitle,\n          icon: induction.icon,\n          blurb: induction.blurb,\n          canBeRepeated: induction.canBeRepeated,\n          alwaysSelected: induction.alwaysSelected,\n          invitationDefault: induction.invitationDefault,\n          enabled: induction.enabled,\n          pinToStart: induction.pinToStart,\n          pinToEnd: induction.pinToEnd\n        };\n        return this.lambda.invoke(this.lambda.createFormLambda, {\n          deviceID: deviceID,\n          formType: \"firm\",\n          firmID: this.firmID,\n          definition: newFormDefinition,\n          basedOnFormID: induction.formID\n        }).then(this.lambda.processResponse).then(data => {\n          if (!data.formID) {\n            throw new Error(data);\n          }\n          return data.formID;\n        }).then(newFormID => {\n          // navigate to the editor for the new form\n          this.router.transitionTo(\"admin.config.editform\", newFormID, {\n            queryParams: {\n              firmID: this.firmID\n            }\n          }).then(function (route) {\n            route.controller.set(\"branching\", true);\n          });\n        }).catch(e => {\n          this.set(\"branchingFail\", e);\n        }).finally(() => {\n          this.set(\"branching\", false);\n        });\n      },\n      deleteForm(form) {\n        const forms = this.get(\"model.forms\");\n        // Make sure we aren't deleting the parent of another form\n        let isParentOfAnInduction = forms.some(i => i.basedOnFormID === form.formID);\n        if (!isParentOfAnInduction) {\n          const deviceID = this.cookies.read(\"deviceFingerprint\");\n          this.set(\"deletingForm\", true);\n          let payload = {\n            firmID: this.firmID,\n            formID: form.formID,\n            practiceArea: form.practiceArea,\n            deviceID: deviceID\n            // deleteMasterForm: true  // Used to delete master forms\n          };\n          return this.lambda.invoke(this.get(\"lambda.deleteFormLambda\"), payload).then(this.lambda.processResponse).then(() => {\n            return this.questionnaireLogic.load(true, {\n              firmID: this.firmID\n            });\n          }).then(forms => {\n            this.set(\"model.forms\", forms);\n            this.set(\"deletingFormSuccess\", true);\n          }).catch(() => {\n            (0, _runloop.next)(() => {\n              this.set(\"deletingFormError\", \"There was an error deleting that form. Please make sure you are trying to delete the right form and try again\");\n            });\n          }).finally(() => {\n            this.set(\"deletingForm\", false);\n            if (!this.isDestroyed || !this.isDestroying) {\n              (0, _runloop.later)(() => {\n                this.set(\"deletingFormSuccess\", false);\n                this.set(\"deletingFormError\", null);\n              }, 5000);\n            }\n          });\n        }\n        (0, _runloop.next)(() => {\n          this.set(\"deletingFormError\", \"There was an error deleting that form. You cannot delete the parent of another form. Please delete all children forms before trying to delete the parent form.\");\n        });\n        (0, _runloop.later)(() => {\n          this.set(\"deletingFormError\", null);\n        }, 5000);\n        (0, _runloop.next)(() => {\n          this.set(\"deletingFormError\", \"There was an error deleting that form. You cannot delete the parent of another form. Please delete all children forms before trying to delete the parent form.\");\n        });\n        (0, _runloop.later)(() => {\n          this.set(\"deletingFormError\", null);\n        }, 5000);\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/config/index\", [\"exports\", \"@ember/controller\", \"@ember/service\"], function (_exports, _controller, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let ConfigIndexController = _exports.default = (_class = class ConfigIndexController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"awsService\", _descriptor, this);\n      _initializerDefineProperty(this, \"router\", _descriptor2, this);\n      _initializerDefineProperty(this, \"cookies\", _descriptor3, this);\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"awsService\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"cookies\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/controllers/admin/config/induction\", [\"exports\", \"settify-mvp/controllers/admin/config/settingsbase\"], function (_exports, _settingsbase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/controllers/admin/config/settingsbase\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _settingsbase.default.extend({\n    queryParams: [\"firmID\", \"practiceArea\"],\n    settingsFilter(settingName) {\n      const allowedSettings = [`^settings.induction`, `^blurb$`, `^longName$`, `^phone$`, `^phoneURL$`, `^settings.admin.officeClosure`, `^settings.family`, `^settings.wills`];\n      return allowedSettings.some(regex => settingName.match(regex));\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/config/integrationmanager\", [\"exports\", \"@ember/object\", \"@ember/runloop\", \"@ember/service\", \"settify-mvp/controllers/admin/config/settingsbase\"], function (_exports, _object, _runloop, _service, _settingsbase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/runloop\",0,\"@ember/service\",0,\"settify-mvp/controllers/admin/config/settingsbase\"eaimeta@70e063a35619d71f\n  const pmsIDKey = \"firmSettings.settings.settings.admin.integrations.pmsID\";\n  // We use settingsBase here JUST to load firmSettings, we never display, edit or save them\n  var _default = _exports.default = _settingsbase.default.extend({\n    queryParams: [\"firmID\"],\n    lambda: (0, _service.inject)(),\n    pmsMetadataMap: null,\n    init() {\n      this._super(...arguments);\n      this.set(\"pmsAdminSettings\", {});\n      this.lambda.invoke(this.get(\"lambda.listPmsMetadata\"), {}).then(this.lambda.processResponse).then(pmsMetadata => {\n        this.set(\"pmsMetadataMap\", pmsMetadata.reduce((prev, curr) => ({\n          [curr.id]: curr,\n          ...prev\n        }), {}));\n      }).then(() => {\n        (0, _runloop.next)(() => {\n          this.set(\"loading\", false);\n        });\n      });\n    },\n    reset() {\n      this.set(\"pmsAdminSettings\", {});\n    },\n    settingsFilter(e) {\n      return e.match(/^settings\\.admin\\.integrations\\.pmsID/);\n    },\n    updateAuthenticatedStatus() {\n      if (this.firmID === undefined) {\n        return;\n      }\n      this.set(\"authenticated\", false);\n      const authentication = this.get(\"pmsMetadata.authentication\");\n      if (authentication) {\n        const {\n          firmID\n        } = this;\n        return this.lambda.invoke(authentication.getStatusLambda, {\n          firmID,\n          productName: this.get(pmsIDKey)\n        }).then(this.lambda.processResponse).then(({\n          authenticated\n        }) => this.set(\"authenticated\", authenticated));\n      }\n    },\n    pmsIDChanged: (0, _object.observer)(\"firmSettings.settings.settings.admin.integrations.pmsID\", \"pmsMetadataMap\", function () {\n      const {\n        pmsMetadataMap\n      } = this;\n      const pmsID = this.get(pmsIDKey);\n      if (pmsMetadataMap) {\n        this.set(\"pmsMetadata\", pmsMetadataMap[pmsID]);\n      }\n      this.updateAuthenticatedStatus();\n    }),\n    hasPMSID: (0, _object.computed)(\"filteredSettings\", \"firmSettings\", \"firmSettings.settings.settings\", function () {\n      const pmsID = this.get(pmsIDKey);\n      return pmsID;\n    }),\n    adminSettings: (0, _object.computed)(\"filteredSettings\", \"firmSettings\", \"firmSettings.settings.settings\", \"pmsMetadata\", function () {\n      const {\n        pmsMetadata\n      } = this;\n      if (pmsMetadata) {\n        if (pmsMetadata && pmsMetadata.authentication && pmsMetadata.authentication.adminSettings) {\n          return pmsMetadata.authentication.adminSettings;\n        }\n      }\n      return [];\n    }),\n    activateSubmitButton: (0, _object.computed)(\"adminSettings.length\", \"pmsAdminSettings\", \"adminSettings\", \"settingTypesMatch\", \"touch\", function () {\n      if (this.get(\"adminSettings.length\")) {\n        const {\n          pmsAdminSettings\n        } = this;\n        const {\n          adminSettings\n        } = this;\n        for (let i = 0; i < adminSettings.length; i++) {\n          const setting = adminSettings[i];\n          if (setting.required && !pmsAdminSettings[setting.name]) {\n            return false;\n          }\n        }\n        return this.settingTypesMatch;\n      }\n      return false;\n    }),\n    settingTypesMatch: (0, _object.computed)(\"adminSettings.length\", \"pmsAdminSettings\", \"adminSettings\", \"touch\", function () {\n      let retValue = true;\n      if (this.get(\"adminSettings.length\")) {\n        const {\n          pmsAdminSettings\n        } = this;\n        const {\n          adminSettings\n        } = this;\n        for (let i = 0; i < adminSettings.length; i++) {\n          const setting = adminSettings[i];\n          if (pmsAdminSettings[setting.name]) {\n            if (setting.type === \"string\") {\n              retValue = retValue && typeof pmsAdminSettings[setting.name] === \"string\";\n            }\n            if (setting.type === \"json\") {\n              retValue = retValue && this.isValidJson(pmsAdminSettings[setting.name]);\n            }\n          }\n        }\n      }\n      return retValue;\n    }),\n    isValidJson(input) {\n      try {\n        JSON.parse(input);\n        return true;\n      } catch (e) {\n        return false;\n      }\n    },\n    actions: {\n      onChange() {\n        this.set(\"touch\", Date.now());\n      },\n      submitSettings() {\n        if (!this.activateSubmitButton) {\n          return;\n        }\n        const metaData = this.pmsMetadata;\n        if (metaData && metaData.authentication && metaData.authentication.confirmSettingsLambda) {\n          const submitARN = metaData.authentication.confirmSettingsLambda;\n          const payload = {\n            ...this.pmsAdminSettings,\n            firmID: this.firmID\n          };\n          this.set(\"loading\", true);\n          this.lambda.invoke(submitARN, payload).then(this.lambda.processResponse).then(({\n            authenticated\n          }) => {\n            if (!authenticated) {\n              throw \"Error\";\n            }\n            this.set(\"submitComplete\", true);\n          }).catch(() => {\n            this.set(\"submitError\", \"Error submitting integration settings\");\n          }).finally(() => {\n            this.set(\"loading\", false);\n          });\n        }\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/config/integrations\", [\"exports\", \"rsvp\", \"@ember/object\", \"@ember/runloop\", \"@ember/service\", \"settify-mvp/controllers/admin/config/settingsbase\"], function (_exports, _rsvp, _object, _runloop, _service, _settingsbase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"rsvp\",0,\"@ember/object\",0,\"@ember/runloop\",0,\"@ember/service\",0,\"settify-mvp/controllers/admin/config/settingsbase\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _settingsbase.default.extend({\n    store: (0, _service.inject)(),\n    lambda: (0, _service.inject)(),\n    firmSettings: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    queryParams: [\"authCode\"],\n    /**\n     * this is the practice management system id selected by the user.\n     * Typically something like \"leap\" or \"smokeball\".\n     * */\n    pmsID: null,\n    // SettingsBase and settingsFilter  are required for saving the selected pmsID\n    settingsFilter(e) {\n      return e.match(/^settings.admin.integrations/);\n    },\n    postSaveChanges() {\n      this.firm.reloadFirm();\n    },\n    init() {\n      this._super(...arguments);\n      this.pmsSelects = [];\n      this.set(\"loading\", true);\n      this.set(\"pmsMetadataMap\", {});\n      this.set(\"pmsCredentials\", {});\n    },\n    reset() {\n      this._super(...arguments);\n      this.set(\"authenticating\", false);\n      this.set(\"authenticated\", false);\n      this.set(\"authenticationErrorMessage\", null);\n      this.set(\"disconnecting\", false);\n      this.set(\"disconnected\", false);\n      this.set(\"disconnectErrorMessage\", false);\n      this.set(\"loadingInitialProcess\", false);\n      this.set(\"loadingPmsSettings\", false);\n      this.set(\"initialAuthenticationMessage\", null);\n      this.set(\"initialAuthenticationRequestError\", false);\n      this.set(\"inProgress\", false);\n\n      // if there is an authCode queryParam then we are being called as part of a pms authorisation process\n      // in which case we want to restore some context from storage\n      if (this.authCode) {\n        let pmsAuthContext = localStorage.getItem(\"pmsAuthContext\");\n        if (pmsAuthContext) {\n          pmsAuthContext = JSON.parse(pmsAuthContext);\n          this.set(\"selectedPracticeArea\", pmsAuthContext?.selectedPracticeArea);\n          this.set(\"pmsID\", pmsAuthContext?.pmsID);\n        }\n      }\n    },\n    firmSettingsLoaded: (0, _object.observer)(\"firmSettings.initialised\", function () {\n      if (this.firmSettings?.initialised) {\n        this.lambda.invoke(this.lambda.listPmsMetadata, {}).then(this.lambda.processResponse).then(pmsMetadata => {\n          this.set(\"pmsSelects\", pmsMetadata.map(({\n            id,\n            name\n          }) => ({\n            value: id,\n            label: name\n          })));\n          this.set(\"pmsMetadataMap\", pmsMetadata.reduce((prev, curr) => ({\n            [curr.id]: curr,\n            ...prev\n          }), {}));\n          const settings = this.selectedPracticeAreaSettings;\n          if (settings) {\n            let pmsID = settings?.settings?.admin?.integrations?.pmsID;\n\n            // if there is an authCode queryParam then we are being called as part of a pms authorisation process\n            // in which case we want to restore some context from storage as opposed to using what is already\n            // configured in the back end\n            if (this.authCode) {\n              let pmsAuthContext = localStorage.getItem(\"pmsAuthContext\");\n              if (pmsAuthContext) {\n                pmsAuthContext = JSON.parse(pmsAuthContext);\n                pmsID = pmsAuthContext?.pmsID;\n              }\n            }\n            this.set(\"pmsID\", pmsID);\n          }\n        }).then(() => this.updateAuthenticatedStatus()).then(() => {\n          this.set(\"loading\", false);\n        });\n      }\n    }),\n    pmsMetadata: (0, _object.computed)(\"pmsID\", \"pmsMetadataMap\", function () {\n      return this.pmsMetadataMap[this.pmsID] || null;\n    }),\n    showAuthenticationOptions: (0, _object.computed)(\"pmsID\", \"authenticated\", \"inProgress\", \"loading\", \"pmsMetadata.authentication.{authenticateURL,startAuthenticationProcessLambda}\", function () {\n      const pmsAuthenticationURL = this.pmsMetadata?.authentication?.authenticateURL || \"\";\n      const startProcessLambda = this.pmsMetadata?.authentication?.startAuthenticationProcessLambda || \"\";\n      return !this?.authenticated && (pmsAuthenticationURL.length > 0 || startProcessLambda.length > 0) && !this?.loading && !this?.inProgress;\n    }),\n    onSelectedPmsChanged: (0, _object.observer)(\"pmsID\", function () {\n      if (this.loading) {\n        return;\n      }\n      this.set(\"loading\", true);\n\n      // record the change in selection\n      if (this.selectedPracticeArea) {\n        const settings = this.store.peekRecord(\"settings\", this.selectedPracticeArea);\n        settings.settings.admin.integrations.pmsID = this.pmsID;\n      }\n      return _rsvp.Promise.resolve().then(() => this.updateAuthenticatedStatus()).then(() => {\n        // persist the change in selection\n        if (this.selectedPracticeArea) {\n          this.store.peekRecord(\"settings\", this.selectedPracticeArea).save();\n        }\n      }).then(() => {\n        this.set(\"loading\", false);\n      });\n    }),\n    updateAuthenticatedStatus() {\n      if (this.authenticating) {\n        return;\n      }\n      this.set(\"authenticated\", false);\n      this.set(\"inProgress\", false);\n      this.set(\"loading\", true);\n      const authentication = this.pmsMetadata?.authentication;\n      if (authentication === null) {\n        // No auth required\n        this.set(\"authenticated\", true);\n      } else if (authentication) {\n        const firmID = this.firm.id;\n        return this.lambda.invoke(authentication.getStatusLambda, {\n          firmID,\n          productName: this.pmsID\n        }).then(this.lambda.processResponse).then(({\n          authenticated,\n          inProgress\n        }) => {\n          this.set(\"authenticated\", authenticated);\n          this.set(\"inProgress\", inProgress);\n        }).finally(() => this.set(\"loading\", false));\n      }\n    },\n    finishAuthenticationProcess: (0, _object.observer)(\"pmsMetadata\", \"authCode\", \"pmsID\", function () {\n      if (this.authCode && this.pmsID && !this.authenticating && !this.authenticated && this.pmsMetadata) {\n        const firmID = this.firm.id;\n        const authentication = this.pmsMetadata?.authentication;\n        this.set(\"authenticating\", true);\n        this.set(\"authenticated\", false);\n        this.set(\"authenticationErrorMessage\", false);\n\n        // now that we have finished the pms authorisation process, we are done with the pmsAuthContext\n        localStorage.removeItem(\"pmsAuthContext\");\n        return this.lambda.invoke(authentication.authenticateLambda, {\n          firmID,\n          authCode: this.authCode,\n          productName: this.pmsID\n        }).then(this.lambda.processResponse).then(({\n          authenticated,\n          message\n        }) => {\n          this.set(\"authenticated\", authenticated);\n          this.set(\"authenticationErrorMessage\", authenticated ? null : message);\n          if (authenticated) {\n            this.set(\"pmsCredentials\", {});\n            this.set(\"disconnected\", false);\n          }\n        }).catch(e => {\n          console.log(e);\n          this.set(\"authenticationErrorMessage\", \"Unable to authenticate the connection right now.\");\n        }).finally(() => {\n          this.set(\"authenticating\", false);\n        });\n      }\n    }),\n    getPMSSettingsOptions: (0, _object.observer)(\"authenticated\", \"loading\", function () {\n      if (this.authenticated) {\n        if (this.loading) {\n          // firm settings may still be saving, so don't get metadata until loading as finished\n          return;\n        }\n        this.set(\"loadingPmsSettings\", true);\n        return this.lambda.invoke(this.lambda.getSendToPmsMetadata, {\n          firmID: this.firm.id,\n          practiceArea: this.selectedPracticeArea ?? this.firm.practiceArea\n        }).then(this.lambda.processResponse).then(metadata => {\n          this.set(\"getSendToPmsMetadata\", metadata);\n          this.set(\"pmsSettingsLoaded\", true);\n          if (metadata) {\n            // We need to make sure an object exists for these settings, or this will error\n            const paths = [metadata.defaultSettingsPath];\n            this.makeSurePathsExist(this.selectedPracticeAreaSettings, paths);\n          }\n        }).finally(() => this.set(\"loadingPmsSettings\", false));\n      }\n    }),\n    getPaths(settings) {\n      return settings.map(s => {\n        let res = [];\n        if (s.subSettings) {\n          res = res.concat(this.getPaths(s.subSettings));\n        }\n        if (s.prefix) {\n          res.push(s.prefix);\n        }\n        return res;\n      }).flat();\n    },\n    makeSurePathsExist(object, paths) {\n      if (paths) {\n        paths.forEach(path => {\n          if (path) {\n            const [firstSection, ...rest] = path.split(\".\");\n            if (!object[firstSection]) {\n              (0, _object.set)(object, firstSection, {});\n            }\n            if (rest && rest.length) {\n              this.makeSurePathsExist(object[firstSection], [rest.join(\".\")]);\n            }\n          }\n        });\n      }\n    },\n    actions: {\n      additionalInfoChanged() {\n        (0, _runloop.next)(() => {\n          this.set(\"infoChangedTouch\", Date.now());\n        });\n      },\n      startAuthenticationProcess() {\n        // as part of the PMS authorisation flow the user/browser is redirected to the PMS login page\n        // and eventually back to here with an authCode queryParam. When they return we need to remember\n        // some context so we can continue with the PMS connection process.\n        localStorage.setItem(\"pmsAuthContext\", JSON.stringify({\n          pmsID: this.pmsID,\n          selectedPracticeArea: this.selectedPracticeArea\n        }));\n\n        // Redirect to our auth subdomain, to save a cookie, before going to the leap authentication page\n        if (this.pmsMetadata?.authentication?.authenticateURL) {\n          const encodedRedirectURL = encodeURIComponent(this.pmsMetadata.authentication.authenticateURL);\n          const encodedSourceURL = encodeURIComponent(window.location.href.split(\"?\")[0]); // Drop any query params (in case they still have an authCode)\n          window.location.replace(`https://auth.settify.com.au?redirectURL=${encodedRedirectURL}&sourceURL=${encodedSourceURL}`);\n        } else if (this.pmsMetadata?.authentication?.startAuthenticationProcessLambda) {\n          this.set(\"loadingInitialProcess\", true);\n          this.lambda.invoke(this.pmsMetadata.authentication.startAuthenticationProcessLambda, {\n            firmID: this.firm.id,\n            productName: this.pmsID\n          }).then(this.lambda.processResponse).then(({\n            successMessage\n          }) => {\n            if (!successMessage) {\n              throw \"Error starting authentication\";\n            }\n            this.set(\"initialAuthenticationMessage\", successMessage);\n            this.set(\"inProgress\", true);\n          }).catch(() => {\n            this.set(\"initialAuthenticationRequestError\", \"Unable to start the set up right now.\");\n          }).finally(() => {\n            this.set(\"loadingInitialProcess\", false);\n          });\n        }\n      },\n      disconnect() {\n        this.set(\"disconnecting\", true);\n        this.set(\"disconnected\", false);\n        this.set(\"disconnectErrorMessage\", false);\n        return this.lambda.invoke(this.pmsMetadata.authentication.disconnectLambda, {\n          firmID: this.firm.id,\n          productName: this.pmsID\n        }).then(this.lambda.processResponse).then(({\n          disconnected,\n          message\n        }) => {\n          this.set(\"disconnected\", disconnected);\n          this.set(\"disconnectErrorMessage\", disconnected ? null : message);\n          if (disconnected) {\n            (0, _runloop.later)(() => {\n              this.set(\"authenticated\", false);\n            }, 500);\n          }\n        }).catch(e => {\n          console.log(e);\n          this.set(\"disconnectErrorMessage\", \"Unable to disconnect the integration right now.\");\n        }).finally(() => {\n          this.set(\"disconnecting\", false);\n        });\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/config/invitations\", [\"exports\", \"settify-mvp/controllers/admin/config/settingsbase\"], function (_exports, _settingsbase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/controllers/admin/config/settingsbase\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _settingsbase.default.extend({\n    queryParams: [\"firmID\", \"practiceArea\"],\n    settingsFilter(settingName) {\n      const allowedSettings = [`^settings.admin.invitations`, `^settings.admin.showCustomInvitationEmail`];\n      return allowedSettings.some(regex => settingName.match(regex));\n    },\n    postSaveChanges() {\n      this.firm.reloadFirm();\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/config/invoices\", [\"exports\", \"settify-mvp/controllers/admin/config/settingsbase\"], function (_exports, _settingsbase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/controllers/admin/config/settingsbase\"eaimeta@70e063a35619d71f\n  // import Ember from 'ember';\n  var _default = _exports.default = _settingsbase.default.extend({\n    queryParams: [\"firmID\"],\n    firmID: \"\"\n  });\n});","define(\"settify-mvp/controllers/admin/config/lineitems\", [\"exports\", \"@ember/runloop\", \"@ember/object\", \"@ember/service\", \"settify-mvp/controllers/admin/config/settingsbase\", \"moment\"], function (_exports, _runloop, _object, _service, _settingsbase, _moment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/service\",0,\"settify-mvp/controllers/admin/config/settingsbase\",0,\"moment\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _settingsbase.default.extend({\n    queryParams: [\"firmID\"],\n    firmID: \"\",\n    loading: false,\n    isDeleting: false,\n    isCreating: false,\n    lineItemAmount: null,\n    lineItemDescription: null,\n    lineItemCategory: null,\n    lineItemDate: null,\n    lineItemPracticeArea: null,\n    currency: null,\n    successMessage: null,\n    errorMessage: null,\n    init() {\n      this._super(...arguments);\n      this.practiceAreaCollection = [{\n        name: \"Family Law\",\n        code: \"Family\"\n      }, {\n        name: \"Wills & Estates\",\n        code: \"Wills\"\n      }, {\n        name: \"Probate\",\n        code: \"Probate\"\n      }, {\n        name: \"Estate Disputes\",\n        code: \"Estates\"\n      }];\n      this.categoriesCollection = [{\n        name: \"LicenceFee\",\n        code: \"LicenceFee\"\n      }, {\n        name: \"RolloutFee\",\n        code: \"RolloutFee\"\n      }, {\n        name: \"ModificationFee\",\n        code: \"ModificationFee\"\n      }, {\n        name: \"Discount\",\n        code: \"Discount\"\n      }, {\n        name: \"UpgradeFee\",\n        code: \"UpgradeFee\"\n      }];\n    },\n    lambda: (0, _service.inject)(),\n    session: (0, _service.inject)(),\n    canCreateNewLineItem: (0, _object.computed)(\"lineItemAmount\", \"lineItemDescription\", \"lineItemDate\", \"lineItemCategory\", \"lineItemPracticeArea\", function () {\n      return Boolean(this.lineItemAmount && this.lineItemDescription && this.lineItemDate && this.lineItemCategory && this.lineItemPracticeArea);\n    }),\n    actions: {\n      toggleDeleteLineItem(lineitem) {\n        if (lineitem) {\n          (0, _object.set)(lineitem, \"isDeleting\", !lineitem.isDeleting);\n        }\n      },\n      deleteLineItem(lineitem) {\n        this.set(\"loading\", true);\n        return this.lambda.invoke(this.get(\"lambda.deleteLineItemLambda\"), {\n          adminUsername: this.get(\"session.data.authenticated.username\"),\n          rowID: lineitem.id,\n          firmID: this.firmID,\n          lastModified: lineitem.lastModified\n        }).then(this.lambda.processResponse).then(result => {\n          this.set(\"loading\", false);\n          (0, _object.set)(lineitem, \"isDeleting\", false);\n          if (result.error) {\n            this.set(\"errorMessage\", \"Line item cannot be deleted, please try again or contact the dev team.\");\n            throw result.error;\n          } else {\n            this.send(\"refreshModel\");\n            this.set(\"successMessage\", \"Line item deleted successfully\");\n          }\n        }).finally(() => {\n          (0, _runloop.later)(() => {\n            this.set(\"successMessage\", null);\n            this.set(\"errorMessage\", null);\n          }, 5000);\n        });\n      },\n      toggleLineItemCreation() {\n        this.toggleProperty(\"isCreating\");\n      },\n      createLineItem() {\n        this.set(\"loading\", true);\n        if (this.lineItemCategory === \"Discount\") {\n          // Discounts must always be negative\n          this.set(\"lineItemAmount\", -Math.abs(parseInt(this.lineItemAmount)));\n        }\n        let lineItems = [];\n        let data = {\n          firmID: this.firmID,\n          invoiceAmountCents: parseInt(this.lineItemAmount),\n          description: this.lineItemDescription,\n          category: this.lineItemCategory,\n          currency: this.currency,\n          displayDate: (0, _moment.default)(this.lineItemDate).format(\"YYYY-MM-DD\"),\n          practiceArea: this.lineItemPracticeArea\n        };\n        lineItems.push(data);\n        let payload = {\n          adminUsername: this.get(\"session.data.authenticated.username\"),\n          lineItems: lineItems\n        };\n        if (payload.lineItems.length && payload.lineItems.some(l => l.invoiceAmountCents)) {\n          return this.lambda.invoke(this.get(\"lambda.createLineItemsLambda\"), payload).then(this.lambda.processResponse).then(result => {\n            this.set(\"loading\", false);\n            if (result.error) {\n              this.set(\"errorMessage\", \"ine item was not created, please try again or contact the dev team.\");\n              throw result.error;\n            } else {\n              this.send(\"refreshModel\");\n              this.set(\"successMessage\", \"Line item created successfully\");\n              this.set(\"isCreating\", false);\n            }\n          }).finally(() => {\n            (0, _runloop.later)(() => {\n              this.set(\"successMessage\", null);\n              this.set(\"errorMessage\", null);\n            }, 5000);\n          });\n        }\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/config/links\", [\"exports\", \"settify-mvp/controllers/admin/config/settingsbase\", \"@ember/service\"], function (_exports, _settingsbase, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/controllers/admin/config/settingsbase\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let LinksController = _exports.default = (_class = class LinksController extends _settingsbase.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n      _defineProperty(this, \"accessDetails\", true);\n      _defineProperty(this, \"queryParams\", [\"firmID\"]);\n    }\n    get practiceAreaSelects() {\n      const content = [];\n      const activePracticeArea = this.firm.practiceArea;\n      const otherPracticeAreaKeys = Object.keys(this.firm.otherSettifyURLs || {});\n      const practiceAreaNames = [activePracticeArea, ...otherPracticeAreaKeys];\n      practiceAreaNames.forEach(name => {\n        content.push({\n          label: name,\n          value: name\n        });\n      });\n      return content;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/controllers/admin/config/offices\", [\"exports\", \"@ember/object\", \"settify-mvp/controllers/base\", \"settify-mvp/mixins/edit-firm-settings\"], function (_exports, _object, _base, _editFirmSettings) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"settify-mvp/controllers/base\",0,\"settify-mvp/mixins/edit-firm-settings\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend(_editFirmSettings.default, {\n    queryParams: [\"firmID\"],\n    accessOffices: true,\n    officeDefaults: (0, _object.computed)(\"firmOffices.offices.length\", \"firmOffices.offices\", function () {\n      const retval = {\n        editingOffice: true\n      };\n      if (this.firmOffices.offices?.length === 0) {\n        retval.primaryOffice = true;\n      }\n      return retval;\n    }),\n    preSaveChanges() {\n      this.processStateAbbreviations();\n    },\n    onLengthChanged: (0, _object.observer)(\"firmOffices.offices.length\", function () {\n      const l = this.get(\"firmOffices.offices\");\n      const primaries = l.filter(e => e.primaryOffice);\n      if (primaries.length < 1) {\n        // there is no primary office set!\n        for (let i = 0; i < l.length; i++) {\n          const office = l[i];\n          if (!office.primaryOffice) {\n            (0, _object.set)(office, \"primaryOffice\", true);\n            break;\n          }\n        }\n      } else if (primaries.length > 1) {\n        // too many primary offices!\n        let firstDone = false;\n        for (let i = 0; i < l.length; i++) {\n          const office = l[i];\n          if (office.primaryOffice) {\n            if (!firstDone) {\n              firstDone = true;\n            } else {\n              (0, _object.set)(office, \"primaryOffice\", false);\n            }\n          }\n        }\n      }\n    }),\n    onStateChanged: (0, _object.observer)(\"firmOffices.offices.@each.state\", function () {\n      this.processStateAbbreviations();\n    }),\n    processStateAbbreviations() {\n      const offices = this.get(\"firmOffices.offices\");\n      offices.forEach(o => {\n        const state = o.state ? o.state.toLowerCase().replace(/\\s*/g, \"\") : \"\";\n        switch (state) {\n          case \"vic\":\n          case \"victoria\":\n            (0, _object.set)(o, \"stateAbbreviation\", \"VIC\");\n            break;\n          case \"nsw\":\n          case \"newsouthwales\":\n            (0, _object.set)(o, \"stateAbbreviation\", \"NSW\");\n            break;\n          case \"queensland\":\n          case \"qld\":\n            (0, _object.set)(o, \"stateAbbreviation\", \"QLD\");\n            break;\n          case \"southaustralia\":\n          case \"sa\":\n            (0, _object.set)(o, \"stateAbbreviation\", \"SA\");\n            break;\n          case \"tasmania\":\n          case \"tas\":\n            (0, _object.set)(o, \"stateAbbreviation\", \"TAS\");\n            break;\n          case \"westernaustralia\":\n          case \"westaustralia\":\n          case \"wa\":\n            (0, _object.set)(o, \"stateAbbreviation\", \"WA\");\n            break;\n          case \"northernterritory\":\n          case \"nt\":\n          case \"northterritory\":\n            (0, _object.set)(o, \"stateAbbreviation\", \"NT\");\n            break;\n          case \"act\":\n          case \"australiancapitalterritory\":\n          case \"australiancapitolterritory\":\n            (0, _object.set)(o, \"stateAbbreviation\", \"ACT\");\n            break;\n          case \"nz\":\n          case \"newzealand\":\n            (0, _object.set)(o, \"stateAbbreviation\", \"NZ\");\n            break;\n          case \"uk\":\n          case \"england\":\n          case \"wales\":\n          case \"scotland\":\n          case \"englandandwales\":\n          case \"london\":\n          case \"unitedkingdom\":\n            (0, _object.set)(o, \"stateAbbreviation\", \"UK\");\n            break;\n          case \"on\":\n          case \"ontario\":\n            (0, _object.set)(o, \"stateAbbreviation\", \"ON\");\n            break;\n          case \"bc\":\n          case \"b.c\":\n          case \"b.c.\":\n          case \"british columbia\":\n            (0, _object.set)(o, \"stateAbbreviation\", \"BC\");\n            break;\n          case \"ab\":\n          case \"alberta\":\n            (0, _object.set)(o, \"stateAbbreviation\", \"AB\");\n            break;\n          default:\n            (0, _object.set)(o, \"stateAbbreviation\", \"\");\n            break;\n        }\n      });\n    },\n    actions: {\n      editOffice(office) {\n        (0, _object.set)(office, \"editingOffice\", !office.editingOffice);\n      },\n      allowAllPracticeAreas(office) {\n        (0, _object.set)(office, \"practiceAreas\", null);\n      },\n      specifyPracticeAreas(office) {\n        (0, _object.set)(office, \"practiceAreas\", {});\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/config/practiceclient\", [\"exports\", \"@ember/object\", \"@ember/service\", \"settify-mvp/controllers/admin/config/settingsbase\"], function (_exports, _object, _service, _settingsbase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/service\",0,\"settify-mvp/controllers/admin/config/settingsbase\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _settingsbase.default.extend({\n    lambda: (0, _service.inject)(),\n    queryParams: [\"firmID\"],\n    clientType: null,\n    confirmationText: \"\",\n    loading: false,\n    accessDetails: true,\n    settingsFilter() {\n      return true;\n    },\n    placeholderText: (0, _object.computed)(\"clientType\", \"practiceArea\", \"firmID\", function () {\n      const {\n        clientType\n      } = this;\n      const {\n        practiceArea\n      } = this;\n      const {\n        firmID\n      } = this;\n      if (!clientType || !practiceArea || !firmID) {\n        return \"\";\n      }\n      return `send a ${clientType} ${practiceArea.toLowerCase()} client to ${firmID}`;\n    }),\n    practiceAreas: (0, _object.computed)(\"firmDetails.practiceAreaDetails\", function () {\n      if (!this.firmDetails.practiceAreaDetails) {\n        return [];\n      }\n      return this.firmDetails.practiceAreaDetails.map(details => {\n        return {\n          label: details.practiceArea,\n          value: details.practiceArea\n        };\n      });\n    }),\n    canSubmit: (0, _object.computed)(\"clientType\", \"confirmationText\", \"placeholderText\", function () {\n      return this.clientType && this.confirmationText === this.placeholderText;\n    }),\n    actions: {\n      sendClient() {\n        if (!this.canSubmit) {\n          return;\n        }\n        const type = this.clientType;\n        this.set(\"loading\", true);\n        this.set(\"success\", false);\n        this.set(\"errorMessage\", null);\n        const payload = {\n          firmID: this.firmID,\n          practiceArea: this.practiceArea,\n          emailFirm: type === \"practiceclient\"\n        };\n        return this.lambda.invoke(this.get(\"lambda.sendPracticeClientLambda\"), payload).then(this.lambda.processResponse).then(() => {\n          this.set(\"success\", true);\n        }).catch(() => {\n          this.set(\"errorMessage\", \"There was an error sending the client\");\n        }).finally(() => {\n          this.set(\"loading\", false);\n        });\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/config/settingsbase\", [\"exports\", \"@ember/object\", \"settify-mvp/controllers/base\", \"settify-mvp/mixins/edit-firm-settings\"], function (_exports, _object, _base, _editFirmSettings) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"settify-mvp/controllers/base\",0,\"settify-mvp/mixins/edit-firm-settings\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend(_editFirmSettings.default, {\n    accessSettings: true,\n    selectedPracticeArea: null,\n    needNewSettings: (0, _object.observer)(\"firmID\", \"practiceArea\", function () {\n      this.reloadFirm(true);\n    }),\n    selectedPracticeAreaSettings: (0, _object.computed)(\"firmSettings.settings\", function () {\n      return this.firmSettings?.settings || null;\n    }),\n    filteredSettings: (0, _object.computed)(\"model.settingsHelp\", \"selectedPracticeAreaSettings\", function () {\n      const settings = this.selectedPracticeAreaSettings;\n      if (!settings) {\n        return [];\n      }\n      // const settingNames = this.getSettingsNamesFromSubObject(settings.serialize())\n      const settingNames = this.getSettingsNamesFromSubObject(settings).filter(settingName => this.settingsFilter(settingName)).map(setting => {\n        let settingDetails = {\n          withoutPath: setting.replace(/\\./g, \"\"),\n          withPath: setting\n        };\n        const settingsHelp = this?.model?.settingsHelp?.[settingDetails.withoutPath];\n        if (settingsHelp) {\n          // Add the help information to the setting\n          settingDetails = {\n            ...settingDetails,\n            ...settingsHelp\n          };\n        }\n        return settingDetails;\n      });\n      return settingNames;\n    }),\n    getSettingsNamesFromSubObject(obj, path = \"\") {\n      let retval = [];\n      Object.keys(obj).forEach(key => {\n        const element = obj[key];\n        if (typeof element === \"object\") {\n          if (element && element.length) {\n            // array\n            retval.push(path + key);\n          } else if (element) {\n            retval = retval.concat(this.getSettingsNamesFromSubObject(element, `${path + key}.`));\n          } else if (element === null) {\n            retval.push(path + key);\n          }\n        } else {\n          retval.push(path + key);\n        }\n      });\n      return retval;\n    },\n    actions: {\n      changePracticeArea(pa) {\n        this.set(\"selectedPracticeArea\", pa);\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/config/skinning\", [\"exports\", \"@ember/object\", \"@ember/runloop\", \"@ember/service\", \"settify-mvp/controllers/admin/config/settingsbase\"], function (_exports, _object, _runloop, _service, _settingsbase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/runloop\",0,\"@ember/service\",0,\"settify-mvp/controllers/admin/config/settingsbase\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _settingsbase.default.extend({\n    lambda: (0, _service.inject)(),\n    session: (0, _service.inject)(),\n    config: (0, _service.inject)(\"dynamic-config\"),\n    awsService: (0, _service.inject)(),\n    queryParams: [\"firmID\"],\n    firmID: \"\",\n    init() {\n      this._super(...arguments);\n      this.fontLinks = [];\n      this.landingImagesArray = [{\n        uploadType: \"landingimage\",\n        maxKB: 300,\n        uploadName: \"Landing Page Image\",\n        accept: \".jpg, .png\",\n        adminMode: true,\n        forceName: \"landing-bg\",\n        forceConfirm: false,\n        showImagePreview: false,\n        practiceAreaSpecific: true\n      }];\n      (0, _object.set)(this, \"defaultColorsArray\", [{\n        displayName: \"Primary\",\n        name: \"primary\",\n        defaultValue: \"#16399b\"\n      }, {\n        displayName: \"Links\",\n        name: \"link\",\n        defaultValue: \"#217dbb\"\n      }, {\n        displayName: \"Links hover\",\n        name: \"link-hover\",\n        defaultValue: \"#217dbb\"\n      }, {\n        displayName: \"Text\",\n        name: \"text\",\n        defaultValue: \"#333333\"\n      }, {\n        displayName: \"Background\",\n        name: \"background\",\n        defaultValue: \"#ffffff\"\n      }]), (0, _object.set)(this, \"fontsArray\", [{\n        displayName: \"Main body font\",\n        name: \"body-font\",\n        defaultValue: \"Lato\",\n        origin: \"google\",\n        weight: [300, 400, 700]\n      }, {\n        displayName: \"Heading font\",\n        name: \"heading-font\",\n        defaultValue: \"Roboto\",\n        origin: \"google\",\n        weight: [300, 400, 700]\n      }]), this.assetsArray = [{\n        uploadType: \"logo\",\n        maxKB: 200,\n        uploadName: \"Logo\",\n        accept: \".png\",\n        adminMode: true,\n        forceName: true,\n        forceConfirm: false,\n        showImagePreview: false\n      }, {\n        size: \"500x200\",\n        uploadType: \"emailLogo\",\n        maxKB: 200,\n        uploadName: \"Email Logo\",\n        accept: \".jpg\",\n        adminMode: true,\n        forceName: true,\n        forceConfirm: false,\n        showImagePreview: false\n      }, {\n        uploadType: \"favicon\",\n        maxKB: 100,\n        uploadName: \"Favicon\",\n        accept: \".ico\",\n        adminMode: true,\n        forceName: \"favicon\",\n        forceConfirm: false,\n        showImagePreview: false\n      }, {\n        uploadType: \"headerimage\",\n        maxKB: 250,\n        uploadName: \"Header Image\",\n        accept: \".jpg\",\n        adminMode: true,\n        forceName: \"sky-bg\",\n        forceConfirm: false,\n        showImagePreview: false,\n        practiceAreaSpecific: true\n      }];\n      this.optionalAssetsArray = [{\n        size: \"250x200\",\n        uploadType: \"cobrandedLogo\",\n        maxKB: 200,\n        uploadName: \"Co-branded Logo\",\n        accept: \".jpg\",\n        adminMode: true,\n        forceName: true,\n        forceConfirm: false,\n        showImagePreview: false\n      }, {\n        size: \"250x200\",\n        referral: true,\n        uploadType: \"referrerLogo\",\n        maxKB: 200,\n        uploadName: \"Referrer Logo\",\n        accept: \".jpg\",\n        adminMode: true,\n        forceName: true\n      }];\n    },\n    reset() {\n      this.setProperties({\n        savingSuccesful: false,\n        savingFailed: false\n      });\n    },\n    settingsFilter() {\n      return true;\n    },\n    editableColors: (0, _object.computed)(\"model.colors\", \"defaultColorsArray\", function () {\n      const firmColors = this.get(\"model.colors\") || {};\n      return this.defaultColorsArray.map(color => {\n        const value = firmColors[color.name] || color.defaultValue; // Use the firms current color or the default\n        return {\n          ...color,\n          value\n        };\n      });\n    }),\n    editableFonts: (0, _object.computed)(\"model.fonts\", \"fontsArray.@each.{value,origin}\", function () {\n      const firmFonts = this.get(\"model.fonts\") || {};\n      return this.fontsArray.map(font => {\n        const fontFamily = firmFonts[font.name] ? firmFonts[font.name].fontFamily : font.defaultValue;\n        return {\n          ...font,\n          fontFamily,\n          maxKB: 4000,\n          accept: \".ttf, .eot, .svg, .woff, .woff2\"\n        };\n      });\n    }),\n    landingTemplatesPracticeAreas: (0, _object.computed)(\"firmSettings.settings.{otherSettifyURLs,practiceArea}\", function () {\n      return this.getPracticeAreasCollection(\"landing\");\n    }),\n    practiceAreas: (0, _object.computed)(\"firmSettings.settings.{otherSettifyURLs,practiceArea}\", function () {\n      return this.getPracticeAreasCollection();\n    }),\n    /**\n     * Retrieves a collection of practice areas based on the provided type.\n     * The \"Global\" option is included for Uno system and landing templates\n     * uploader, but not for header images uploader.\n     *\n     * @param {string} type - The type of collection to retrieve (e.g. landing).\n     * @returns {Object[]} An array of objects representing practice areas with label and value properties.\n     */\n    getPracticeAreasCollection(type) {\n      if (!this.firmSettings || !this.get(\"firmSettings.settings\")) {\n        return [];\n      }\n      const otherPAs = Object.keys(this.firmSettings?.settings?.otherSettifyURLs || {});\n      if (type === \"landing\" && otherPAs.length > 1) {\n        otherPAs.push(\"Global\");\n      }\n      return otherPAs.map(pa => {\n        return {\n          label: pa,\n          value: pa\n        };\n      });\n    },\n    saveToS3(objToSave) {\n      const params = {\n        Key: `firms/${this.firmID}/styles.json`,\n        ContentType: \"application/json\",\n        Body: JSON.stringify({\n          ...this.model,\n          ...objToSave\n        })\n      };\n      return new Promise((resolve, reject) => {\n        return this.awsService.getS3ByType(\"assets\").then(s3Client => {\n          s3Client.upload(params, err => {\n            return err ? reject(err) : resolve();\n          });\n        });\n      });\n    },\n    actions: {\n      saveStyles() {\n        this.set(\"savingSuccesful\", false);\n        this.set(\"savingFailed\", false);\n        const updatedColorsObj = this.editableColors.reduce((acc, obj) => {\n          acc[obj.name] = obj.value;\n          return acc;\n        }, {});\n        const updatedFontsObj = this.editableFonts.reduce((acc, fontObj) => {\n          const {\n            name,\n            fontFamily,\n            origin,\n            weight\n          } = fontObj;\n          const capitalisedFontFamily = fontFamily.toLowerCase().split(\" \").map(word => word.charAt(0).toUpperCase().concat(word.substr(1))).join(\" \");\n          acc[name] = {\n            fontFamily: capitalisedFontFamily,\n            origin,\n            weight\n          };\n          return acc;\n        }, {});\n        this.saveToS3({\n          colors: updatedColorsObj,\n          fonts: updatedFontsObj\n        }).then(() => {\n          this.set(\"savingSuccesful\", true);\n          (0, _runloop.later)(() => this.set(\"savingSuccesful\", false), 4000);\n        }).catch(err => {\n          this.set(\"savingFailed\", err);\n        });\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/config/team\", [\"exports\", \"settify-mvp/controllers/base\"], function (_exports, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/controllers/base\"eaimeta@70e063a35619d71f\n  // import Ember from 'ember';\n  var _default = _exports.default = _base.default.extend({\n    firmID: \"\",\n    actions: {\n      addOther() {\n        this.model.staffList.pushObject({\n          email: null,\n          hasLogin: false,\n          newPerson: true,\n          personType: \"other\"\n        });\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/displayemailtemplate\", [\"exports\", \"@ember/object\", \"@ember/service\", \"settify-mvp/controllers/base\"], function (_exports, _object, _service, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/service\",0,\"settify-mvp/controllers/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    lambda: (0, _service.inject)(),\n    emailTemplates: (0, _service.inject)(),\n    firmID: \"999999999-SETTIFY\",\n    selectedEmailCategory: \"\",\n    selectedEmailTemplate: \"\",\n    success: false,\n    emailTemplateDataSubject: \"\",\n    emailTemplateDataBody: \"\",\n    addSettifyWrapper: true,\n    minimalFormatting: false,\n    logoImgSrc: `https://s3.ap-southeast-2.amazonaws.com/assets.settify.com.au/logos/999999999-SETTIFY-500x200.jpg`,\n    init() {\n      this._super(...arguments);\n      this.set(\"emailCategorySelectOptions\", this.emailTemplates.getEmailCategories());\n      this.emailTemplateSelectOptions = [];\n      this.emailCategorySelectOptions = [];\n      this.templateVariations = {};\n      this.templateData = {};\n    },\n    reset() {\n      this._super(...arguments);\n      this.set(\"selectedEmailCategory\", \"\");\n      this.set(\"selectedEmailTemplate\", \"\");\n      this.set(\"success\", false);\n      this.set(\"emailTemplateDataSubject\", \"\");\n      this.set(\"emailTemplateDataBody\", \"\");\n      this.set(\"templateVariations\", {});\n      this.set(\"templateData\", {});\n      this.set(\"addSettifyWrapper\", true);\n      this.set(\"minimalFormatting\", false);\n    },\n    onEmailCategorySelect: (0, _object.observer)(\"selectedEmailCategory\", function () {\n      const emailCategory = this.selectedEmailCategory;\n      this.set(\"emailTemplateSelectOptions\", this.emailTemplates.getEmailTemplates(emailCategory));\n    }),\n    onEmailTemplateSelect: (0, _object.observer)(\"selectedEmailTemplate\", function () {\n      const templateName = this.selectedEmailTemplate;\n      this.set(\"success\", false);\n      if (templateName) {\n        const {\n          variations\n        } = this.emailTemplateSelectOptions.find(temp => temp.value === templateName);\n        this.set(\"templateVariations\", variations);\n      }\n    }),\n    actions: {\n      toggleHelpInfo() {\n        this.toggleProperty(\"helpInfo\");\n      },\n      getEmailTemplateFromS3() {\n        this.set(\"loading\", true);\n        let templateName = this.selectedEmailTemplate;\n        const {\n          suffix\n        } = this.emailTemplateSelectOptions.find(temp => temp.value === templateName);\n\n        // Put templateData into a hardcoded firm object\n        const templateFirmData = {\n          firm: {\n            ...this.templateData\n          }\n        };\n        let payload = {\n          firmID: this.firmID,\n          template: templateName,\n          templateSuffix: suffix || \"\",\n          templateVariations: templateFirmData || {},\n          addSettifyWrapper: this.addSettifyWrapper,\n          minimalFormatting: this.minimalFormatting\n        };\n        return this.lambda.invoke(this.get(\"lambda.displayEmailTemplateLambda\"), payload).then(this.lambda.processResponse).then(data => {\n          if (data.error) {\n            throw data.error;\n          }\n          this.set(\"emailTemplateDataSubject\", data.subject);\n          this.set(\"emailTemplateDataBody\", data.body);\n          this.set(\"success\", true);\n          return {};\n        }).finally(() => {\n          this.set(\"loading\", false);\n        });\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/editablesummary\", [\"exports\", \"@ember/object\", \"@ember/service\", \"settify-mvp/controllers/base\", \"settify-mvp/mixins/summary-page-mixin\", \"settify-mvp/mixins/upload-download\", \"settify-mvp/lib/clientconsts\", \"moment\"], function (_exports, _object, _service, _base, _summaryPageMixin, _uploadDownload, _clientconsts, _moment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/service\",0,\"settify-mvp/controllers/base\",0,\"settify-mvp/mixins/summary-page-mixin\",0,\"settify-mvp/mixins/upload-download\",0,\"settify-mvp/lib/clientconsts\",0,\"moment\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend(_summaryPageMixin.default, _uploadDownload.default, {\n    eventLogging: (0, _service.inject)(),\n    lawyerList: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    cc: _clientconsts.cc,\n    you: (0, _object.computed)(\"model.client.firstName\", function () {\n      const n = this.get(\"model.client.firstName\");\n      if (n) {\n        return n;\n      }\n      return \"Client\";\n    }),\n    your: (0, _object.computed)(\"model.client.firstName\", function () {\n      const n = this.get(\"model.client.firstName\");\n      if (n) {\n        return `${n}'s`;\n      }\n      return \"Client's\";\n    }),\n    otherPersonName: (0, _object.computed)(\"model.client.{otherPersonName,otherPersonType}\", \"your\", function () {\n      let opn = this.get(\"model.client.otherPersonName\");\n      if (opn === \"your spouse\" || opn === \"your partner\" || opn === \"your former spouse\" || opn === \"your former partner\") {\n        opn = `${this.your} ${this.get(\"model.client.otherPersonType\")}`;\n      }\n      return opn;\n    }),\n    isare: \"is\",\n    hashave: \"has\",\n    youthey: \"they\",\n    s: \"s\",\n    reset() {\n      this._super(...arguments);\n      this.set(\"todayString\", (0, _moment.default)().format(\"dddd D MMMM YYYY\"));\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/files/download\", [\"exports\", \"@ember/service\", \"settify-mvp/controllers/base\", \"settify-mvp/mixins/upload-download\"], function (_exports, _service, _base, _uploadDownload) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"settify-mvp/controllers/base\",0,\"settify-mvp/mixins/upload-download\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend(_uploadDownload.default, {\n    lambda: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    reset() {\n      this._super(...arguments);\n      this.set(\"showUnsubscribeLink\", false);\n    },\n    actions: {\n      downloadFile(file) {\n        // download from S3, then save locally\n        const that = this;\n        function downloadCallback(err) {\n          if (!err) {\n            that.set(\"showUnsubscribeLink\", true);\n          }\n        }\n        this.downloadFile(file.key, downloadCallback, file.displayName);\n      },\n      unsubscribe() {\n        this.set(\"unsubscribeLoading\", true);\n        this.set(\"unsubscribeSuccess\", false);\n        this.set(\"unsubscribeError\", false);\n        this.lambda.invoke(this.get(\"lambda.fileUnsubscribeLambda\"), {\n          firmID: this.get(\"firm.id\"),\n          sendID: this.get(\"model.sendID\")\n        }).then(() => {\n          this.set(\"unsubscribeSuccess\", true);\n        }).catch(e => {\n          this.set(\"unsubscribeError\", e);\n        }).finally(() => {\n          this.set(\"unsubscribeLoading\", false);\n        });\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/files/invite\", [\"exports\", \"@ember/runloop\", \"@ember/object\", \"@ember/service\", \"settify-mvp/controllers/base\"], function (_exports, _runloop, _object, _service, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/service\",0,\"settify-mvp/controllers/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    clientFirstName: \"\",\n    clientSurname: \"\",\n    clientEmail: \"\",\n    clientEmailValid: false,\n    lambda: (0, _service.inject)(),\n    lawyerList: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    router: (0, _service.inject)(),\n    clientRecords: (0, _service.inject)(),\n    reset() {\n      this._super(...arguments);\n      this.set(\"showFullInput\", false);\n      this.set(\"searchquery\", null);\n      this.set(\"searchComplete\", false);\n      this.set(\"searchLoading\", false);\n      this.set(\"searchLongLoading\", false);\n      this.set(\"inviteLoading\", false);\n      this.set(\"inviteSuccess\", false);\n      this.set(\"inviteError\", false);\n      this.set(\"searchResults\", null);\n      this.set(\"searchMatch\", null);\n      this.set(\"selectedClientID\", null);\n      this.set(\"recipients\", []);\n    },\n    onSearchTermChanged: (0, _object.observer)(\"searchquery\", function () {\n      (0, _runloop.debounce)(this, \"search\", 1000);\n    }),\n    search() {\n      const query = this.searchquery;\n      if (!query) {\n        return;\n      }\n      this.set(\"searchLoading\", true);\n      this.set(\"searchLongLoading\", false);\n      this.set(\"searchMatch\", null);\n      this.set(\"searchComplete\", false);\n      this.set(\"showFullInput\", false);\n      this.set(\"selectedClientID\", null);\n      (0, _runloop.later)(this, () => {\n        if (this.searchLoading) {\n          this.set(\"searchLongLoading\", true);\n        }\n      }, 500);\n      return this.lambda.invoke(this.get(\"lambda.searchClientsLambda\"), {\n        query: query\n      }).then(data => {\n        if (!data || !data.Payload) {\n          this.set(\"searchResults\", undefined);\n          return;\n        }\n        const payload = JSON.parse(data.Payload);\n        for (let i = 0; i < payload.results.length; i++) {\n          if (!payload.results[i].name) {\n            payload.results[i].name = \"(Name not provided)\";\n          }\n        }\n        this.set(\"searchResults\", payload.results);\n      }).then(() => {}).catch(err => {\n        this.set(\"searchError\", err);\n      }).finally(() => {\n        this.set(\"searchLoading\", false);\n        this.set(\"searchLongLoading\", false);\n        this.set(\"searchComplete\", true);\n      });\n    },\n    canInvite: (0, _object.computed)(\"clientFirstName\", \"clientSurname\", \"clientEmail\", \"clientEmailValid\", \"sendFrom\", function () {\n      if (!!this.clientFirstName && !!this.clientSurname && !!this.clientEmail && !!this.clientEmailValid && !!this.sendFrom) {\n        return true;\n      }\n      return false;\n    }),\n    actions: {\n      nullAction() {\n        this.set(\"highlightRequiredFields\", true);\n      },\n      showFullInput() {\n        this.set(\"showFullInput\", true);\n        this.set(\"searchMatch\", false);\n        this.set(\"selectedClientID\", null);\n      },\n      addAdditionalRecipient() {\n        this.recipients.pushObject({});\n      },\n      removeRecipient(r) {\n        this.recipients.removeObject(r);\n      },\n      selectSearchMatch(r) {\n        this.clientRecords.getClientByID(r.clientID).then(c => {\n          if (c && c.get && c.get(\"email\")) {\n            this.set(\"searchMatch\", r);\n            this.set(\"clientFirstName\", c.get(\"firstName\"));\n            this.set(\"clientSurname\", c.get(\"surname\"));\n            this.set(\"clientEmail\", c.get(\"email\"));\n            this.set(\"clientEmailValid\", !!c.get(\"email\"));\n            this.set(\"selectedClientID\", r.clientID);\n            return;\n          }\n\n          // couldn't get the record for some reason\n          this.set(\"searchMatch\", null);\n          if (c === \"423\") {\n            // frozen record\n            this.router.transitionTo(\"help.frozenrecord\", {\n              queryParams: {\n                clientID: r.clientID\n              }\n            });\n          }\n        });\n      },\n      inviteClient() {\n        if (!this.canInvite) {\n          return;\n        }\n        this.set(\"inviteLoading\", true);\n        this.set(\"inviteSuccess\", false);\n        this.set(\"inviteError\", false);\n        return this.lambda.invoke(this.get(\"lambda.fileInviteLambda\"), {\n          clientID: this.selectedClientID,\n          firmID: this.get(\"firm.id\"),\n          sendTo: {\n            firstName: this.clientFirstName,\n            surname: this.clientSurname,\n            email: this.clientEmail\n          },\n          sendFrom: {\n            name: this.get(\"sendFrom.name\"),\n            email: this.get(\"sendFrom.email\")\n          },\n          CCs: (this.recipients || []).map(e => e.lawyerEmail),\n          customMessage: this.customMessage\n        }).then(() => {\n          this.set(\"inviteSuccess\", true);\n        }).catch(err => {\n          this.set(\"inviteError\", err);\n        }).finally(() => {\n          this.set(\"inviteLoading\", false);\n        });\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/firms\", [\"exports\", \"@ember/runloop\", \"@ember/utils\", \"@ember/object\", \"@ember/service\", \"settify-mvp/helpers/sentence-case\", \"settify-mvp/controllers/base\", \"settify-mvp/mixins/select-firm\", \"settify-mvp/mixins/edit-firm-settings\"], function (_exports, _runloop, _utils, _object, _service, _sentenceCase, _base, _selectFirm, _editFirmSettings) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/utils\",0,\"@ember/object\",0,\"@ember/service\",0,\"settify-mvp/helpers/sentence-case\",0,\"settify-mvp/controllers/base\",0,\"settify-mvp/mixins/select-firm\",0,\"settify-mvp/mixins/edit-firm-settings\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend(_selectFirm.default, _editFirmSettings.default, {\n    lambda: (0, _service.service)(),\n    session: (0, _service.service)(),\n    cache: (0, _service.service)(),\n    queryParams: [\"selectedFirmID\"],\n    webappTypes: [{\n      label: \"Legacy\",\n      value: \"legacy\"\n    }, {\n      label: \"Uno\",\n      value: \"uno\"\n    }],\n    init() {\n      this._super(...arguments);\n      this.updateFeeStatus = [];\n    },\n    reset() {\n      this._super();\n      this.loadFirm(this.selectedFirmID);\n      this.set(\"savingChanges\", false);\n      this.set(\"savingChangesSuccess\", false);\n      this.set(\"savingChangesError\", false);\n      this.set(\"requiredSettingsList\", null);\n      this.set(\"anyFeeChanged\", false);\n      this.set(\"selectedFirmSettings\", null);\n      this.set(\"practiceAreasSettingsToSave\", {});\n      const current = new Date();\n      current.setDate(1);\n      this.set(\"firstDayOfThisMonth\", current);\n    },\n    // This is to handle the fact that licenceFeeInCents is pulled as an int, but becomes a string after being modified using a number input\n    onLicenceFeeChanged: (0, _object.observer)(\"selectedFirmPracticeAreaDetails.@each.licenceFeeInCents\", function () {\n      this.selectedFirmPracticeAreaDetails?.forEach(practiceAreaDetails => {\n        const {\n          licenceFeeInCents,\n          currentFee\n        } = practiceAreaDetails;\n        if ((0, _utils.isEmpty)(currentFee) || parseInt(licenceFeeInCents) === currentFee) {\n          (0, _object.set)(practiceAreaDetails, \"licenceFeeChanged\", false);\n        } else if (parseInt(licenceFeeInCents) !== currentFee) {\n          (0, _object.set)(practiceAreaDetails, \"licenceFeeChanged\", true);\n        }\n      });\n    }),\n    initialiseFeeUpdateStatus: (0, _object.observer)(\"selectedFirmPracticeAreaDetails\", function () {\n      this.set(\"anyFeeChanged\", false);\n      const possiblePracticeAreas = this.selectedFirmPracticeAreaDetails;\n      if (!possiblePracticeAreas) {\n        this.set(\"updateFeeStatus\", []);\n        return;\n      }\n\n      // save the \"current\" licence fee, so that we know if we've changed it\n      possiblePracticeAreas.forEach(details => {\n        details.currentFee = details.licenceFeeInCents;\n      });\n\n      // save a separate status array, so we can display success messages, etc.\n      this.set(\"updateFeeStatus\", possiblePracticeAreas.map(pa => ({\n        practiceArea: pa.practiceArea,\n        successStatus: false,\n        failureStatus: false,\n        dateNotProvidedError: false\n      })));\n    }),\n    getRequiredSettings: (0, _object.observer)(\"selectedFirmID\", \"selectedFirmPracticeAreaDetails\", \"requiredSettingsList\", \"savingChangesSuccess\", function () {\n      if (!this.selectedFirmPracticeAreaDetails || this.loadingrequiredSettings) {\n        return;\n      }\n      this.set(\"loadingrequiredSettings\", true);\n      let promises = [];\n      [this.selectedFirmGlobalDetails, ...this.selectedFirmPracticeAreaDetails].forEach(areaDetails => {\n        promises.push(this.getExtraFirmSettings(this.selectedFirmID, areaDetails));\n      });\n\n      // Once we have all extraSettings back from lambda we can continue\n      Promise.all(promises).then(settings => {\n        this.set(\"selectedFirmSettings\", this.createPracticeAreaSettingsObject(settings));\n        return this.getRequiredKeys([this.selectedFirmGlobalDetails].concat(settings));\n      }).then(requiredSettingsList => {\n        this.set(\"requiredSettingsList\", requiredSettingsList);\n      }).catch(err => {\n        // Only console logging messageas this is only shown to Settify.\n        console.log(err);\n      }).finally(() => {\n        (0, _runloop.later)(() => {\n          this.set(\"loadingrequiredSettings\", false);\n        }, 300);\n      });\n    }),\n    getExtraFirmSettings(firmID, areaDetails) {\n      return this.lambda.invoke(this.lambda.getFirmSettingsLambda, {\n        firmID: firmID,\n        practiceArea: areaDetails.practiceArea,\n        includeNonLivePracticeAreas: true\n      }).then(this.lambda.processResponse).then(settings => {\n        // Merge copies of the two objects into one so we have all practiceArea information in one place\n        return Object.assign({}, JSON.parse(JSON.stringify(settings)), JSON.parse(JSON.stringify(areaDetails)));\n      });\n    },\n    getRequiredKeys(allSettings) {\n      let retval = [];\n      allSettings.forEach(paSettings => {\n        let requiredFields = paSettings.practiceArea === \"global\" ? this.requiredGlobalFields : this.requiredPAFields;\n        for (const key in paSettings) {\n          if (Object.prototype.hasOwnProperty.call(paSettings, key)) {\n            let isRequired = requiredFields.filter(r => r.key === key)[0];\n            // If key is required and the keys value is falsey we push it into the retval list\n            if (isRequired && (!paSettings[key] || !paSettings[key].length)) {\n              let setting = JSON.parse(JSON.stringify(isRequired));\n              // Add the practiceArea to the object so we know for which practiceArea the setting is required\n              setting.practiceArea = paSettings.practiceArea;\n              retval.push(setting);\n            }\n          }\n        }\n      });\n      return retval;\n    },\n    updateMonthlyFeeForPracticeArea(practiceAreaDetails) {\n      const {\n        currentFee,\n        licenceFeeInCents,\n        practiceArea,\n        licenceFeeUpdateDate,\n        licenceFeeChanged\n      } = practiceAreaDetails;\n      const statusObject = this.updateFeeStatus.find(e => e.practiceArea === practiceArea);\n      (0, _object.set)(statusObject, \"dateNotProvidedError\", false);\n      (0, _object.set)(statusObject, \"failureStatus\", false);\n      (0, _object.set)(statusObject, \"successStatus\", false);\n      this.set(\"anyFeeChanged\", false);\n      if (licenceFeeChanged && licenceFeeUpdateDate) {\n        return this.lambda.invoke(this.get(\"lambda.updateMonthlyLicenceFeeLambda\"), {\n          adminUsername: this.get(\"session.data.authenticated.username\"),\n          firmID: this.selectedFirmID,\n          oldLicenceFeeInCents: currentFee,\n          newLicenceFeeInCents: parseInt(licenceFeeInCents),\n          practiceArea,\n          dateOfEffect: `${licenceFeeUpdateDate.getFullYear()}-${licenceFeeUpdateDate.getMonth() + 1}-${licenceFeeUpdateDate.getDate()}`\n        }).then(this.lambda.processResponse).then(() => {\n          this.set(\"anyFeeChanged\", true);\n          (0, _object.set)(statusObject, \"successStatus\", true);\n          (0, _object.set)(statusObject, \"date\", licenceFeeUpdateDate);\n          (0, _object.set)(statusObject, \"val\", licenceFeeInCents);\n\n          // reset our \"starting point\" now that we've saved successfully\n          (0, _object.set)(practiceAreaDetails, \"licenceFeeChanged\", false);\n          (0, _object.set)(practiceAreaDetails, \"currentFee\", parseInt(licenceFeeInCents));\n          (0, _object.set)(practiceAreaDetails, \"licenceFeeUpdateDate\", null);\n        }).catch(err => {\n          console.log(err);\n          (0, _object.set)(statusObject, \"failureStatus\", true);\n          throw err;\n        });\n      } else if (licenceFeeChanged && !licenceFeeUpdateDate) {\n        (0, _object.set)(statusObject, \"dateNotProvidedError\", true);\n        return Promise.reject(new Error(\"You must provide a date for licence fees to take effect\"));\n      }\n      return Promise.resolve();\n    },\n    actions: {\n      goToStripePortal() {\n        this.set(\"redirectingFailed\", false);\n        this.set(\"redirecting\", true);\n        this.lambda.invoke(this.lambda.getStripePortalUrlLambda, {\n          firmID: this.selectedFirmID,\n          returnURL: window.location.href\n        }).then(this.lambda.processResponse).then(data => {\n          window.location.href = data.portalURL;\n        }).catch(err => {\n          this.set(\"redirecting\", false);\n          this.set(\"redirectingFailed\", \"Failed to redirect to Stripe. Please try again or contact a developer.\");\n          console.log(err);\n        });\n      },\n      revertChanges() {\n        this.loadFirm(this.selectedFirmID);\n      },\n      saveChanges() {\n        this.set(\"savingChanges\", true);\n        this.set(\"savingChangesSuccess\", false);\n        this.set(\"savingChangesError\", false);\n        const promises = [];\n        this.selectedFirmPracticeAreaDetails.forEach(practiceAreaDetails => {\n          promises.push(this.updateMonthlyFeeForPracticeArea(practiceAreaDetails));\n        });\n        return Promise.all(promises).then(() => {\n          return this.lambda.invoke(this.lambda.updateFirmDetailsLambda, {\n            firmID: this.selectedFirmID,\n            details: [this.selectedFirmGlobalDetails].concat(this.selectedFirmPracticeAreaDetails),\n            userEmail: this.get(\"session.data.authenticated.username\")\n          });\n        }).then(async () => {\n          // Save changed practice area settings one at a time\n          const practiceAreasToSave = Object.keys(this.practiceAreasSettingsToSave);\n          for (const practiceArea of practiceAreasToSave) {\n            await this.saveSettings(this.selectedFirmSettings[practiceArea]);\n          }\n        }).then(() => {\n          this.set(\"savingChangesSuccess\", true);\n        }).catch(err => {\n          console.log(err);\n          this.set(\"savingChangesError\", true);\n        }).finally(() => {\n          this.set(\"savingChanges\", false);\n          this.set(\"practiceAreasSettingsToSave\", {});\n        });\n      },\n      scrollToSetting(setting) {\n        document.getElementById(`${setting.practiceArea}-${setting.key}`).scrollIntoView({\n          behavior: \"smooth\",\n          block: \"center\"\n        });\n      },\n      onInvoiceDirectDebitChange() {\n        // `invoiceDirectDebit` is a global setting\n        this.set(\"practiceAreasSettingsToSave.global\", true);\n      },\n      onWebappTypeChange(practiceArea) {\n        this.set(`practiceAreasSettingsToSave.${practiceArea}`, true);\n      }\n    },\n    getQueuedLicenceFees: (0, _object.observer)(\"selectedFirmID\", function () {\n      this.lambda.invoke(this.get(\"lambda.getUnbilledLineItemsLambda\"), {\n        firmID: this.selectedFirmID\n      }).then(this.lambda.processResponse).then(result => {\n        const licenceFeeMap = {};\n        const lineItems = result.filter(l => l.category === \"LicenceFee\");\n        lineItems.forEach(l => {\n          if (!licenceFeeMap[l.practiceArea]) {\n            licenceFeeMap[l.practiceArea] = [];\n          }\n          licenceFeeMap[l.practiceArea].push(l);\n        });\n        this.set(\"queuedLicenceFees\", licenceFeeMap);\n      });\n    }),\n    systemType: settings => {\n      return settings.webapp ? (0, _sentenceCase.sentenceCase)(settings.webapp) : \"Legacy\";\n    },\n    createPracticeAreaSettingsObject(settings) {\n      return settings.reduce((obj, cur) => {\n        obj[cur.practiceArea] = cur;\n        return obj;\n      }, {});\n    },\n    saveSettings(settings) {\n      return this.firmSettings.save(this.selectedFirmID, settings);\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/frozen-record\", [\"exports\", \"@ember/object\", \"@ember/service\", \"settify-mvp/controllers/base\"], function (_exports, _object, _service, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/service\",0,\"settify-mvp/controllers/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    queryParams: [\"clientID\", \"totp\"],\n    eventLogging: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    router: (0, _service.inject)(),\n    lambda: (0, _service.inject)(),\n    reset() {\n      this._super(...arguments);\n      this.set(\"preparingController\", false);\n      this.set(\"unfrozenFailed\", false);\n      this.set(\"sentEmailTo\", false);\n    },\n    unfreezeClient() {\n      this.set(\"preparingController\", false);\n      if (this.canUnfreeze) {\n        // call UnfreezeClient AWS function\n        this.set(\"unfreezeLoading\", true);\n        return this.lambda.invoke(this.get(\"lambda.unfreezeClientLambda\"), {\n          id: this.clientID,\n          firmID: this.get(\"firm.id\"),\n          totp: this.totp\n        }).then(this.lambda.processResponse).then(data => {\n          if (data.success) {\n            this.router.transitionTo(`admin.clients`, this.clientID);\n          } else {\n            this.set(\"unfrozenFailed\", !data.success);\n          }\n        }).catch(err => {\n          console.log(err);\n        }).finally(() => {\n          this.set(\"unfreezeLoading\", false);\n        });\n      }\n      this.set(\"unfreezeLoading\", false);\n      this.set(\"unfrozenFailed\", true);\n      this.set(\"sentEmailTo\", false);\n    },\n    // Check params are both there\n    canUnfreeze: (0, _object.computed)(\"clientID\", \"totp\", function () {\n      return Boolean(this.clientID && this.totp);\n    }),\n    canSend: (0, _object.computed)(\"lawyerEmail\", \"lawyerEmailValid\", function () {\n      return Boolean(this.lawyerEmail && this.lawyerEmailValid);\n    }),\n    sendUnfreezeEmail(clientID, firmID, lawyerEmail) {\n      // call sendUnfreezeEmail AWS function\n      this.set(\"sendingEmailLoading\", true);\n      return this.lambda.invoke(this.get(\"lambda.sendUnfreezeEmailLambda\"), {\n        clientID,\n        firmID,\n        lawyerEmail,\n        practiceArea: this.get(\"firm.practiceArea\")\n      }).then(this.lambda.processResponse).then(data => {\n        if (data.code && data.message) {\n          this.set(\"errorSendingEmail\", data.message);\n          return;\n        }\n        this.set(\"sentEmailTo\", data.sentTo);\n        this.set(\"errorSendingEmail\", null);\n      }).catch(() => {\n        this.set(\"errorSendingEmail\", \"We ran into an error sending that email. Please contact Settify using the email address below\");\n      }).finally(() => {\n        this.set(\"sendingEmailLoading\", false);\n      });\n    },\n    actions: {\n      sendEmail() {\n        this.sendUnfreezeEmail(this.clientID, this.get(\"firm.id\"), this.lawyerEmail);\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/history\", [\"exports\", \"settify-mvp/controllers/base\"], function (_exports, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/controllers/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    queryParams: [\"firmID\", \"practiceArea\"]\n  });\n});","define(\"settify-mvp/controllers/admin/index\", [\"exports\", \"@ember/object\", \"@ember/service\", \"settify-mvp/controllers/base\", \"settify-mvp/mixins/search-clients\", \"settify-mvp/mixins/firm-notes\", \"moment\"], function (_exports, _object, _service, _base, _searchClients, _firmNotes, _moment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/service\",0,\"settify-mvp/controllers/base\",0,\"settify-mvp/mixins/search-clients\",0,\"settify-mvp/mixins/firm-notes\",0,\"moment\"eaimeta@70e063a35619d71f\n  /* global saveAs */\n  var _default = _exports.default = _base.default.extend(_searchClients.default, _firmNotes.default, {\n    eventLogging: (0, _service.inject)(),\n    lambda: (0, _service.inject)(),\n    router: (0, _service.inject)(),\n    downtimeService: (0, _service.inject)(),\n    awsService: (0, _service.inject)(),\n    cookies: (0, _service.inject)(),\n    downloadLeads: (0, _service.inject)(),\n    showWhatsNew: false,\n    unseenPosts: false,\n    latestPostDate: null,\n    reset() {\n      this.set(\"showSearch\", false);\n      this.set(\"searchQuery\", null);\n      this.set(\"searchResults\", null);\n      this.set(\"noSearchResults\", false);\n      this.set(\"showWhatsNew\", false);\n      this.set(\"showBillingChange\", false);\n      if (this?.downtimeService?.downtimeStatus?.blockAdminUsage) {\n        this.router.transitionTo(\"v2.serverdown\");\n      }\n    },\n    clientsToDisplay: (0, _object.computed)(\"model.leads\", \"searchResults.length\", \"showSearch\", function () {\n      let data = this.model?.leads;\n      if (this.searchResults && this.searchResults.length && this.showSearch) {\n        data = this.searchResults;\n      }\n      data = JSON.parse(JSON.stringify(data));\n      for (let i = 0; i < data.length; i++) {\n        if (!data[i].name) {\n          data[i].name = \"(Name not provided)\";\n        }\n\n        // convert date strings into javascript Dates\n        if (data[i].referredToFirm) {\n          data[i].referredToFirmText = _moment.default.utc(data[i].referredToFirmDate).format(\"D/M/YY\");\n        } else if (data[i].becameLead) {\n          data[i].referredToFirmText = _moment.default.utc(data[i].becameLeadDate).format(\"D/M/YY\");\n        } else {\n          data[i].referredToFirmText = \"N/A\";\n        }\n        if (data[i].conflictCheckCompleted) {\n          const twoDayinMS = 1000 * 60 * 60 * 24 * 2;\n          const timeDiff = (0, _moment.default)().diff(data[i].conflictCheckCompleted);\n          data[i].showConflictReset = timeDiff < twoDayinMS;\n        }\n        data[i].lastUserSaveText = (0, _moment.default)(data[i].lastUserSave).fromNow();\n        data[i].lastUserSave = new Date(data[i].lastUserSave);\n        if (data[i].lastFirmAccess) {\n          data[i].lastFirmAccess = new Date(data[i].lastFirmAccess);\n        }\n        data[i].tempNotes = data[i].firmNotes;\n      }\n      return data;\n    }),\n    sortMode: (0, _object.computed)(\"navsortby\", \"navsortdirection\", function () {\n      const by = this.navsortby;\n      const dir = this.navsortdirection;\n      return `${by}-${dir}`;\n    }),\n    firstModifiedClass: (0, _object.computed)(\"sortMode\", function () {\n      return this.sortMode === \"lastmodified-DESC\" ? \"admin-sort-button-active\" : \"\";\n    }),\n    lastModifiedClass: (0, _object.computed)(\"sortMode\", function () {\n      return this.sortMode === \"lastmodified-ASC\" ? \"admin-sort-button-active\" : \"\";\n    }),\n    firstAlphaClass: (0, _object.computed)(\"sortMode\", function () {\n      return this.sortMode === \"name-ASC\" ? \"admin-sort-button-active\" : \"\";\n    }),\n    lastAlphaClass: (0, _object.computed)(\"sortMode\", function () {\n      return this.sortMode === \"name-DESC\" ? \"admin-sort-button-active\" : \"\";\n    }),\n    showClientSearch: (0, _object.computed)(\"showSearch\", \"currentlyEditing\", function () {\n      if (this.currentlyEditing) {\n        return false;\n      }\n      if (this.showSearch) {\n        return true;\n      }\n      return false;\n    }),\n    showWhatsNewNotification: (0, _object.observer)(\"showWhatsNew\", \"latestPostDate\", function () {\n      const lastSeenPostDate = this.cookies.read(\"lastSeenPostTimestamp\") || 0;\n      this.set(\"unseenPosts\", lastSeenPostDate < this.latestPostDate);\n    }),\n    actions: {\n      setLatestPostDate(latestPostDate) {\n        this.set(\"latestPostDate\", latestPostDate);\n      },\n      toggleBillingChange() {\n        this.toggleProperty(\"showBillingChange\");\n      },\n      toggleWhatsNew() {\n        this.cookies.write(\"lastSeenPostTimestamp\", Date.now(), {\n          path: \"/\",\n          expires: new Date(Date.now() + 1000 * 60 * 60 * 24 * 90)\n        });\n        this.toggleProperty(\"showWhatsNew\");\n      },\n      toggleSearch() {\n        this.toggleProperty(\"showSearch\");\n      },\n      downloadCSV() {\n        const downloadRequest = {\n          dateFormat: \"D/MM/YYYY\",\n          firmID: this.firm.id,\n          totalClients: this.model?.count,\n          restrictPracticeAreaTo: this.restrictPracticeAreaTo,\n          includePracticeArea: !!this.firm?.otherSettifyURLs\n        };\n        this.set(\"loadingCSV\", true);\n        this.downloadLeads.startDownload(downloadRequest, this.model.conversionTypes).then(csvContent => {\n          const blob = new Blob([csvContent], {\n            type: \"text/csv;charset=utf-8\"\n          });\n          saveAs(blob, `${this.firm?.name} - Settify Leads - ${(0, _moment.default)().format(\"D MMMM YYYY\")}.csv`);\n        }).finally(() => {\n          this.set(\"loadingCSV\", false);\n        });\n      },\n      viewLinkedRecords(client) {\n        if (client.viewingLinkedRecords) {\n          this.decrementProperty(\"editingCount\");\n        } else {\n          this.incrementProperty(\"editingCount\");\n        }\n        (0, _object.set)(client, \"viewingLinkedRecords\", !client.viewingLinkedRecords);\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/invite\", [\"exports\", \"@ember/template\", \"@ember/runloop\", \"@ember/object\", \"@ember/service\", \"settify-mvp/controllers/base\", \"settify-mvp/helpers/format-whitespace\", \"settify-mvp/helpers/address-string\", \"settify-mvp/mixins/master-form-mixin\", \"uuid\", \"settify-mvp/mixins/search-clients\", \"settify-mvp/validators/url-validator\", \"moment\"], function (_exports, _template, _runloop, _object, _service, _base, _formatWhitespace, _addressString, _masterFormMixin, _uuid, _searchClients, _urlValidator, _moment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template\",0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/service\",0,\"settify-mvp/controllers/base\",0,\"settify-mvp/helpers/format-whitespace\",0,\"settify-mvp/helpers/address-string\",0,\"settify-mvp/mixins/master-form-mixin\",0,\"uuid\",0,\"settify-mvp/mixins/search-clients\",0,\"settify-mvp/validators/url-validator\",0,\"moment\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend(_searchClients.default, _masterFormMixin.default, {\n    clientFirstName: \"\",\n    clientSurname: \"\",\n    clientTitle: \"\",\n    clientEmail: \"\",\n    clientEmailValid: false,\n    lawyerName: \"\",\n    lawyerEmail: \"\",\n    lawyerEmailValid: false,\n    conflictCheckPerformed: null,\n    lawFirmAlreadyHasWill: null,\n    sendCalendarInvite: true,\n    loading: false,\n    invitationComplete: false,\n    errorMessage: null,\n    showPreview: false,\n    editingCustomEmailBody: false,\n    inviteEmailCustomBody: \"\",\n    secondLawyer: false,\n    secondLawyerName: \"\",\n    secondLawyerEmail: \"\",\n    includePhoneMeetingMessage: false,\n    includePhoneMeetingAttachments: false,\n    phoneMeetingMessage: null,\n    emailSearchQuery: null,\n    nameSearchQuery: null,\n    emailSearchResults: null,\n    nameSearchResults: null,\n    isSearching: false,\n    lambda: (0, _service.inject)(),\n    clientRecords: (0, _service.inject)(),\n    eventLogging: (0, _service.inject)(),\n    cookies: (0, _service.inject)(),\n    lawyerList: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    questionnaireLogic: (0, _service.inject)(),\n    store: (0, _service.inject)(),\n    config: (0, _service.inject)(\"dynamic-config\"),\n    emailsToString: emailList => emailList?.join(\", \") ?? null,\n    attachmentsToString: (attachmentList, separator = \", \") => attachmentList?.map(attachment => attachment?.Filename ?? attachment)?.join(separator) ?? null,\n    queryParams: [\"clientID\", \"mode\"],\n    clientID: \"\",\n    mode: \"\",\n    askForTitle: false,\n    // set to true to allow law firm to specify a title when inviting a client\n\n    init() {\n      this._super(...arguments);\n      this.timepickerOptions = {\n        dynamic: false,\n        minHour: 6,\n        maxHour: 20\n      };\n      (0, _object.set)(this, \"inductions\", []);\n      this.titleSelects = [{\n        label: \"Mr\",\n        value: \"Mr\"\n      }, {\n        label: \"Mrs\",\n        value: \"Mrs\"\n      }, {\n        label: \"Ms\",\n        value: \"Ms\"\n      }, {\n        label: \"Dr\",\n        value: \"Dr\"\n      }];\n    },\n    reset() {\n      this._super(...arguments);\n      this.set(\"emailSearchQuery\", null);\n      this.set(\"emailSearchResults\", null);\n      this.set(\"isSearching\", false);\n      this.set(\"nameSearchQuery\", null);\n      this.set(\"nameSearchResults\", null);\n      this.set(\"restrictPracticeArea\", true);\n      this.set(\"restrictPracticeAreaTo\", this.get(\"firm.practiceArea\"));\n      this.set(\"forceIncludeSettifyButton\", false);\n      this.set(\"savingChanges\", false);\n      this.set(\"savingChangesSuccess\", false);\n      this.set(\"allowOptionToSaveWithoutSending\", false);\n      this.set(\"showOptionalExtra\", false);\n      this.set(\"highlightRequiredFields\", false);\n      this.set(\"clientFirstName\", \"\");\n      this.set(\"clientSurname\", \"\");\n      this.set(\"clientEmail\", \"\");\n      this.set(\"clientTitle\", \"\");\n      this.set(\"pmsLead\", null);\n      this.set(\"pmsSearchQuery\", \"\");\n      this.set(\"optionalExtraMessage\", \"\");\n      this.set(\"appointmentDate\", null);\n      this.set(\"appointmentTime\", null);\n      this.set(\"appointmentTimeRaw\", null);\n      this.set(\"conflictCheckPerformed\", null);\n      this.set(\"lawFirmAlreadyHasWill\", null);\n      this.set(\"loading\", false);\n      this.set(\"sendingInvite\", false);\n      this.set(\"invitationComplete\", false);\n      this.set(\"errorMessage\", null);\n      this.set(\"showPreview\", false);\n      this.set(\"sendCalendarInvite\", true);\n      this.set(\"includeAdditionalCCs\", false);\n      this.set(\"additionalCCsText\", \"\");\n      this.set(\"forceLawyer\", null);\n      this.set(\"attemptedClientRecord\", null);\n      this.set(\"initialPhoneMeeting\", null);\n      this.set(\"editingCustomEmailBody\", false);\n      this.set(\"secondLawyer\", false);\n      this.set(\"matterReferenceNumber\", null);\n      this.set(\"inductions\", []);\n      this.clearSecondLawyer();\n      this.clearInviteInfo();\n      this.updateSettings();\n      this.set(\"includePhoneMeetingAttachments\", true);\n      this.set(\"includePhoneMeetingMessage\", true);\n      this.set(\"includeAsAppointmentLocation\", false);\n      if (this.get(\"model.client\")) {\n        this.applyInvitationInformation(this.get(\"model.client\"));\n        if (this.get(\"model.client.primaryContactPersonID\")) {\n          this.set(\"sendToEntityID\", this.get(\"model.client.primaryContactPersonID\"));\n        }\n      } else {\n        // add default inductions\n        this.questionnaireLogic.load().then(availableInductions => {\n          if (availableInductions.length === 1) {\n            // there is only one induction, so we can add that by default\n            this.send(\"addInduction\", availableInductions[0]);\n          }\n          this.set(\"availableInductions\", availableInductions.filter(induction => induction.enabled));\n        });\n      }\n    },\n    onAppointmentDateTimeChange: (0, _object.observer)(\"appointmentDate\", \"appointmentTime\", function () {\n      this.set(\"allowOptionToSaveWithoutSending\", true);\n      this.set(\"savingChangesSuccess\", false);\n    }),\n    onAppointmentLawyerChange: (0, _object.observer)(\"lawyerName\", function () {\n      if (this.lawyerName !== this.get(\"model.client.firmPartnerName\")) {\n        this.set(\"allowOptionToSaveWithoutSending\", true);\n        this.set(\"savingChangesSuccess\", false);\n        this.set(\"useInviteInformation\", false);\n      }\n    }),\n    onAppointmentLawyerDetailsChange: (0, _object.observer)(\"lawyerDetails\", function () {\n      this.set(\"customSendFrom\", this.get(\"lawyerDetails.sendFrom\"));\n      this.set(\"showEditSendToDetails\", false);\n    }),\n    onSendToEntityIDChange: (0, _object.observer)(\"sendToEntityID\", \"model.client.knownEntities.@each.{title,firstName,surname,email,email-valid}\", function () {\n      const knownEntities = this.get(\"model.client.knownEntities\") || [];\n      const entityID = this.sendToEntityID;\n      // Only update the client details if we have items in the knownEntities list, and we have a sendToEntityID value\n      if (knownEntities.length && entityID) {\n        const person = knownEntities.find(e => e.id === entityID);\n        this.set(\"clientFirstName\", person?.firstName || null);\n        this.set(\"clientSurname\", person?.surname || null);\n        this.set(\"clientEmail\", person?.email || null);\n        this.set(\"clientEmailValid\", person?.[\"email-valid\"] || null);\n        if (this.askForTitle) {\n          this.set(\"clientTitle\", person?.title || null);\n        }\n      }\n    }),\n    onShowEditSendToDetailsChange: (0, _object.observer)(\"showEditSendToDetails\", function () {\n      if (this.showEditSendToDetails && this.useInviteInformation) {\n        this.set(\"useInviteInformation\", false);\n      }\n    }),\n    onNameOrEmailChange: (0, _object.observer)(\"clientFirstName\", \"clientSurname\", \"clientEmail\", function () {\n      if (this.clientID) {\n        // Follow-up email\n        return false;\n      }\n      if (!this.clientEmail) {\n        // reset emailSarchResults query because\n        // clientEmail field is empty at this moment\n        this.set(\"emailSearchQuery\", null);\n      }\n      if (!this.clientFirstName && !this.clientSurname) {\n        // reset nameSarchResults query because clientFirstName and clientSurname\n        // are empty at this moment\n        this.set(\"nameSearchQuery\", null);\n      }\n      const prop = arguments[1];\n      let query;\n      const firstName = this.clientFirstName;\n      const surname = this.clientSurname;\n      if (firstName && surname && (prop === \"clientFirstName\" || prop === \"clientSurname\")) {\n        query = `${firstName} ${surname}`;\n        (0, _runloop.debounce)(this, this.setSearchQuery, query, 750);\n      } else if (prop === \"clientEmail\" && this.clientEmailValid) {\n        // Only query database if email is valid to reduce number of requests\n        query = this.get(prop);\n        this.set(\"emailSearchQuery\", query);\n        this.set(\"isSearching\", true);\n      }\n    }),\n    setSearchQuery(query) {\n      this.set(\"nameSearchQuery\", query);\n      this.set(\"isSearching\", true);\n    },\n    retrievedSearchResults: (0, _object.computed)(\"emailSearchResults\", \"nameSearchResults\", function () {\n      const emailResults = this.emailSearchResults || [];\n      const nameResults = this.nameSearchResults || [];\n      const results = emailResults.concat(nameResults).uniqBy(\"clientID\");\n      if (results) {\n        this.set(\"isSearching\", false);\n      }\n      return results;\n    }),\n    selectedOffice: (0, _object.computed)(\"selectedOfficeIdx\", \"firm.addresses\", \"firm\", function () {\n      return this.firm.addresses[this.selectedOfficeIdx];\n    }),\n    additionalCCs: (0, _object.computed)(\"includeAdditionalCCs\", \"additionalCCsText\", function () {\n      if (!this.includeAdditionalCCs) {\n        return [];\n      }\n      if (!this.additionalCCsText) {\n        return [];\n      }\n      return this.additionalCCsText.split(\",\").map(x => x.trim());\n    }),\n    emailSubject: (0, _object.computed)(\"appointmentDate\", \"appointmentTime\", \"clientFirstName\", \"firm.name\", \"initialPhoneMeeting\", \"matterReferenceNumber\", \"mode\", \"model.client\", function () {\n      let retval = \"\";\n      let prefix = \"\";\n      if (this.mode === \"resend\" || this.mode === \"view\") {\n        prefix = \"RESENDING: \";\n      } else if (this.mode === \"change\") {\n        prefix = \"UPDATED: \";\n      }\n      if (this.appointmentDate && this.appointmentTime) {\n        retval = `${prefix + this.clientFirstName.trim()}, your upcoming appointment with ${this.firm.name}`;\n      } else if (this.model?.client) {\n        retval = `${prefix}Preparing for your meeting with ${this.firm.name}`;\n      } else {\n        retval = `${prefix + this.clientFirstName.trim()}, get started with ${this.firm.name.trim()} online`;\n      }\n      if (this.initialPhoneMeeting) {\n        retval = retval.replace(\"your meeting with\", \"your call with\");\n        retval = retval.replace(\"upcoming appointment with\", \"upcoming call with\");\n      }\n      if (this.matterReferenceNumber) {\n        retval += ` (${this.matterReferenceNumber})`;\n      }\n      return retval;\n    }),\n    canInvite: (0, _object.computed)(\"appointmentDate\", \"appointmentTime\", \"clientEmail\", \"clientEmailValid\", \"clientFirstName\", \"clientSurname\", \"hyperlinkParsed\", \"hyperlinkURL\", \"includeMeetingHyperlink\", \"inductions.length\", \"initialPhoneMeeting\", \"lawyerEmail\", \"lawyerEmailValid\", \"lawyerName\", \"model.client\", \"selectedLawyer\", \"selectedOffice\", function () {\n      if (!this.inductions.length) {\n        // No induction selected\n        return false;\n      }\n      if (this.model?.client) {\n        if (this.lawyerName && this.appointmentDate && !this.appointmentTime) {\n          // if you specify a date, you must specify a time\n          return false;\n        }\n      }\n      if (this.lawyerName) {\n        // appointment times are ignored if you don't specify a lawyer's name\n        // but if you do specify a lawyer's name, appointment time is relevant\n        if (!!this.appointmentDate && !this.appointmentTime) {\n          // if you specify a date, you must specify a time\n          return false;\n        }\n        if (this.appointmentDate) {\n          if (this.initialPhoneMeeting && this.includeMeetingHyperlink) {\n            if (!this.hyperlinkURL) {\n              // No hyperlinkURL provided\n              return false;\n            }\n            if (this.hyperlinkURL && !this.hyperlinkParsed) {\n              // hyperlinkURL provided but not valid\n              return false;\n            }\n          }\n        }\n      }\n      if (!!this.clientFirstName && !!this.clientSurname && !!this.clientEmail && !!this.clientEmailValid) {\n        // valid client information, now check the lawyer\n        // should either be blank (send from firm) or valid\n        if (this.selectedLawyer) {\n          return !!this.lawyerName && !!this.lawyerEmail && !!this.lawyerEmailValid && !!this.selectedOffice;\n        }\n        return true;\n      }\n      return false;\n    }),\n    formattedAppointmentDate: (0, _object.computed)(\"appointmentDate\", function () {\n      if (!this.appointmentDate) {\n        return \"\";\n      }\n      return (0, _moment.default)(this.appointmentDate).format(\"dddd D MMMM YYYY\");\n    }),\n    startTimeDate: (0, _object.computed)(\"appointmentDate\", \"appointmentTime\", \"appointmentTimeRaw\", function () {\n      // convert meeting date and time into a UTC time\n      const apptDate = this.appointmentDate;\n      const apptTime = this.appointmentTimeRaw;\n      if (!apptDate || !apptTime) {\n        return;\n      }\n      let startTime = apptDate.getTime();\n      startTime += apptTime.getHours() * 60 * 60 * 1000;\n      startTime += apptTime.getMinutes() * 60 * 1000;\n      startTime = new Date(startTime);\n      return startTime;\n    }),\n    endTimeDate: (0, _object.computed)(\"firm.settings.admin.invitations.appointmentDuration\", \"startTimeDate\", function () {\n      const startTime = this.startTimeDate;\n      const appointmentDuration = parseInt(this.get(\"firm.settings.admin.invitations.appointmentDuration\")) || 60;\n      const endTime = new Date(startTime.getTime() + appointmentDuration * 60 * 1000);\n      return endTime;\n    }),\n    startTimeISOString: (0, _object.computed)(\"startTimeDate\", function () {\n      return this.startTimeDate.toISOString();\n    }),\n    endTimeISOString: (0, _object.computed)(\"endTimeDate\", function () {\n      return this.endTimeDate.toISOString();\n    }),\n    formattedOptionalMessage: (0, _object.computed)(\"optionalExtraMessage\", function () {\n      return (0, _template.htmlSafe)((0, _formatWhitespace.formatWhitespace)([this.optionalExtraMessage]));\n    }),\n    formattedPhoneMeetingMessage: (0, _object.computed)(\"phoneMeetingMessage\", function () {\n      return (0, _template.htmlSafe)((0, _formatWhitespace.formatWhitespace)([this.phoneMeetingMessage]));\n    }),\n    buttonLabel: (0, _object.computed)(\"appointmentDate\", \"forceIncludeSettifyButton\", \"mode\", \"model.client.detailedInductionComplete\", function () {\n      if (this.mode === \"changeemail\") {\n        // The firm user wants to update the email within 4hrs of the original invite being sent.\n        // Return the default button text\n        return \"Click here to get started\";\n      }\n      if (this.get(\"model.client\") && !this.get(\"model.client.detailedInductionComplete\")) {\n        return \"Click here to keep going\";\n      } else if (this.get(\"model.client\") && !this.appointmentDate) {\n        return \"Click here to return to the induction\";\n      } else if (this.forceIncludeSettifyButton) {\n        return \"Click here to revisit the online induction\";\n      }\n      return \"Click here to get started\";\n    }),\n    sendFrom: (0, _object.computed)(\"lawyerDetails.sendFrom\", \"customSendFrom\", function () {\n      if (this.customSendFrom) {\n        return this.customSendFrom;\n      }\n      return this.get(\"lawyerDetails.sendFrom\");\n    }),\n    emailSenderName: (0, _object.computed)(\"emailSenderNameInviteInformation\", \"firm.name\", \"lawyerName\", \"sendFrom.name\", \"useInviteInformation\", function () {\n      if (this.emailSenderNameInviteInformation && this.useInviteInformation) {\n        return this.emailSenderNameInviteInformation;\n      } else if (this.get(\"sendFrom.name\")) {\n        return this.get(\"sendFrom.name\");\n      } else if (this.lawyerName) {\n        return this.lawyerName;\n      }\n      return this.get(\"firm.name\");\n    }),\n    emailSenderTitle: (0, _object.computed)(\"emailSenderTitleInviteInformation\", \"lawyerDetails.title\", \"sendFrom.{name,title}\", \"useInviteInformation\", function () {\n      if (this.emailSenderTitleInviteInformation && this.useInviteInformation) {\n        return this.emailSenderTitleInviteInformation;\n      } else if (this.get(\"sendFrom.name\")) {\n        if (this.get(\"sendFrom.title\")) {\n          return this.get(\"sendFrom.title\");\n        }\n        return \"\";\n      } else if (this.get(\"lawyerDetails.title\")) {\n        return this.get(\"lawyerDetails.title\");\n      }\n      return \"\";\n    }),\n    emailSenderEmail: (0, _object.computed)(\"emailSenderEmailInviteInformation\", \"firm.contactEmail\", \"lawyerDetails.email\", \"sendFrom.email\", \"useInviteInformation\", function () {\n      if (this.emailSenderEmailInviteInformation && this.useInviteInformation) {\n        return this.emailSenderEmailInviteInformation;\n      } else if (this.get(\"sendFrom.email\")) {\n        return this.get(\"sendFrom.email\");\n      } else if (this.get(\"lawyerDetails.email\")) {\n        return this.get(\"lawyerDetails.email\");\n      }\n      return this.get(\"firm.contactEmail\");\n    }),\n    emailSenderPhone: (0, _object.computed)(\"emailSenderPhoneInviteInformation\", \"firm.phone\", \"lawyerDetails.phone\", \"selectedOffice.phone\", \"sendFrom.phone\", \"useInviteInformation\", function () {\n      if (this.emailSenderPhoneInviteInformation && this.useInviteInformation) {\n        return this.emailSenderPhoneInviteInformation;\n      } else if (this.get(\"sendFrom.phone\")) {\n        return this.get(\"sendFrom.phone\");\n      } else if (this.get(\"lawyerDetails.phone\")) {\n        return this.get(\"lawyerDetails.phone\");\n      } else if (this.get(\"selectedOffice.phone\")) {\n        return this.get(\"selectedOffice.phone\");\n      }\n      return this.get(\"firm.phone\");\n    }),\n    emailCCs: (0, _object.computed)(\"lawyerCCs\", \"additionalCCs\", \"secondLawyerCCs\", function () {\n      const retval = [];\n      if (this.lawyerCCs) {\n        retval.pushObjects(this.lawyerCCs);\n      }\n      if (this.secondLawyerCCs) {\n        retval.pushObjects(this.secondLawyerCCs);\n      }\n      if (this.additionalCCs) {\n        retval.pushObjects(this.additionalCCs);\n      }\n      return this.removeDuplicates(retval);\n    }),\n    emailBCCs: (0, _object.computed)(\"doNotBCCFirmContactAddress\", \"firm.{contactEmail,contactEmailCCs}\", \"lawyerBCCs\", \"lawyerDetails.doNotBCC\", \"lawyerDetails.sendFrom.email\", \"lawyerEmail\", \"secondLawyerDetails.doNotBCC\", \"secondLawyerDetails.sendFrom.email\", \"secondLawyerEmail\", \"sendFrom.email\", function () {\n      const retval = [];\n      if (!this.doNotBCCFirmContactAddress) {\n        retval.pushObject(this.get(\"firm.contactEmail\"));\n\n        // We don't include these on the invites, since they are only for new client notifications, and nothing else\n        // if (this.get('firm.contactEmailCCs')) {\n        //   retval.pushObjects(this.get('firm.contactEmailCCs'));\n        // }\n      }\n      if (this.lawyerEmail && !this.get(\"lawyerDetails.doNotBCC\")) {\n        retval.pushObject(this.lawyerEmail);\n      }\n      if (this.secondLawyerEmail && !this.get(\"secondLawyerDetails.doNotBCC\")) {\n        retval.pushObject(this.secondLawyerEmail);\n      }\n      if (this.get(\"secondLawyerDetails.sendFrom.email\")) {\n        retval.pushObject(this.get(\"secondLawyerDetails.sendFrom.email\"));\n      }\n      if (this.get(\"sendFrom.email\")) {\n        retval.pushObject(this.get(\"sendFrom.email\"));\n      }\n      if (this.get(\"lawyerDetails.sendFrom.email\")) {\n        // we include lawyerDetails.sendFrom as well as sendFrom, because they might be different,\n        // and we're going to remove duplicates anyway later on.\n        retval.pushObject(this.get(\"lawyerDetails.sendFrom.email\"));\n      }\n      if (this.lawyerBCCs) {\n        retval.pushObjects(this.lawyerBCCs);\n      }\n      return this.removeDuplicates(retval);\n    }),\n    lawyerBioHeadingText: \"Meet LAWYER_NAME\",\n    lawyerBioHeading: (0, _object.computed)(\"lawyerBioHeadingText\", \"lawyerName\", function () {\n      const base = this.lawyerBioHeadingText;\n      return base.replace(/LAWYER_NAME/g, this.lawyerName);\n    }),\n    secondLawyerBioHeading: (0, _object.computed)(\"lawyerBioHeadingText\", \"secondLawyerName\", function () {\n      const base = this.lawyerBioHeadingText;\n      return base.replace(/LAWYER_NAME/g, this.secondLawyerName);\n    }),\n    allAttachments: (0, _object.computed)(\"appointmentDate\", \"appointmentTime\", \"attachments\", \"includePhoneMeetingAttachments\", \"initialPhoneMeeting\", \"lawyerName\", \"phoneMeetingAttachments\", function () {\n      let attachments = this.attachments || [];\n      if (this.lawyerName && this.appointmentDate && this.appointmentTime && this.initialPhoneMeeting && this.includePhoneMeetingAttachments) {\n        attachments = attachments.concat(this.phoneMeetingAttachments);\n      }\n      return attachments;\n    }),\n    hyperlinkParsed: (0, _object.computed)(\"hyperlinkURL\", function () {\n      if ((0, _urlValidator.default)(this.hyperlinkURL)) {\n        return new URL(this.hyperlinkURL);\n      }\n      return null;\n    }),\n    showCustomInvitationEmail: (0, _object.computed)(\"practiceArea\", function () {\n      if (!this.practiceArea) return false;\n      return this.firm.getPracticeAreaSettings(this.practiceArea)?.settings?.admin?.showCustomInvitationEmail;\n    }),\n    getDocumentCSS() {\n      let cssRules = \"\";\n      const sheets = document.styleSheets;\n      if (sheets) {\n        for (let i = 0; i < sheets.length; i++) {\n          if (sheets[i].href && sheets[i].href.match && sheets[i].href.match(/settify-mvp/)) {\n            const rules = sheets[i].cssRules ? sheets[i].cssRules : sheets[i].rules;\n            if (rules) {\n              for (let j = 0; j < rules.length; j++) {\n                // work around pesky IE bug that doesn't allow you to even access the rule text if it contains webkit keyframes\n                // https://connect.microsoft.com/IE/feedback/details/955703/accessing-csstext-of-a-keyframe-rule-that-contains-a-webkit-property-via-cssom-generates-exception\n                try {\n                  if (rules[j].cssText) {\n                    cssRules += `${rules[j].cssText}\\n`;\n                  }\n                } catch (e) {\n                  console.log(\"Unable to extract CSS text from the rule\");\n                }\n              }\n            }\n          }\n        }\n      }\n      return cssRules;\n    },\n    clearSecondLawyer() {\n      this.set(\"secondLawyerName\", null);\n      this.set(\"secondLawyerEmail\", null);\n      this.set(\"secondLawyerCCs\", null);\n      this.set(\"secondLawyerBCCs\", null);\n      this.set(\"secondLawyerEmailDetails\", null);\n      this.set(\"secondLawyerBio\", null);\n      this.set(\"secondLawyerReadMoreURL\", null);\n      this.set(\"secondLawyerPhotoURL\", null);\n      this.set(\"forceSecondLawyer\", null);\n    },\n    actions: {\n      setPmsLead(lead) {\n        if (!lead) {\n          this.set(\"emailSearchResults\", null);\n          this.set(\"nameSearchResults\", null);\n        }\n        this.set(\"clientFirstName\", lead ? lead.primaryContact.person.firstName : \"\");\n        this.set(\"clientSurname\", lead ? lead.primaryContact.person.lastName : \"\");\n        this.set(\"clientEmail\", lead ? lead.primaryContact.person.email : \"\");\n        this.set(\"pmsLead\", lead);\n      },\n      nullAction() {\n        this.set(\"highlightRequiredFields\", true);\n      },\n      hideSearchResults() {\n        this.set(\"emailSearchQuery\", null);\n        this.set(\"nameSearchQuery\", null);\n      },\n      doNothing() {},\n      addInduction(induction) {\n        const inductions = JSON.parse(JSON.stringify(this.inductions));\n        inductions.push({\n          id: induction.id || induction.formID,\n          title: induction.title,\n          practiceArea: induction.practiceArea,\n          canBeRepeated: induction.canBeRepeated,\n          blurb: induction.blurb,\n          alwaysSelected: induction.alwaysSelected,\n          inductionOrder: induction.pinToStart ? 1 : induction.pinToEnd ? 3 : 2\n        });\n        this.set(\"inductions\", inductions);\n        this.set(\"practiceArea\", induction.practiceArea);\n        this.updateSettings(); // Set settings based on the practice area\n      },\n      removeInduction(induction) {\n        this.inductions.removeObject(induction);\n        this.set(\"practiceArea\", null);\n        this.set(\"appointmentTime\", null);\n        this.set(\"appointmentDate\", null);\n        this.updateSettings(); // Reset settings back to null\n      },\n      addSecondLawyer() {\n        this.toggleProperty(\"secondLawyer\");\n        if (!this.secondLawyer) {\n          this.clearSecondLawyer();\n        }\n      },\n      onTimePicked(selectedTime) {\n        this.set(\"appointmentTime\", selectedTime ? (0, _moment.default)(selectedTime).format(\"LT\") : null);\n        this.set(\"appointmentTimeRaw\", selectedTime);\n      },\n      previewOptionalExtra() {\n        this.set(\"showOptionalExtra\", false);\n      },\n      toggleOptionalExtra() {\n        let adminLogEvent = this.eventLogging.adminIDs.personalMessageAdded;\n        this.toggleProperty(\"showOptionalExtra\");\n        if (!this.showOptionalExtra) {\n          adminLogEvent = this.eventLogging.adminIDs.personalMessageRemoved;\n          this.set(\"optionalExtraMessage\", null);\n        }\n        this.eventLogging.adminLog(this.get(\"model.client.id\"), adminLogEvent, null, null, this.get(\"model.client.practiceArea\"));\n      },\n      convertToCustomMessageBody() {\n        const text = this.getInviteEmailAutomatedBody(\"plaintext\");\n        // console.log(text);\n        this.eventLogging.adminLog(null, this.eventLogging.adminIDs.editingEntireEmail);\n        this.set(\"inviteEmailCustomBody\", text);\n        this.set(\"editingCustomEmailBody\", true);\n      },\n      cancelCustomMessageBody() {\n        this.set(\"inviteEmailCustomBody\", \"\");\n        this.set(\"editingCustomEmailBody\", false);\n        this.set(\"showCancelCustomMessageBody\", false);\n        this.eventLogging.adminLog(null, this.eventLogging.adminIDs.editingEntireEmailCancelled);\n      },\n      saveChanges() {\n        const c = this.get(\"model.client\");\n        if (c) {\n          this.set(\"savingChanges\", true);\n          this.set(\"savingChangesSuccess\", false);\n          this.saveChangesWithoutSending(c).then(() => {\n            this.set(\"savingChangesSuccess\", true);\n          }).finally(() => {\n            this.set(\"savingChanges\", false);\n          });\n        }\n      },\n      inviteClient() {\n        if (this.sendingInvite) {\n          // Already sending an invite\n          return;\n        }\n        this.set(\"sendingInvite\", true);\n        const subject = this.emailSubject;\n        const body = this.getBodyHTML();\n        if (this.editingCustomEmailBody && this.errorMessage !== \"nobutton\") {\n          // only check for button presence if we're editing the custom email, and we haven't\n          // already seen the 'no button' error.\n          if (!this.get(\"model.client.detailedInductionComplete\") && body.indexOf(\"[SETTIFY BUTTON]\") < 0) {\n            // there SHOULD be a Settify button in this email, but there isn't\n            // it must have been deleted in the custom message\n            this.set(\"errorMessage\", \"nobutton\");\n            return;\n          }\n        }\n        let client = null;\n        if (this.get(\"model.client\")) {\n          client = this.get(\"model.client\");\n        } else if (this.attemptedClientRecord) {\n          // if we've already tried to invite a client, but it failed,\n          // then re-use the record so as not to create a new clientID\n          client = this.attemptedClientRecord;\n        } else {\n          client = this.clientRecords.generateNewClientRecord({\n            referral: \"invitation\",\n            practiceArea: this.practiceArea\n          });\n          client.set(\"invitedByLawFirm\", true);\n          const newClientID = (0, _uuid.v4)();\n          client.set(\"primaryContactPersonID\", newClientID);\n          client.knownEntities.pushObject({\n            id: newClientID,\n            firstName: this.clientFirstName,\n            surname: this.clientSurname,\n            email: this.clientEmail,\n            \"email-valid\": this.clientEmailValid\n          });\n\n          // client.set('practiceArea', this.practiceArea);\n\n          this.set(\"attemptedClientRecord\", client);\n        }\n\n        // an invitation email serves the same purpose as a resume link email - the client has a link\n        // to resume the induction at a later stage\n        client.set(\"hasReceivedResumeLinkEmail\", true);\n        this.set(\"loading\", true);\n        this.set(\"invitationComplete\", false);\n        this.set(\"errorMessage\", null);\n\n        // console.log(subject);\n        // console.log(body);\n\n        let payload = {};\n\n        // LOGGING\n        this.eventLogging.log(client.get(\"clientID\"), this.eventLogging.IDs.InvitationEmailSent, null, client.get(\"practiceArea\"));\n        let adminLogTypeKey = this.get(\"model.client\") ? \"followUpSent\" : \"invitationSent\";\n        if (this.lawyerName && this.appointmentDate && this.appointmentTime) {\n          adminLogTypeKey += \"WithAppointment\";\n        } else {\n          adminLogTypeKey += \"NoAppointment\";\n        }\n        this.eventLogging.adminLog(client.clientID, this.eventLogging.adminIDs[adminLogTypeKey], null, null, client.practiceArea);\n        if (!this.get(\"model.client\")) {\n          // a newly created client...\n          // check if we should instantly unsubscribe, due to lack of a Settify button\n          if (body.indexOf(\"[SETTIFY BUTTON]\") < 0) {\n            this.eventLogging.log(client.clientID, this.eventLogging.IDs.Unsubscribed, null, client.practiceArea);\n          }\n        }\n        return this.saveChangesWithoutSending(client).then(() => {\n          payload = {\n            client: {\n              email: this.clientEmail\n            },\n            lawyer: {\n              name: this.lawyerName,\n              email: this.lawyerEmail,\n              doNotBCC: this.get(\"lawyerDetails.doNotBCC\"),\n              bio: this.lawyerBio,\n              readMoreURL: this.lawyerReadMoreURL,\n              photoURL: this.lawyerPhotoURL,\n              heading: this.lawyerBioHeadingText\n            },\n            secondLawyer: {\n              name: this.secondLawyerName,\n              email: this.secondLawyerEmail,\n              doNotBCC: this.get(\"secondLawyerDetails.doNotBCC\"),\n              bio: this.secondLawyerBio,\n              readMoreURL: this.secondLawyerReadMoreURL,\n              photoURL: this.secondLawyerPhotoURL,\n              heading: this.lawyerBioHeadingText\n            },\n            sendFrom: {\n              name: this.emailSenderName,\n              email: this.emailSenderEmail\n            },\n            button: {\n              text: this.buttonLabel,\n              link: `${this.get(\"firm.settifyURL\")}/?clientID=${client.clientID}`\n            },\n            firmID: this.get(\"firm.id\"),\n            practiceArea: this.practiceArea,\n            subject: subject,\n            body: body,\n            bcc: this.emailBCCs,\n            cc: this.emailCCs,\n            css: \"\",\n            // as of inviteclient4, all required CSS is supplied in the lambda function\n            existingReferral: !!this.get(\"model.client\"),\n            attachments: this.allAttachments\n          };\n          if (this.noLawyerBios) {\n            delete payload.lawyer.bio;\n            delete payload.lawyer.readMoreURL;\n            delete payload.lawyer.photoURL;\n            delete payload.secondLawyer.bio;\n            delete payload.secondLawyer.readMoreURL;\n            delete payload.secondLawyer.photoURL;\n          }\n          if (this.lawyerName && this.appointmentDate && this.appointmentTime) {\n            payload.appointmentTime = `${this.formattedAppointmentDate} at ${this.appointmentTime}`;\n          }\n          return this.lambda.invoke(this.lambda.inviteClientLambda, payload);\n        }, err => {\n          // client record failed to save - this is serious!\n          this.set(\"errorMessage\", JSON.stringify(err, null, 2));\n          console.log(\"Failed to save client record before inviting client\");\n          throw err;\n        }).then(() => {\n          const apptDate = this.appointmentDate;\n          const apptTime = this.appointmentTimeRaw;\n\n          // the appointment date and time fields are hidden if the lawyer's name\n          // is not set, so we test against lawyer's name here to make sure we don't\n          // send an invite unwittingly.\n          if (this.sendCalendarInvite && apptDate && apptTime && this.lawyerName) {\n            // send meeting requests\n            const meetingPayload = {\n              recipient: {\n                name: `${this.clientFirstName.trim()} ${this.clientSurname.trim()}`,\n                email: this.clientEmail\n              },\n              lawyer: {\n                name: this.lawyerName,\n                email: this.lawyerEmail\n              },\n              organiser: {\n                name: this.firm.name,\n                email: this.get(\"sendFrom.email\") || this.firm.contactEmail\n              },\n              cc: this.get(\"sendFrom.email\") ? [this.get(\"sendFrom.email\")] : undefined,\n              start: this.startTimeISOString,\n              end: this.endTimeISOString,\n              title: `Meeting - ${this.clientFirstName.trim()} ${this.clientSurname.trim()} and ${this.lawyerName.trim()}`,\n              description: \"\",\n              location: this.initialPhoneMeeting ? \"\" : this.addressString(this.selectedOffice)\n            };\n            if (this.initialPhoneMeeting && this.includeMeetingHyperlink && this.includeAsAppointmentLocation && this?.hyperlinkParsed) {\n              meetingPayload.location = this.hyperlinkParsed;\n            }\n\n            // add second lawyer to the CCs (if second lawyer is specified)\n            if (this.secondLawyerEmail) {\n              if (meetingPayload.cc && meetingPayload.cc.push) {\n                meetingPayload.cc.push(this.secondLawyerEmail);\n              } else {\n                meetingPayload.cc = [this.secondLawyerEmail];\n              }\n              meetingPayload.title += ` and ${this.secondLawyerName}`;\n            }\n            return this.lambda.invoke(this.get(\"lambda.sendCalendarInviteLambda\"), meetingPayload);\n          }\n        }, err => {\n          // we only display an error to the user if the email didn't send.\n          // All the other stuff, like saving their cookie preferences, and\n          // even sending the appointment email, is a luxury extra.\n          // We don't want users clicking 'retry' and sending multiple invitation emails just because\n          // a cookie failed to save\n          this.set(\"errorMessage\", JSON.stringify(err, null, 2));\n          console.log(\"Invite payload:\", payload);\n          throw err;\n        }).then(() => {\n          // mark this record as having been viewed by the firm, so that the firm will receive\n          // \"blah has updated their information\" emails\n          return this.eventLogging.log(client.clientID, this.eventLogging.IDs.FirmAccessed, null, client.practiceArea);\n        }).then(() => {\n          return this.saveSelectedOffice();\n        }).then(() => {\n          return this.lambda.invoke(this.lambda.createSnapshotLambda, {\n            id: client.clientID,\n            firmID: this.get(\"firm.id\"),\n            snapshotReason: `Invitation Sent`\n          });\n        }).then(() => {\n          this.set(\"loading\", false);\n          this.set(\"invitationComplete\", true);\n          this.set(\"errorMessage\", null);\n        }).catch(err => {\n          this.set(\"loading\", false);\n          this.eventLogging.logError(\"Error inviting client to use Settify\", err);\n\n          // some errors are not that serious, so still display a \"success\" message to the user\n          // in those cases\n          if (!this.errorMessage) {\n            this.set(\"invitationComplete\", true);\n          }\n        }).finally(() => {\n          this.set(\"sendingInvite\", false);\n        });\n      }\n    },\n    updateSettings() {\n      let practiceAreaSettings = {\n        settings: {\n          admin: {\n            invitations: {}\n          }\n        }\n      };\n      if (this.practiceArea) {\n        practiceAreaSettings = this.store.peekRecord(\"settings\", this.practiceArea);\n      }\n      const invitationSettings = practiceAreaSettings.settings.admin.invitations;\n\n      // If no practiceArea settings are detected, we set the setting back to null\n      this.set(\"allowSecondLawyer\", invitationSettings.allowSecondLawyer || null);\n      this.set(\"phoneMeetingMessage\", invitationSettings.phoneMeetingMessage || null);\n      this.set(\"initialPhoneMeeting\", invitationSettings.phoneMeetingByDefault || null);\n      this.set(\"includeMeetingHyperlink\", invitationSettings.includeHyperlinkByDefault || null);\n      this.set(\"hyperlinkURL\", invitationSettings.hyperlinkURL || null);\n      this.set(\"hyperlinkText\", invitationSettings.hyperlinkText || null);\n      this.set(\"doNotBCCFirmContactAddress\", invitationSettings.doNotBCCFirmContactAddress || null);\n      this.set(\"phoneMeetingAttachments\", invitationSettings.phoneMeetingAttachment || null);\n      this.set(\"doNotNotifyFirmContactAddress\", invitationSettings.doNotNotifyFirmContactAddress || null);\n    },\n    addressString(address) {\n      return (0, _addressString.addressString)([address]);\n    },\n    saveSelectedOffice() {\n      // save cookie for this particular user's most-recently selected office\n      // expires in 90 days' time (but is reset every time we save)\n      if (this.selectedOffice) {\n        this.cookies.write(\"inviteOffice\", this.selectedOfficeIdx, {\n          expires: new Date(Date.now() + 1000 * 60 * 60 * 24 * 90)\n        });\n      }\n    },\n    get availableOffices() {\n      const offices = this.firm.addresses;\n      if (!offices) {\n        return [];\n      }\n      const mappedOffices = offices.map((elt, idx) => {\n        return {\n          label: (0, _addressString.addressString)([elt]),\n          value: idx\n        };\n      });\n\n      // read cookie for this user's preferred selection\n      const desiredOffice = parseInt(this.cookies.read(\"inviteOffice\"), 10);\n      if (!isNaN(desiredOffice) && desiredOffice < this.firm.addresses.length) {\n        this.set(\"selectedOfficeIdx\", desiredOffice);\n      } else {\n        this.set(\"selectedOfficeIdx\", 0);\n      }\n      return mappedOffices;\n    },\n    removeDuplicates(list) {\n      if (!list || !list.length) {\n        return [];\n      }\n      if (list.length === 1) {\n        return list;\n      }\n      const sorted = list.sort();\n      for (let i = 1; i < sorted.length;) {\n        if (sorted[i] === sorted[i - 1]) {\n          sorted.splice(i, 1);\n        } else {\n          i++;\n        }\n      }\n      return sorted;\n    },\n    removeDuplicateEmails(obj, listname) {\n      if (!obj || !listname) {\n        return;\n      }\n      const list = obj.get(listname);\n      if (!list || list.length <= 1) {\n        return;\n      }\n      const uniqEmails = list.uniqBy(\"email\");\n      obj.set(listname, uniqEmails);\n    },\n    getBodyHTML() {\n      if (this.editingCustomEmailBody) {\n        return this.getInviteEmailCustomBody();\n      }\n      return this.getInviteEmailAutomatedBody();\n    },\n    getInviteEmailAutomatedBody(plaintext) {\n      let body = \"\";\n      let el = document.getElementById(\"preview-email-css-wrapper\");\n      if (plaintext) {\n        if (el.hasChildNodes()) {\n          const children = el.childNodes;\n          for (let i = 0; i < children.length; i++) {\n            let text;\n            // NOTE: List is live, adding or removing children will change the list\n            switch (children[i].id) {\n              case \"email_button\":\n                body += \"[SETTIFY BUTTON]\\n\\n\";\n                break;\n              case \"inviteEmailLawyerBio\":\n                body += \"[LAWYER BIOGRAPHY]\\n\\n\";\n                break;\n              case \"inviteEmailSecondLawyerBio\":\n                body += \"[SECOND LAWYER BIOGRAPHY]\\n\\n\";\n                break;\n              case \"optionalExtra\":\n                if (this.optionalExtraMessage) {\n                  body += this.optionalExtraMessage;\n                  body += \"\\n\\n\";\n                }\n                break;\n              default:\n                text = children[i].innerHTML;\n                if (children[i].className === \"no-free-edit\") {\n                  text = \"\";\n                }\n                if (text) {\n                  // text = text.replace(/\\n\\s*([\\n]\\s*)+\\s*\\n*/g, \"\\n\\n\");\n                  text = text.replace(/([^\\n])\\n([^\\n])/g, \"$1 $2\");\n                  text = text.replace(/[ ][ ]+/g, \" \");\n                  text = text.replace(/\\s+$/, \"\");\n                  text = text.replace(/^\\s+/, \"\");\n                  text = text.replace(/&amp;/g, \"&\"); // convert ampersands\n                  text = text.replace(/&nbsp;/g, \" \"); // convert non breaking space\n                  text = text.replace(/<li>/g, \"<li>• \"); // convert <li> to bullet points\n                  text = text.replace(/<\\/li>/g, \"</li>\\n\"); // convert <li> to bullet points\n                  text = text.replace(/\\s*<br\\s*[/]?>\\s*/gi, \"\\n\"); // convert <br> to newline\n                  text = text.replace(/\\s*<\\/tr\\s*[/]?>\\s*/gi, \"</tr>\\n\"); // convert </tr> to newline\n                  text = text.replace(/<span[^>]*no-free-edit[^>]*>[\\s\\S]*?<\\/span>/gi, \"\"); // remove no-free-edit spans\n                  text = text.replace(/<[^>]*no-free-edit[^>]*>[^<]*<\\/[^>]*>/gi, \"\"); // remove other no-free-edit segments\n                  text = text.replace(/<[^>]*>/gi, \"\"); // strip all other HTML tags\n                  text = text.replace(/[ ][ ]+/g, \" \"); // replace double spaces again, just in case.\n                  text = text.replace(/^[ ]+/gm, \"\"); // replace leading spaces on lines.\n                  text = text.replace(/[ ]+$/gm, \"\"); // replace trailing spaces on lines.\n                  text = text.replace(/\\n\\n\\n\\n\\n/g, \"\\n\\n\"); // collapse multiple newlines into one\n                  text = text.replace(/\\n\\n\\n\\n/g, \"\\n\\n\"); // collapse multiple newlines into one\n                  text = text.replace(/\\n\\n\\n/g, \"\\n\\n\"); // collapse multiple newlines into one\n\n                  if (text && text.match(/\\S/)) {\n                    body += text;\n                    body += \"\\n\\n\";\n                  }\n                }\n                break;\n            }\n          }\n        }\n      } else {\n        body = plaintext ? el.textContent : el.innerHTML;\n        const buttonEl = document.getElementById(\"email_button\");\n        if (buttonEl) {\n          // replace the HTML button with a directive to the lambda function to insert\n          // a button at this location.\n          body = body.replace(buttonEl.outerHTML, \"\\n[SETTIFY BUTTON]\\n\");\n        }\n        const bioEl = document.getElementById(\"inviteEmailLawyerBio\");\n        if (bioEl) {\n          body = body.replace(bioEl.outerHTML, \"\\n[LAWYER BIOGRAPHY]\\n\");\n        }\n        const secondBio = document.getElementById(\"inviteEmailSecondLawyerBio\");\n        if (secondBio) {\n          body = body.replace(secondBio.outerHTML, \"\\n[SECOND LAWYER BIOGRAPHY]\\n\");\n        }\n        el = document.getElementById(\"optionalExtra\");\n        const match = el.outerHTML;\n        if (this.optionalExtraMessage) {\n          body = body.replace(match, this.formattedOptionalMessage);\n        } else {\n          body = body.replace(match, \"\");\n        }\n      }\n      return body;\n    },\n    getInviteEmailCustomBody() {\n      let html = (0, _formatWhitespace.formatWhitespace)([this.inviteEmailCustomBody]);\n      html = html.replace(\"<p>[SETTIFY BUTTON]</p>\", \"[SETTIFY BUTTON]\");\n      html = html.replace(\"<p>[LAWYER BIOGRAPHY]</p>\", \"[LAWYER BIOGRAPHY]\");\n      html = html.replace(\"<p>[SECOND LAWYER BIOGRAPHY]</p>\", \"[SECOND LAWYER BIOGRAPHY]\");\n      return html;\n    },\n    saveChangesWithoutSending(clientRecord) {\n      this.initialiseFormAgnosticValues(clientRecord);\n      this.initialiseClientRecordFormContent(clientRecord);\n      clientRecord.set(\"readOnly\", false);\n      return clientRecord.save().then(() => {\n        clientRecord.set(\"readOnly\", false);\n      });\n    },\n    initialiseFormAgnosticValues(clientRecord) {\n      if (this.conflictCheckPerformed && clientRecord.get(\"conflictCheck\") !== \"noconflict\") {\n        clientRecord.set(\"conflictCheck\", \"noconflict\");\n        clientRecord.set(\"conflictCheckTimestamp\", new Date().toString());\n        this.eventLogging.log(clientRecord.clientID, this.eventLogging.IDs.ConflictCheckCompleted, \"NO_CONFLICT\", clientRecord.practiceArea);\n      }\n      clientRecord.set(\"firstName\", this.clientFirstName);\n      clientRecord.set(\"surname\", this.clientSurname);\n      if (this.clientTitle) {\n        clientRecord.set(\"title\", this.clientTitle);\n      }\n      if (this.lawyerName) {\n        clientRecord.set(\"firmPartnerName\", this.lawyerName);\n        clientRecord.set(\"preferredLawyer\", this.lawyerName);\n      }\n      if (this.matterReferenceNumber) {\n        clientRecord.set(\"matterReferenceNumber\", this.matterReferenceNumber);\n      }\n\n      // Appointment details\n      if (this.formattedAppointmentDate) {\n        clientRecord.set(\"firmAppointmentDate\", this.formattedAppointmentDate);\n      }\n      if (this.appointmentTime) {\n        clientRecord.set(\"firmAppointmentTime\", this.appointmentTime);\n      }\n      if (this.appointmentDate && this.appointmentTime) {\n        this.eventLogging.log(clientRecord.clientID, this.eventLogging.IDs.AppointmentTime, this.startTimeDate, clientRecord.practiceArea);\n        clientRecord.set(\"hasReceivedAppointmentEmail\", true);\n      }\n      if (this.selectedOffice) {\n        // Set clients preferred office to the one selected in the invitation.\n        clientRecord.set(\"preferredOffice\", this.get(\"selectedOffice.suburb\"));\n      }\n      if (this.get(\"model.client\")) {\n        // we're sending them a follow up email of some sort\n        clientRecord.set(\"hasReceivedAppointmentEmail\", true);\n      }\n      clientRecord.set(\"email\", this.clientEmail);\n      if (this.doNotNotifyFirmContactAddress) {\n        // clear the default settings for update notifications\n        clientRecord.set(\"notifyUpdates\", []);\n      }\n      if (!clientRecord.get(\"notifyUpdates\")) {\n        // sometimes, for some reason, this array ends up blank\n        clientRecord.set(\"notifyUpdates\", []);\n      }\n      if (this.lawyerEmail && !this.get(\"lawyerDetails.doNotBCC\")) {\n        clientRecord.get(\"notifyUpdates\").pushObject({\n          email: this.lawyerEmail\n        });\n      }\n      if (this.secondLawyerEmail && !this.get(\"secondLawyerDetails.doNotBCC\")) {\n        clientRecord.get(\"notifyUpdates\").pushObject({\n          email: this.secondLawyerEmail\n        });\n      }\n      if (this.get(\"sendFrom.email\")) {\n        clientRecord.get(\"notifyUpdates\").pushObject({\n          email: this.get(\"sendFrom.email\")\n        });\n      }\n      if (this.get(\"secondLawyerDetails.sendFrom.email\")) {\n        clientRecord.get(\"notifyUpdates\").pushObject({\n          email: this.get(\"secondLawyerDetails.sendFrom.email\")\n        });\n      }\n      if (this?.lawyerCCs) {\n        clientRecord.get(\"notifyUpdates\").pushObjects(this.lawyerCCs.map(x => ({\n          email: x\n        })));\n      }\n      if (this?.secondLawyerCCs) {\n        clientRecord.get(\"notifyUpdates\").pushObjects(this.secondLawyerCCs.map(x => ({\n          email: x\n        })));\n      }\n      this.removeDuplicateEmails(clientRecord, \"notifyUpdates\");\n\n      // We only want to set one induction to the client\n      const induction = this.getInduction(this.inductions);\n      clientRecord.set(\"inductions\", [induction].map(val => ({\n        id: val.id,\n        repeatToken: val.repeatToken || 1,\n        repeatBreadcrumb: val.repeatBreadcrumb || undefined,\n        canBeDeleted: false\n      })));\n\n      // TODO: CHECK IF THIS NEEDS TO BE MOVED TO AFTER  initialiseClientRecordFormContent\n      if (clientRecord.get(\"detailedInductionComplete\")) {\n        // MVPTODO: we're sending a follow-up email, so enable the second stage of the induction\n        clientRecord.set(\"postMeeting\", true);\n      }\n\n      // save all details of this invitation, in case the law firm wants to re-send it\n      clientRecord.set(\"invitationInformation\", this.createInvitationInformationObject());\n    },\n    initialiseClientRecordFormContent(clientRecord) {\n      const induction = this.getInduction(this.inductions);\n      const repeatToken = induction.repeatToken || 1;\n      const initFunctions = {\n        Probate: clientRecord => {\n          clientRecord.set(\"lawFirmHasWill\", !!this.lawFirmAlreadyHasWill);\n          const hasWillAlreadyAnswered = !!clientRecord.getPreciseAnswer(induction.id, this.get(\"staticReferences.didPrepareWillQuestion.chapter\"), this.get(\"staticReferences.didPrepareWillQuestion.page\"), this.get(\"staticReferences.didPrepareWillQuestion.question\"), null, repeatToken);\n          if (!hasWillAlreadyAnswered && this.lawFirmAlreadyHasWill) {\n            clientRecord.setPreciseAnswer(induction.id, this.get(\"staticReferences.didPrepareWillQuestion.chapter\"), this.get(\"staticReferences.didPrepareWillQuestion.page\"), this.get(\"staticReferences.didPrepareWillQuestion.question\"), null, repeatToken, \"yes\");\n            clientRecord.setPreciseAnswer(induction.id, this.get(\"staticReferences.knowsWillLocationQuestion.chapter\"), this.get(\"staticReferences.knowsWillLocationQuestion.page\"), this.get(\"staticReferences.knowsWillLocationQuestion.question\"), null, repeatToken, \"yes\");\n            clientRecord.setPreciseAnswer(induction.id, this.get(\"staticReferences.willLocationQuestion.chapter\"), this.get(\"staticReferences.willLocationQuestion.page\"), this.get(\"staticReferences.willLocationQuestion.question\"), null, repeatToken, \"lawFirm\");\n          }\n          if (clientRecord.firstName) {\n            clientRecord.setPreciseAnswer(induction.id, this.get(\"staticReferences.instructorQuestion.chapter\"), this.get(\"staticReferences.instructorQuestion.page\"), this.get(\"staticReferences.instructorQuestion.question\"), null, repeatToken, clientRecord.firstName);\n          }\n        },\n        Estates: clientRecord => {\n          const hasWillAlreadyAnswered = !!clientRecord.getPreciseAnswer(induction.id, this.get(\"staticReferences.didPrepareWillQuestion.chapter\"), this.get(\"staticReferences.didPrepareWillQuestion.page\"), this.get(\"staticReferences.didPrepareWillQuestion.question\"), null, repeatToken);\n          if (!hasWillAlreadyAnswered && this.lawFirmAlreadyHasWill) {\n            clientRecord.setPreciseAnswer(induction.id, this.get(\"staticReferences.didPrepareWillQuestion.chapter\"), this.get(\"staticReferences.didPrepareWillQuestion.page\"), this.get(\"staticReferences.didPrepareWillQuestion.question\"), null, repeatToken, \"yes\");\n          }\n          if (clientRecord.get(\"firstName\")) {\n            clientRecord.setPreciseAnswer(induction.id, this.get(\"staticReferences.instructorQuestion.chapter\"), this.get(\"staticReferences.instructorQuestion.page\"), this.get(\"staticReferences.instructorQuestion.question\"), null, repeatToken, clientRecord.get(\"primaryContactPersonID\"));\n          }\n        },\n        Family: clientRecord => {\n          if (clientRecord.get(\"firstName\")) {\n            clientRecord.setPreciseAnswer(induction.id, this.get(\"staticReferences.clientDetailsQuestion.chapter\"), this.get(\"staticReferences.clientDetailsQuestion.page\"), this.get(\"staticReferences.clientDetailsQuestion.question\"), null, repeatToken, clientRecord.get(\"primaryContactPersonID\"));\n          }\n          if (this.lawyerName) {\n            clientRecord.setPreciseAnswer(induction.id, this.get(\"staticReferences.preferredLawyerQuestion.chapter\"), this.get(\"staticReferences.preferredLawyerQuestion.page\"), this.get(\"staticReferences.preferredLawyerQuestion.question\"), null, repeatToken, this.lawyerName);\n          }\n        }\n      };\n      initFunctions[clientRecord.practiceArea](clientRecord);\n    },\n    createInvitationInformationObject() {\n      // note that some of the key values on the left are different to the ones on the right\n      // that's so we can blindly do a this.set() and not clobber computed properties, etc\n      return {\n        includePhoneMeetingAttachments: this.includePhoneMeetingAttachments,\n        includePhoneMeetingMessage: this.includePhoneMeetingMessage,\n        phoneMeetingMessage: this.phoneMeetingMessage,\n        emailSenderName: this.emailSenderName,\n        emailSenderTitle: this.emailSenderTitle,\n        emailSenderEmail: this.emailSenderEmail,\n        emailSenderPhone: this.emailSenderPhone,\n        forceIncludeSettifyButton: this.forceIncludeSettifyButton,\n        optionalExtraMessage: this.optionalExtraMessage,\n        showOptionalExtra: this.showOptionalExtra,\n        sendCalendarInvite: this.sendCalendarInvite,\n        includeAdditionalCCs: this.includeAdditionalCCs,\n        additionalCCsText: this.additionalCCsText,\n        editingCustomEmailBody: this.editingCustomEmailBody,\n        showCancelCustomMessageBody: this.showCancelCustomMessageBody,\n        inviteEmailCustomBody: this.inviteEmailCustomBody,\n        lawFirmAlreadyHasWill: this.lawFirmAlreadyHasWill,\n        selectedOfficeIdx: this.selectedOfficeIdx,\n        secondLawyer: this.secondLawyer,\n        forceSecondLawyer: this.secondLawyerName,\n        initialPhoneMeeting: this.initialPhoneMeeting,\n        includeMeetingHyperlink: this.includeMeetingHyperlink,\n        hyperlinkURL: this.hyperlinkURL,\n        hyperlinkText: this.hyperlinkText,\n        includeAsAppointmentLocation: this.includeAsAppointmentLocation\n      };\n    },\n    applyInvitationInformation(model) {\n      this.set(\"clientFirstName\", model.get(\"firstName\"));\n      this.set(\"clientSurname\", model.get(\"surname\"));\n      this.set(\"clientEmail\", model.get(\"email\"));\n      this.set(\"clientTitle\", model.get(\"title\"));\n      this.set(\"matterReferenceNumber\", model.get(\"matterReferenceNumber\"));\n      this.questionnaireLogic.load().then(availableInductions => {\n        this.set(\"inductions\", model.get(\"inductions\").map(i => {\n          const definition = availableInductions.find(d => (d.formID || d.id) === (i.formID || i.id));\n          return {\n            id: definition.formID,\n            title: definition.title,\n            repeatBreadcrumb: i.repeatBreadcrumb,\n            repeatToken: i.repeatToken,\n            canBeRepeated: definition.canBeRepeated\n          };\n        }));\n      });\n      this.set(\"conflictCheckPerformed\", model.get(\"conflictCheck\") === \"noconflict\");\n      this.set(\"lawFirmAlreadyHasWill\", model.get(\"lawFirmHasWill\"));\n      if (model.get(\"firmPartnerName\")) {\n        this.set(\"forceLawyer\", this.get(\"model.client.firmPartnerName\"));\n      } else {\n        this.set(\"forceLawyer\", 0);\n      }\n      if (model.get(\"firmAppointmentTime\")) {\n        this.set(\"appointmentTime\", model.get(\"firmAppointmentTime\"));\n        this.set(\"appointmentTimeRaw\", new Date(`${model.get(\"firmAppointmentDate\")} ${model.get(\"firmAppointmentTime\")}`));\n        this.set(\"timepickerOptions.defaultTime\", this.appointmentTimeRaw);\n      }\n      if (model.get(\"firmAppointmentDate\")) {\n        this.set(\"appointmentDate\", new Date(model.get(\"firmAppointmentDate\")));\n      }\n      if (model.get(\"invitedByLawFirm\") && model.get(\"firmAppointmentDate\") && model.get(\"firmAppointmentTime\")) {\n        this.set(\"model.client.hasReceivedAppointmentEmail\", true);\n      }\n      const invitationInformation = model.get(\"invitationInformation\");\n      if (invitationInformation) {\n        for (const key in invitationInformation) {\n          if (Object.prototype.hasOwnProperty.call(invitationInformation, key)) {\n            const value = invitationInformation[key];\n            if ([\"emailSenderName\", \"emailSenderTitle\", \"emailSenderPhone\", \"emailSenderEmail\"].includes(key)) {\n              this.set(`${key}InviteInformation`, value);\n            } else {\n              this.set(key, value);\n            }\n          }\n        }\n      }\n      if (this.editingCustomEmailBody) {\n        this.set(\"showPreview\", true);\n      }\n      this.set(\"useInviteInformation\", true);\n      this.set(\"allowOptionToSaveWithoutSending\", false);\n    },\n    clearInviteInfo() {\n      [\"emailSenderName\", \"emailSenderTitle\", \"emailSenderPhone\", \"emailSenderEmail\"].forEach(key => {\n        this.set(`${key}InviteInformation`, null);\n      });\n      this.set(\"useInviteInformation\", false);\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/newfirm\", [\"exports\", \"rsvp\", \"@ember/utils\", \"@ember/runloop\", \"@ember/object\", \"@ember/object/computed\", \"@ember/service\", \"settify-mvp/controllers/base\", \"settify-mvp/mixins/select-firm\", \"settify-mvp/mixins/edit-firm-settings\"], function (_exports, _rsvp, _utils, _runloop, _object, _computed, _service, _base, _selectFirm, _editFirmSettings) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"rsvp\",0,\"@ember/utils\",0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/object/computed\",0,\"@ember/service\",0,\"settify-mvp/controllers/base\",0,\"settify-mvp/mixins/select-firm\",0,\"settify-mvp/mixins/edit-firm-settings\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend(_selectFirm.default, _editFirmSettings.default, {\n    lambda: (0, _service.inject)(),\n    session: (0, _service.inject)(),\n    sendEmailToSettify: (0, _service.inject)(),\n    eventLogging: (0, _service.inject)(),\n    cache: (0, _service.inject)(),\n    config: (0, _service.inject)(\"dynamic-config\"),\n    queryParams: [\"rolloutID\", \"rolloutReview\"],\n    init() {\n      (0, _object.set)(this, \"firmSelectedPAs\", {});\n      (0, _object.set)(this, \"firmPADetails\", []);\n      this.slugBlacklist = [\"and\", \"lawyers\", \"associates\", \"attorneys\"];\n      (0, _object.set)(this, \"regions\", [{\n        label: \"Australia\",\n        value: \"AU\",\n        domain: \".settify.com.au\",\n        awsRegion: \"ap-southeast-2\"\n      }, {\n        label: \"New Zealand\",\n        value: \"NZ\",\n        domain: \".settify.co.nz\",\n        awsRegion: \"ap-southeast-2\"\n      }, {\n        label: \"England and Wales\",\n        value: \"UK\",\n        domain: \".settify.co.uk\",\n        awsRegion: \"eu-west-2\"\n      }, {\n        label: \"Scotland\",\n        value: \"Scotland\",\n        domain: \".settify.co.uk\",\n        awsRegion: \"eu-west-2\"\n      }, {\n        label: \"Ontario\",\n        value: \"ON\",\n        domain: \".settify.ca\",\n        awsRegion: \"ca-central-1\"\n      }, {\n        label: \"BC\",\n        value: \"BC\",\n        domain: \".settify.ca\",\n        awsRegion: \"ca-central-1\"\n      }, {\n        label: \"Alberta\",\n        value: \"AB\",\n        domain: \".settify.ca\",\n        awsRegion: \"ca-central-1\"\n      }, {\n        label: \"Texas\",\n        value: \"Texas\",\n        domain: \".settify.com\",\n        awsRegion: \"us-west-2\"\n      }, {\n        label: \"Oklahoma\",\n        value: \"Oklahoma\",\n        domain: \".settify.com\",\n        awsRegion: \"us-west-2\"\n      }, {\n        label: \"Illinois\",\n        value: \"Illinois\",\n        domain: \".settify.com\",\n        awsRegion: \"us-west-2\"\n      }, {\n        label: \"Florida\",\n        value: \"Florida\",\n        domain: \".settify.com\",\n        awsRegion: \"us-west-2\"\n      }]);\n      (0, _object.set)(this, \"rolloutSupervisorOptions\", [{\n        label: \"Not Applicable\",\n        value: \"not-applicable\"\n      }]);\n      (0, _object.set)(this, \"gitlabSkinningUsernames\", [{\n        label: \"Unassigned\",\n        value: \"\"\n      }, {\n        label: \"Jasmin\",\n        value: \"jasminskopljak\"\n      }, {\n        label: \"Matthew B\",\n        value: \"matthewbuckley\"\n      }, {\n        label: \"Matt\",\n        value: \"MatthewWaters\"\n      }]);\n      (0, _object.set)(this, \"allPracticeAreas\", [\"Family\", \"Wills\", \"Probate\", \"Forms\", \"Estates\"]);\n      (0, _object.set)(this, \"allBillingCodes\", [{\n        label: \"Standard pricing\",\n        value: \"DEFAULT\"\n      }, {\n        label: \"Fair Billing pricing\",\n        value: \"LEADS_DEFAULT\"\n      }, {\n        label: \"Unlimited usage (fixed fee)\",\n        value: \"UNLIMITED\"\n      }, {\n        label: \"Standard pricing with free invites\",\n        value: \"FREE_INVITES\"\n      }, {\n        label: \"$199 usage (website and invites)\",\n        value: \"INCREASEDPERUSE\"\n      }, {\n        label: \"LEAP Bundling\",\n        value: \"LEADS_LEAP\"\n      }, {\n        label: \"Something else\",\n        value: \"other\"\n      }]);\n      let {\n        firmPADetails\n      } = this;\n      let {\n        allPracticeAreas\n      } = this;\n      for (let i = 0; i < allPracticeAreas.length; i++) {\n        const pa = allPracticeAreas[i];\n        firmPADetails.pushObject({\n          practiceArea: pa\n        });\n      }\n      let now = new Date();\n      this.set(\"firmContractExpiry\", new Date(now.getFullYear() + 1, now.getMonth(), now.getDate()));\n      // Calling super at the end of the method because if used on top properties like gitlabSkinningUsernames\n      // are not set and then reset() method call fails\n      // TODO: Investigate should we use init() hook if the reset() if already used in the controller because\n      // reset will be called in any case from base.js setupController()\n      this._super(...arguments);\n    },\n    onRolloutIDDetected() {\n      if (this.rolloutID && !this.creatingNewFirm) {\n        // Fetch the rollout information based on the rolloutID\n        this.set(\"loadingRolloutData\", true);\n        this.lambda.invoke(this.get(\"lambda.globalRolloutLambda\"), {\n          functionName: \"als-admin-getrolloutdetails\",\n          payload: {\n            rolloutID: `${this.rolloutID}`\n          }\n        }).then(this.get(\"lambda.processResponse\")).then(({\n          rolloutData\n        }) => {\n          this.setRolloutData(rolloutData);\n        }).finally(() => this.set(\"loadingRolloutData\", false));\n      }\n    },\n    practiceAreas: (0, _object.computed)(\"selectedFirmPracticeAreaDetails\", \"allPracticeAreas\", function () {\n      let paDetails = this.selectedFirmPracticeAreaDetails || [];\n      return this.allPracticeAreas.filter(pa => !paDetails.find(details => details.practiceArea === pa));\n    }),\n    placeholderFirmGlobalDetails: (0, _object.computed)(\"selectedFirmGlobalDetails\", \"firmLocation\", function () {\n      if (this.selectedFirmGlobalDetails) {\n        return this.selectedFirmGlobalDetails;\n      }\n      let retval = {};\n      let location = this.firmLocation;\n      if ([\"UK\", \"Scotland\"].includes(location)) {\n        retval.currency = \"GBP\";\n      }\n      if ([\"CanadaON\", \"CanadaBC\", \"CanadaBC\"].includes(location)) {\n        retval.currency = \"CAD\";\n      } else if (location === \"AU\") {\n        retval.currency = \"AUD\";\n      } else if (location === \"NZ\") {\n        retval.currency = \"NZD\";\n      } else if (location.includes.USA) {\n        retval.currency = \"USD\";\n      }\n      return retval;\n    }),\n    emailToGitlabUsername(email) {\n      return {\n        \"matt.weston@settify.com\": \"@matt-weston\",\n        \"matt.waters@settify.com.au\": \"@MatthewWaters\",\n        \"matthew.buckley@settify.com\": \"@matthewbuckley\",\n        \"jasmin.skopljak@settify.com\": \"@jasminskopljak\"\n      }[email] || `${email} (no gitlab user found)`;\n    },\n    settifyURLSuffix: (0, _object.computed)(\"regions\", \"firmLocation\", function () {\n      // Return url domain, default to AU region\n      return this.regions.find(r => r.value === (this.firmLocation || \"AU\")).domain;\n    }),\n    selectedAwsRegion: (0, _object.computed)(\"regions\", \"firmLocation\", function () {\n      // return the aws region for the selected firm location\n      if (!this.firmLocation) {\n        return null;\n      }\n      return this.regions.find(r => r.value === this.firmLocation).awsRegion;\n    }),\n    onFirmURLChanged: (0, _object.observer)(\"firmName\", \"firmURL\", function () {\n      if ((this.firmURL || this.firmName) && !this.firmDomain) {\n        (0, _runloop.debounce)(this, \"setFirmDomain\", 1000);\n      }\n    }),\n    setFirmDomain() {\n      const slug = this.convertToSlug(this.firmURL || this.firmName);\n      this.set(\"firmDomain\", slug);\n    },\n    convertToSlug(text = \"\") {\n      const blackListRegEx = new RegExp(`\\\\b(${this.slugBlacklist.join(\"|\")})\\\\b`, \"g\");\n      return text.toLowerCase().replace(blackListRegEx, \"\") // remove blacklisted words (not substrings)\n      .replace(/^\\s*(https?:\\/\\/)?(www\\.)?/, \"\") // remove https and www from URL\n      .replace(/\\..*/, \"\") // remove anything after the first .\n      .replace(/[^\\w-]+/g, \"\") // remove any non word characters\n      .substring(0, 30); // Set max length of 30 characters\n    },\n    onFirmDomainAndLocationChanged: (0, _object.observer)(\"firmDomain\", \"firmLocation\", function () {\n      const {\n        firmDomain\n      } = this;\n      if (firmDomain) {\n        // Make sure the domain is lowercase and remove non word characters\n        this.set(\"firmDomain\", firmDomain.toLowerCase().replace(/[^\\w-]+/g, \"\"));\n      }\n      if (this.firmLocation && firmDomain && firmDomain.length >= 3 && !this.loadingRolloutData) {\n        (0, _runloop.debounce)(this, \"checkIfFirmDomainExists\", 1000);\n      }\n    }),\n    checkIfFirmDomainExists() {\n      const domain = (this.firmDomain || \"\").toLowerCase().replace(/\\s/g, \"\");\n      const region = this.selectedAwsRegion;\n      this.lambda.invoke(this.get(\"lambda.globalRolloutLambda\"), {\n        functionName: \"als-public-firmdomainexists\",\n        payload: {\n          region,\n          domain\n        }\n      }).then(this.get(\"lambda.processResponse\")).then(data => {\n        this.set(\"firmDomainExists\", data.exists && data.firmID !== this.rolloutID);\n        if (data.exists) {\n          this.set(\"firmExistsGuess\", data);\n        }\n      });\n    },\n    gitlabUsername: (0, _object.computed)(\"session.data.authenticated.username\", function () {\n      return this.emailToGitlabUsername(this.get(\"session.data.authenticated.username\"));\n    }),\n    settifyRolloutSupervisorGitlabUsername: (0, _object.computed)(\"settifyRolloutSupervisor\", function () {\n      return this.emailToGitlabUsername(this.settifyRolloutSupervisor);\n    }),\n    allFields: (0, _object.computed)(\"allPracticeAreas\", \"canContinue\", \"canSubmit\", function () {\n      return [\"firmStatus\", \"newFirm\", \"isTestFirm\", \"isUnoRollout\", \"firmName\", \"firmURL\", \"firmDomain\", \"firmLocation\", \"firmContractExpiry\", \"searchquery\", \"selectedFirmID\", \"firmAccountsPayableName\", \"firmAccountsPayableEmail\", \"firmAccountsPayableAddress\", \"firmInvoiceReviewName\", \"firmInvoiceReviewEmail\", \"firmLinkPlacementType\", \"firmWebsiteInstructions\", \"firmWebsiteLogin\", \"firmMoreInfo\", \"firmBillingEntityName\", \"firmCompanyNumber\", \"firmTimezone\", \"gitlabIssueNumber\", \"settifyRolloutSupervisor\", \"reviewingAdminBlueprints\", \"blueprintReviewName\", \"blueprintReviewEmail\", \"skinningAssignee\", \"mockupAssignee\", \"firmColour\", \"firmSelectedPAs\", \"firmPADetails\"];\n    }),\n    getAllFieldData() {\n      return {\n        ...this.allFields.reduce((val, curr) => ({\n          ...val,\n          [curr]: this.get(curr)\n        }), {}),\n        submittedBy: this.submittedBy || this.get(\"session.data.authenticated.username\"),\n        allPermittedEmailDomains: this.allPermittedEmailDomains,\n        firmIDOverride: this.firmID\n      };\n    },\n    sanitiseValue(key, value) {\n      // trim strings\n      value = typeof value === \"string\" ? value.trim() : value;\n\n      // sanitise urls\n      if (\"firmURL\" === key) {\n        try {\n          value = new URL(value).origin;\n        } catch (e) {\n          // ignore invalid urls\n        }\n      }\n      return value;\n    },\n    reset() {\n      this._super(...arguments);\n      this.onRolloutIDDetected();\n      this.setProperties({\n        loading: false,\n        success: false,\n        error: false,\n        displayOnly: false,\n        reviewMode: false,\n        firmIDOverride: false,\n        skinningAssignee: \"\",\n        firmColour: \"#34a853\"\n      });\n    },\n    computedValuesNotToOverride: [\"allPermittedEmailDomains\"],\n    setRolloutData(rolloutData) {\n      const payload = JSON.parse(rolloutData);\n      for (const key in payload) {\n        if (this.computedValuesNotToOverride.includes(key)) continue;\n        if (Object.prototype.hasOwnProperty.call(payload, key)) {\n          const value = this.sanitiseValue(key, payload[key]);\n          this.set(key, value);\n        }\n      }\n    },\n    firmID: (0, _computed.or)(\"firmIDOverride\", \"selectedFirmID\"),\n    existingFirm: (0, _computed.equal)(\"firmStatus\", \"existing\"),\n    existingPracticeArea: (0, _object.computed)(\"existingFirm\", \"selectedFirmPracticeAreaDetails\", function () {\n      if (!this.existingFirm) {\n        return;\n      }\n      let details = this.selectedFirmPracticeAreaDetails;\n      if (!details || !details.length) {\n        return;\n      }\n      return this.selectedFirmPracticeAreaDetails[0].practiceArea;\n    }),\n    canContinue: (0, _object.computed)(\"rolloutID\", \"existingFirm\", \"settifyRolloutSupervisor\", \"selectedFirm\", \"firmName\", \"firmURL\", \"firmLocation\", \"firmDomain\", \"firmDomainExists\", function () {\n      if (!this.settifyRolloutSupervisor || !this.firmLocation) {\n        return false;\n      }\n      if (this.existingFirm) {\n        // Existing firm can continue as long as a firm is selected\n        return this.selectedFirm;\n      }\n\n      // New firm can continue if the name and domain are added + the domain is unique\n      return !!(this.firmName && this.firmDomain && !(0, _utils.isNone)(this.firmDomainExists) && !this.firmDomainExists);\n    }),\n    addOrUpdateRolloutTable(options = {}) {\n      const payload = {\n        rolloutID: this.rolloutID,\n        region: this.selectedAwsRegion,\n        subregion: this.firmLocation,\n        subdomain: this.firmDomain,\n        firmName: this.firmName,\n        firmURL: this.firmURL,\n        isTestFirm: this.isTestFirm,\n        isUnoRollout: this.isUnoRollout,\n        salesPerson: this.settifyRolloutSupervisor,\n        source: \"rollout-form\",\n        state: options.state || \"draft\",\n        rolloutData: JSON.stringify(this.getAllFieldData()),\n        submitFirmPayload: options.submitFirmPayload\n      };\n      if (this.existingFirm) {\n        payload.firmID = this.get(\"selectedFirmGlobalDetails.firmID\");\n        payload.subdomain = this.convertToSlug(this.get(\"selectedFirmGlobalDetails.settifyURL\"));\n        payload.firmName = this.get(\"selectedFirmGlobalDetails.name\");\n        payload.firmURL = this.get(\"selectedFirmGlobalDetails.settifyURL\");\n      }\n      return new _rsvp.Promise((resolve, reject) => {\n        return this.lambda.invoke(this.get(\"lambda.globalRolloutLambda\"), {\n          functionName: \"als-admin-updaterolloutdetails\",\n          payload\n        }).then(this.get(\"lambda.processResponse\")).then(data => {\n          if (!this.rolloutID) {\n            this.set(\"rolloutID\", data.rolloutID);\n          }\n          return resolve();\n        }).catch(err => reject(err));\n      });\n    },\n    canSubmit: (0, _object.computed)(\"firmName\", \"firmURL\", \"firmDomain\", \"firmLocation\", \"firmTimezone\", \"settifyRolloutSupervisor\", \"firmAccountsPayableName\", \"firmAccountsPayableEmail\", \"firmAccountsPayableAddress\", \"firmContractExpiry\", \"gitlabSkinningUsernames\", \"firmSelectedPAs\", \"firmPADetails.@each.{rolloutAmountCents,rolloutInstalmentCount,licenceFee,billingConversionGroup,billingConversionGroupMoreInfo,reviewingBlueprints,blueprintReviewName,blueprintReviewEmail,newLeadNotificationEmail}\", function () {\n      const onePracticeAreaSelected = Object.values(this.firmSelectedPAs).some(value => value);\n      const noRequiredFieldsMissing = document.querySelectorAll(\".required-field-marker\").length === document.querySelectorAll(\".required-field-marker.required-field-provided\").length;\n      return Boolean(this.firmName && this.firmDomain && this.firmLocation && this.firmTimezone && this.settifyRolloutSupervisor && this.firmAccountsPayableName && this.firmAccountsPayableEmail && this.firmAccountsPayableAddress && this.firmContractExpiry && this.gitlabSkinningUsernames && noRequiredFieldsMissing && onePracticeAreaSelected);\n    }),\n    actions: {\n      selectExistingFirm(firm) {\n        if (firm.domainType === \"new\") {\n          this.set(\"rolloutID\", firm.firmID);\n          this.set(\"firmDomainExists\", false);\n        } else {\n          this.set(\"rolloutID\", undefined);\n          this.set(\"firmStatus\", \"existing\");\n          this.send(\"selectFirm\", firm);\n        }\n      },\n      selectFirm(firm) {\n        this.set(\"selectedFirmID\", firm.firmID);\n        this.set(\"searchquery\", firm.name);\n      },\n      clearAnswers() {\n        let {\n          allFields\n        } = this;\n        for (let i = 0; i < allFields.length; i++) {\n          const element = allFields[i];\n          this.set(element, null);\n        }\n        this.setProperties({\n          skinningAssignee: \"\",\n          firmColour: \"#34a853\",\n          rolloutID: undefined,\n          firmDomainExists: undefined\n        });\n      },\n      submitRolloutData(rolloutState) {\n        this.set(\"savingDraftRollout\", true);\n        this.addOrUpdateRolloutTable({\n          state: rolloutState || \"draft\"\n        }).finally(() => {\n          this.set(\"savingDraftRollout\", false);\n        });\n      },\n      processRollout() {\n        if (!this.canSubmit || this.autoRolloutInProgress) {\n          return;\n        }\n        this.set(\"displayOnly\", true); // Here we set displayOnly to true so the inputs only show the relevant details\n        this.set(\"isRolloutProcessing\", true);\n        this.set(\"hasRolloutSucceeded\", false);\n        this.set(\"hasRolloutFailed\", false);\n        const {\n          existingFirm\n        } = this;\n        if (existingFirm) {\n          this.set(\"accessSettings\", true);\n          this.set(\"practiceArea\", this.existingPracticeArea);\n        }\n        (0, _runloop.next)(() => {\n          return this.loadFirmSettings().then(() => {\n            const payload = {\n              rolloutID: this.rolloutID,\n              firmID: this.firmID,\n              firmName: this.firmName,\n              firmDomain: this.firmDomain,\n              firmURL: this.firmURL,\n              firmLocation: this.firmLocation,\n              firmTimezone: this.firmTimezone,\n              isTestFirm: this.isTestFirm,\n              isUnoRollout: this.isUnoRollout,\n              firmStatus: this.firmStatus,\n              freeTrial: false,\n              firmColour: this.firmColour.replace(\"#\", \"\"),\n              firmSelectedPAs: this.firmSelectedPAs,\n              firmPADetails: this.firmPADetails,\n              firmAccountsPayableName: this.firmAccountsPayableName,\n              firmAccountsPayableEmail: this.firmAccountsPayableEmail,\n              firmAccountsPayableAddress: this.firmAccountsPayableAddress,\n              firmInvoiceReviewName: this.firmInvoiceReviewName,\n              firmInvoiceReviewEmail: this.firmInvoiceReviewEmail,\n              firmBillingEntityName: this.firmBillingEntityName,\n              firmCompanyNumber: this.firmCompanyNumber,\n              firmContractExpiry: this.firmContractExpiry,\n              allPermittedEmailDomains: this.allPermittedEmailDomains,\n              userEmail: this.get(\"session.data.authenticated.username\"),\n              salesPerson: this.settifyRolloutSupervisor,\n              region: this.selectedAwsRegion,\n              rolloutData: JSON.stringify(this.getAllFieldData()),\n              skinningAssignee: this.skinningAssignee,\n              gitlabBody: document.querySelectorAll(\".answers-to-extract\")[0].innerText.replace(/\\n/g, \"  \\n\"),\n              gitlabUsername: this.gitlabUsername,\n              gitlabRolloutSupervisor: this.settifyRolloutSupervisorGitlabUsername\n            };\n            if (existingFirm) {\n              payload.firmID = this.get(\"selectedFirmGlobalDetails.firmID\");\n              payload.firmDomain = this.convertToSlug(this.get(\"selectedFirmGlobalDetails.settifyURL\"));\n              payload.firmName = this.get(\"selectedFirmGlobalDetails.name\");\n              payload.firmTimezone = this.get(\"selectedFirmGlobalDetails.timezone\");\n              payload.firmURL = this.get(\"firmSettings.settings.websiteURL\");\n            }\n            return this.lambda.invoke(this.get(\"lambda.processRolloutLambda\"), payload);\n          }).then(this.get(\"lambda.processResponse\")).then(({\n            adminPoolID,\n            adminPoolAppID,\n            adminIdentityPoolID\n          }) => {\n            this.setProperties({\n              adminPoolID,\n              adminPoolAppID,\n              adminIdentityPoolID\n            });\n            this.set(\"hasRolloutSucceeded\", true);\n          }).catch(e => {\n            this.set(\"hasRolloutFailed\", e);\n          }).finally(() => {\n            this.set(\"displayOnly\", false);\n            this.set(\"isRolloutProcessing\", false);\n          });\n        });\n      }\n    },\n    permittedPASpecificEmailDomains: (0, _object.computed)(\"firmPADetails.@each.{blueprintReviewEmail,newLeadNotificationEmail}\", \"firmSelectedPAs\", function () {\n      let {\n        firmPADetails\n      } = this;\n      let {\n        firmSelectedPAs\n      } = this;\n      let output = [];\n      for (let pa of firmPADetails) {\n        if (!firmSelectedPAs[pa.practiceArea]) {\n          continue; // ignores non-selected firms even if we have details\n        }\n        if (pa.newLeadNotificationEmail) {\n          output.push({\n            pa: pa.practiceArea,\n            contents: pa.newLeadNotificationEmail\n          });\n        }\n        if (pa.blueprintReviewEmail) {\n          output.push({\n            pa: pa.practiceArea,\n            contents: pa.blueprintReviewEmail\n          });\n        }\n      }\n      return output;\n    }),\n    permittedEmailDomains: (0, _object.computed)(\"firmAccountsPayableEmail\", \"firmInvoiceReviewEmail\", \"blueprintReviewEmail\", function () {\n      let permittedDomains = [this.firmAccountsPayableEmail, this.firmInvoiceReviewEmail, this.blueprintReviewEmail];\n      return permittedDomains.filter(e => e).map(e => {\n        return {\n          contents: e\n        };\n      });\n    }),\n    allPermittedEmailDomains: (0, _object.computed)(\"permittedEmailDomains\", \"permittedPASpecificEmailDomains\", function () {\n      let permittedEmails = [...this.permittedEmailDomains, ...this.permittedPASpecificEmailDomains];\n      permittedEmails.forEach(e => {\n        e.contents = e.contents.replace(/.*@/, \"\");\n      });\n      function uniqueBy(a, key) {\n        const seen = {};\n        return a.filter(function (item) {\n          const k = key(item);\n          return Object.prototype.hasOwnProperty.call(seen, k) ? false : seen[k] = true;\n        });\n      }\n      return uniqueBy(permittedEmails, JSON.stringify);\n    }),\n    loadFirmSettings() {\n      if (!this.existingFirm) {\n        return (0, _rsvp.resolve)();\n      }\n      return this.reloadFirm();\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/reportconflict\", [\"exports\", \"@ember/service\", \"settify-mvp/controllers/base\", \"settify-mvp/helpers/address-string\"], function (_exports, _service, _base, _addressString) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"settify-mvp/controllers/base\",0,\"settify-mvp/helpers/address-string\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    conflictConfirmation: false,\n    conflictType: \"\",\n    conflictSaving: false,\n    conflictSaved: false,\n    eventLogging: (0, _service.inject)(),\n    clientRecords: (0, _service.inject)(),\n    lambda: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    sendEmailToSettify: (0, _service.inject)(),\n    reset() {\n      this._super(...arguments);\n      this.set(\"conflictConfirmation\", false);\n      this.set(\"conflictSaving\", false);\n      this.set(\"conflictSaved\", false);\n    },\n    actions: {\n      confirmConflict() {\n        this.set(\"conflictSaving\", true);\n        this.set(\"errorMessage\", \"\");\n\n        // let's start by logging the event in Settify's database\n        let conflict = \"NO_CONFLICT\";\n        if (this.conflictType === \"yes\") {\n          conflict = \"CONFLICT\";\n        }\n        return this.eventLogging.log(this.model.client.id, this.eventLogging.IDs.ConflictCheckCompleted, conflict, this.model.practiceArea).then(() => {\n          if (this.conflictType === \"no\") {\n            // there is no conflict\n            // first, we allow ourselves access to this record\n            return this.lambda.invoke(this.get(\"lambda.allowFirmAccessLambda\"), {\n              id: this.get(\"model.client.id\"),\n              firmID: this.get(\"firm.id\")\n            }).then(() => {\n              // now that we have access, we update the conflict check information in the client record\n              const payload = {\n                clientID: this.get(\"model.client.id\"),\n                firmID: this.get(\"firm.id\"),\n                hasConflict: false\n              };\n              return this.lambda.invoke(this.get(\"lambda.setRecordConflictStateLambda\"), payload, this.session);\n            }).then(() => {\n              // now lets create a snapshot of this client\n              return this.lambda.invoke(this.get(\"lambda.createSnapshotLambda\"), {\n                id: this.get(\"model.client.id\"),\n                firmID: this.get(\"firm.id\"),\n                snapshotReason: \"Conflict Check Completed\"\n              });\n            });\n          }\n          // there is a conflict\n          return this.handleConflictedRecord();\n        }).then(() => {\n          this.set(\"conflictSaved\", true);\n          this.set(\"conflictSaving\", false);\n        }).catch(error => {\n          this.set(\"conflictSaved\", false);\n          this.set(\"conflictSaving\", false);\n          this.set(\"errorMessage\", JSON.stringify(error, null, 2));\n          this.eventLogging.logError(\"Couldn't confirm firm's conflict situation\", error);\n        });\n      },\n      toggleConflictType(type) {\n        if (type) {\n          if (type === \"yes\") {\n            this.set(\"conflictType\", \"yes\");\n          } else if (type === \"no\") {\n            this.set(\"conflictType\", \"no\");\n          }\n        } else {\n          if (this.conflictType === \"yes\") {\n            this.set(\"conflictType\", \"no\");\n          } else if (this.conflictType === \"no\") {\n            this.set(\"conflictType\", \"yes\");\n          }\n        }\n        this.set(\"conflictConfirmation\", false);\n      }\n    },\n    handleConflictedRecord() {\n      if (this.conflictType === \"yes\") {\n        const payload = {\n          clientID: this.get(\"model.client.id\"),\n          firmID: this.get(\"firm.id\"),\n          hasConflict: true\n        };\n        return this.lambda.invoke(this.get(\"lambda.setRecordConflictStateLambda\"), payload, this.session)\n        // .then(() => {\n        //   return this.notifySettifyOfConflict();\n        // })\n        .then(() => {\n          return this.lambda.invoke(this.get(\"lambda.sendConflictEmailLambda\"), {\n            client: {\n              title: this.get(\"model.client.title\"),\n              firstName: this.get(\"model.client.firstName\"),\n              middleName: this.get(\"model.client.middleName\"),\n              surname: this.get(\"model.client.surname\"),\n              dobString: this.get(\"model.client.dateOfBirth\"),\n              email: this.get(\"model.client.email\"),\n              addressString: (0, _addressString.addressString)([this.get(\"model.client.address\")]),\n              postcode: this.get(\"model.client.address.postcode\"),\n              state: this.get(\"model.client.address.state\"),\n              preferredOffice: this.get(\"model.client.preferredOffice\"),\n              phone: this.get(\"model.client.phone\"),\n              preferredLawyer: this.get(\"model.preferredLawyer\"),\n              helpWanted: this.get(\"model.helpWanted\"),\n              callbackTimes: this.get(\"model.callbackTimes\")\n            },\n            partner: {\n              title: this.get(\"model.spouse.title\"),\n              firstName: this.get(\"model.spouse.firstName\"),\n              middleName: this.get(\"model.spouse.middleName\"),\n              surname: this.get(\"model.spouse.surname\"),\n              dobString: this.get(\"model.spouse.dateOfBirth\"),\n              addressString: (0, _addressString.addressString)([this.get(\"model.spouse.address\")])\n            },\n            firm: {\n              name: this.get(\"firm.name\"),\n              id: this.get(\"firm.id\"),\n              practiceArea: this.get(\"firm.practiceArea\")\n            }\n          }, this.session);\n        }).then(() => {\n          return this.eventLogging.log(this.model.client.id, this.eventLogging.IDs.FirmDeniedAccess, null, this.model.practiceArea);\n        });\n      }\n    }\n\n    // notifySettifyOfConflict() {\n    //   // notify Settify admins\n    //   let subject = this.get('firm.name') + \" has reported a conflict situation\";\n    //   let body = '<p>Dear Settify,</p>';\n    //   body += '<p>' + this.get('firm.name') + ' has reported a conflict situation.</p>';\n    //   body += '<p>I have sent the client the automatic \"' + this.get('firm.name') + ' cannot act for you\" email.</p>';\n    //   body += '<p>No further action is required at this stage.</p>';\n    //   body += \"<p>Best regards,</p>\";\n    //   body += \"<p>Nik-Nook</p>\";\n\n    //   return this.get('sendEmailToSettify').send(subject, body, null);\n    // }\n  });\n});","define(\"settify-mvp/controllers/admin/resetconflict\", [\"exports\", \"@ember/service\", \"settify-mvp/controllers/base\"], function (_exports, _service, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"settify-mvp/controllers/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    eventLogging: (0, _service.inject)(),\n    lambda: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    sendEmailToSettify: (0, _service.inject)(),\n    config: (0, _service.inject)(\"dynamic-config\"),\n    queryParams: [\"clientID\", \"conflict\"],\n    reset() {\n      this._super(...arguments);\n      this.set(\"undoConflictSuccess\", false);\n      this.set(\"undoConflictFailure\", false);\n      this.set(\"previouslyFailed\", false);\n    },\n    actions: {\n      resetConflict() {\n        this.set(\"loading\", true);\n        this.set(\"undoConflictFailure\", false);\n        const payload = {\n          clientID: this.clientID,\n          firmID: this.get(\"firm.id\"),\n          action: \"reset\",\n          username: this.get(\"session.data.authenticated.username\")\n        };\n        this.lambda.invoke(this.get(\"lambda.undoConflictLambda\"), payload).then(this.lambda.processResponse).then(() => {\n          this.set(\"undoConflictSuccess\", true);\n        }).catch(err => {\n          this.eventLogging.logError(\"Failed to reset conflict check\", err);\n          if (this.previouslyFailed) {\n            return this.notifySettifyOfError().then(() => {\n              this.set(\"undoConflictFailure\", \"There was still an error resetting the conflict check. Settify Support has been contacted and you will hear from us shortly.\");\n            });\n          }\n          this.set(\"undoConflictFailure\", \"There was an error resetting the conflict check. Please try again.\");\n          this.set(\"previouslyFailed\", true);\n        }).finally(() => {\n          this.set(\"loading\", false);\n        });\n      }\n    },\n    notifySettifyOfError() {\n      // notify Settify admins\n      const subject = `Tech Support Request - ${this.get(\"firm.name\")} would like to reset a conflict check`;\n      const body = `\n      <p>Dear Settify,</p>\n      <p>${this.get(\"firm.name\")} have had issues resetting the conflict on a client.\n      <p>I have notified the firm that Settify will take care of it from here and contact them once complete.</p>\n      <p><b>Client ID:</b> ${this.clientID}</p>\n      <p><b>AWS Region:</b> ${this.get(\"config.settings.Region\")}</p>\n      <p><b>Logged in email:</b> ${this.get(\"session.data.authenticated.username\")}</p>\n      <p>Best regards,</p>\n      <p>Nik-Nook</p>\n    `;\n      return this.sendEmailToSettify.send(subject, body, null);\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/reviewinvoice\", [\"exports\", \"@ember/runloop\", \"@ember/object\", \"@ember/service\", \"settify-mvp/controllers/base\", \"settify-mvp/utils/get-conversion-type\"], function (_exports, _runloop, _object, _service, _base, _getConversionType) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/service\",0,\"settify-mvp/controllers/base\",0,\"settify-mvp/utils/get-conversion-type\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    lambda: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    eventLogging: (0, _service.inject)(),\n    settingInvoiceTypeLoading: false,\n    canEnableLoadingSpinner: false,\n    queryParams: [\"practiceArea\", \"firmID\"],\n    practiceArea: \"\",\n    init() {\n      this._super(...arguments);\n      this.expand = {};\n    },\n    reset() {\n      this._super(...arguments);\n      this.set(\"settingInvoiceTypeLoading\", false);\n      this.set(\"canEnableLoadingSpinner\", false);\n    },\n    showHistoricalLeadsLink: (0, _object.computed)(function () {\n      // every 3 months we ask firms to mark historical leads\n      return [2, 5, 8, 11].includes(new Date().getMonth());\n    }),\n    allRecordsActioned: (0, _object.computed)(\"model.allLeads.@each.invoiceType\", \"model.allLeads.@each.billingSweepInvoiceType\", \"model.sweep\", function () {\n      const leads = this.model?.allLeads;\n      let property = \"invoiceType\";\n      if (this.model?.sweep) {\n        property = \"billingSweepInvoiceType\";\n      }\n      for (let i = 0; i < leads.length; i++) {\n        const lead = leads[i];\n        if (!lead[property]) {\n          return false;\n        }\n      }\n      return true;\n    }),\n    leadsRemaining: (0, _object.computed)(\"model.allLeads.@each.invoiceType\", \"model.allLeads.@each.billingSweepInvoiceType\", \"model.sweep\", function () {\n      const leadsRemaining = {};\n      const leads = this.model?.allLeads;\n      let property = \"invoiceType\";\n      if (this.model?.sweep) {\n        property = \"billingSweepInvoiceType\";\n      }\n      for (let i = 0; i < leads.length; i++) {\n        const lead = leads[i];\n        if (!lead[property]) {\n          leadsRemaining[lead.practiceArea] = (leadsRemaining[lead.practiceArea] || 0) + 1;\n        } else if (lead[property] && !leadsRemaining[lead.practiceArea]) {\n          leadsRemaining[lead.practiceArea] = 0;\n        }\n      }\n      return leadsRemaining;\n    }),\n    conversionTotals: (0, _object.computed)(\"model.allLeads.@each.invoiceType\", \"model.conversionTypes\", /* 'model.lineItems.@each.description', */function () {\n      const leads = this.model?.allLeads;\n      // let lineItems = this.model.lineItems;\n      const totals = {};\n      const types = this.model?.conversionTypes;\n      for (let i = 0; i < types.length; i++) {\n        const type = types[i];\n        totals[type.longName] = 0;\n      }\n      let totalmarked = 0;\n      for (let i = 0; i < leads.length; i++) {\n        const lead = leads[i];\n        if (lead.invoiceType) {\n          totalmarked++;\n          const longName = this.getLongName(lead.invoiceType);\n          if (totals[longName]) {\n            totals[longName]++;\n          } else {\n            totals[longName] = 1;\n          }\n        }\n      }\n      // for (let i = 0; i < lineItems.length; i++) {\n      //   const lineItem = lineItems[i];\n      //   if (lineItem.description) {\n      //     totalmarked++;\n      //     if (totals[lineItem.description]) {\n      //       totals[lineItem.description]++;\n      //     }\n      //     else {\n      //       totals[lineItem.description] = 1;\n      //     }\n      //   }\n      // }\n      const unmarked = leads.length /* + lineItems.length */ - totalmarked;\n      if (unmarked) {\n        totals.Unmarked = unmarked;\n      } else {\n        totals.Total = leads.length; /* + lineItems.length; */\n      }\n      return totals;\n    }),\n    allCompleted: (0, _object.computed)(\"model.{allLeads,sweep}\", function () {\n      const completedProperty = this.model?.sweep ? \"billingSweepCompleted\" : \"billingLockedDate\";\n      return this.model.allLeads.every(l => l[completedProperty]);\n    }),\n    allPracticeAreas: (0, _object.computed)(\"model.firm\", function () {\n      return Object.keys(this.model?.firm).filter(pa => pa !== \"global\").sort() || [];\n    }),\n    hasLeadsConversionTypeClients: (0, _object.computed)(\"model.allLeads\", function () {\n      return this.model.allLeads.some(l => l.conversionTypeAtReferralDate && l.conversionTypeAtReferralDate.startsWith(\"LEADS_\"));\n    }),\n    getLongName(invoiceType) {\n      const matches = this.model.conversionTypes.filter(x => x.shortName === invoiceType);\n      if (matches && matches.length) {\n        return matches[0].longName;\n      }\n      return \"\";\n    },\n    actions: {\n      setInvoiceType(lead, type) {\n        if (!lead || !type) {\n          return;\n        }\n        this.set(\"canEnableLoadingSpinner\", true);\n        (0, _runloop.later)(() => {\n          if (this.canEnableLoadingSpinner) {\n            this.set(\"settingInvoiceTypeLoading\", lead);\n          }\n        }, 150);\n        (0, _runloop.next)(() => {\n          if (type === \"Confirm\" || type.shortName === \"Confirm\") {\n            type = {\n              shortName: \"Confirm\",\n              invoiceAmountCents: 0,\n              invoiceNarration: \"confirm did not become a client\"\n            };\n          }\n          const payload = {\n            firmID: this.firmID,\n            firm: this.get(`model.firm.${lead.practiceArea}`),\n            clientID: lead.clientID,\n            invoiceType: type.shortName,\n            conversionGroup: type.groupName,\n            invoiceAmountCents: type.invoiceAmountCents,\n            description: type.invoiceNarration,\n            displayDate: lead.referredToFirmDate,\n            practiceArea: lead.practiceArea\n          };\n          if (this.model?.sweep) {\n            // this is an historical sweep\n            payload.source = \"sweep\";\n            payload.overrideBillingLock = true;\n            if (type.invoiceAmountCents) {\n              // this is a billing upgrade\n              const previousConversionType = (0, _getConversionType.default)(lead.invoiceType, this.model?.conversionTypes);\n              payload.previousBillingInformation = {\n                invoiceAmountCents: previousConversionType.invoiceAmountCents,\n                invoiceGSTAmountCents: lead.invoiceAmountCents - previousConversionType.invoiceAmountCents,\n                invoiceTotalAmountCents: lead.invoiceAmountCents,\n                description: previousConversionType.invoiceNarration\n              };\n            }\n            if (type.shortName === lead.billingSweepInvoiceType) {\n              // we're \"un-setting\" this information\n              delete payload.previousBillingInformation;\n              payload.invoiceType = null;\n              payload.invoiceAmountCents = null;\n              payload.description = null;\n              payload.displayDate = null;\n            }\n          } else {\n            if (type.shortName === lead.invoiceType) {\n              // client is already marked as having this as their invoice type. Unset it.\n              payload.invoiceType = null;\n              payload.invoiceAmountCents = null;\n              payload.description = null;\n              payload.displayDate = null;\n            }\n          }\n          return this.lambda.invoke(this.lambda.setBillingInformationLambda, payload).then(() => {\n            let property = \"invoiceType\";\n            if (this.model?.sweep) {\n              property = \"billingSweepInvoiceType\";\n            }\n            if (lead[property] !== type.shortName) {\n              (0, _object.set)(lead, property, type.shortName);\n            } else {\n              (0, _object.set)(lead, property, undefined);\n            }\n          }).then(() => {\n            // TODO: surely event logging like this could be done AWS side instead of on the client?\n            // trigger an admin eventLogging\n            this.eventLogging.adminLog(lead.clientID, this.eventLogging.adminIDs.clientBillingStatusChanged, type.shortName, null, lead.practiceArea);\n          }).finally(() => {\n            this.set(\"canEnableLoadingSpinner\", false);\n            this.set(\"settingInvoiceTypeLoading\", false);\n          });\n        });\n      },\n      toggleExpand(practiceArea) {\n        this.set(\"expand\", {\n          ...this.expand,\n          [practiceArea]: !this.get(`expand.${practiceArea}`)\n        });\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/search\", [\"exports\", \"@ember/runloop\", \"@ember/object\", \"@ember/service\", \"settify-mvp/controllers/base\"], function (_exports, _runloop, _object, _service, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/service\",0,\"settify-mvp/controllers/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    lambda: (0, _service.inject)(),\n    config: (0, _service.inject)(\"dynamic-config\"),\n    reset() {\n      this.set(\"searchquery\", \"\");\n      this.set(\"loading\", false);\n      this.set(\"searchFailed\", false);\n      this.set(\"password\", null);\n      this.set(\"searchingByEmail\", false);\n      this.set(\"searchResults\", null);\n    },\n    onSearchTermChanged: (0, _object.observer)(\"searchquery\", function () {\n      (0, _runloop.debounce)(this, \"search\", 1000);\n    }),\n    onPasswordChanged: (0, _object.observer)(\"password\", function () {\n      (0, _runloop.debounce)(this, \"search\", 1000);\n    }),\n    search() {\n      const query = this.searchquery;\n      if (!query) {\n        return;\n      }\n      let {\n        password\n      } = this;\n      if (!password) {\n        return;\n      }\n      this.set(\"loading\", true);\n      this.set(\"longLoading\", false);\n      this.set(\"searchFailed\", false);\n      this.set(\"searchingByEmail\", query.includes(\"@\"));\n      (0, _runloop.later)(this, () => {\n        if (this.loading) {\n          this.set(\"longLoading\", true);\n        }\n      }, 500);\n      console.log(\"Starting search\");\n      return this.lambda.invoke(this.lambda.searchClientsLambda, {\n        query: query,\n        password: password\n      }).then(this.lambda.processResponse).then(data => {\n        console.log(\"Search complete\");\n        for (let i = 0; i < data.results.length; i++) {\n          if (data.results[i].logoID) {\n            data.results[i].logoUrl = `${this.get(\"config.settings.AssetsUrl\")}/logos/${data.results[i].logoID}.png`;\n          }\n          if (!data.results[i].name) {\n            data.results[i].name = \"(Name not provided)\";\n          }\n        }\n        this.set(\"searchResults\", data.results);\n      }).catch(() => {\n        console.log(\"Search failed\");\n        this.set(\"searchResults\", null);\n        this.set(\"searchFailed\", true);\n      }).finally(() => {\n        this.set(\"loading\", false);\n        this.set(\"longLoading\", false);\n      });\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/undoinvoice\", [\"exports\", \"@ember/service\", \"settify-mvp/controllers/base\"], function (_exports, _service, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"settify-mvp/controllers/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    queryParams: [\"invoiceNumber\", \"invoiceDate\", \"sweep\", \"startDate\"],\n    lambda: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    session: (0, _service.inject)(),\n    reset() {\n      this._super(...arguments);\n    },\n    init() {\n      this._super(...arguments);\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/users\", [\"exports\", \"@ember/runloop\", \"@ember/object\", \"@ember/service\", \"settify-mvp/controllers/base\", \"settify-mvp/mixins/select-firm\"], function (_exports, _runloop, _object, _service, _base, _selectFirm) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/service\",0,\"settify-mvp/controllers/base\",0,\"settify-mvp/mixins/select-firm\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend(_selectFirm.default, {\n    lambda: (0, _service.inject)(),\n    session: (0, _service.inject)(),\n    cache: (0, _service.inject)(),\n    latteFirmUser: (0, _service.inject)(),\n    reset() {\n      this._super();\n      this.send(\"dismissPrompt\");\n      this.set(\"passwordResetUser\", false);\n      this.set(\"mfaResetUser\", false);\n      this.set(\"mfaResetError\", null);\n      this.set(\"forceRestrictedDomain\", false);\n      this.set(\"searchquery\", undefined);\n      this.set(\"selectedFirmID\", \"\");\n    },\n    userListLoader: (0, _object.observer)(\"selectedFirmID\", function () {\n      this.loadUsers(this.selectedFirmID);\n    }),\n    loadUsers(firmID, passwordResetUser) {\n      if (firmID) {\n        this.set(\"loadingUsers\", true);\n        return this.lambda.invoke(this.get(\"lambda.getFirmUsersLambda\"), {\n          firmID: firmID\n        }).then(this.lambda.processResponse).then(result => {\n          this.set(\"selectedFirm.users\", result.Users);\n          this.set(\"newUserPracticeArea\", \"\");\n          this.send(\"dismissPrompt\");\n        }).then(() => {\n          if (passwordResetUser) {\n            this.set(\"passwordResetUser\", passwordResetUser);\n            (0, _runloop.later)(() => {\n              if (!this.isDestroyed && !this.isDestroying) {\n                this.set(\"passwordResetUser\", false);\n              }\n            }, 5000);\n          }\n        }).finally(() => {\n          this.set(\"loadingUsers\", false);\n        });\n      }\n    },\n    createUser(newUserEmail) {\n      if (!newUserEmail) {\n        return;\n      }\n      return this.lambda.invoke(this.get(\"lambda.createFirmUserLambda\"), {\n        firmID: this.selectedFirmID,\n        email: newUserEmail,\n        practiceArea: this.newUserPracticeArea,\n        userEmail: this.get(\"session.data.authenticated.username\"),\n        forceRestrictedDomain: this.forceRestrictedDomain\n      }).then(this.lambda.processResponse).then(result => {\n        let retvalue = [];\n        if (result.success && result.success.length) {\n          this.set(\"savingChangesSuccess\", result.success);\n          this.set(\"forceRestrictedDomain\", false);\n        }\n        if (result.failed && result.failed.length) {\n          if (typeof result.failed[0] === \"object\") {\n            result.failed = result.failed.map(obj => obj.message);\n          }\n          this.set(\"savingChangesError\", result.failed);\n          retvalue = result.failed;\n        }\n        return retvalue;\n      });\n    },\n    deleteUser(user) {\n      return this.lambda.invoke(this.get(\"lambda.deleteFirmUserLambda\"), {\n        firmID: this.selectedFirmID,\n        username: user.Username,\n        userEmail: this.get(\"session.data.authenticated.username\")\n      });\n    },\n    enableUser(user) {\n      return this.lambda.invoke(this.get(\"lambda.updateFirmUserLambda\"), {\n        firmID: this.selectedFirmID,\n        username: user.Username,\n        enabled: true,\n        userEmail: this.get(\"session.data.authenticated.username\")\n      });\n    },\n    disableUser(user) {\n      return this.lambda.invoke(this.get(\"lambda.updateFirmUserLambda\"), {\n        firmID: this.selectedFirmID,\n        username: user.Username,\n        enabled: false,\n        userEmail: this.get(\"session.data.authenticated.username\")\n      });\n    },\n    actions: {\n      prompt(user, action) {\n        this.set(\"promptUser\", user.Username);\n        this.set(\"promptAction\", action);\n        switch (action) {\n          case \"deleteUser\":\n            this.set(\"promptHelp\", \"This will permanently delete the user account.\");\n            break;\n          case \"resetPassword\":\n            this.set(\"promptHelp\", \"This will reset the password and send a new, temporary password to this email address.\");\n            break;\n          case \"resetMFA\":\n            this.set(\"promptHelp\", \"This will remove the user's registered authenticator app and sign them out of any active sessions.\");\n            break;\n          case \"enableUser\":\n            this.set(\"promptHelp\", \"This will enable logins using this account.\");\n            break;\n          case \"disableUser\":\n            this.set(\"promptHelp\", \"This will prevent logins using this account, but will not delete it (i.e., you can enable it again later if you wish).\");\n            break;\n        }\n      },\n      dismissPrompt() {\n        this.set(\"promptUser\", null);\n      },\n      createUser(newUserEmail) {\n        this.set(\"savingChanges\", true);\n        this.set(\"savingChangesSuccess\", false);\n        this.set(\"savingChangesError\", false);\n        this.createUser(newUserEmail).then(resp => {\n          return this.loadUsers(this.selectedFirmID).then(() => {\n            return resp;\n          });\n        }).then(resp => {\n          if (!resp.length) {\n            // Only reset if the adding has worked\n            this.set(\"newUserEmail\", \"\");\n            this.set(\"newUserPracticeArea\", \"\");\n            this.set(\"forceRestrictedDomain\", false);\n          } else {\n            // Remove any emails that succeeded for the retry\n            let concatErrorMessages = resp.join(\" \");\n            let newUserEmails = this.newUserEmail.split(\",\").map(e => e.trim()).filter(e => concatErrorMessages.includes(e));\n            this.set(\"newUserEmail\", newUserEmails.join(\", \"));\n            this.set(\"forceRestrictedDomain\", true);\n          }\n        }).catch(err => {\n          console.log(err);\n          this.set(\"savingChangesError\", true);\n        }).finally(() => {\n          this.set(\"savingChanges\", false);\n        });\n      },\n      deleteUser(user) {\n        (0, _object.set)(user, \"loading\", true);\n        this.deleteUser(user).then(() => {\n          return this.loadUsers(this.selectedFirmID);\n        }).finally(() => {\n          (0, _object.set)(user, \"loading\", false);\n        });\n      },\n      enableUser(user) {\n        (0, _object.set)(user, \"loading\", true);\n        this.enableUser(user).then(() => {\n          return this.loadUsers(this.selectedFirmID);\n        }).finally(() => {\n          (0, _object.set)(user, \"loading\", false);\n        });\n      },\n      disableUser(user) {\n        (0, _object.set)(user, \"loading\", true);\n        this.disableUser(user).then(() => {\n          return this.loadUsers(this.selectedFirmID);\n        }).finally(() => {\n          (0, _object.set)(user, \"loading\", false);\n        });\n      },\n      resetPassword(user) {\n        (0, _object.set)(user, \"loading\", true);\n        this.deleteUser(user).then(() => {\n          return this.createUser(user.Username);\n        }).then(() => {\n          return this.loadUsers(this.selectedFirmID, user.Username);\n        }).finally(() => {\n          (0, _object.set)(user, \"loading\", false);\n        });\n      },\n      async resetMFA(user) {\n        const username = user?.Username;\n        if (!username) {\n          return;\n        }\n        this.send(\"dismissPrompt\");\n        this.set(\"mfaResetUser\", false);\n        this.set(\"mfaResetError\", null);\n        (0, _object.set)(user, \"loading\", true);\n        try {\n          const response = await this.latteFirmUser.resetMfa({\n            username\n          });\n          if (response?.error) {\n            this.set(\"mfaResetError\", {\n              username,\n              message: response.error.message || \"MFA reset failed. Please try again.\"\n            });\n            return;\n          }\n          this.set(\"mfaResetUser\", username);\n          (0, _runloop.later)(() => {\n            if (!this.isDestroyed && !this.isDestroying) {\n              this.set(\"mfaResetUser\", false);\n            }\n          }, 5000);\n        } catch {\n          this.set(\"mfaResetError\", {\n            username,\n            message: \"MFA reset failed. Please try again.\"\n          });\n        } finally {\n          (0, _object.set)(user, \"loading\", false);\n        }\n      },\n      viewHistory(user) {\n        if (user.history) {\n          (0, _object.set)(user, \"showHistory\", !user.showHistory);\n        } else {\n          (0, _object.set)(user, \"loading\", true);\n          return this.lambda.invoke(this.get(\"lambda.getFirmUserEventsLambda\"), {\n            firmID: this.selectedFirmID,\n            username: user.Username\n          }).then(this.lambda.processResponse).then(result => {\n            (0, _object.set)(user, \"history\", result.AuthEvents);\n            (0, _object.set)(user, \"historyError\", false);\n          }).catch(err => {\n            console.log(err);\n            (0, _object.set)(user, \"historyError\", true);\n          }).finally(() => {\n            // set loading to false after a short period to stop the liquid-if from breaking if we get information back quickly\n            (0, _runloop.later)(() => {\n              (0, _object.set)(user, \"showHistory\", true);\n              (0, _object.set)(user, \"loading\", false);\n            }, 200);\n          });\n        }\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/welcomeemail\", [\"exports\", \"@ember/utils\", \"rsvp\", \"@ember/object\", \"@ember/service\", \"settify-mvp/controllers/base\", \"settify-mvp/mixins/select-firm\", \"settify-mvp/mixins/edit-firm-settings\"], function (_exports, _utils, _rsvp, _object, _service, _base, _selectFirm, _editFirmSettings) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/utils\",0,\"rsvp\",0,\"@ember/object\",0,\"@ember/service\",0,\"settify-mvp/controllers/base\",0,\"settify-mvp/mixins/select-firm\",0,\"settify-mvp/mixins/edit-firm-settings\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend(_selectFirm.default, _editFirmSettings.default, {\n    lambda: (0, _service.inject)(),\n    sendEmailToSettify: (0, _service.inject)(),\n    eventLogging: (0, _service.inject)(),\n    createUserLogins: true,\n    cache: (0, _service.inject)(),\n    reset() {\n      this._super(...arguments);\n      this.set(\"createUserLogins\", true);\n      this.set(\"lawyerList\", []);\n    },\n    onSelectedFirmChanged: (0, _object.observer)(\"selectedFirmGlobalDetails\", \"selectedFirmPracticeAreaDetails\", function () {\n      if (!this.selectedFirmGlobalDetails || !this.selectedFirmPracticeAreaDetails) {\n        return;\n      }\n      this.set(\"firmname\", this.get(\"selectedFirmGlobalDetails.name\"));\n      this.set(\"firmURL\", this.get(\"selectedFirmPracticeAreaDetails.0.settifyURL\"));\n      this.set(\"hasFamily\", this.selectedFirmPracticeAreaDetails.some(pa => pa.practiceArea === \"Family\"));\n      this.set(\"hasWills\", this.selectedFirmPracticeAreaDetails.some(pa => pa.practiceArea === \"Wills\"));\n      this.set(\"hasProbate\", this.selectedFirmPracticeAreaDetails.some(pa => pa.practiceArea === \"Probate\"));\n      this.set(\"hasEstates\", this.selectedFirmPracticeAreaDetails.some(pa => pa.practiceArea === \"Estates\"));\n      this.set(\"showExcelMasterclass\", [\"AU\", \"NZ\"].includes(this.get(\"selectedFirmGlobalDetails.gstCode\"))); // Not sure what other property to look at to check this\n      this.lambda.invoke(this.get(\"lambda.getLawyerListLambda\"), {\n        firmID: this.selectedFirmID\n      }).then(this.lambda.processResponse).then(lawyers => {\n        // Set lawyerList to all enabled lawyers\n        this.set(\"lawyerList\", lawyers.filter(l => !l.disabled));\n      });\n      let promises = [];\n      this.selectedFirmPracticeAreaDetails.forEach(areaDetails => {\n        promises.push(this.getExtraFirmSettings(this.selectedFirmID, areaDetails));\n      });\n\n      // Once we have all extraSettings back from lambda we can continue\n      return _rsvp.Promise.all(promises).then(() => {\n        if (this.hasFamily) {\n          this.set(\"newLeadsEmailFamily\", this.selectedFirmPracticeAreaDetails.filter(pa => pa.practiceArea === \"Family\")[0].contactEmail);\n        }\n        if (this.hasWills) {\n          this.set(\"newLeadsEmailWills\", this.selectedFirmPracticeAreaDetails.filter(pa => pa.practiceArea === \"Wills\")[0].contactEmail);\n        }\n        if (this.hasProbate) {\n          this.set(\"newLeadsEmailProbate\", this.selectedFirmPracticeAreaDetails.filter(pa => pa.practiceArea === \"Probate\")[0].contactEmail);\n        }\n        if (this.hasEstates) {\n          this.set(\"newLeadsEmailEstates\", this.selectedFirmPracticeAreaDetails.filter(pa => pa.practiceArea === \"Estates\")[0].contactEmail);\n        }\n        this.set(\"hasLivePracticeArea\", this.selectedFirmPracticeAreaDetails.some(pa => pa.isLive));\n      });\n    }),\n    getExtraFirmSettings(firmID, areaDetails) {\n      return this.lambda.invoke(this.get(\"lambda.getFirmSettingsLambda\"), {\n        firmID: firmID,\n        practiceArea: areaDetails.practiceArea,\n        includeNonLivePracticeAreas: true\n      }).then(this.lambda.processResponse).then(settings => {\n        // Merge copies of the two objects into one so we have all practiceArea information in one place\n        return Object.assign(areaDetails, JSON.parse(JSON.stringify(settings)));\n      });\n    },\n    recipients: (0, _object.computed)(\"lawyerList\", \"practiceAreas\", function () {\n      let lawyers = this.lawyerList;\n      let selectedPAs = this.practiceAreas;\n      let lawyerEmails = [];\n      lawyers.forEach(l => {\n        if (!(0, _utils.isEmpty)(l.practiceAreas)) {\n          // This lawyer has a set practice area/s\n          // Check if their practice area is in the selectedPAs list\n          if (!selectedPAs.some(pa => l.practiceAreas[pa]) && !(selectedPAs.includes(\"Probate\") && l.practiceAreas.Wills) // A Wills lawyer should also be included in Probate emails\n          ) {\n            return;\n          }\n        }\n        if (l.email) {\n          lawyerEmails.push(l.email);\n        }\n        if (l.CCs && l.CCs.length) {\n          lawyerEmails = lawyerEmails.concat(l.CCs);\n        }\n        if (l.BCCs && l.BCCs.length) {\n          lawyerEmails = lawyerEmails.concat(l.BCCs);\n        }\n      });\n\n      // remove blanks and duplicates\n      lawyerEmails = lawyerEmails.filter((e, index, array) => {\n        return e && array.indexOf(e) === index;\n      });\n      return lawyerEmails.join(\", \");\n    }),\n    practiceAreas: (0, _object.computed)(\"hasFamily\", \"hasWills\", \"hasProbate\", \"hasEstates\", function () {\n      let areas = [];\n      if (this.hasFamily) {\n        areas.push(\"Family\");\n      }\n      if (this.hasWills) {\n        areas.push(\"Wills\");\n      }\n      if (this.hasProbate) {\n        areas.push(\"Probate\");\n      }\n      if (this.hasEstates) {\n        areas.push(\"Estates\");\n      }\n      return areas;\n    }),\n    practiceAreasSentence: (0, _object.computed)(\"hasFamily\", \"hasWills\", \"hasProbate\", \"hasEstates\", function () {\n      let areas = [];\n      if (this.hasFamily) {\n        areas.push(\"family law\");\n      }\n      if (this.hasWills) {\n        areas.push(\"wills & estates\");\n      }\n      if (this.hasProbate) {\n        areas.push(\"probate\");\n      }\n      if (this.hasEstates) {\n        areas.push(\"estate dispute\");\n      }\n\n      // Regex finds the last \", area\" and replaces it with \"and area\"\n      return areas.join(\", \").replace(/, ([^,]*)$/, \" and $1\");\n    }),\n    errorInInput: (0, _object.computed)(\"firmname\", \"recipients\", \"newLeadsEmailFamily\", \"newLeadsEmailWills\", \"newLeadsEmailProbate\", \"newLeadsEmailEstates\", \"hasFamily\", \"hasWills\", \"hasProbate\", \"hasEstates\", \"practiceAreas.length\", function () {\n      if (!this.firmname) {\n        return \"No firm name specified\";\n      }\n      if (!this.get(\"practiceAreas.length\")) {\n        return \"No practice areas specified\";\n      }\n      let emailish = [\"recipients\"];\n      if (this.hasFamily) {\n        emailish.push(\"newLeadsEmailFamily\");\n      }\n      if (this.hasWills) {\n        emailish.push(\"newLeadsEmailWills\");\n      }\n      if (this.hasProbate) {\n        emailish.push(\"newLeadsEmailProbate\");\n      }\n      if (this.hasEstates) {\n        emailish.push(\"newLeadsEmailEstates\");\n      }\n      for (let i = 0; i < emailish.length; i++) {\n        let elt = this.get(emailish[i]);\n        if (!elt) {\n          return `No email address specified for ${emailish[i]}`;\n        }\n        if (elt.match(/[^a-zA-Z0-9-+@._,;\\s\\n]/)) {\n          return `Weird characters in email for ${emailish[i]}`;\n        }\n        if (!elt.match(/@/)) {\n          return `No @ sign in email for ${emailish[i]}`;\n        }\n      }\n      return null;\n    }),\n    warningInInput: false,\n    actions: {\n      sendWelcomeEmail() {\n        if (this.errorInInput) {\n          return;\n        }\n        let body = document.getElementById(\"welcomeemail-content\").innerHTML;\n        let payload = {\n          subject: \"Welcome to Settify\",\n          recipients: this.recipients.split(/\\s*[,\\n]\\s*/).map(e => e.trim()).filter(e => !!e),\n          cc: [],\n          bcc: [\"firmactivity@settify.com.au\"],\n          body: body,\n          css: \"\"\n        };\n        this.set(\"emailing\", true);\n        this.set(\"done\", false);\n        return this.lambda.invoke(this.get(\"lambda.emailFromSettifyLambda\"), payload).then(() => {\n          let subject = `${this.firmname} has received their welcome email`;\n          let body2 = `\n          <p>Just letting you know that ${this.firmname} has received their welcome email.</p>\n          <p>It was sent to:<br> ${this.recipients.split(/\\s*,\\s*/).map(e => e.trim()).filter(e => !!e).join(\"<br>\")}</p>\n          <p>The full text of the welcome email (minus the password and firm-specific formatting) is set out below:</p>\n          <hr>\n          ${body.replace(this.adminPassword, \"<strong>[redacted]</strong>\")}\n          <hr>\n        `;\n          return this.sendEmailToSettify.send(subject, body2, \"contact@settify.com.au\");\n        }).then(() => {\n          return _rsvp.Promise.all(this.selectedFirmPracticeAreaDetails.map(details => this.lambda.invoke(this.get(\"lambda.sendPracticeClientLambda\"), {\n            firmID: this.selectedFirmID,\n            practiceArea: details.practiceArea,\n            emailFirm: true\n          })));\n        }).then(() => {\n          if (this.createUserLogins) {\n            let newUsersPayload = {\n              firmID: this.selectedFirmID,\n              email: this.recipients,\n              userEmail: this.get(\"session.data.authenticated.username\")\n            };\n            return this.lambda.invoke(this.get(\"lambda.createFirmUserLambda\"), newUsersPayload).then(this.lambda.processResponse).then(result => {\n              if (result.success && result.success.length) {\n                this.set(\"createdEmails\", result.success);\n              }\n              if (result.failed && result.failed.length) {\n                this.set(\"failedMessages\", result.failed);\n              }\n            }).catch(err => {\n              this.eventLogging.logError(\"Unable to create logins\", err);\n            });\n          }\n        }).then(() => {\n          // delete the support@settify.com user login, which was only there to assist if required during the rollout phase\n          return this.lambda.invoke(this.get(\"lambda.deleteFirmUserLambda\"), {\n            firmID: this.selectedFirmID,\n            username: \"support@settify.com\",\n            userEmail: this.get(\"session.data.authenticated.username\")\n          });\n        }).then(() => {\n          this.set(\"emailing\", false);\n          this.set(\"done\", true);\n        });\n      },\n      nullAction() {}\n    }\n  });\n});","define(\"settify-mvp/controllers/admin/whatsnew\", [\"exports\", \"@ember/runloop\", \"@ember/object\", \"@ember/service\", \"settify-mvp/controllers/base\"], function (_exports, _runloop, _object, _service, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/service\",0,\"settify-mvp/controllers/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    lambda: (0, _service.inject)(),\n    awsService: (0, _service.inject)(),\n    init() {\n      this._super(...arguments);\n      this.set(\"postID\", Date.now());\n    },\n    reset() {\n      this.set(\"postSaving\", false);\n      this.set(\"postSuccess\", false);\n      this.set(\"postError\", false);\n      this.set(\"whatsNewBody\", null);\n      this.set(\"whatsNewTitle\", null);\n      this.set(\"whatsNewType\", null);\n    },\n    postTypes: (0, _object.computed)(\"whatsNewType\", function () {\n      let types = this.whatsNewType;\n      if (types) {\n        types = types.split(\",\").map(text => text.trim());\n      }\n      return types;\n    }),\n    canSubmit: (0, _object.computed)(\"whatsNewBody\", \"whatsNewTitle\", function () {\n      if (this.whatsNewBody && this.whatsNewTitle) {\n        return true;\n      }\n      return false;\n    }),\n    actions: {\n      savePost() {\n        this.set(\"postSaving\", true);\n        this.set(\"postSuccess\", false);\n        this.set(\"postError\", false);\n        const postPayload = {\n          body: this.whatsNewBody,\n          title: this.whatsNewTitle,\n          type: this.postTypes,\n          date: this.postID\n        };\n        const params = {\n          Key: `whatsnew/${this.postID}`,\n          ContentType: \"application/json\",\n          Body: JSON.stringify(postPayload)\n        };\n        this.awsService.getS3ByType(\"assets\").then(s3Client => {\n          s3Client.upload(params, function (err) {\n            if (err) {\n              console.log(err);\n            }\n          }).promise().then(() => {\n            this.set(\"postSuccess\", true);\n          }).catch(err => {\n            console.log(err);\n            this.set(\"postError\", true);\n          }).finally(() => {\n            this.set(\"postSaving\", false);\n            this.set(\"whatsNewBody\", null);\n            this.set(\"whatsNewTitle\", null);\n            this.set(\"whatsNewType\", null);\n            this.set(\"postID\", Date.now());\n            (0, _runloop.later)(() => {\n              this.set(\"postSuccess\", false);\n            }, 2000);\n          });\n        });\n        return {};\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/application-loading\", [\"exports\", \"@ember/service\", \"@ember/controller\"], function (_exports, _service, _controller) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@ember/controller\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _controller.default.extend({\n    sharedService: (0, _service.inject)()\n  });\n});","define(\"settify-mvp/controllers/application\", [\"exports\", \"@ember/service\", \"settify-mvp/controllers/base\", \"settify-mvp/config/environment\"], function (_exports, _service, _base, _environment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"settify-mvp/controllers/base\",0,\"settify-mvp/config/environment\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    downtimeService: (0, _service.inject)(),\n    awsService: (0, _service.inject)(),\n    sharedService: (0, _service.inject)(),\n    router: (0, _service.inject)(),\n    init() {\n      this._super(...arguments);\n      this.setupCheckAuthentication();\n    },\n    actions: {\n      forceRecordUpdate(fromCookie) {\n        this.recordpolling.updateRecord(fromCookie);\n      },\n      dismissLoggedOutMessage() {\n        this.set(\"previouslyLoggedOut\", false);\n        this.router.transitionTo(\"login\", {\n          queryParams: {\n            clientID: \"\",\n            email: \"\"\n          }\n        });\n      },\n      closeDowntimeMessage() {\n        this.downtimeService.closeDowntimeMessage();\n      }\n    },\n    setupCheckAuthentication() {\n      if (_environment.default.testing) {\n        return;\n      }\n      this.set(\"previouslyLoggedOut\", false);\n      if (this.cookies.read(\"sessionTimedOut\") === \"true\") {\n        console.log(\"previously logged out\");\n        this.set(\"previouslyLoggedOut\", true);\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/base\", [\"exports\", \"@ember/service\", \"@ember/controller\", \"settify-mvp/mixins/master-form-mixin\"], function (_exports, _service, _controller, _masterFormMixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@ember/controller\",0,\"settify-mvp/mixins/master-form-mixin\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _controller.default.extend(_masterFormMixin.default, {\n    store: (0, _service.inject)(),\n    cookies: (0, _service.inject)(),\n    session: (0, _service.inject)(),\n    router: (0, _service.inject)(),\n    recordpolling: (0, _service.inject)(),\n    previouslyLoggedOut: false,\n    actions: {\n      toggle(property) {\n        this.set(property, !this.get(property));\n      },\n      transitionTo() {\n        this.router.transitionTo(...arguments);\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/changepassword\", [\"exports\", \"@ember/object/computed\", \"@ember/service\", \"settify-mvp/controllers/base\"], function (_exports, _computed, _service, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object/computed\",0,\"@ember/service\",0,\"settify-mvp/controllers/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    newpassword: \"\",\n    currentpassword: \"\",\n    passwordValid: false,\n    errorMessage: \"\",\n    success: false,\n    session: (0, _service.inject)(),\n    cognitoService: (0, _service.inject)(\"cognitoUser\"),\n    eventLogging: (0, _service.inject)(),\n    reset() {\n      this._super(...arguments);\n      this.set(\"currentPassword\", \"\");\n      this.set(\"newPassword\", \"\");\n      this.set(\"errorMessage\", \"\");\n      this.set(\"success\", false);\n      this.set(\"passwordValid\", false);\n    },\n    canProgress: (0, _computed.and)(\"newPassword\", \"currentPassword\", \"passwordValid\"),\n    actions: {\n      changePassword() {\n        this.set(\"loading\", true);\n        this.set(\"errorMessage\", \"\");\n        this.set(\"success\", false);\n        this.cognitoService.changePassword(this.currentPassword, this.newPassword).then(() => {\n          this.set(\"success\", true);\n          this.set(\"loading\", false);\n        }).catch(err => {\n          this.set(\"errorMessage\", err);\n          this.set(\"loading\", false);\n          this.eventLogging.logError(\"Change password attempt failed\", err);\n        });\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/contact\", [\"exports\", \"@ember/object\", \"@ember/service\", \"settify-mvp/controllers/base\"], function (_exports, _object, _service, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/service\",0,\"settify-mvp/controllers/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    sendEmailToSettify: (0, _service.inject)(),\n    emailSent: false,\n    emailError: false,\n    emailReason: undefined,\n    name: \"\",\n    firmname: \"\",\n    email: \"\",\n    phone: \"\",\n    moreinfo: \"\",\n    emailValid: false,\n    reset() {\n      this._super(...arguments);\n      this.set(\"emailSent\", false);\n      this.set(\"emailError\", false);\n      this.set(\"emailReason\", undefined);\n      this.set(\"emailSending\", false);\n    },\n    canProgress: (0, _object.computed)(\"name\", \"email\", \"emailValid\", \"phone\", function () {\n      return !!this.name && !!this.phone && !!this.email && this.emailValid;\n    }),\n    sendRequest() {\n      let subject = \"New law firm enquiry\";\n      if (this.firmname) {\n        subject += ` - ${this.firmname}`;\n      }\n      let body = \"<p>New Law Firm Enquiry</p>\";\n      body += `<p>Person's name: ${this.name}</p>`;\n      body += `<p>Law firm: ${this.firmname}</p>`;\n      body += `<p>Email address: ${this.email}</p>`;\n      body += `<p>Phone number: ${this.phone}</p>`;\n      body += `<p>Additional info: ${this.moreinfo}</p>`;\n      return this.sendEmailToSettify.send(subject, body, \"contact@settify.com.au\");\n    },\n    actions: {\n      requestSupport() {\n        let caller = this;\n        caller.set(\"emailSending\", true);\n        this.sendRequest().then(function () {\n          // success\n          caller.set(\"emailSent\", true);\n          caller.set(\"emailError\", null);\n          caller.set(\"emailSending\", false);\n        }, function (reason) {\n          // on rejection\n          caller.set(\"emailSent\", false);\n          caller.set(\"emailError\", reason);\n          caller.set(\"emailSending\", false);\n        });\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/firstlogin\", [\"exports\", \"@ember/object/computed\", \"@ember/service\", \"settify-mvp/controllers/base\"], function (_exports, _computed, _service, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object/computed\",0,\"@ember/service\",0,\"settify-mvp/controllers/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    newpassword: \"\",\n    currentpassword: \"\",\n    passwordValid: false,\n    errorMessage: \"\",\n    success: false,\n    session: (0, _service.inject)(),\n    router: (0, _service.inject)(),\n    cognitoService: (0, _service.inject)(\"cognitoUser\"),\n    eventLogging: (0, _service.inject)(),\n    reset() {\n      this._super(...arguments);\n      this.set(\"newPassword\", \"\");\n      this.set(\"errorMessage\", \"\");\n      this.set(\"success\", false);\n      this.set(\"passwordValid\", false);\n    },\n    canProgress: (0, _computed.and)(\"newPassword\", \"passwordValid\"),\n    actions: {\n      changePassword() {\n        this.set(\"loading\", true);\n        this.set(\"errorMessage\", \"\");\n        this.set(\"success\", false);\n        this.cognitoService.firstLoginNewPassword(this.currentPassword, this.newPassword).then(() => {\n          // password changed so authenticate user with new password\n          this.set(\"loading\", false);\n          this.router.transitionTo(\"login\", {\n            queryParams: {\n              status: \"password-changed\",\n              isFirmLogin: null\n            }\n          });\n        }).then(() => {\n          this.set(\"success\", true);\n          this.set(\"loading\", false);\n        }).catch(error => {\n          this.set(\"loading\", false);\n          if (error === \"newPasswordRequired\" || error === \"totpRequired\") {\n            // user has mfa enabled or force password change is set, redirect to screen\n            this.router.transitionTo(\"login\", {\n              queryParams: {\n                status: \"password-changed\",\n                isFirmLogin: null\n              }\n            });\n          } else {\n            this.set(\"errorMessage\", error);\n            this.eventLogging.logError(\"failed to change user password\", error);\n          }\n        });\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/help/frozenrecord\", [\"exports\", \"@ember/object\", \"@ember/runloop\", \"@ember/service\", \"settify-mvp/controllers/base\"], function (_exports, _object, _runloop, _service, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/runloop\",0,\"@ember/service\",0,\"settify-mvp/controllers/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    password: \"\",\n    unfreezeText: \"\",\n    incorrectText: false,\n    queryParams: [\"clientID\"],\n    clientID: \"\",\n    lambda: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    clientRecords: (0, _service.inject)(),\n    reset() {\n      this._super(...arguments);\n      this.set(\"password\", \"\");\n      this.set(\"unfreezeText\", \"\");\n      this.set(\"incorrectText\", false);\n      let payload = {\n        clientID: this.clientID,\n        firmID: this.get(\"firm.id\")\n      };\n      this.lambda.invoke(this.get(\"lambda.getInformationForConflictCheckLambda\"), payload, this.session).then(this.lambda.processResponse).then(client => {\n        this.set(\"model\", client);\n      });\n    },\n    onPasswordChanged: (0, _object.observer)(\"password\", \"unfreezeText\", function () {\n      (0, _runloop.debounce)(this, \"unfreeze\", 1000);\n    }),\n    unfreeze() {\n      let {\n        password\n      } = this;\n      let unfreeze = this.unfreezeText.replace(/\\s/g, \"\").toLowerCase();\n      if (!password || !unfreeze) {\n        return;\n      }\n      if (unfreeze !== this.generateUnfreezeText()) {\n        this.set(\"incorrectText\", true);\n        return;\n      }\n      this.set(\"incorrectText\", false);\n      this.set(\"unfreezeInProgress\", true);\n      this.set(\"unfreezeSuccess\", false);\n      this.set(\"unfreezeFailed\", false);\n      return this.lambda.invoke(this.get(\"lambda.unfreezeClientLambda\"), {\n        id: this.clientID,\n        firmID: \"999999999-SETTIFY\",\n        password: password,\n        unfreeze: unfreeze\n      }).then(this.lambda.processResponse).then(data => {\n        this.set(\"unfreezeSuccess\", data.success);\n        this.set(\"unfreezeFailed\", !data.success ? \"Unfreeze failed - did you provide the correct password?\" : \"\");\n      }).catch(e => {\n        this.set(\"unfreezeFailed\", e);\n      }).finally(() => {\n        this.set(\"unfreezeInProgress\", false);\n      });\n    },\n    unfreezeHeading: (0, _object.computed)(\"model.client.{firstName,surname,email}\", function () {\n      if (this.get(\"model.client.firstName\") && this.get(\"model.client.surname\")) {\n        return \"I am unfreezing the record for [firstname] [surname]\";\n      }\n      if (this.get(\"model.client.email\")) {\n        return \"I am unfreezing the record for [email]\";\n      }\n      return \"I am unfreezing the record\";\n    }),\n    generateUnfreezeText() {\n      let requiredText = this.unfreezeHeading;\n      if (this.get(\"model.client.firstName\") && this.get(\"model.client.surname\")) {\n        requiredText = requiredText.replace(\"[firstname] [surname]\", `${this.get(\"model.client.firstName\")}${this.get(\"model.client.surname\")}`);\n      }\n      if (this.get(\"model.client.email\")) {\n        requiredText = requiredText.replace(\"[email]\", this.get(\"model.client.email\"));\n      }\n      return requiredText.replace(/\\s/g, \"\").toLowerCase();\n    }\n  });\n});","define(\"settify-mvp/controllers/help/legacyrecord\", [\"exports\", \"@ember/controller\", \"@ember/service\"], function (_exports, _controller, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let HelpLegacyrecordController = _exports.default = (_dec = (0, _service.service)(\"dynamic-config\"), _class = class HelpLegacyrecordController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"config\", _descriptor, this);\n      _defineProperty(this, \"queryParams\", [\"clientID\"]);\n    }\n    get legacyRecordUrl() {\n      const domain = this.config.location.host.match(/\\.settify.*/)[0]; // extracts settify.xxx\n      const subdomain = this.config.location.hostname.split(\".\")[0];\n      if (!domain || !subdomain) return null;\n      const practiceArea = this.practiceAreaDomain(this.model.practiceArea);\n      return `https://${subdomain}${practiceArea}${domain}/?clientID=${this.clientID}`;\n    }\n    practiceAreaDomain(practiceArea) {\n      const extenstions = {\n        Wills: \".wills\",\n        Probate: \".probate\",\n        Estates: \".estates\",\n        default: \"\"\n      };\n      return extenstions[practiceArea] || extenstions.default;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"config\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/controllers/index\", [\"exports\", \"@ember/service\", \"@ember/object\", \"settify-mvp/controllers/base\", \"settify-mvp/mixins/upload-download\", \"settify-mvp/mixins/practice-areas\"], function (_exports, _service, _object, _base, _uploadDownload, _practiceAreas) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@ember/object\",0,\"settify-mvp/controllers/base\",0,\"settify-mvp/mixins/upload-download\",0,\"settify-mvp/mixins/practice-areas\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend(_uploadDownload.default, _practiceAreas.default, {\n    sendEmailToSettify: (0, _service.inject)(),\n    lambda: (0, _service.inject)(),\n    router: (0, _service.inject)(),\n    emailSent: false,\n    emailError: false,\n    emailReason: undefined,\n    name: \"\",\n    firmname: \"\",\n    email: \"\",\n    phone: \"\",\n    moreinfo: \"\",\n    practiceArea: null,\n    emailValid: false,\n    firm: (0, _service.inject)(),\n    firmName: (0, _object.computed)(\"model.client.selectedMockFirm\", \"model.client.mockFirmName\", \"firm.name\", function () {\n      let firm = this.get(\"model.client.selectedMockFirm\");\n      if (firm === \"custom\" && this.get(\"model.client.mockFirmName\")) {\n        return this.get(\"model.client.mockFirmName\");\n      }\n      return this.get(\"firm.name\");\n    }),\n    canProgress: (0, _object.computed)(\"name\", \"email\", \"emailValid\", \"phone\", \"practiceArea\", function () {\n      return !!this.name && !!this.phone && !!this.email && this.emailValid && this.practiceArea;\n    }),\n    sendRequest() {\n      let subject = \"New law firm enquiry\";\n      if (this.firmname) {\n        subject += ` - ${this.firmname}`;\n      }\n      let body = \"<p>New Law Firm Enquiry</p>\";\n      body += `<p>Person's name: ${this.name}</p>`;\n      body += `<p>Law firm: ${this.firmname}</p>`;\n      body += `<p>Email address: ${this.email}</p>`;\n      body += `<p>Phone number: ${this.phone}</p>`;\n      body += `<p>Practice area: ${this.practiceArea || \"not specified\"}</p>`;\n      body += `<p>What sparked your interest in Settify: ${this.moreinfo}</p>`;\n      return this.sendEmailToSettify.send(subject, body, \"contact@settify.com.au\", [\"admin@settify.com.au\"]);\n    },\n    reset() {\n      this._super(...arguments);\n      this.set(\"emailSent\", false);\n      this.set(\"emailError\", false);\n      this.set(\"emailReason\", undefined);\n      this.set(\"emailSending\", false);\n\n      // extrapolate data since our last measured point\n      let today = Date.now();\n      let startDate = new Date(2017, 1, 1).getTime(); // 1st of February\n      let measureDate = new Date(2018, 8, 18).getTime(); // 18 September\n      let percent = (today - startDate) / (measureDate - startDate);\n      this.set(\"newClientsEngaged\", percent * 17397);\n      this.set(\"totalAssetPools\", percent * 12.131); // $1.871 average asset pool * 6484 clients\n      this.set(\"nonBillableHoursSaved\", percent * 4951.25);\n      this.set(\"totalFamilyLawyers\", 600);\n      this.set(\"totalFamilyLawFirms\", 95);\n    },\n    actions: {\n      downloadFile(filename, onReadState) {\n        this.downloadFile(filename, (err /* , data */) => {\n          if (!err) {\n            if (onReadState) {\n              this.set(`model.client.${onReadState}`, \"read\");\n            }\n            this.model.client.save();\n          }\n        });\n      },\n      gotoDemo() {\n        location.href = \"#book-demo\";\n      },\n      gotoDownload() {\n        this.router.transitionTo(\"download\");\n      },\n      requestSupport() {\n        let caller = this;\n        let payload = {\n          email: this.email,\n          practiceArea: this.practiceArea || \"All\",\n          requestedDemo: true\n        };\n        caller.set(\"emailSending\", true);\n        this.sendRequest().then(() => {\n          this.lambda.invoke(this.get(\"lambda.emailBrochureDownloadLambda\"), payload);\n        }).then(function () {\n          // success\n          caller.set(\"emailSent\", true);\n          caller.set(\"emailError\", null);\n          caller.set(\"emailSending\", false);\n        }, function (reason) {\n          // on rejection\n          caller.set(\"emailSent\", false);\n          caller.set(\"emailError\", reason);\n          caller.set(\"emailSending\", false);\n        });\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/login\", [\"exports\", \"@ember/test-waiters\", \"@ember/runloop\", \"@ember/object\", \"@ember/controller\", \"@ember/service\", \"settify-mvp/controllers/base\"], function (_exports, _testWaiters, _runloop, _object, _controller, _service, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/test-waiters\",0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/controller\",0,\"@ember/service\",0,\"settify-mvp/controllers/base\"eaimeta@70e063a35619d71f\n  const waiter = (0, _testWaiters.buildWaiter)(\"login-waiter\");\n  var _default = _exports.default = _base.default.extend({\n    queryParams: [\"status\", \"isFirmLogin\", \"email\", \"clientID\"],\n    cookies: (0, _service.inject)(),\n    session: (0, _service.inject)(),\n    router: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    cognitoUser: (0, _service.inject)(),\n    lambda: (0, _service.inject)(),\n    application: (0, _controller.inject)(),\n    status: null,\n    isFirmLogin: null,\n    totpRequired: false,\n    totp: null,\n    clientID: \"\",\n    email: \"\",\n    reset() {\n      this._super(...arguments);\n      this.set(\"password\", null);\n      this.set(\"loading\", false);\n      this.set(\"errorMessage\", false);\n      this.set(\"loggedOut\", false);\n      this.set(\"wrongsite\", false);\n      this.set(\"totpRequired\", false);\n      this.set(\"totp\", null);\n      this.set(\"totpIncorrect\", false);\n      this.set(\"showExpiredMessage\", false);\n      this.set(\"errorResending\", false);\n    },\n    canVerifyTOTP: (0, _object.computed)(\"totp\", function () {\n      const {\n        totp\n      } = this;\n      if (!totp || totp.length !== 6 || totp.match(/[^0-9]/)) {\n        return false;\n      }\n      return true;\n    }),\n    checkFreshPasswordLength() {\n      const passwordAfterDebounce = this.password;\n      if (!passwordAfterDebounce) {\n        this.set(\"showPasswordLengthWarning\", false);\n        return;\n      }\n      if (passwordAfterDebounce.length !== 9) {\n        this.set(\"showPasswordLengthWarning\", true);\n      } else {\n        this.set(\"showPasswordLengthWarning\", false);\n      }\n    },\n    passwordObserver: (0, _object.observer)(\"password\", function () {\n      if (this.get(\"model.isFirmLogin\")) {\n        // Trim the password if its a firm login\n        const password = this.password || \"\";\n        const newPassword = password.trim();\n        if (password !== newPassword) {\n          this.set(\"password\", newPassword);\n        }\n\n        // and make sure it's the right length\n        (0, _runloop.debounce)(this, \"checkFreshPasswordLength\", 750);\n      }\n    }),\n    actions: {\n      invalidateSession() {\n        this.session.invalidate();\n        this.set(\"loggedOut\", true);\n      },\n      authenticate(useClientPool) {\n        this.set(\"loading\", true);\n        this.set(\"errorMessage\", false);\n        this.set(\"wrongsite\", false);\n        this.set(\"loggedOut\", false);\n        const waitToken = waiter.beginAsync(); // wait token for loading\n\n        const props = this.getProperties(\"model.email\", \"password\");\n        const identification = props[\"model.email\"];\n        this.session.authenticate(\"authenticator:awscognito\", {\n          action: \"authenticate\",\n          identification,\n          password: props.password,\n          useClientPool\n        }).catch(reason => {\n          if (reason === \"newPasswordRequired\") {\n            console.debug(\"new password required\");\n            // success of sorts - redirect to \"first login\" page\n            this.router.transitionTo(\"firstlogin\");\n            return;\n          }\n          if (reason === \"totpRequired\") {\n            console.debug(\"MFA token required\");\n            // success of sorts - we just need to supply the TOTP\n            this.set(\"totpRequired\", true);\n            this.focusTOTPField();\n            return;\n          }\n          if (reason === \"wrongsite\") {\n            this.set(\"wrongsite\", true);\n            this.cookies.clear(\"clientID\", {\n              path: \"/\"\n            });\n            return;\n          }\n          if (reason.code === \"NotAuthorizedException\" && reason.message === \"Temporary password has expired and must be reset by an administrator.\") {\n            return this.lambda.invoke(this.get(\"lambda.recreateFirmUserLambda\"), {\n              firmID: this.get(\"firm.id\"),\n              username: identification\n            }).then(() => {\n              this.set(\"showExpiredMessage\", true);\n            }).catch(() => {\n              this.set(\"errorResending\", true);\n            });\n          }\n          if (useClientPool) {\n            console.debug(\"Giving up, we failed to authenticate user...\");\n            this.set(\"errorMessage\", reason ? reason.error || reason : \"Unknown server error\");\n          } else {\n            // try again in the public user pool\n            console.debug(\"Trying client cognito pool...\");\n            this.send(\"authenticate\", true);\n          }\n        }).finally(() => {\n          this.set(\"loading\", false);\n          waiter.endAsync(waitToken);\n        });\n      },\n      cancelLogin() {\n        if (this.get(\"session.attemptedTransition\")) {\n          // user attempted to access a protected page, but now they've decided they don't want to\n          // clear cookies and session before returning to home page\n          const cookieService = this.cookies;\n          cookieService.clear(\"clientID\", {\n            path: \"/\"\n          });\n          this.session.set(\"attemptedTransition\", null);\n        }\n        this.router.transitionTo(\"index\");\n      },\n      verifyTOTP() {\n        this.cognitoUser.provideTOTP(this.totp).then(() => {\n          this.session.authenticate(\"authenticator:awscognito\", {\n            action: \"totp-verified\"\n          });\n        }).catch(() => {\n          this.set(\"totp\", null);\n          this.set(\"totpRequired\", false);\n          this.set(\"totpIncorrect\", true);\n        });\n      }\n    },\n    focusTOTPField() {\n      let el = document.body.querySelectorAll('[name=\"totp_input\"]');\n      if (el && el.length) {\n        el = el[0];\n        el.focus();\n      } else {\n        (0, _runloop.later)(this, function () {\n          this.focusTOTPField();\n        }, 50);\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/mfa\", [\"exports\", \"@ember/object\", \"@ember/service\", \"settify-mvp/controllers/base\"], function (_exports, _object, _service, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/service\",0,\"settify-mvp/controllers/base\"eaimeta@70e063a35619d71f\n  /* global QRCode */\n  var _default = _exports.default = _base.default.extend({\n    errorMessage: \"\",\n    success: false,\n    session: (0, _service.inject)(),\n    cognitoUser: (0, _service.inject)(),\n    eventLogging: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    canProgress: (0, _object.computed)(\"mfaSetupResponse\", function () {\n      const value = this.mfaSetupResponse;\n      if (!value || value.length !== 6 || value.match(/[^0-9]/)) {\n        return false;\n      }\n      return true;\n    }),\n    reset() {\n      this._super(...arguments);\n      if (!this.get(\"session.data.authenticated.mfaEnabled\") && !this.get(\"session.totpCreated\")) {\n        const user = this.get(\"cognitoUser.user\");\n        if (user) {\n          user.associateSoftwareToken({\n            associateSecretCode: secretCode => {\n              this.set(\"secretCode\", secretCode);\n              const encodedURI = `otpauth://totp/MFA:${this.get(\"session.data.authenticated.username\")}?secret=${secretCode}&issuer=Settify`;\n              const qrElement = document.getElementById(\"qrcode\");\n              if (qrElement) {\n                new QRCode(qrElement, encodedURI);\n              } else {\n                console.log(\"Unable to find qrcode element:\", encodedURI);\n              }\n              // var challengeAnswer = prompt('Please input the TOTP code.' ,'');\n              // user.verifySoftwareToken(challengeAnswer, 'My TOTP device', this);\n            },\n            onFailure: err => {\n              console.log(\"Failed to begin setup of MFA\");\n              console.log(err);\n            },\n            onSuccess: () => {\n              this.set(\"success\", true);\n            }\n          });\n        }\n      }\n    },\n    actions: {\n      completeMFASetup() {\n        const user = this.get(\"cognitoUser.user\");\n        const code = this.mfaSetupResponse;\n        const that = this;\n        user.verifySoftwareToken(code, \"settify-webapp\", {\n          onFailure(err) {\n            console.log(\"Failed to setup MFA\");\n            console.log(err);\n            that.set(\"mfaError\", true);\n          },\n          onSuccess() {\n            // console.log(\"Successfully configured MFA\");\n            const totpMfaSettings = {\n              PreferredMfa: true,\n              Enabled: true\n            };\n            user.setUserMfaPreference(null, totpMfaSettings, function (err) {\n              if (err) {\n                console.log(\"Error: \", err.message || JSON.stringify(err));\n              } else {\n                that.set(\"session.totpCreated\", true);\n                that.set(\"session.data.authenticated.mfaEnabled\", true);\n                if (that.get(\"firm.settings.requireMFA\")) {\n                  // we were required to set up MFA before progressing\n                  that.router.transitionTo(\"admin.index\");\n                } else {\n                  // just a conscientious user\n                  that.set(\"success\", true);\n                }\n              }\n            });\n          }\n        });\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/onboard\", [\"exports\", \"settify-mvp/controllers/base\"], function (_exports, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/controllers/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    actions: {\n      selectSettifyEmail() {\n        this.set(\"model.onboardingPreference\", \"settifyemail\");\n        window.scrollTo(0, 0);\n      }\n    }\n  });\n});","define(\"settify-mvp/controllers/partners\", [\"exports\", \"settify-mvp/controllers/base\"], function (_exports, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/controllers/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({});\n});","define(\"settify-mvp/controllers/resetpassword\", [\"exports\", \"@ember/runloop\", \"@ember/service\", \"settify-mvp/controllers/base\", \"settify-mvp/utils/email-utils\"], function (_exports, _runloop, _service, _base, _emailUtils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/service\",0,\"settify-mvp/controllers/base\",0,\"settify-mvp/utils/email-utils\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    email: \"\",\n    loading: false,\n    errorMessage: false,\n    emailSent: false,\n    queryParams: [\"email\", \"validationCode\"],\n    newPassword: null,\n    passwordValid: false,\n    firm: (0, _service.service)(),\n    lambda: (0, _service.service)(),\n    router: (0, _service.service)(),\n    awsService: (0, _service.service)(),\n    reset() {\n      this._super(...arguments);\n      this.set(\"emailAddress\", \"\");\n      this.set(\"loading\", false);\n      this.set(\"errorMessage\", null);\n      this.set(\"emailSent\", false);\n      this.set(\"newPassword\", null);\n      this.set(\"passwordValid\", false);\n    },\n    actions: {\n      sendResetEmail() {\n        this.set(\"loading\", true);\n        this.set(\"errorMessage\", null);\n        this.set(\"emailSent\", false);\n        (0, _runloop.run)(() => {\n          this.forgotPassword(this.emailAddress, true);\n        });\n      },\n      changePassword() {\n        this.set(\"loading\", true);\n        this.set(\"errorMessage\", null);\n        this.set(\"emailSent\", false);\n        (0, _runloop.run)(() => {\n          this.confirmPassword((0, _emailUtils.decodeEmailAddress)(this.email));\n        });\n      }\n    },\n    forgotPassword(emailAddress, isLawyer, generalResult) {\n      const cognitoUser = this.awsService.getCognitoUser(emailAddress, isLawyer);\n      cognitoUser.forgotPassword({\n        onSuccess: (/* result */\n        ) => {\n          this.set(\"loading\", false);\n          this.set(\"emailSent\", true);\n        },\n        onFailure: err => {\n          if (isLawyer) {\n            if (err.code !== \"UserNotFoundException\") {\n              console.log(\"Error resetting password:\", err);\n            }\n            if (err.code === \"NotAuthorizedException\" && err.message === \"User password cannot be reset in the current state.\") {\n              // Password has expired\n              return this.lambda.invoke(this.get(\"lambda.recreateFirmUserLambda\"), {\n                firmID: this.get(\"firm.id\"),\n                username: emailAddress\n              }).then(() => {\n                this.set(\"emailSent\", true);\n              }).catch(() => {\n                this.set(\"errorMessage\", true);\n              }).finally(() => {\n                this.set(\"loading\", false);\n              });\n            }\n            this.forgotPassword(emailAddress, false, err);\n          } else {\n            if (err.code !== \"UserNotFoundException\") {\n              console.log(\"Error resetting password:\", err);\n            }\n            this.set(\"loading\", false);\n            if (generalResult.code === \"UserNotFoundException\" && err.code === \"UserNotFoundException\") {\n              // don't make account enumeration easy - if username wasn't found, pretend it was and return success\n              this.set(\"emailSent\", true);\n            } else {\n              this.set(\"errorMessage\", true);\n            }\n          }\n        }\n      });\n    },\n    confirmPassword(emailAddress, isLawyer) {\n      const cognitoUser = this.awsService.getCognitoUser(emailAddress, isLawyer);\n      (0, _runloop.run)(() => {\n        cognitoUser.confirmPassword(this.validationCode, this.newPassword, {\n          onSuccess: () => {\n            this.set(\"loading\", false);\n            this.router.transitionTo(\"login\", {\n              queryParams: {\n                status: \"password-changed\",\n                isFirmLogin: null\n              }\n            });\n          },\n          onFailure: err => {\n            if (isLawyer) {\n              console.debug(\"Giving up, we failed to reset password...\", err);\n              this.set(\"loading\", false);\n              this.set(\"errorMessage\", true);\n            } else {\n              console.debug(\"Trying reset using lawyer pool...\");\n              this.confirmPassword(emailAddress, true);\n            }\n          }\n        });\n      });\n    }\n  });\n});","define(\"settify-mvp/controllers/v2/admin\", [\"exports\", \"@ember/controller\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/service\"], function (_exports, _controller, _tracking, _object, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminController = _exports.default = (_class = class AdminController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"router\", _descriptor, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor2, this);\n      _initializerDefineProperty(this, \"isSidebarOpen\", _descriptor3, this);\n      _initializerDefineProperty(this, \"hasOverdueInvoices\", _descriptor4, this);\n    }\n    /**\n     * Handles changes to the sidebar state.\n     * @param {boolean} newState - The new state of the sidebar (open or closed).\n     */\n    setSidebarState(newState) {\n      // Default to `false` if invalid state is passed\n      this.isSidebarOpen = typeof newState === \"boolean\" ? newState : false;\n    }\n    goToBilling() {\n      this.router.transitionTo(\"v2.admin.billing\");\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"isSidebarOpen\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"hasOverdueInvoices\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"setSidebarState\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"setSidebarState\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"goToBilling\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"goToBilling\"), _class.prototype), _class);\n});","define(\"settify-mvp/controllers/v2/admin/billing\", [\"exports\", \"@ember/controller\", \"@glimmer/tracking\", \"@ember/object\"], function (_exports, _controller, _tracking, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@glimmer/tracking\",0,\"@ember/object\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminBillingController = _exports.default = (_class = class AdminBillingController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"showInvoiceDropdown\", _descriptor, this);\n    }\n    toggleInvoiceDropdown(index) {\n      const menuItemClicked = this.model.invoiceRequests[index];\n      this.showInvoiceDropdown = this.showInvoiceDropdown?.id === menuItemClicked?.id ? null : menuItemClicked;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"showInvoiceDropdown\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"toggleInvoiceDropdown\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleInvoiceDropdown\"), _class.prototype), _class);\n});","define(\"settify-mvp/controllers/v2/admin/billing/index\", [\"exports\", \"@ember/controller\", \"@glimmer/tracking\", \"@ember/service\", \"@ember/object\"], function (_exports, _controller, _tracking, _service, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@glimmer/tracking\",0,\"@ember/service\",0,\"@ember/object\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminBillingController = _exports.default = (_class = class AdminBillingController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"lambda\", _descriptor, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor2, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor3, this);\n      _initializerDefineProperty(this, \"notifications\", _descriptor4, this);\n      _initializerDefineProperty(this, \"showInvoiceDropdown\", _descriptor5, this);\n      _initializerDefineProperty(this, \"loadingStripeUrl\", _descriptor6, this);\n    }\n    toggleInvoiceDropdown(index) {\n      const menuItemClicked = this.model.invoiceRequests[index];\n      this.showInvoiceDropdown = this.showInvoiceDropdown?.id === menuItemClicked?.id ? null : menuItemClicked;\n    }\n    onClickedOutside(index) {\n      const menuItemClicked = this.model.invoiceRequests[index];\n      if (this.showInvoiceDropdown?.id === menuItemClicked?.id) this.showInvoiceDropdown = null;\n    }\n    async goToStripePortal() {\n      this.loadingStripeUrl = true;\n      try {\n        const {\n          portalURL\n        } = await this.lambda.invoke(this.lambda.getStripePortalUrlLambda, {\n          firmID: this.firm.id,\n          returnURL: window.location.href\n        }).then(this.lambda.processResponse);\n        window.location.href = portalURL;\n      } catch (error) {\n        this.notifications.notify({\n          title: \"Error loading Stripe\",\n          icon: \"error\",\n          message: \"Please try again or contact Settify support.\",\n          canDismiss: true\n        }, 6000);\n        this.eventLogging.logError(\"Failed to load or navigate to a Stripe portal URL\", error);\n      } finally {\n        this.loadingStripeUrl = false;\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"notifications\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"showInvoiceDropdown\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"loadingStripeUrl\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"toggleInvoiceDropdown\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleInvoiceDropdown\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"onClickedOutside\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"onClickedOutside\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"goToStripePortal\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"goToStripePortal\"), _class.prototype), _class);\n});","define(\"settify-mvp/controllers/v2/admin/billing/invoice\", [\"exports\", \"@ember/controller\", \"@ember/object\", \"@ember/service\", \"moment\"], function (_exports, _controller, _object, _service, _moment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/object\",0,\"@ember/service\",0,\"moment\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  /* global saveAs */\n  let AdminBillingInvoiceController = _exports.default = (_class = class AdminBillingInvoiceController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor2, this);\n      _initializerDefineProperty(this, \"lambda\", _descriptor3, this);\n      _initializerDefineProperty(this, \"notifications\", _descriptor4, this);\n      _initializerDefineProperty(this, \"store\", _descriptor5, this);\n    }\n    get invoiceRequestSentDate() {\n      return (0, _moment.default)(this.model.invoiceRequest.requestSent).format(\"MMMM DD, YYYY\");\n    }\n    get invoiceIDForDisplay() {\n      return this.model.invoiceRequest.invoiceNumber || this.model.invoiceRequest.xeroInvoiceNumber || this.model.invoiceRequest.id;\n    }\n\n    // TODO: Consider getting this information directly from the backend\n    // Due date can be modified through the setting (paymentTerm) so it does not mean\n    // it will stay 7 days after the invoice is sent in the future.\n    get invoiceRequestDueDate() {\n      return (0, _moment.default)(this.invoiceRequestSentDate).add(7, \"days\").format(\"MMMM DD, YYYY\");\n    }\n    get showPaymentLink() {\n      if (this.model.invoiceRequest.status === \"paid\") return false;\n      return this.model.invoiceRequest.paymentUrl && this.model.invoiceRequest.requestCompleted;\n    }\n    get showDisbursementReport() {\n      if (this.model.invoiceRequest.paymentUrl && this.model.billedLeads.length) {\n        // Check if any practice area has a \"disbursesFee\" value\n        const settingsArray = this.store.peekAll(\"settings\").toArray();\n        return settingsArray.some(settings => settings.disbursesFees);\n      }\n      return false;\n    }\n    get hasLeadsConversionTypeClients() {\n      return this.model.allLeads.some(lead => lead.conversionTypeAtReferralDate && lead.conversionTypeAtReferralDate.startsWith(\"LEADS_\"));\n    }\n    async downloadDisbursementReport() {\n      const notification = {\n        title: `Downloading disbursement report file`,\n        icon: \"loading\",\n        message: \"Preparing file for download...\",\n        canDismiss: false\n      };\n      const payload = {\n        firmID: this.firm.id,\n        invoiceID: this.model.invoiceRequest.id\n      };\n      try {\n        this.notifications.add(notification);\n        const reportBuffer = await this.lambda.invoke(this.lambda.disbursementReportLambda, payload).then(this.lambda.processResponse);\n        const blob = new Blob([reportBuffer], {\n          type: \"application/text;charset=utf-8\"\n        });\n        await saveAs(blob, `Disbursement Report - ${this.invoiceIDForDisplay}.pdf`);\n        this.notifications.notify({\n          title: `Disbursement report downloaded`,\n          icon: \"success\"\n        }, 6000);\n      } catch (error) {\n        this.eventLogging.logError(`Error downloading disbursement report for invoice #${this.invoiceIDForDisplay}`, error);\n        this.notifications.notify({\n          title: `Error downloading disbursement report for invoice #${this.invoiceIDForDisplay}`,\n          icon: \"error\"\n        }, 6000);\n        throw error;\n      } finally {\n        this.notifications.remove(notification);\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"notifications\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"store\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"downloadDisbursementReport\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"downloadDisbursementReport\"), _class.prototype), _class);\n});","define(\"settify-mvp/controllers/v2/admin/billing/review\", [\"exports\", \"@ember/controller\"], function (_exports, _controller) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\"eaimeta@70e063a35619d71f\n  class AdminBillingReviewController extends _controller.default {\n    get allCompleted() {\n      const completedProperty = \"billingSweepCompleted\";\n      return this.model.leads?.every(lead => lead[completedProperty]);\n    }\n    get hasLeadsConversionTypeClients() {\n      return this.model.leads.some(lead => lead.conversionTypeAtReferralDate && lead.conversionTypeAtReferralDate.startsWith(\"LEADS_\"));\n    }\n  }\n  _exports.default = AdminBillingReviewController;\n});","define(\"settify-mvp/controllers/v2/admin/clients\", [\"exports\", \"@ember/controller\", \"@ember/object\", \"rsvp\", \"@ember/service\", \"moment\"], function (_exports, _controller, _object, _rsvp, _service, _moment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/object\",0,\"rsvp\",0,\"@ember/service\",0,\"moment\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let ClientsController = _exports.default = (_class = class ClientsController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"recordpolling\", _descriptor, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor2, this);\n      _initializerDefineProperty(this, \"questionnaireLogic\", _descriptor3, this);\n    }\n    get appointmentRequestedString() {\n      const referralDate = this.model.metadata.referredToFirmDate;\n      if (referralDate) {\n        return _moment.default.utc(referralDate).format(\"dddd D MMMM YYYY\");\n      }\n      return \"\";\n    }\n    get lastModifiedString() {\n      const timestamp = this.recordpolling.getReferenceLastModified(this.model.client.id);\n      return (0, _moment.default)(timestamp).format(\"dddd D MMMM YYYY\");\n    }\n    get shouldDisplayNavAndSidebar() {\n      return this.model.client.isFormsRecord && !this.isInvitedAndDetailedInductionNotCompleted;\n    }\n    get isInvitedAndDetailedInductionNotCompleted() {\n      return this.model.client.invitedByLawFirm && !this.model.client.detailedInductionComplete;\n    }\n    async saveClientRecord() {\n      this.model.client.readOnly = false;\n      await this.model.client.save();\n      this.model.client.readOnly = true;\n    }\n    sendDataToIntegration(json) {\n      return (0, _rsvp.resolve)(json);\n    }\n    async unsubscribe() {\n      await this.eventLogging.log(this.model.metadata.clientID, this.eventLogging.IDs.Unsubscribed, true);\n      this.model.metadata.unsubscribed = true;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"recordpolling\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"questionnaireLogic\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"unsubscribe\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"unsubscribe\"), _class.prototype), _class);\n});","define(\"settify-mvp/controllers/v2/admin/index\", [\"exports\", \"@ember/controller\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/service\", \"@ember/template\"], function (_exports, _controller, _tracking, _object, _service, _template) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/template\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminIndexController = _exports.default = (_class = class AdminIndexController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"lambda\", _descriptor, this);\n      _initializerDefineProperty(this, \"store\", _descriptor2, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor3, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor4, this);\n      _initializerDefineProperty(this, \"session\", _descriptor5, this);\n      _initializerDefineProperty(this, \"notifications\", _descriptor6, this);\n      _initializerDefineProperty(this, \"router\", _descriptor7, this);\n      _initializerDefineProperty(this, \"selectedClient\", _descriptor8, this);\n      _initializerDefineProperty(this, \"showResetConflictModal\", _descriptor9, this);\n      _defineProperty(this, \"resetConflictModalQuestionTitle\", () => (0, _template.htmlSafe)(`Are you sure you want to reset the conflict status for ${this.selectedClient.settifySensitiveName}?`));\n    }\n    get ctaButtons() {\n      return [];\n    }\n    async saveClientChanges(client = this.selectedClient) {\n      const payload = {\n        firmID: this.firm.id,\n        clientID: client.clientID,\n        notes: client.firmNotes\n      };\n      this.eventLogging.adminLog(client.clientID, this.eventLogging.adminIDs.noteAdded, null, null, client.practiceArea);\n      await this.lambda.invoke(this.lambda.updateFirmNotesLambda, payload, this.session);\n      this.toggleSelectedClient(null);\n    }\n    toggleSelectedClient(clientID) {\n      const shouldUnselectClient = !clientID || this.selectedClient?.clientID === clientID;\n      const selectedClient = shouldUnselectClient ? null : this.store.peekRecord(\"lead\", clientID);\n      const requiresConflictCheck = selectedClient && !selectedClient.conflictCheckCompleted;\n      const canViewClientBrief = selectedClient && !selectedClient.hasConflict;\n      if (requiresConflictCheck) {\n        // don't show slide, navigate to conflict check\n        this.router.transitionTo(\"v2.admin.conflict\", clientID);\n      } else if (canViewClientBrief) {\n        // don't show slide, navigate to client brief\n        this.router.transitionTo(\"v2.admin.clients\", clientID);\n      } else {\n        // toggle slide out for conflicted clients\n        this.selectedClient = selectedClient;\n      }\n    }\n    toggleModal(prop) {\n      this[prop] = !this[prop];\n    }\n    async resetConflict() {\n      const payload = {\n        clientID: this.selectedClient.clientID,\n        firmID: this.firm.id,\n        action: \"reset\",\n        username: this.session.data.authenticated.username\n      };\n      try {\n        await this.lambda.invoke(this.lambda.undoConflictLambda, payload);\n        // Fetch the lead list again to update the buttons\n        await this.store.query(\"lead\", {\n          firmID: this.firm.id,\n          size: 500\n        });\n      } catch (err) {\n        this.setResetConflictErrorNotification();\n        this.eventLogging.logError(\"Failed to reset conflict check\", err);\n      }\n    }\n\n    /**\n     * Adds an error message to the notification service to show resetting conflict failed.\n     * @param {String} message - The message to add to the notification service\n     */\n    setResetConflictErrorNotification(message = \"There was an issue resetting the conflict. If this issue persists, please contact Settify Support.\") {\n      this.notifications.add({\n        title: \"Reset conflict failed\",\n        icon: \"error\",\n        canDismiss: true,\n        message\n      });\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"store\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"notifications\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"selectedClient\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _descriptor9 = _applyDecoratedDescriptor(_class.prototype, \"showResetConflictModal\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"saveClientChanges\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"saveClientChanges\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"toggleSelectedClient\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleSelectedClient\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"toggleModal\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleModal\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"resetConflict\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"resetConflict\"), _class.prototype), _class);\n});","define(\"settify-mvp/controllers/v2/admin/integrations/index\", [\"exports\", \"@ember/controller\", \"@ember/service\", \"@ember/object\"], function (_exports, _controller, _service, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/service\",0,\"@ember/object\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminIntegrationsIndexController = _exports.default = (_class = class AdminIntegrationsIndexController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"lambda\", _descriptor, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor2, this);\n    }\n    startAuthenticationProcess(integration) {\n      // TODO: For now we hardcode to use the family practice area (when we get global settings this should change)\n      window.localStorage.setItem(\"pmsAuthContext\", JSON.stringify({\n        pmsID: integration.id,\n        practiceArea: \"Family\"\n      }));\n\n      // Redirect to our auth subdomain, to save a cookie, before going to the PMS authentication page\n      if (integration?.authentication?.authenticateURL) {\n        const encodedRedirectURL = encodeURIComponent(integration.authentication.authenticateURL);\n        const encodedSourceURL = encodeURIComponent(window.location.href.split(\"?\")[0]); // Drop any query params (in case they still have an authCode)\n        return window.location.replace(`https://auth.settify.com.au?redirectURL=${encodedRedirectURL}&sourceURL=${encodedSourceURL}`);\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"startAuthenticationProcess\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"startAuthenticationProcess\"), _class.prototype), _class);\n});","define(\"settify-mvp/controllers/v2/admin/integrations/integration\", [\"exports\", \"@ember/controller\", \"@ember/service\", \"@ember/object\", \"@glimmer/tracking\"], function (_exports, _controller, _service, _object, _tracking) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/service\",0,\"@ember/object\",0,\"@glimmer/tracking\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminIntegrationsIntegrationController = _exports.default = (_class = class AdminIntegrationsIntegrationController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"lambda\", _descriptor, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor2, this);\n      _initializerDefineProperty(this, \"router\", _descriptor3, this);\n      _initializerDefineProperty(this, \"store\", _descriptor4, this);\n      _initializerDefineProperty(this, \"notifications\", _descriptor5, this);\n      _initializerDefineProperty(this, \"localPmsSettings\", _descriptor6, this);\n      // Represents pms settings locally to the route (not yet saved) but tracked to be able to use re-rendering if needed.\n      _initializerDefineProperty(this, \"disconnecting\", _descriptor7, this);\n      _initializerDefineProperty(this, \"savingPmsSettings\", _descriptor8, this);\n    }\n    get ctaButtons() {\n      return [{\n        title: \"Save\",\n        loadingText: \"Saving\",\n        loading: this.savingPmsSettings,\n        disabled: !this.canSave,\n        variant: \"solid\",\n        onClick: () => this.savePmsSettings()\n      }];\n    }\n    async disconnectPms() {\n      const firmID = this.firm.id;\n      const productName = this.model.pmsMetadata.id;\n      this.disconnecting = true;\n      try {\n        const {\n          disconnected,\n          message\n        } = await this.lambda.invoke(this.lambda.disconnectLambda, {\n          firmID,\n          productName\n        }).then(this.lambda.processResponse);\n        if (!disconnected) {\n          this.notifications.add({\n            title: \"PMS disconnect failed\",\n            icon: \"error\",\n            canDismiss: true,\n            message\n          });\n          return;\n        }\n        this.clearSelectedPMS();\n        this.router.transitionTo(\"v2.admin.integrations\");\n      } catch (error) {\n        console.log(error);\n        this.notifications.add({\n          title: \"PMS disconnect failed\",\n          icon: \"error\",\n          canDismiss: true,\n          message: \"Unable to disconnect the integration right now.\"\n        });\n      } finally {\n        this.disconnecting = false;\n      }\n    }\n    updatePmsSetting(settingName, value) {\n      this.localPmsSettings = {\n        ...this.localPmsSettings,\n        [settingName]: value\n      };\n    }\n    get canSave() {\n      const pmsSettingsPath = this.model.pmsMetadata.defaultSettingsPath;\n      return JSON.stringify(this.localPmsSettings) !== JSON.stringify((0, _object.get)(this.model.settings, pmsSettingsPath));\n    }\n    async savePmsSettings() {\n      try {\n        this.savingPmsSettings = true;\n        const pmsSettingsPath = this.model.pmsMetadata.defaultSettingsPath;\n        (0, _object.set)(this.model.settings, pmsSettingsPath, this.localPmsSettings);\n        await this.model.settings.save();\n        this.notifications.notify({\n          title: \"Settings saved\",\n          icon: \"success\",\n          canDismiss: true\n        }, 5000);\n      } catch (error) {\n        this.notifications.add({\n          title: `Save failed`,\n          message: `Failed to save settings. Please try again or contact support.`,\n          icon: \"error\",\n          canDismiss: true\n        });\n      } finally {\n        this.savingPmsSettings = false;\n      }\n    }\n\n    /**\n     * Clear the selected PMS ID saved in the firm settings.\n     * @param {String} practiceArea - The practice area associated with the selected PMS.\n     */\n    clearSelectedPMS(practiceArea) {\n      const settings = this.store.peekRecord(\"settings\", practiceArea || \"Family\");\n      settings.set(\"settings.admin.integrations.pmsID\", null);\n      settings.save();\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"store\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"notifications\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"localPmsSettings\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return {};\n    }\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"disconnecting\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"savingPmsSettings\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"disconnectPms\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"disconnectPms\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"updatePmsSetting\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"updatePmsSetting\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"savePmsSettings\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"savePmsSettings\"), _class.prototype), _class);\n});","define(\"settify-mvp/controllers/v2/admin/offices\", [\"exports\", \"@ember/controller\"], function (_exports, _controller) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\"eaimeta@70e063a35619d71f\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  class AdminOfficesController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _defineProperty(this, \"selectedPracticeAreasAsString\", practiceAreas => {\n        const isValidPracticeAreaObject = practiceAreas && typeof practiceAreas === \"object\" && !Array.isArray(practiceAreas);\n        if (!isValidPracticeAreaObject) return \"All\";\n        const selectedPracticeAreas = Object.keys(practiceAreas).filter(key => practiceAreas[key]);\n        return selectedPracticeAreas.length > 0 ? selectedPracticeAreas.join(\", \") : \"All\";\n      });\n    }\n    get ctaButtons() {\n      return [{\n        title: \"Add new\",\n        srOnly: \"office\",\n        icon: \"plus\",\n        route: \"v2.admin.offices.edit\",\n        model: \"new\",\n        variant: \"solid\"\n      }];\n    }\n  }\n  _exports.default = AdminOfficesController;\n});","define(\"settify-mvp/controllers/v2/admin/offices/edit\", [\"exports\", \"@ember/controller\", \"@ember/service\", \"@glimmer/tracking\", \"@ember/object\"], function (_exports, _controller, _service, _tracking, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/service\",0,\"@glimmer/tracking\",0,\"@ember/object\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminOfficesEditController = _exports.default = (_class = class AdminOfficesEditController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"router\", _descriptor, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor2, this);\n      _initializerDefineProperty(this, \"firmOffices\", _descriptor3, this);\n      _defineProperty(this, \"initialOfficeState\", {});\n      // Set in the routers setupController hook\n      _initializerDefineProperty(this, \"showDeleteOptions\", _descriptor4, this);\n    }\n    get availablePracticeAreas() {\n      return Object.keys(this.firm.otherSettifyURLs);\n    }\n    togglePracticeAreaOptions() {\n      (0, _object.set)(this.model.office, \"practiceAreas\", this.model.office.practiceAreas ? undefined : {});\n    }\n    async cancelChanges() {\n      const changesMadeToExistingOffice = !this.model.isNew && JSON.stringify(this.initialOfficeState) !== JSON.stringify(this.model.office);\n      if (changesMadeToExistingOffice) {\n        // Changes have been made to an existing office, we should restore them back to its initial state.\n        // TODO: Once offices are moved to a model, we can use the store and `hasDirtyAttributes` here.\n        Object.keys(this.initialOfficeState).forEach(key => (0, _object.set)(this.model.office, key, this.initialOfficeState[key]));\n      }\n      return this.router.transitionTo(\"v2.admin.offices\");\n    }\n    async saveChanges() {\n      if (this.model.isNew) {\n        this.firmOffices.offices.pushObject(this.model.office);\n      }\n      await this.firmOffices.save();\n      this.initialOfficeState = this.model.office; // Update the initial office state to the new saved office\n      if (this.model.isNew) {\n        this.firmOffices.offices.forEach(office => {\n          // Now that the office isn't new, we can set the officeID used for exising offices. This is due to the way the backend saves and loads offices.\n          if (office.id) (0, _object.set)(office, \"officeID\", office.id);\n        });\n\n        // Replace the current route with the edit route for the newly created office\n        this.router.replaceWith(\"v2.admin.offices.edit\", this.model.office.id);\n      }\n    }\n    toggleDelete() {\n      this.showDeleteOptions = !this.showDeleteOptions;\n    }\n    async deleteOffice() {\n      this.firmOffices.offices.removeObject(this.model.office);\n      await this.firmOffices.save();\n      return this.router.transitionTo(\"v2.admin.offices\");\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"firmOffices\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"showDeleteOptions\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"togglePracticeAreaOptions\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"togglePracticeAreaOptions\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"cancelChanges\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"cancelChanges\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"saveChanges\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"saveChanges\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"toggleDelete\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleDelete\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"deleteOffice\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"deleteOffice\"), _class.prototype), _class);\n});","define(\"settify-mvp/controllers/v2/admin/settings/settify\", [\"exports\", \"settify-mvp/controllers/admin/config/settingsbase\", \"@ember/service\", \"@ember/object\"], function (_exports, _settingsbase, _service, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor; // import Controller from '@ember/controller';\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/controllers/admin/config/settingsbase\",0,\"@ember/service\",0,\"@ember/object\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminSettingsSettifyController = _exports.default = (_class = class AdminSettingsSettifyController extends _settingsbase.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"notifications\", _descriptor, this);\n    }\n    triggerSentryError() {\n      const errorPromise = new Promise(() => {\n        throw new Error(\"Sentry Test: Trigger Sentry Error\");\n      });\n      errorPromise.finally(() => {\n        this.notifications.notify({\n          title: \"Sentry error sent\",\n          icon: \"success\",\n          message: \"An error was sent to sentry\",\n          canDismiss: false\n        });\n      });\n    }\n    testNotificationService() {\n      this.notifications.notify({\n        title: \"Processing file\",\n        icon: \"loading\",\n        message: \"Please wait while we prepare things...\",\n        canDismiss: false\n      }, 15000);\n      this.notifications.notify({\n        title: \"Connection Error\",\n        icon: \"info\",\n        message: \"There is a connection error.\",\n        canDismiss: true\n      });\n      this.notifications.add({\n        title: \"Successfully saved!\",\n        icon: \"success\",\n        message: \"Anyone with a link can now view this file.\",\n        canDismiss: true\n      });\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"notifications\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"triggerSentryError\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"triggerSentryError\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"testNotificationService\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"testNotificationService\"), _class.prototype), _class);\n});","define(\"settify-mvp/controllers/v2/admin/settings/setting\", [\"exports\", \"@ember/controller\", \"@glimmer/tracking\", \"@ember/service\", \"@ember/object\"], function (_exports, _controller, _tracking, _service, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@glimmer/tracking\",0,\"@ember/service\",0,\"@ember/object\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminSettingController = _exports.default = (_class = class AdminSettingController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"router\", _descriptor, this);\n      _initializerDefineProperty(this, \"store\", _descriptor2, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor3, this);\n      _initializerDefineProperty(this, \"firmDetails\", _descriptor4, this);\n      _initializerDefineProperty(this, \"notifications\", _descriptor5, this);\n      _initializerDefineProperty(this, \"isSavingSettings\", _descriptor6, this);\n      _defineProperty(this, \"settingsMenu\", [\n      // { name: \"Account\", value: \"v2.admin.settings.setting.account\" },\n      {\n        name: \"Client facing\",\n        value: \"v2.admin.settings.setting.client-facing\"\n      }, {\n        name: \"Admin facing\",\n        value: \"v2.admin.settings.setting.firm-facing\"\n      }, {\n        name: \"Invitations\",\n        value: \"v2.admin.settings.setting.invitations\"\n      }, {\n        name: \"Billing\",\n        value: \"v2.admin.settings.setting.billing\"\n      }, {\n        name: \"User accounts\",\n        value: \"v2.admin.settings.setting.users\"\n      }]);\n      // The billing route uses the firm details service that differs from firm settings.\n      // So we need to call save on the firmDetails service rather than the settings model.\n      _defineProperty(this, \"getSaveMethodForCurrentRoute\", () => {\n        const currentRoute = this.router.currentRouteName;\n        const routeSaveMethods = {\n          \"v2.admin.settings.setting.billing\": this.firmDetails\n        };\n\n        // Default to saving practice area settings via the adapter if no specific route is matched.\n        return routeSaveMethods[currentRoute] || this.store.peekRecord(\"settings\", this.selectedPracticeArea);\n      });\n    }\n    get ctaButtons() {\n      return [{\n        title: \"Cancel\",\n        variant: \"outlined\",\n        onClick: event => this.revertSettings(event)\n      }, {\n        title: \"Save\",\n        loadingText: \"Saving\",\n        loading: this.isSavingSettings,\n        variant: \"solid\",\n        onClick: event => this.saveSettings(event)\n      }];\n    }\n    get availablePracticeAreas() {\n      return Object.keys(this.firm.otherSettifyURLs).map(pa => ({\n        name: pa,\n        value: pa\n      }));\n    }\n    changePracticeArea(selectedPracticeArea) {\n      this.router.transitionTo(\"v2.admin.settings.setting\", {\n        practice_area: selectedPracticeArea.toLowerCase()\n      });\n    }\n\n    // Used for the settings menu dropdown in mobile view\n    changeRoute(newRoute) {\n      this.router.transitionTo(newRoute);\n    }\n    async saveSettings(event) {\n      event.preventDefault();\n      try {\n        this.isSavingSettings = true;\n        const saveService = this.getSaveMethodForCurrentRoute(); // Determine which save method to use based on the current route\n        await saveService.save();\n        this.notifications.notify({\n          title: \"Settings saved\",\n          icon: \"success\",\n          canDismiss: true\n        }, 5000);\n      } catch (error) {\n        this.notifications.add({\n          title: `Save failed`,\n          message: `Failed to save settings. Please try again or contact support.`,\n          icon: \"error\",\n          canDismiss: true\n        });\n      } finally {\n        this.isSavingSettings = false;\n      }\n    }\n    revertSettings(event) {\n      event.preventDefault();\n      return this.store.peekRecord(\"settings\", this.selectedPracticeArea).rollbackAttributes();\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"store\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"firmDetails\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"notifications\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"isSavingSettings\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"changePracticeArea\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"changePracticeArea\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"changeRoute\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"changeRoute\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"saveSettings\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"saveSettings\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"revertSettings\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"revertSettings\"), _class.prototype), _class);\n});","define(\"settify-mvp/controllers/v2/admin/settings/setting/billing\", [\"exports\", \"@ember/controller\", \"@ember/service\"], function (_exports, _controller, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminSettingsBillingController = _exports.default = (_class = class AdminSettingsBillingController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n      _initializerDefineProperty(this, \"firmDetails\", _descriptor2, this);\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"firmDetails\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/controllers/v2/admin/settings/setting/client-facing\", [\"exports\", \"settify-mvp/controllers/admin/config/settingsbase\"], function (_exports, _settingsbase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/controllers/admin/config/settingsbase\"eaimeta@70e063a35619d71f\n  // import Controller from '@ember/controller';\n  class AdminSettingsClientFacingController extends _settingsbase.default {\n    settingsFilter(settingName) {\n      const allowedSettings = [`^settings.induction`, `^blurb$`, `^longName$`, `^phone$`, `^phoneURL$`, `^settings.family`, `^settings.wills`];\n      return allowedSettings.some(regex => settingName.match(regex));\n    }\n  }\n  _exports.default = AdminSettingsClientFacingController;\n});","define(\"settify-mvp/controllers/v2/admin/settings/setting/firm-facing\", [\"exports\", \"settify-mvp/controllers/admin/config/settingsbase\"], function (_exports, _settingsbase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/controllers/admin/config/settingsbase\"eaimeta@70e063a35619d71f\n  // import Controller from '@ember/controller';\n  class AdminSettingsFirmFacingController extends _settingsbase.default {\n    settingsFilter(settingName) {\n      const allowedSettings = [`^contactEmail$`, `^contactEmailCCs$`, `^bookingNotificationCCs$`, `^settings.admin`, `^relationshipManagementContacts`];\n      const declineNestedSettings = [`settings.admin.invitations`, `settings.admin.integrations`];\n      return allowedSettings.some(regex => settingName.match(regex)) && !declineNestedSettings.some(regex => settingName.match(regex));\n    }\n  }\n  _exports.default = AdminSettingsFirmFacingController;\n});","define(\"settify-mvp/controllers/v2/admin/settings/setting/invitations\", [\"exports\", \"settify-mvp/controllers/admin/config/settingsbase\"], function (_exports, _settingsbase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/controllers/admin/config/settingsbase\"eaimeta@70e063a35619d71f\n  class AdminSettingsInvitationsController extends _settingsbase.default {\n    settingsFilter(settingName) {\n      const allowedSettings = [`^settings.admin.invitations`];\n      return allowedSettings.some(regex => settingName.match(regex));\n    }\n  }\n  _exports.default = AdminSettingsInvitationsController;\n});","define(\"settify-mvp/controllers/v2/admin/settings/setting/settify\", [\"exports\", \"settify-mvp/controllers/admin/config/settingsbase\", \"@ember/service\", \"@ember/object\"], function (_exports, _settingsbase, _service, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor; // import Controller from '@ember/controller';\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/controllers/admin/config/settingsbase\",0,\"@ember/service\",0,\"@ember/object\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminSettingsSettifyController = _exports.default = (_class = class AdminSettingsSettifyController extends _settingsbase.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"notifications\", _descriptor, this);\n    }\n    triggerSentryError() {\n      const errorPromise = new Promise(() => {\n        throw new Error(\"Sentry Test: Trigger Sentry Error\");\n      });\n      errorPromise.finally(() => {\n        this.notifications.notify({\n          title: \"Sentry error sent\",\n          icon: \"success\",\n          message: \"An error was sent to sentry\",\n          canDismiss: false\n        });\n      });\n    }\n    testNotificationService() {\n      this.notifications.notify({\n        title: \"Processing file\",\n        icon: \"loading\",\n        message: \"Please wait while we prepare things...\",\n        canDismiss: false\n      }, 15000);\n      this.notifications.notify({\n        title: \"Connection Error\",\n        icon: \"info\",\n        message: \"There is a connection error.\",\n        canDismiss: true\n      });\n      this.notifications.add({\n        title: \"Successfully saved!\",\n        icon: \"success\",\n        message: \"Anyone with a link can now view this file.\",\n        canDismiss: true\n      });\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"notifications\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"triggerSentryError\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"triggerSentryError\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"testNotificationService\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"testNotificationService\"), _class.prototype), _class);\n});","define(\"settify-mvp/controllers/v2/admin/settings/setting/users\", [\"exports\", \"@ember/controller\", \"@ember/service\", \"@glimmer/tracking\", \"@ember/object\"], function (_exports, _controller, _service, _tracking, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _AdminSettingsUsersController_brand;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/service\",0,\"@glimmer/tracking\",0,\"@ember/object\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }\n  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminSettingsUsersController = _exports.default = (_class = (_AdminSettingsUsersController_brand = /*#__PURE__*/new WeakSet(), class AdminSettingsUsersController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _classPrivateMethodInitSpec(this, _AdminSettingsUsersController_brand);\n      _initializerDefineProperty(this, \"lambda\", _descriptor, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor2, this);\n      _initializerDefineProperty(this, \"notifications\", _descriptor3, this);\n      _initializerDefineProperty(this, \"creatingNewUser\", _descriptor4, this);\n      _initializerDefineProperty(this, \"newUserEmail\", _descriptor5, this);\n      _initializerDefineProperty(this, \"newUserEmailValid\", _descriptor6, this);\n      _initializerDefineProperty(this, \"userFailedMessage\", _descriptor7, this);\n      _initializerDefineProperty(this, \"allowRestrictedDomain\", _descriptor8, this);\n      _initializerDefineProperty(this, \"selectedUser\", _descriptor9, this);\n    }\n    toggleUserDropdown(user) {\n      this.selectedUser = this.selectedUser === user?.email ? null : user.email;\n    }\n    closeUserDropdown(user) {\n      if (this.selectedUser === user?.email) this.selectedUser = null;\n    }\n    setEmailValidation(valid) {\n      this.newUserEmailValid = valid;\n    }\n    async createUser(event) {\n      event.preventDefault();\n      if (!this.newUserEmail || !this.newUserEmailValid) return;\n      this.creatingNewUser = true;\n      const payload = {\n        firmID: this.firm.id,\n        email: this.newUserEmail,\n        userEmail: this.newUserEmail,\n        forceRestrictedDomain: this.allowRestrictedDomain\n      };\n      try {\n        const data = await this.lambda.invoke(this.lambda.createFirmUserLambda, payload).then(this.lambda.processResponse);\n        _assertClassBrand(_AdminSettingsUsersController_brand, this, _handleCreateUserResponse).call(this, data);\n      } catch (error) {\n        this.notifications.add({\n          title: \"Error creating user\",\n          message: `We were unable to create a login for ${this.newUserEmail}. Please try again or contact Settify support for assistance.`,\n          icon: \"error\",\n          canDismiss: true\n        });\n      } finally {\n        this.creatingNewUser = false;\n      }\n    }\n    async toggleUserLoginStatus(user) {\n      const payload = {\n        firmID: this.firm.id,\n        username: user.email.toLowerCase(),\n        userEmail: user.email.toLowerCase(),\n        enabled: !user.loginEnabled\n      };\n      try {\n        await this.lambda.invoke(this.lambda.updateFirmUserLambda, payload).then(this.lambda.processResponse);\n        (0, _object.set)(user, \"loginEnabled\", !user.loginEnabled);\n      } catch (error) {\n        this.notifications.add({\n          title: \"Error\",\n          message: `Error ${user.loginEnabled ? \"disabling\" : \"enabling\"} user`,\n          icon: \"error\",\n          canDismiss: true\n        });\n      }\n    }\n    async deleteUser(user) {\n      const payload = {\n        firmID: this.firm.id,\n        username: user.email,\n        userEmail: user.email\n      };\n      try {\n        const data = await this.lambda.invoke(this.lambda.deleteFirmUserLambda, payload).then(this.lambda.processResponse);\n        if (data.error) throw new Error(data.error);\n        const newUserList = this.model.userList.filter(u => u.email !== user.email);\n        (0, _object.set)(this.model, \"userList\", newUserList);\n      } catch (error) {\n        this.notifications.add({\n          title: \"Error deleting user\",\n          message: `Failed to delete ${user.email}`,\n          icon: \"error\",\n          canDismiss: true\n        });\n      }\n    }\n    resetControllerValues() {\n      this.selectedUser = null;\n      this.newUserEmail = null;\n      this.newUserEmailValid = false;\n      this.allowRestrictedDomain = false;\n      this.userFailedMessage = null;\n    }\n  }), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"notifications\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"creatingNewUser\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"newUserEmail\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"newUserEmailValid\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"userFailedMessage\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"allowRestrictedDomain\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor9 = _applyDecoratedDescriptor(_class.prototype, \"selectedUser\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"toggleUserDropdown\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleUserDropdown\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"closeUserDropdown\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"closeUserDropdown\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"setEmailValidation\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"setEmailValidation\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"createUser\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"createUser\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"toggleUserLoginStatus\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleUserLoginStatus\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"deleteUser\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"deleteUser\"), _class.prototype), _class);\n  function _handleCreateUserResponse(data) {\n    try {\n      if (data.failed.length) {\n        if (data.failed.length === 1 && typeof data.failed[0] === \"object\") {\n          const {\n            message,\n            code\n          } = data.failed[0];\n          this.allowRestrictedDomain = code === \"432\";\n          this.userFailedMessage = message;\n          return;\n        }\n        throw new Error(data.failed?.[0]);\n      }\n      (0, _object.set)(this.model, \"userList\", [...this.model.userList, _assertClassBrand(_AdminSettingsUsersController_brand, this, _createNewUserObject).call(this)]);\n      this.notifications.notify({\n        icon: \"success\",\n        title: `Login created for ${this.newUserEmail}`,\n        canDismiss: true\n      }, 6000);\n      this.resetControllerValues();\n    } catch (error) {\n      // Notify user of error during user creation response handling. This is handled separately to lambda errors as it has a nicer error message where lambda errors currently do not.\n      this.notifications.add({\n        title: \"Error creating user\",\n        message: error.message,\n        icon: \"error\",\n        canDismiss: true\n      });\n    }\n  }\n  function _createNewUserObject() {\n    const matchingLawyer = this.model.lawyerList.find(lawyer => lawyer.email === this.newUserEmail);\n    return matchingLawyer ? {\n      email: matchingLawyer.email,\n      name: matchingLawyer.name,\n      photoURL: matchingLawyer.photoURL,\n      loginEnabled: true\n    } : {\n      email: this.newUserEmail,\n      personType: \"other\",\n      loginEnabled: true\n    };\n  }\n});","define(\"settify-mvp/controllers/v2/admin/team\", [\"exports\", \"@ember/controller\", \"@ember/object\", \"@glimmer/tracking\", \"@ember/service\"], function (_exports, _controller, _object, _tracking, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/object\",0,\"@glimmer/tracking\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminTeamController = _exports.default = (_class = class AdminTeamController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"lawyerList\", _descriptor, this);\n      _initializerDefineProperty(this, \"selectedTeamMember\", _descriptor2, this);\n    }\n    get ctaButtons() {\n      return [{\n        title: \"Add new\",\n        srOnly: \"team member\",\n        icon: \"plus\",\n        route: \"v2.admin.team.edit\",\n        model: \"new\",\n        variant: \"solid\"\n      }];\n    }\n    selectTeamMember(selectPersonID) {\n      this.selectedTeamMember = this.model.teamList.find(p => p.personID === selectPersonID);\n    }\n    closeSelectedLawyer() {\n      this.selectedTeamMember = null;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"lawyerList\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"selectedTeamMember\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"selectTeamMember\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"selectTeamMember\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"closeSelectedLawyer\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"closeSelectedLawyer\"), _class.prototype), _class);\n});","define(\"settify-mvp/controllers/v2/admin/team/edit\", [\"exports\", \"@ember/controller\", \"@ember/service\", \"@glimmer/tracking\", \"@ember/object\"], function (_exports, _controller, _service, _tracking, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/service\",0,\"@glimmer/tracking\",0,\"@ember/object\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let V2AdminTeamEditController = _exports.default = (_dec = (0, _service.inject)(\"dynamic-config\"), _class = class V2AdminTeamEditController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"router\", _descriptor, this);\n      _initializerDefineProperty(this, \"lawyerList\", _descriptor2, this);\n      _initializerDefineProperty(this, \"lambda\", _descriptor3, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor4, this);\n      _initializerDefineProperty(this, \"awsService\", _descriptor5, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor6, this);\n      _initializerDefineProperty(this, \"config\", _descriptor7, this);\n      _initializerDefineProperty(this, \"showDeleteOptions\", _descriptor8, this);\n      _defineProperty(this, \"teamMemberRoles\", [{\n        name: \"Lawyer\",\n        value: \"lawyer\"\n      }, {\n        name: \"Assistant / Administrative Support\",\n        value: \"pa\"\n      }]);\n    }\n    get photoUploadBucket() {\n      return this.config.getS3BucketName(\"assets\");\n    }\n    get photoUploadKey() {\n      if (!this.model.teamMember.photoURL) {\n        return null;\n      }\n      const key = this.model.teamMember.photoURL.split(this.photoUploadBucket)[1]; // split at the point of the bucket location\n      return key.replace(/^\\/+/, \"\");\n    }\n    get availablePracticeAreas() {\n      return Object.keys(this.firm.otherSettifyURLs);\n    }\n    setStaffValue(key, value) {\n      if (key) {\n        this.model.teamMember[key] = value;\n      }\n    }\n    togglePracticeAreaOptions() {\n      this.model.teamMember.practiceAreas = this.model.teamMember.practiceAreas ? undefined : {};\n    }\n    setEmailValidation(validationState) {\n      this.emailIsValid = validationState;\n    }\n    async cancelChanges() {\n      if (this.model.teamMember.isNew) {\n        // A new team memeber, we can destory this record\n        await this.lawyerList.deleteStaff(this.model.teamMember);\n      } else if (this.model.teamMember.hasDirtyAttributes) {\n        // An existing team member, we should only revert changes\n        this.model.teamMember.rollbackAttributes();\n      }\n      return this.router.transitionTo(\"/v2/admin/team\");\n    }\n    async saveChanges() {\n      if (!this.model.teamMember.name || !this.model.teamMember.email) {\n        return;\n      }\n      this.model.teamMember.email = this.model.teamMember.email.toLowerCase();\n      if (this.model.teamMember?.disabled && this.model.teamMember?.worksWith?.length) {\n        this.model.teamMember.worksWith = [];\n        if (this.model.teamMember?.sendFrom?.personID) {\n          this.model.teamMember.sendFrom.personID = null;\n        }\n      }\n      try {\n        const {\n          isNew\n        } = this.model.teamMember;\n        await this.lawyerList.saveLawyer(this.model.teamMember);\n        if (isNew) {\n          // Replace the current route with the edit route for the newly created team member\n          return this.router.replaceWith(`/v2/admin/team/${this.model.teamMember.personID}/edit`);\n        }\n      } catch (error) {\n        this.saveFailed = \"Changes could not be saved. Please try again.\";\n      }\n    }\n    toggleDelete() {\n      this.showDeleteOptions = !this.showDeleteOptions;\n    }\n    async deleteTeamMember() {\n      const cognitoUsernameToDelete = this.model.teamMember.email;\n      await this.lawyerList.deleteStaff(this.model.teamMember);\n      this.lambda.invoke(this.lambda.updateFirmUserLambda, {\n        firmID: this.firm.id,\n        username: cognitoUsernameToDelete,\n        enabled: false\n      });\n      return this.router.transitionTo(\"/v2/admin/team\");\n    }\n    async uploadHeadshot(event) {\n      event.preventDefault();\n      const file = event.target.files[0];\n      if (file) {\n        if (!this.isValidFile(file)) {\n          return;\n        }\n        try {\n          const s3Client = await this.awsService.getS3ByType(\"quarantine\");\n          const params = {\n            Key: `${this.generateHeadshotKey()}.${file.name.split(\".\").pop()}`,\n            ContentType: file.type,\n            Body: file,\n            Tagging: `settify:fileUploads:targetBucket=${this.photoUploadBucket}`\n          };\n          await s3Client.upload(params).promise();\n          this.model.teamMember.photoURL = this.config.getS3UrlForBucket(\"assets\", params.Key);\n        } catch (error) {\n          this.eventLogging.logError(\"Error uploading headshot to S3\", error);\n          // Provide user-friendly error message or handle the error appropriately\n        }\n      }\n    }\n    isValidFile(file) {\n      // test file size\n      if (file.size > 200 * 1024) {\n        alert(\"Sorry, but that file is too large. Please resize or re-save the image so that it is 200kb or less.\");\n        return false;\n      }\n\n      // extract and test the file extension\n      const extension = file.name.split(\".\").pop().toLowerCase();\n      if (![\"jpg\", \"jpeg\", \"png\"].includes(extension)) {\n        alert(\"Invalid file extension. Please upload a JPG, JPEG, or PNG file.\");\n        return false;\n      }\n\n      // Test the file type\n      if (![\"image/png\", \"image/jpeg\", \"image/gif\", \"image/pjpeg\"].includes(file.type)) {\n        alert(\"Invalid file type. Please upload an image in PNG, JPEG, or GIF format.\");\n        return false;\n      }\n      return true;\n    }\n    generateHeadshotKey() {\n      return `headshots/${this.config.settings.adminIdentityPoolID}/${this.model.teamMember.personID}-${Date.now().toString()}`;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"lawyerList\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"awsService\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"config\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"showDeleteOptions\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"setStaffValue\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"setStaffValue\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"togglePracticeAreaOptions\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"togglePracticeAreaOptions\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"setEmailValidation\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"setEmailValidation\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"cancelChanges\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"cancelChanges\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"saveChanges\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"saveChanges\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"toggleDelete\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"toggleDelete\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"deleteTeamMember\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"deleteTeamMember\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"uploadHeadshot\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"uploadHeadshot\"), _class.prototype), _class);\n});","define(\"settify-mvp/controllers/v2/auth/first-login\", [\"exports\", \"@ember/controller\", \"@ember/object\", \"@ember/service\", \"@glimmer/tracking\"], function (_exports, _controller, _object, _service, _tracking) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/object\",0,\"@ember/service\",0,\"@glimmer/tracking\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let FirstLoginController = _exports.default = (_class = class FirstLoginController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"cognitoUser\", _descriptor, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor2, this);\n      _initializerDefineProperty(this, \"router\", _descriptor3, this);\n      _initializerDefineProperty(this, \"loading\", _descriptor4, this);\n      _initializerDefineProperty(this, \"errorMessage\", _descriptor5, this);\n      _initializerDefineProperty(this, \"newPassword\", _descriptor6, this);\n      _initializerDefineProperty(this, \"isPasswordValid\", _descriptor7, this);\n    }\n    async changePassword(event) {\n      event.preventDefault();\n      this.loading = true;\n      this.errorMessage = \"\";\n      try {\n        await this.cognitoUser.firstLoginNewPassword(this.currentPassword, this.newPassword);\n        // password changed so authenticate user with new password\n        this.router.transitionTo(\"v2.auth.login\", {\n          queryParams: {\n            status: \"password-changed\"\n          }\n        });\n      } catch (err) {\n        if (err === \"newPasswordRequired\" || err === \"totpRequired\") {\n          // user has mfa enabled or force password change is set, redirect to screen\n          this.router.transitionTo(\"v2.auth.login\", {\n            queryParams: {\n              status: \"password-changed\"\n            }\n          });\n        } else {\n          this.errorMessage = \"Failed to change password, please try again. If this issue persists, please contact Settify Support.\";\n          this.eventLogging.logError(\"Failed to change password after first login\", err);\n        }\n      } finally {\n        this.loading = false;\n      }\n    }\n    setValidation(isPasswordValid) {\n      this.isPasswordValid = isPasswordValid;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"cognitoUser\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"loading\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"errorMessage\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"newPassword\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"isPasswordValid\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"changePassword\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"changePassword\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"setValidation\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"setValidation\"), _class.prototype), _class);\n});","define(\"settify-mvp/controllers/v2/auth/forgot-password\", [\"exports\", \"@ember/controller\", \"@ember/object\", \"@ember/service\", \"@glimmer/tracking\", \"settify-mvp/utils/email-utils\"], function (_exports, _controller, _object, _service, _tracking, _emailUtils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/object\",0,\"@ember/service\",0,\"@glimmer/tracking\",0,\"settify-mvp/utils/email-utils\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let ForgotPasswordController = _exports.default = (_class = class ForgotPasswordController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"awsService\", _descriptor, this);\n      _initializerDefineProperty(this, \"lambda\", _descriptor2, this);\n      _initializerDefineProperty(this, \"router\", _descriptor3, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor4, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor5, this);\n      _defineProperty(this, \"queryParams\", [\"email\", \"validationCode\"]);\n      _initializerDefineProperty(this, \"emailAddress\", _descriptor6, this);\n      _initializerDefineProperty(this, \"emailSent\", _descriptor7, this);\n      _initializerDefineProperty(this, \"loading\", _descriptor8, this);\n      _initializerDefineProperty(this, \"success\", _descriptor9, this);\n      _initializerDefineProperty(this, \"errorMessage\", _descriptor10, this);\n      _initializerDefineProperty(this, \"newPassword\", _descriptor11, this);\n      _initializerDefineProperty(this, \"isPasswordValid\", _descriptor12, this);\n    }\n    sendResetPasswordEmail(event, isLawyer = true) {\n      event.preventDefault();\n      this.loading = true;\n      this.errorMessage = null;\n      this.emailSent = false;\n      const cognitoUser = this.awsService.getCognitoUser(this.emailAddress, isLawyer);\n      cognitoUser.forgotPassword({\n        onSuccess: (/* result */\n        ) => {\n          this.loading = false;\n          this.emailSent = true;\n        },\n        onFailure: async err => {\n          if (isLawyer) {\n            if (err.code === \"NotAuthorizedException\" && err.message === \"User password cannot be reset in the current state.\") {\n              // Password has expired\n              await this.recreateFirmUser();\n            }\n            this.sendResetPasswordEmail(event, false);\n          } else {\n            this.loading = false;\n            this.errorMessage = \"There was an error resetting your password. Please confirm that your email address is correct and that you are connected to the internet.\";\n            this.eventLogging.logError(\"Error sending reset password email\", err);\n          }\n        }\n      });\n    }\n    confirmPasswordChange(event, isLawyer) {\n      event.preventDefault();\n      this.loading = true;\n      const decodedEmailAddress = (0, _emailUtils.decodeEmailAddress)(this.email);\n      const cognitoUser = this.awsService.getCognitoUser(decodedEmailAddress, isLawyer);\n      cognitoUser.confirmPassword(this.validationCode, this.newPassword, {\n        onSuccess: () => {\n          this.loading = false;\n          this.router.transitionTo(\"v2.auth.login\", {\n            queryParams: {\n              status: \"password-changed\"\n            }\n          });\n        },\n        onFailure: err => {\n          if (isLawyer) {\n            this.loading = false;\n            this.errorMessage = \"We could not reset your password. Please check that you are connected to the internet.\";\n            this.eventLogging.logError(\"Error resetting password\", err);\n            return;\n          }\n          this.confirmPasswordChange(event, true);\n        }\n      });\n    }\n    setValidation(isPasswordValid) {\n      this.isPasswordValid = isPasswordValid;\n    }\n    async recreateFirmUser() {\n      try {\n        await this.lambda.invoke(this.lambda.recreateFirmUserLambda, {\n          firmID: this.firm.id,\n          username: this.emailAddress\n        });\n        this.emailSent = true;\n      } catch (err) {\n        this.errorMessage = \"There was an error resetting your password. Please confirm that your email address is correct and that you are connected to the internet.\";\n      } finally {\n        this.loading = false;\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"awsService\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"emailAddress\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"emailSent\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"loading\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor9 = _applyDecoratedDescriptor(_class.prototype, \"success\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor10 = _applyDecoratedDescriptor(_class.prototype, \"errorMessage\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor11 = _applyDecoratedDescriptor(_class.prototype, \"newPassword\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor12 = _applyDecoratedDescriptor(_class.prototype, \"isPasswordValid\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"sendResetPasswordEmail\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"sendResetPasswordEmail\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"confirmPasswordChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"confirmPasswordChange\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"setValidation\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"setValidation\"), _class.prototype), _class);\n});","define(\"settify-mvp/controllers/v2/auth/login\", [\"exports\", \"@ember/controller\", \"@ember/service\", \"@ember/object\", \"@glimmer/tracking\"], function (_exports, _controller, _service, _object, _tracking) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/service\",0,\"@ember/object\",0,\"@glimmer/tracking\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AuthLoginController = _exports.default = (_class = class AuthLoginController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"router\", _descriptor, this);\n      _initializerDefineProperty(this, \"session\", _descriptor2, this);\n      _initializerDefineProperty(this, \"lambda\", _descriptor3, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor4, this);\n      _initializerDefineProperty(this, \"cognitoUser\", _descriptor5, this);\n      _initializerDefineProperty(this, \"loading\", _descriptor6, this);\n      _initializerDefineProperty(this, \"errorMessage\", _descriptor7, this);\n      _initializerDefineProperty(this, \"totpRequired\", _descriptor8, this);\n    }\n    async authenticate(event) {\n      event.preventDefault();\n      this.loading = true;\n      this.errorMessage = \"\";\n      this.loggedOut = false;\n      const {\n        identification,\n        password\n      } = this;\n      try {\n        await this.session.authenticate(\"authenticator:awscognito\", {\n          action: \"authenticate\",\n          identification,\n          password\n        });\n      } catch (err) {\n        if (err === \"newPasswordRequired\") {\n          console.debug(\"New password required\");\n          // success of sorts - redirect to \"first login\" page\n          this.router.transitionTo(\"v2.auth.first-login\");\n          return;\n        }\n        if (err === \"totpRequired\") {\n          console.debug(\"MFA token required\");\n          // success of sorts - we just need to supply the TOTP\n          this.totpRequired = true;\n          return;\n        }\n        if (err.code === \"NotAuthorizedException\" && err.message === \"Temporary password has expired and must be reset by an administrator.\") {\n          console.debug(\"Temporary password expired\");\n          try {\n            await this.lambda.invoke(this.lambda.recreateFirmUserLambda, {\n              firmID: this.firm.id,\n              username: identification\n            });\n            this.errorMessage = \"You did not log in within the required time period, so we have sent you a new temporary password by email. Please follow the instructions in that email to log in, and if you encounter any problems, contact support@settify.com.\";\n          } catch (err) {\n            this.errorMessage = \"You did not log in within the required time period, please send an email to support@settify.com to request a new temporary password.\";\n          }\n          return;\n        }\n        if (err.code === \"UserNotFoundException\" || err.code === \"NotAuthorizedException\" || err.code === \"wrongsite\" || err.code === \"UserNotConfirmedException\") {\n          this.errorMessage = \"Login attempt failed. Please check your credentials or ensure your account is verified.\";\n        }\n      } finally {\n        this.loading = false;\n      }\n    }\n    async verifyTOTP(event) {\n      event.preventDefault();\n      this.loading = true;\n      try {\n        await this.cognitoUser.provideTOTP(this.totp);\n        await this.session.authenticate(\"authenticator:awscognito\", {\n          action: \"totp-verified\"\n        });\n      } catch (err) {\n        console.debug(\"Incorrect totp\");\n        this.errorMessage = \"Your temporary one-time password (TOTP) was incorrect. Press Sign in to try again.\";\n        this.totpRequired = false;\n        this.totp = null;\n      } finally {\n        this.loading = false;\n      }\n    }\n    focusTOTPField(element) {\n      element.focus();\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"cognitoUser\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"loading\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"errorMessage\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"totpRequired\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"authenticate\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"authenticate\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"verifyTOTP\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"verifyTOTP\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"focusTOTPField\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"focusTOTPField\"), _class.prototype), _class);\n});","define(\"settify-mvp/controllers/v2/auth/logout\", [\"exports\", \"@ember/controller\", \"@ember/service\", \"@ember/object\"], function (_exports, _controller, _service, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/service\",0,\"@ember/object\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AuthLogoutController = _exports.default = (_class = class AuthLogoutController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"router\", _descriptor, this);\n      _initializerDefineProperty(this, \"session\", _descriptor2, this);\n    }\n    async invalidateSession(event) {\n      event.preventDefault();\n      await this.session.invalidate();\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"invalidateSession\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"invalidateSession\"), _class.prototype), _class);\n});","define(\"settify-mvp/controllers/v2/auth/mfa\", [\"exports\", \"@ember/controller\", \"@ember/service\", \"@glimmer/tracking\", \"@ember/object\"], function (_exports, _controller, _service, _tracking, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/service\",0,\"@glimmer/tracking\",0,\"@ember/object\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let V2AuthMFAController = _exports.default = (_class = class V2AuthMFAController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"session\", _descriptor, this);\n      _initializerDefineProperty(this, \"router\", _descriptor2, this);\n      _initializerDefineProperty(this, \"cognitoUser\", _descriptor3, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor4, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor5, this);\n      _initializerDefineProperty(this, \"loading\", _descriptor6, this);\n      _initializerDefineProperty(this, \"errorMessage\", _descriptor7, this);\n    }\n    completeMFASetup(event) {\n      event.preventDefault();\n      this.loading = true;\n      const code = this.mfaSetupResponse;\n      const that = this;\n      this.cognitoUser.user.verifySoftwareToken(code, \"settify-webapp\", {\n        onFailure(err) {\n          this.eventLogging.logError(\"Failed to setup MFA\", err);\n          that.loading = false;\n          that.errorMessage = `The code didn't seem to match. Please ensure that your mobile device is correctly synced\n        to the real time, and that you are entering the 6-digit code during the 30-second window of validity.`;\n        },\n        onSuccess() {\n          const totpMfaSettings = {\n            PreferredMfa: true,\n            Enabled: true\n          };\n          this.cognitoUser.user.setUserMfaPreference(null, totpMfaSettings, function (err) {\n            if (err) {\n              that.loading = false;\n              console.log(\"Error: \", err.message || JSON.stringify(err));\n            } else {\n              that.session.totpCreated = true;\n              that.session.data.authenticated.mfaEnabled = true;\n              that.loading = false;\n              if (that.firm.settings.requireMFA) {\n                // we were required to set up MFA before progressing\n                that.router.transitionTo(\"v2.admin.index\");\n              } else {\n                // just a conscientious user\n                that.router.transitionTo(\"v2.index\");\n              }\n            }\n          });\n        }\n      });\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"cognitoUser\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"loading\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"errorMessage\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"completeMFASetup\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"completeMFASetup\"), _class.prototype), _class);\n});","define(\"settify-mvp/controllers/v2/auth/password\", [\"exports\", \"@ember/controller\", \"@ember/object\", \"@ember/service\", \"@glimmer/tracking\"], function (_exports, _controller, _object, _service, _tracking) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/object\",0,\"@ember/service\",0,\"@glimmer/tracking\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let PasswordController = _exports.default = (_class = class PasswordController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"cognitoUser\", _descriptor, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor2, this);\n      _initializerDefineProperty(this, \"loading\", _descriptor3, this);\n      _initializerDefineProperty(this, \"errorMessage\", _descriptor4, this);\n      _initializerDefineProperty(this, \"success\", _descriptor5, this);\n      _initializerDefineProperty(this, \"newPassword\", _descriptor6, this);\n      _initializerDefineProperty(this, \"isPasswordValid\", _descriptor7, this);\n    }\n    async changePassword(event) {\n      event.preventDefault();\n      this.loading = true;\n      this.errorMessage = \"\";\n      this.success = false;\n      try {\n        await this.cognitoUser.changePassword(this.currentPassword, this.newPassword);\n        this.success = true;\n      } catch (err) {\n        this.errorMessage = \"There was an error processing your password change request, please check that you have entered your current password correctly. If this issue persists, please contact Settify Support.\";\n        this.eventLogging.logError(\"Change password attempt failed\", err);\n      } finally {\n        this.loading = false;\n      }\n    }\n    setValidation(isPasswordValid) {\n      this.isPasswordValid = isPasswordValid;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"cognitoUser\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"loading\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"errorMessage\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"success\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"newPassword\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"isPasswordValid\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"changePassword\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"changePassword\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"setValidation\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"setValidation\"), _class.prototype), _class);\n});","define(\"settify-mvp/controllers/v2/auth/verify\", [\"exports\", \"@ember/controller\", \"@ember/service\", \"@glimmer/tracking\", \"@ember/object\"], function (_exports, _controller, _service, _tracking, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/service\",0,\"@glimmer/tracking\",0,\"@ember/object\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let VerifyController = _exports.default = (_class = class VerifyController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor, this);\n      _initializerDefineProperty(this, \"awsService\", _descriptor2, this);\n      _initializerDefineProperty(this, \"router\", _descriptor3, this);\n      _initializerDefineProperty(this, \"resent\", _descriptor4, this);\n      _initializerDefineProperty(this, \"errorMessage\", _descriptor5, this);\n    }\n    resendVerificationEmail() {\n      const cognitoUser = this.awsService.getClientPoolCognitoUser(this.email);\n      cognitoUser.resendConfirmationCode(err => {\n        if (!err) {\n          this.resent = true;\n          return;\n        }\n        if (err?.message === \"User is already confirmed.\") {\n          this.router.transitionTo(\"v2.auth.login\", {\n            queryParams: {\n              email: this.email\n            }\n          });\n          return;\n        }\n        this.eventLogging.logError(\"Error resending verification code\", err);\n        this.errorMessage = \"There was an error resending the verification code, please contact Settify Support\";\n      });\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"awsService\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"resent\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"errorMessage\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"resendVerificationEmail\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"resendVerificationEmail\"), _class.prototype), _class);\n});","define(\"settify-mvp/controllers/v2/client\", [\"exports\", \"@ember/controller\", \"@ember/service\"], function (_exports, _controller, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let ClientController = _exports.default = (_class = class ClientController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"session\", _descriptor, this);\n      _initializerDefineProperty(this, \"router\", _descriptor2, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor3, this);\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/controllers/v2/console/index\", [\"exports\", \"@ember/controller\", \"@ember/object\", \"@ember/service\"], function (_exports, _controller, _object, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/object\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let ConsoleIndexController = _exports.default = (_class = class ConsoleIndexController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"executionHistory\", _descriptor, this);\n      _initializerDefineProperty(this, \"commandRegistry\", _descriptor2, this);\n      _initializerDefineProperty(this, \"console\", _descriptor3, this);\n      _initializerDefineProperty(this, \"session\", _descriptor4, this);\n      _initializerDefineProperty(this, \"cache\", _descriptor5, this);\n      _initializerDefineProperty(this, \"lambda\", _descriptor6, this);\n    }\n    get hasFirmSelected() {\n      return !!this.console.selectedFirm;\n    }\n    clearFirm() {\n      // Clear dependent state\n      this.console.clear();\n    }\n    onSelectFirm(firm) {\n      this.console.setFirm(firm);\n    }\n    onSelectClient(client) {\n      this.console.setClient(client);\n    }\n    async loadExecutionContext(firmId, clientId) {\n      if (!firmId || !clientId) {\n        console.warn(\"Cannot load execution context: missing firmId or clientId\");\n        return;\n      }\n      try {\n        // Load the firm\n        const firm = await this.console.latteFirm.getFirm({\n          firmID: firmId\n        });\n        if (firm) {\n          this.onSelectFirm(firm);\n        }\n\n        // Load the client\n        const client = await this.console.getClient(clientId);\n        if (client) {\n          this.onSelectClient(client);\n        }\n      } catch (error) {\n        console.error(\"Failed to load execution context:\", error);\n      }\n    }\n    async handleCommandExecution(command) {\n      // Format the payload template with actual values\n      const payload = this.commandRegistry.formatPayloadTemplate(command.payloadTemplate, {\n        clientID: this.console.selectedClient?.id || \"\",\n        firmID: this.console.selectedFirm?.firmID || \"\"\n      });\n      if (command.type === \"lambda\") {\n        await this.executeLambdaCommand(command, payload);\n      } else if (command.type === \"latte\") {\n        await this.executeLatteCommand(command, payload);\n      }\n    }\n    async executeLambdaCommand(command, payload) {\n      // Add execution to history with pending state\n      const executionId = this.executionHistory.add({\n        name: command.name,\n        commandId: command.id,\n        type: command.type,\n        payload,\n        state: \"pending\",\n        firmId: this.console.selectedFirm?.firmID,\n        clientId: this.console.selectedClient?.id\n      });\n      try {\n        // Invoke the lambda function\n        const response = await this.lambda.invoke(command.functionName, payload).then(this.lambda.processResponse);\n\n        // Mark execution as successful\n        this.executionHistory.markSuccess(executionId, response);\n      } catch (error) {\n        // Mark execution as failed\n        this.executionHistory.markError(executionId, error);\n      }\n    }\n    async executeLatteCommand(command, payload) {\n      // Add execution to history with pending state\n      const executionId = this.executionHistory.add({\n        name: command.name,\n        commandId: command.id,\n        type: command.type,\n        payload,\n        state: \"pending\",\n        firmId: this.console.selectedFirm?.firmID,\n        clientId: this.console.selectedClient?.id\n      });\n      try {\n        // Get the Latte API service from consoleApi using the serviceName\n        const service = this.console[command.serviceName];\n        if (!service) {\n          throw new Error(`Latte service not found: ${command.serviceName}`);\n        }\n        if (typeof service[command.apiMethod] !== \"function\") {\n          throw new Error(`API method not found: ${command.apiMethod} on ${command.serviceName}`);\n        }\n\n        // Invoke the API method with the payload\n        const response = await service[command.apiMethod](payload);\n\n        // Mark execution as successful\n        this.executionHistory.markSuccess(executionId, response);\n      } catch (error) {\n        // Mark execution as failed\n        this.executionHistory.markError(executionId, error);\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"executionHistory\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"commandRegistry\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"console\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"cache\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"clearFirm\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"clearFirm\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"onSelectFirm\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"onSelectFirm\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"onSelectClient\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"onSelectClient\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"loadExecutionContext\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"loadExecutionContext\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"handleCommandExecution\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"handleCommandExecution\"), _class.prototype), _class);\n});","define(\"settify-mvp/controllers/v2/firms/clients/client\", [\"exports\", \"@ember/controller\"], function (_exports, _controller) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\"eaimeta@70e063a35619d71f\n  class ClientsClientController extends _controller.default {}\n  _exports.default = ClientsClientController;\n});","define(\"settify-mvp/controllers/v2/firms/firm\", [\"exports\", \"@ember/controller\", \"@ember/template\", \"moment/moment\"], function (_exports, _controller, _template, _moment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/template\",0,\"moment/moment\"eaimeta@70e063a35619d71f\n  class FirmsFirmController extends _controller.default {\n    get columns() {\n      return [{\n        name: \"Name\",\n        selector: row => row.metadata.displayName || \"\",\n        sortable: true\n      }, {\n        name: \"Frozen\",\n        selector: row => row?.frozen,\n        format: cellValue => {\n          return cellValue ? (0, _template.htmlSafe)(`<i class=\"fa-solid fa-snowflake text-blue-500/50\"></i>`) : \"\";\n        },\n        sortable: true\n      }, {\n        name: \"Practice Area\",\n        selector: row => row.metadata.practiceArea || \"\",\n        sortable: true\n      }, {\n        name: \"Referred\",\n        selector: row => row.metadata.referredToFirm || row.metadata.becameLead,\n        format: cellValue => (0, _moment.default)(cellValue).fromNow(),\n        sortable: true,\n        sortFunction: this.fromNowSort\n      }, {\n        name: \"Last updated\",\n        selector: row => row.metadata.lastUpdated,\n        format: cellValue => (0, _moment.default)(cellValue).fromNow(),\n        sortable: true,\n        sortFunction: this.fromNowSort\n      }];\n    }\n    fromNowSort(rows, selector, sortDirection) {\n      return rows.sort((a, b) => {\n        // Use the selector to retrieve date values and convert to moment objects\n        const dateA = (0, _moment.default)(selector(a));\n        const dateB = (0, _moment.default)(selector(b));\n        if (dateA.isBefore(dateB)) {\n          return sortDirection === \"ASC\" ? 1 : -1;\n        }\n        if (dateA.isAfter(dateB)) {\n          return sortDirection === \"ASC\" ? -1 : 1;\n        }\n        return 0;\n      });\n    }\n  }\n  _exports.default = FirmsFirmController;\n});","define(\"settify-mvp/controllers/v2/firms/index\", [\"exports\", \"@ember/controller\", \"@glimmer/tracking\", \"@ember/object\"], function (_exports, _controller, _tracking, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@glimmer/tracking\",0,\"@ember/object\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let FirmsIndexController = _exports.default = (_class = class FirmsIndexController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"statusFilter\", _descriptor, this);\n    }\n    get firms() {\n      if (this.statusFilter) {\n        return this.model.firms.filter(firm => firm.status === this.statusFilter);\n      }\n      return this.model.firms;\n    }\n    get countActive() {\n      return this.model.firms.filter(firm => firm.status === \"Active\").length;\n    }\n    get countPending() {\n      return this.model.firms.filter(firm => firm.status === \"Pending\").length;\n    }\n    get countTerminated() {\n      return this.model.firms.filter(firm => firm.status === \"Terminated\").length;\n    }\n\n    /**\n     * Gets count of all practice areas across firms. If statusFilter is set, the counts are based on the selected status\n     * @returns {*}\n     */\n    get countPracticeArea() {\n      return this.firms.reduce((accumulator, firm) => {\n        for (const key of Object.keys(accumulator)) {\n          const pa = firm.practiceAreas.find(pa => pa.name === key);\n          if (pa && this.statusFilter && this.statusFilter === pa.status) {\n            accumulator[key]++;\n          } else if (pa && !this.statusFilter) {\n            accumulator[key]++;\n          }\n        }\n        return accumulator;\n      }, {\n        Family: 0,\n        Wills: 0,\n        Probate: 0,\n        Estates: 0,\n        Forms: 0\n      });\n    }\n    async filterByStatus(status) {\n      this.statusFilter = status;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"statusFilter\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"filterByStatus\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"filterByStatus\"), _class.prototype), _class);\n});","define(\"settify-mvp/controllers/v2/reports/index\", [\"exports\", \"@ember/controller\", \"@glimmer/tracking\", \"@ember/object\", \"@ember/service\"], function (_exports, _controller, _tracking, _object, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let FirmsIndexController = _exports.default = (_class = class FirmsIndexController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"latteReports\", _descriptor, this);\n      _initializerDefineProperty(this, \"selectedReportName\", _descriptor2, this);\n      _initializerDefineProperty(this, \"selectedReportDate\", _descriptor3, this);\n      _initializerDefineProperty(this, \"reportFiles\", _descriptor4, this);\n      _defineProperty(this, \"columns\", [{\n        name: \"Name\",\n        selector: row => row?.reportFile?.path || \"{path missing}\",\n        cellClass: \"font-medium\",\n        sortable: true\n      }, {\n        name: \"Size\",\n        selector: row => this.formatSize(row?.reportFile?.size ?? 0),\n        cellClass: \"font-medium\",\n        sortable: true\n      }]);\n    }\n    formatSize(bytes, decimals = 2) {\n      // If the size is 0, return \"0 Bytes\"\n      if (bytes === 0) return \"0 Bytes\";\n\n      // Set the base to 1024 for KB, MB, etc.\n      const k = 1024;\n      const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n\n      // Calculate the index of the appropriate unit\n      const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n      // Format the number to a specified number of decimals and append the unit\n      return `${(bytes / Math.pow(k, i)).toFixed(decimals)} ${sizes[i]}`;\n    }\n    get defaultDate() {\n      const today = new Date();\n      const year = today.getFullYear();\n      const month = String(today.getMonth() + 1).padStart(2, \"0\"); // Month is 0-indexed\n      const day = String(today.getDate()).padStart(2, \"0\");\n      this.selectedReportDate = `${year}-${month}-${day}`;\n      return this.selectedReportDate;\n    }\n    get reportNames() {\n      const options = [];\n      for (const reportName of this.model.reportNames) {\n        options.push({\n          name: reportName,\n          value: reportName\n        });\n      }\n      return options;\n    }\n    get rowData() {\n      const results = [];\n      for (const reportFile of this.reportFiles) {\n        results.push({\n          reportName: this.selectedReportName,\n          reportDate: this.selectedReportDate,\n          reportFile: {\n            ...reportFile\n          }\n        });\n      }\n      return results;\n    }\n    async loadReportData() {\n      this.reportFiles = [];\n      if (!this.selectedReportName || !this.selectedReportDate) {\n        return;\n      }\n      this.reportFiles = await this.latteReports.listReportFiles({\n        reportName: this.selectedReportName,\n        reportDate: this.selectedReportDate\n      });\n    }\n    reportNameSelected(reportName) {\n      this.selectedReportName = reportName;\n      this.loadReportData();\n    }\n    reportDateSelected(reportDate) {\n      this.selectedReportDate = reportDate;\n      this.loadReportData();\n    }\n    downloadReport(rowData) {\n      // This will only work for reports up to 6MB (which is the default limit that a lambda response can be).\n      // this.latteReports\n      //   .getReportFile({\n      //     reportName: rowData.reportName,\n      //     reportDate: rowData.reportDate,\n      //     reportFile: rowData.reportFile.path,\n      //   })\n      //   .then(data => {\n      //     const blob = new Blob([data], { type: \"text/csv;charset=utf-8;header=present;encoding=UTF-8;delimiter=,\" });\n      //     this.downloadBlob(blob, rowData.reportFile.path);\n      //   });\n\n      // use the s3 presigned link to download the file\n      // Note we could probably do this manually like this:\n      // fetch(rowData.reportFile.selfLink)\n      //   .then(response => response.blob())\n      //   .then(blob => this.downloadBlob(blob, rowData.reportFile.path));\n      //\n      // but that causes a CORS error (which needs changes to the bucket CORS policy to make it work)\n      //\n      // so we just do the basic window.open for now\n      window.open(rowData.reportFile.selfLink, \"ReportDownload\", \"noopener,noreferrer\");\n    }\n\n    // inspired by https://blog.logrocket.com/programmatically-downloading-files-browser/\n    downloadBlob(blob, filename) {\n      const url = URL.createObjectURL(blob);\n      const a = document.createElement(\"a\");\n      a.href = url;\n      a.download = filename || \"download\";\n\n      // Click handler that releases the object URL after the element has been clicked\n      // This is required for one-off downloads of the blob content\n      const clickHandler = () => {\n        setTimeout(() => {\n          URL.revokeObjectURL(url);\n          removeEventListener(\"click\", clickHandler);\n        }, 150);\n      };\n      a.addEventListener(\"click\", clickHandler, false);\n\n      // trigger the click event to download the blob\n      a.click();\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"latteReports\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"selectedReportName\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"selectedReportDate\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"reportFiles\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return [];\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"reportNameSelected\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"reportNameSelected\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"reportDateSelected\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"reportDateSelected\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"downloadReport\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"downloadReport\"), _class.prototype), _class);\n});","define(\"settify-mvp/controllers/v2/serverdown\", [\"exports\", \"@ember/controller\", \"@ember/service\"], function (_exports, _controller, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let ServerdownController = _exports.default = (_class = class ServerdownController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"downtimeService\", _descriptor, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor2, this);\n      _initializerDefineProperty(this, \"session\", _descriptor3, this);\n    }\n    get currentStatus() {\n      return this.downtimeService.downtimeStatus;\n    }\n    get clientStartedInduction() {\n      return this.model?.client?.clientID && this.model?.client?.startedInduction();\n    }\n    get allowAdminAccess() {\n      return !this.currentStatus.blockAdminUsage;\n    }\n    get resumeLink() {\n      return this.model?.client?.resumeLink();\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"downtimeService\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/controllers/v2/signup\", [\"exports\", \"@ember/controller\", \"@glimmer/tracking\"], function (_exports, _controller, _tracking) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@glimmer/tracking\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  /**\n   * Query params live on the parent signup controller so they stay in the URL (Ember keeps them\n   * sticky) across the index -> validate -> complete steps and survive a page refresh mid-flow.\n   */\n  let SignupController = _exports.default = (_class = class SignupController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _defineProperty(this, \"queryParams\", [\"leap\", \"region\"]);\n      /**\n       * Base64 encoded LEAP query string passed by the LEAP redirect page (/v2/signup?leap=...).\n       * Identifies the visitor as a LEAP client regardless of which Settify domain they land on.\n       */\n      _initializerDefineProperty(this, \"leap\", _descriptor, this);\n      /**\n       * Optional region hint (e.g. /v2/signup?region=au) for prefilling the country dropdown when\n       * linking to the signup page from somewhere other than LEAP.\n       */\n      _initializerDefineProperty(this, \"region\", _descriptor2, this);\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"leap\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"region\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _class);\n});","define(\"settify-mvp/controllers/v2/signup/complete\", [\"exports\", \"@ember/controller\", \"@ember/service\", \"settify-mvp/lib/settings\"], function (_exports, _controller, _service, _settings) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/service\",0,\"settify-mvp/lib/settings\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let SignupCompleteController = _exports.default = (_class = class SignupCompleteController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"signupService\", _descriptor, this);\n    }\n    // Generates the full URL to show to the person\n    get fullSettifyUrl() {\n      const appExtension = _settings.default.isDevelopmentAccount() ? \".devapp\" : \".app\";\n      return `https://${this.signupService.siteSlug}${appExtension}${this.signupService.firmDomain}`;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"signupService\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/controllers/v2/signup/validate\", [\"exports\", \"@ember/controller\", \"@ember/service\", \"@glimmer/tracking\", \"@ember/object\"], function (_exports, _controller, _service, _tracking, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/service\",0,\"@glimmer/tracking\",0,\"@ember/object\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let SignupValidateController = _exports.default = (_class = class SignupValidateController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"signupService\", _descriptor, this);\n      _initializerDefineProperty(this, \"resendCodeLoading\", _descriptor2, this);\n    }\n    async resendCode(event) {\n      this.resendCodeLoading = true;\n      await this.signupService.createVerificationCode(event);\n      this.resendCodeLoading = false;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"signupService\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"resendCodeLoading\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"resendCode\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"resendCode\"), _class.prototype), _class);\n});","define(\"settify-mvp/controllers/v2/unsubscribe\", [\"exports\", \"@ember/controller\", \"@ember/service\", \"@glimmer/tracking\", \"@ember/object\"], function (_exports, _controller, _service, _tracking, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/service\",0,\"@glimmer/tracking\",0,\"@ember/object\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let ClientUnsubscribeController = _exports.default = (_class = class ClientUnsubscribeController extends _controller.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor2, this);\n      _initializerDefineProperty(this, \"lambda\", _descriptor3, this);\n      _defineProperty(this, \"queryParams\", [\"clientID\", \"type\"]);\n      _initializerDefineProperty(this, \"isUnsubscribing\", _descriptor4, this);\n      _initializerDefineProperty(this, \"unsubscribeComplete\", _descriptor5, this);\n      _initializerDefineProperty(this, \"unsubscribeFailed\", _descriptor6, this);\n      _defineProperty(this, \"actionMap\", {\n        files: (sendID, firmID) => this.unsubscribeFromUploadedFileReminders(sendID, firmID),\n        newlead: clientID => this.unsubscribeFromNewLeadReminders(clientID),\n        default: clientID => this.unsubscribeFromEmails(clientID)\n      });\n    }\n    async processUnsubscribe() {\n      if (!this.clientID) {\n        this.unsubscribeFailed = true;\n        return;\n      }\n      this.resetState();\n      try {\n        this.isUnsubscribing = true;\n        const unsubscribeAction = this.getUnsubscribeAction();\n        await unsubscribeAction(this.clientID, this.firm.id);\n        this.unsubscribeComplete = true;\n      } catch (error) {\n        this.eventLogging.logError(`Failed to unsubscribe clientID ${this.clientID}, type: ${this.type || \"default\"}`, error);\n        this.unsubscribeFailed = true;\n      } finally {\n        this.isUnsubscribing = false;\n      }\n    }\n    getUnsubscribeAction() {\n      return this.actionMap[this.type] || this.actionMap.default;\n    }\n    async unsubscribeFromUploadedFileReminders(sendID, firmID) {\n      return await this.lambda.invoke(this.lambda.fileUnsubscribeLambda, {\n        firmID,\n        sendID\n      });\n    }\n    async unsubscribeFromNewLeadReminders(clientID) {\n      return await this.eventLogging.log(clientID, this.eventLogging.IDs.SuppressMissedLeadReminders, true);\n    }\n    async unsubscribeFromEmails(clientID) {\n      return await this.eventLogging.log(clientID, this.eventLogging.IDs.Unsubscribed, true);\n    }\n    resetState() {\n      this.isUnsubscribing = false;\n      this.unsubscribeComplete = false;\n      this.unsubscribeFailed = false;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"isUnsubscribing\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"unsubscribeComplete\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"unsubscribeFailed\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"processUnsubscribe\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"processUnsubscribe\"), _class.prototype), _class);\n});","define(\"settify-mvp/data-adapter\", [\"exports\", \"@ember-data/debug/data-adapter\"], function (_exports, _dataAdapter) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _dataAdapter.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"@ember-data/debug/data-adapter\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/errors/client-errors\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.ClientUnauthorisedError = _exports.ClientNotFoundError = _exports.ClientFrozenError = _exports.ClientDeletedError = void 0;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  class ClientError extends Error {\n    /**\n     * Creates an instance of ClientError.\n     * @param {string} [message=\"\"] - The error message to be displayed.\n     * @param {string} [status=null] - Optional HTTP status code associated with the error.\n     * @param {string} [title=null] - Optional brief title summarizing the error.\n     * @param {string} [detail=null] - Optional detailed description of the error.\n     */\n    constructor(message = \"\", status = null, title = null, detail = null) {\n      super(message || title); // Initialize the base Error class with the message or title.\n      this.message = message || title; // Ensure the message property reflects the provided message or title.\n      this.name = this.constructor.name; // Set the name of the error to the class name for better identification.\n      this.status = status; // HTTP status code or other status info\n      this.title = title; // Brief title of the error\n      this.detail = detail; // Detailed description of the error\n    }\n  }\n\n  /**\n   * Represents an error indicating that the user is not authorised to access the client matter.\n   */\n  class ClientUnauthorisedError extends ClientError {\n    constructor() {\n      super(\"Unauthorised access to matter.\", \"401\", \"Unauthorized Access\", \"Access denied - you are not authorised to view this matter.\");\n    }\n  }\n\n  /**\n   * Represents an error indicating that the requested client matter could not be found.\n   */\n  _exports.ClientUnauthorisedError = ClientUnauthorisedError;\n  class ClientNotFoundError extends ClientError {\n    constructor() {\n      super(\"Matter not found.\", \"404\", \"Matter not found\", \"The requested matter could not be found.\");\n    }\n  }\n\n  /**\n   * Represents an error indicating that the requested client matter has been deleted.\n   */\n  _exports.ClientNotFoundError = ClientNotFoundError;\n  class ClientDeletedError extends ClientError {\n    constructor() {\n      super(\"The requested matter is no longer available.\", \"410\", \"Matter deleted\", \"Access denied - this matter has been deleted due to 2 years of inactivity.\");\n    }\n  }\n\n  /**\n   * Represents an error indicating that the client matter has been frozen due to inactivity.\n   */\n  _exports.ClientDeletedError = ClientDeletedError;\n  class ClientFrozenError extends ClientError {\n    constructor() {\n      super(\"Matter has been frozen due to inactivity.\", \"423\", \"Matter frozen\", \"Access denied - this matter has been frozen due to 60 days of inactivity.\");\n    }\n  }\n  _exports.ClientFrozenError = ClientFrozenError;\n});","define(\"settify-mvp/helpers/address-string\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.addressString = addressString;\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  /**\n  * Format an address\n  * @param {[Object]} params - an Array containing an Object with address data\n  * @param {Object} hash - detailed: Boolean, newlines: Boolean, linebreaks: Boolean\n  * @param {Boolean} [hash.detailed=false] - The output should include the Suburb, State, and Postcode\n  * @param {Boolean} [hash.newlines=false] - The output should be seperated by newlines rather than commas. DEFAULT - commas.\n  * @param {Boolean} [hash.linebreaks=false] - The output should be seperated by <br/> rather than commas. DEFAULT - commas.\n  * @returns A formatted address\n  * @example addressString([{\n     streetName: \"Bourke St\",\n     streetNumber: 100,\n     suburb: \"Melbourne\"\n   }])\n   //returns \"100 Bourke St, Melbourne\"\n  */\n\n  function addressString([office], {\n    detailed = false,\n    newlines = false,\n    linebreaks = false\n  } = {}) {\n    if (!office) return \"\";\n    const {\n      lineOne,\n      lineTwo,\n      lineThree,\n      suburb,\n      state,\n      postcode,\n      country\n    } = office;\n    const addressLines = [lineOne, lineTwo, lineThree].filter(Boolean);\n    if (detailed) {\n      const suburbStateAndPostcode = [suburb, state, postcode].filter(Boolean).join(\" \");\n      if (suburbStateAndPostcode) addressLines.push(suburbStateAndPostcode);\n      if (country) addressLines.push(country);\n    } else if (suburb) {\n      addressLines.push(suburb);\n    }\n    const separator = getSeparator(newlines, linebreaks);\n    return addressLines.join(separator);\n  }\n\n  /**\n   * Get the separator based on newlines and linebreaks options.\n   * @param {Boolean} newlines - Indicates whether newlines should be used as the separator.\n   * @param {Boolean} linebreaks - Indicates whether linebreaks should be used as the separator.\n   * @returns {String} The separator to use.\n   */\n  function getSeparator(newlines, linebreaks) {\n    if (newlines) return \"\\n\";\n    if (linebreaks) return \",<br />\";\n    return \", \";\n  }\n  var _default = _exports.default = (0, _helper.helper)(addressString);\n});","define(\"settify-mvp/helpers/age-from-dob\", [\"exports\", \"@ember/component/helper\", \"@ember/utils\"], function (_exports, _helper, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.ageFromDob = ageFromDob;\n  _exports.default = void 0;\n  _exports.yearsSince = yearsSince;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"@ember/utils\"eaimeta@70e063a35619d71f\n  const dayOfYear = function (day, month) {\n    const dayCount = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];\n    return dayCount[month] + day;\n    // ignore leap years - makes such little difference\n  };\n  function yearsSince(day, month, year, now) {\n    if (!year) {\n      return;\n    }\n    if (!day) {\n      day = 1;\n    }\n    if (!month) {\n      month = 1;\n    }\n    day = parseInt(day, 10);\n    month = parseInt(month, 10);\n    year = parseInt(year, 10);\n    if (!now) {\n      now = new Date(Date.now());\n    }\n    let refDayOfYear = dayOfYear(day, month - 1);\n    let nowDay = now.getDate();\n    let nowMonth = now.getMonth();\n    let nowYear = now.getFullYear();\n    let nowDayOfYear = dayOfYear(nowDay, nowMonth);\n    let years = nowYear - year;\n    years += (nowDayOfYear - refDayOfYear) / 365;\n    return years;\n  }\n  function ageFromDob(params, hash) {\n    let day, month, year;\n    if (!hash) {\n      hash = {};\n    }\n    if (params && params.length === 3) {\n      day = params[0];\n      month = params[1];\n      year = params[2];\n    } else {\n      ({\n        day,\n        month,\n        year\n      } = hash);\n    }\n    if ((0, _utils.isNone)(day)) {\n      day = 1;\n    }\n    if ((0, _utils.isNone)(month)) {\n      month = 1;\n    }\n    if ((0, _utils.isNone)(year)) {\n      return;\n    }\n    let age = yearsSince(day, month, year);\n    let retval = \"\";\n    if (age < 2) {\n      age = Math.floor(age * 12);\n      if (age === 1) {\n        retval = \"1 month\";\n      } else {\n        retval = `${age.toString()} months`;\n      }\n    } else {\n      retval = Math.floor(age).toString();\n      if (hash.ago) {\n        retval += \" years\";\n      }\n    }\n    if (hash.ago) {\n      retval += \" ago\";\n    }\n    return retval;\n  }\n  var _default = _exports.default = (0, _helper.helper)(ageFromDob);\n});","define(\"settify-mvp/helpers/age-from-object\", [\"exports\", \"@ember/component/helper\", \"settify-mvp/helpers/age-from-dob\"], function (_exports, _helper, _ageFromDob) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.ageFromObject = ageFromObject;\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"settify-mvp/helpers/age-from-dob\"eaimeta@70e063a35619d71f\n  function ageFromObject(params /* , hash */) {\n    if (!params || !params.length || !params[0]) {\n      return;\n    }\n    let obj = params[0];\n    if (Array.isArray(obj)) {\n      return obj.map(obj => getAge(obj));\n    }\n    return getAge(obj);\n  }\n  function getAge(obj) {\n    const calculated = (0, _ageFromDob.yearsSince)(obj.dobDay, obj.dobMonth, obj.dobYear) || (0, _ageFromDob.yearsSince)(obj.dobday, obj.dobmonth, obj.dobyear);\n    if (typeof calculated === \"number\") {\n      return calculated;\n    }\n    if (typeof obj.age === \"number\") {\n      return obj.age;\n    }\n    if (typeof obj.age === \"string\") {\n      return parseInt(obj.age);\n    }\n  }\n  var _default = _exports.default = (0, _helper.helper)(ageFromObject);\n});","define(\"settify-mvp/helpers/and\", [\"exports\", \"ember-truth-helpers/helpers/and\"], function (_exports, _and) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _and.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-truth-helpers/helpers/and\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/app-version\", [\"exports\", \"@ember/component/helper\", \"settify-mvp/config/environment\", \"ember-cli-app-version/utils/regexp\"], function (_exports, _helper, _environment, _regexp) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.appVersion = appVersion;\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"settify-mvp/config/environment\",0,\"ember-cli-app-version/utils/regexp\"eaimeta@70e063a35619d71f\n  function appVersion(_, hash = {}) {\n    const version = _environment.default.APP.version;\n    // e.g. 1.0.0-alpha.1+4jds75hf\n\n    // Allow use of 'hideSha' and 'hideVersion' For backwards compatibility\n    let versionOnly = hash.versionOnly || hash.hideSha;\n    let shaOnly = hash.shaOnly || hash.hideVersion;\n    let match = null;\n    if (versionOnly) {\n      if (hash.showExtended) {\n        match = version.match(_regexp.versionExtendedRegExp); // 1.0.0-alpha.1\n      }\n      // Fallback to just version\n      if (!match) {\n        match = version.match(_regexp.versionRegExp); // 1.0.0\n      }\n    }\n    if (shaOnly) {\n      match = version.match(_regexp.shaRegExp); // 4jds75hf\n    }\n    return match ? match[0] : version;\n  }\n  var _default = _exports.default = (0, _helper.helper)(appVersion);\n});","define(\"settify-mvp/helpers/augment-hash\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.augmentHash = augmentHash;\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function augmentHash(params, hash = {}) {\n    let context = JSON.parse(JSON.stringify(params[0]));\n    for (const key in hash) {\n      // having hash.hasOwnProperty throws an error here\n      context[key] = hash[key];\n    }\n    return context;\n  }\n  var _default = _exports.default = (0, _helper.helper)(augmentHash);\n});","define(\"settify-mvp/helpers/basic-display-if\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.basicDisplayIf = basicDisplayIf;\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function basicDisplayIf(params, hash) {\n    let {\n      model,\n      statusCode\n    } = hash;\n    let displayIfArray = params[0];\n    if (!model) {\n      console.log(\"Must provide model\");\n      return false;\n    }\n    if (!displayIfArray || !displayIfArray.length) {\n      return true;\n    }\n    let shouldDisplay = true;\n    displayIfArray.forEach(id => {\n      const [idToCheck, valToCheck] = id.split(\":\");\n      if (id[0] === \"!\") {\n        if (idToCheck === \"statusCode\") {\n          if (Number(valToCheck) === statusCode) {\n            shouldDisplay = false;\n          }\n        } else if (model[id.slice(1)]) {\n          shouldDisplay = false;\n        }\n      } else {\n        if (idToCheck === \"statusCode\") {\n          if (Number(valToCheck) !== statusCode) {\n            shouldDisplay = false;\n          }\n        } else if (!model[id]) {\n          shouldDisplay = false;\n        }\n      }\n    });\n    return shouldDisplay;\n  }\n  var _default = _exports.default = (0, _helper.helper)(basicDisplayIf);\n});","define(\"settify-mvp/helpers/bs-contains\", [\"exports\", \"ember-bootstrap/helpers/bs-contains\"], function (_exports, _bsContains) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"bsContains\", {\n    enumerable: true,\n    get: function () {\n      return _bsContains.bsContains;\n    }\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _bsContains.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/helpers/bs-contains\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/bs-default\", [\"exports\", \"ember-bootstrap/helpers/bs-default\"], function (_exports, _bsDefault) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _bsDefault.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/helpers/bs-default\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/bs-eq\", [\"exports\", \"ember-bootstrap/helpers/bs-eq\"], function (_exports, _bsEq) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _bsEq.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/helpers/bs-eq\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/bs-form-horiz-input-class\", [\"exports\", \"ember-bootstrap/helpers/bs-form-horiz-input-class\"], function (_exports, _bsFormHorizInputClass) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _bsFormHorizInputClass.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/helpers/bs-form-horiz-input-class\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/bs-form-horiz-offset-class\", [\"exports\", \"ember-bootstrap/helpers/bs-form-horiz-offset-class\"], function (_exports, _bsFormHorizOffsetClass) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _bsFormHorizOffsetClass.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/helpers/bs-form-horiz-offset-class\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/bs-noop\", [\"exports\", \"ember-bootstrap/helpers/bs-noop\"], function (_exports, _bsNoop) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _bsNoop.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/helpers/bs-noop\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/bs-size-class\", [\"exports\", \"ember-bootstrap/helpers/bs-size-class\"], function (_exports, _bsSizeClass) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _bsSizeClass.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/helpers/bs-size-class\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/bs-type-class\", [\"exports\", \"ember-bootstrap/helpers/bs-type-class\"], function (_exports, _bsTypeClass) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _bsTypeClass.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-bootstrap/helpers/bs-type-class\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/cancel-all\", [\"exports\", \"ember-concurrency/helpers/cancel-all\"], function (_exports, _cancelAll) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _cancelAll.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-concurrency/helpers/cancel-all\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/check-unique-standalone-page-id\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.checkUniqueStandalonePageID = checkUniqueStandalonePageID;\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  // This helper checks if a unique page ID has been implemented on the form definition\n  function checkUniqueStandalonePageID(params, hash) {\n    const {\n      client,\n      pageID\n    } = hash;\n    if (!client || !pageID) {\n      return;\n    }\n    return !!client.getUniqueStandalonePageDetails(pageID);\n  }\n  var _default = _exports.default = (0, _helper.helper)(checkUniqueStandalonePageID);\n});","define(\"settify-mvp/helpers/confidence-string\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.confidenceString = confidenceString;\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function confidenceString(params /* , hash */) {\n    if (params[0] >= 75) {\n      if (params[1]) {\n        return params[1];\n      }\n      return \"100% certain\";\n    } else if (params[0] >= 50) {\n      return \"Confident\";\n    } else if (params[0] >= 25) {\n      return \"Fairly confident\";\n    }\n    return \"Just a guess\";\n  }\n  var _default = _exports.default = (0, _helper.helper)(confidenceString);\n});","define(\"settify-mvp/helpers/contains\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.contains = contains;\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function contains(params /* , hash */) {\n    if (!params || params.length !== 2) {\n      return false;\n    }\n    let haystack = params[0];\n    let needle = params[1];\n    if (haystack && haystack.indexOf) {\n      return haystack.indexOf(needle) !== -1;\n    }\n  }\n  var _default = _exports.default = (0, _helper.helper)(contains);\n});","define(\"settify-mvp/helpers/css-supported\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.cssSupported = cssSupported;\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function cssSupported(params /* , hash */) {\n    if (!params || !params.length) {\n      return true;\n    }\n    try {\n      for (let i = 0; i < params.length; i++) {\n        let css = params[i];\n        if (!(css in document.documentElement.style)) {\n          return false;\n        }\n      }\n      return true;\n    } catch (error) {\n      return false;\n    }\n  }\n  var _default = _exports.default = (0, _helper.helper)(cssSupported);\n});","define(\"settify-mvp/helpers/current-year\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.currentYear = currentYear;\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  const g_date = new Date();\n  function currentYear(/* params, hash */\n  ) {\n    return g_date.getFullYear();\n  }\n  var _default = _exports.default = (0, _helper.helper)(currentYear);\n});","define(\"settify-mvp/helpers/de-fingerprint\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.deFingerprint = deFingerprint;\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function deFingerprint(params /* , hash */) {\n    let elements = [];\n    for (let i = 0; params && i < params.length; i++) {\n      const p = params[i];\n      let val = (p || \"\").replace(/-[a-z0-9]{24,}\\.png$/i, \".png\").replace(/http.*\\//i, \"\").replace(/\\/?assets\\/images\\/icons\\//i, \"\");\n      elements.push(val);\n    }\n    return elements.join(\" \");\n  }\n  var _default = _exports.default = (0, _helper.helper)(deFingerprint);\n});","define(\"settify-mvp/helpers/decimal\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.decimal = decimal;\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function decimal(params /* , hash */) {\n    if (!params) {\n      return \"unknown\";\n    }\n    if (params.length <= 1) {\n      return \"unknown\";\n    }\n    if (params[0] === undefined || params[0] === null) {\n      return \"unknown\";\n    }\n    let numeric = parseFloat(params[0]);\n    if (isNaN(numeric)) {\n      return \"unknown\";\n    }\n    return numeric.toFixed(params[1]);\n  }\n  var _default = _exports.default = (0, _helper.helper)(decimal);\n});","define(\"settify-mvp/helpers/deep-copy\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.deepCopy = deepCopy;\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  /**\n   * Deep clones an object while respecting nullish values unlike other\n   * methods like JSON.parse(JSON.stringify(object))\n   * @param {object} target\n   */\n\n  // Use a WeakMap to store the original and cloned objects to prevent circular references\n  function deepCopy(target, map = new WeakMap()) {\n    // Return non-object values and nullish values as is\n    if (typeof target !== \"object\" || [null, undefined].includes(target)) {\n      return target;\n    }\n\n    // Check if the target has already been cloned\n    if (map.get(target)) {\n      return map.get(target);\n    }\n\n    // Check if the target has already been cloned\n    if (map.get(target)) {\n      return map.get(target);\n    }\n\n    // Get the type of the target\n    const type = toRawType(target);\n    switch (type) {\n      case \"Set\":\n        return cloneSet(target, map);\n      case \"Map\":\n        return cloneMap(target, map);\n      case \"Array\":\n        return cloneArray(target, map);\n      case \"Object\":\n        return cloneObject(target, map);\n      case \"Symbol\":\n        return cloneSymbol(target);\n      case \"RegExp\":\n        return cloneReg(target);\n      case \"Date\":\n        return cloneDate(target);\n      case \"Error\":\n        return cloneError(target);\n      case \"Boolean\":\n      case \"Number\":\n      case \"String\":\n        return JSON.parse(JSON.stringify(target));\n      default:\n        return target;\n    }\n  }\n  function cloneSet(target, map) {\n    const cloned = new Set();\n    map.set(target, cloned);\n    target.forEach(value => {\n      cloned.add(deepCopy(value, map));\n    });\n    return cloned;\n  }\n  function cloneMap(target, map) {\n    const cloned = new Map();\n    map.set(target, cloned);\n    target.forEach((value, key) => {\n      cloned.set(key, deepCopy(value, map));\n    });\n    return cloned;\n  }\n  function cloneArray(target, map) {\n    const cloned = [];\n    map.set(target, cloned);\n    target.forEach((value, index) => {\n      cloned[index] = deepCopy(value, map);\n    });\n    return cloned;\n  }\n  function cloneObject(target, map) {\n    const cloned = {};\n    map.set(target, cloned);\n    Object.keys(target).forEach(key => {\n      cloned[key] = deepCopy(target[key], map);\n    });\n    return cloned;\n  }\n  function cloneSymbol(sym) {\n    return Object(Symbol.prototype.valueOf.call(sym));\n  }\n  function cloneReg(regex) {\n    const reFlags = /\\w*$/;\n    const result = new regex.constructor(regex.source, reFlags.exec(regex));\n    result.lastIndex = regex.lastIndex;\n    return result;\n  }\n  function cloneDate(date) {\n    return new Date(date.getTime());\n  }\n  function cloneError(error) {\n    const cloned = new error.constructor(error.message);\n    if (error.stack) {\n      cloned.stack = error.stack;\n    }\n    return cloned;\n  }\n\n  // Helper function to get the type of an object\n  function toRawType(value) {\n    return Object.prototype.toString.call(value).slice(8, -1);\n  }\n  var _default = _exports.default = (0, _helper.helper)(deepCopy);\n});","define(\"settify-mvp/helpers/defined\", [\"exports\", \"@ember/component/helper\", \"@ember/utils\"], function (_exports, _helper, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.defined = defined;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"@ember/utils\"eaimeta@70e063a35619d71f\n  function defined(params, hash) {\n    if (!params) {\n      return false;\n    }\n    if (!hash) {\n      hash = {};\n    }\n    for (let i = 0; i < params.length; i++) {\n      if (hash.excludeEmptyObjects) {\n        if (params[i] && typeof params[i] === \"object\" && Object.keys(params[i]).length === 0) {\n          return false;\n        }\n      }\n      if ((0, _utils.isNone)(params[i])) {\n        return false;\n      }\n    }\n    return true;\n  }\n  var _default = _exports.default = (0, _helper.helper)(defined);\n});","define(\"settify-mvp/helpers/did-insert-helper\", [\"exports\", \"ember-render-helpers/helpers/did-insert-helper\"], function (_exports, _didInsertHelper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _didInsertHelper.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-render-helpers/helpers/did-insert-helper\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/did-insert\", [\"exports\", \"ember-render-helpers/helpers/did-insert\"], function (_exports, _didInsert) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _didInsert.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-render-helpers/helpers/did-insert\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/did-update-helper\", [\"exports\", \"ember-render-helpers/helpers/did-update-helper\"], function (_exports, _didUpdateHelper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _didUpdateHelper.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-render-helpers/helpers/did-update-helper\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/did-update\", [\"exports\", \"ember-render-helpers/helpers/did-update\"], function (_exports, _didUpdate) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _didUpdate.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-render-helpers/helpers/did-update\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/div\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.div = div;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function div(params /* , hash */) {\n    if (!params || params.length !== 2) {\n      return 0;\n    }\n    let [numerator, denominator] = params;\n    if (denominator) {\n      return numerator / denominator;\n    }\n    return 0;\n  }\n  var _default = _exports.default = (0, _helper.helper)(div);\n});","define(\"settify-mvp/helpers/document-icon\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.documentIcon = documentIcon;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function documentIcon(params /* , hash */) {\n    if (!params || !params[0] || !params[0].length) {\n      return \"fal fa-file-alt\";\n    }\n    let ext = params[0].slice(params[0].lastIndexOf(\".\") + 1);\n    switch (ext) {\n      case \"jpg\":\n      case \"jpeg\":\n      case \"png\":\n      case \"tif\":\n      case \"tiff\":\n      case \"gif\":\n      case \"bmp\":\n        return \"fal fa-image\";\n      default:\n        return \"fal fa-file-alt\";\n    }\n  }\n  var _default = _exports.default = (0, _helper.helper)(documentIcon);\n});","define(\"settify-mvp/helpers/domain-url\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.domainUrl = domainUrl;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  /**\n   * Used by our settify-regional-overlay to render various regional urls (com.au, co.uk, com, etc...)\n   * @param params\n   * @returns {string}\n   */\n  function domainUrl(params) {\n    if (params.length === 2) {\n      const domain = params[0] || {};\n      const regionDomain = params[1] || {};\n      if (\"localhost\" === regionDomain.tld) {\n        return \"http://localhost:4200\";\n      }\n      if (\"localhost\" === window.location.hostname) {\n        return `http://app.settifylocal${regionDomain.tld}`;\n      }\n      return window.location.origin.replace(domain.tld, regionDomain.tld);\n    }\n    return window.location.origin;\n  }\n  var _default = _exports.default = (0, _helper.helper)(domainUrl);\n});","define(\"settify-mvp/helpers/editor-question-title\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.editorQuestionTitle = editorQuestionTitle;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function editorQuestionTitle(params, hash) {\n    let {\n      title,\n      content,\n      type,\n      id\n    } = hash;\n    if (title) {\n      return title;\n    } else if (content && typeof content === \"string\") {\n      return content;\n    } else if (type === \"Block\") {\n      return `Block: ${id}`;\n    } else if (type) {\n      return type;\n    }\n    return \"Unnamed question\";\n  }\n  var _default = _exports.default = (0, _helper.helper)(editorQuestionTitle);\n});","define(\"settify-mvp/helpers/element\", [\"exports\", \"ember-element-helper/helpers/element\"], function (_exports, _element) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _element.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-element-helper/helpers/element\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/encode-uri-component\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.encodeUriComponent = encodeUriComponent;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function encodeUriComponent(params /* , hash */) {\n    let retval = \"\";\n    for (let i = 0; i < params.length; i++) {\n      retval += encodeURIComponent(params[i]);\n    }\n    return retval;\n  }\n  var _default = _exports.default = (0, _helper.helper)(encodeUriComponent);\n});","define(\"settify-mvp/helpers/ensure-safe-component\", [\"exports\", \"@embroider/util\"], function (_exports, _util) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _util.EnsureSafeComponentHelper;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"@embroider/util\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/eq\", [\"exports\", \"ember-truth-helpers/helpers/eq\"], function (_exports, _eq) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _eq.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-truth-helpers/helpers/eq\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/family-tree-relationship\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.familyTreeRelationship = familyTreeRelationship;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function familyTreeRelationship(params, hash) {\n    if (!params || !params.length || !params[0]) {\n      return \"\";\n    }\n    let status = params[0];\n    let timing = params[1];\n    let relationship = \"\";\n    let timingString = \"\";\n    let {\n      clientRecord,\n      previousChildParent,\n      relationshipStarted,\n      relationshipEnded,\n      includeStepChildren\n    } = hash;\n    if (timing === \"former\" || timing === \"separated\") {\n      timingString = \"former \";\n    } else if (timing === \"untilPassed\") {\n      timingString = \"predeceased \";\n    }\n    if (status === \"married\" || status === \"spouse\") {\n      relationship += `${clientRecord.get(\"deceased.firstName\")}'s ${timingString}spouse`;\n    } else if (status === \"unmarried\" || status === \"significantRelationship\") {\n      relationship += `${clientRecord.get(\"deceased.firstName\")}'s ${timingString}partner`;\n    } else if (status === \"engaged\") {\n      relationship += `${clientRecord.get(\"deceased.firstName\")}'s ${timingString}fiancee`;\n    } else if (status === \"civilunion\") {\n      relationship += `${clientRecord.get(\"deceased.firstName\")}'s ${timingString}civil partner`;\n    } else if ([\"sibling\", \"grandparent\", \"uncle\", \"aunt\", \"aunt or uncle\", \"parent\", \"child\", \"grandchild\", \"nibling\", \"cousin\"].includes(status) && clientRecord) {\n      relationship += `${clientRecord.get(\"deceased.firstName\")}'s ${timingString}${status}`;\n    } else if (status === \"hadChildrenTogether\") {\n      relationship = `had children with ${clientRecord.get(\"deceased.firstName\")}`;\n    } else if (previousChildParent) {\n      relationship = `child from ${previousChildParent.firstName}'s previous relationship`;\n    } else if ([\"stepDaughter\", \"stepSon\", \"stepChild\"].includes(status)) {\n      if (includeStepChildren) {\n        relationship += \"step-child\";\n      }\n    } else if (typeof status === \"string\") {\n      relationship += status;\n    }\n    if (relationshipStarted) {\n      relationship += ` From: ${relationshipStarted}. To: ${relationshipEnded || relationship.includes(\"former\") ? \"date unknown\" : \"present\"}`;\n    }\n    return relationship ? ` (${relationship})` : \"\";\n  }\n  var _default = _exports.default = (0, _helper.helper)(familyTreeRelationship);\n});","define(\"settify-mvp/helpers/first-word\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.firstWord = firstWord;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function firstWord(params /* , hash */) {\n    if (!params || !params.length) {\n      return;\n    }\n    let retval = \"\";\n    for (let i = 0; i < params.length; i++) {\n      if (!params[i]) {\n        continue;\n      }\n      let matches = params[i].match(/^\\s*([^\\s]+)/);\n      if (matches && matches.length === 2) {\n        if (retval) {\n          retval += \" \";\n        }\n        retval += matches[1];\n      }\n    }\n    return retval;\n  }\n  var _default = _exports.default = (0, _helper.helper)(firstWord);\n});","define(\"settify-mvp/helpers/format-number\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.formatNumber = formatNumber;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function formatNumber(params, namedParams) {\n    // add commas for the thousands\n    let prefix = namedParams.money ? \"$\" : \"\";\n    let value = \"unknown\";\n    if (params.length > 0) {\n      if (!isNaN(params[0]) && params[0] !== null) {\n        const num = namedParams.noRound ? params[0] : Math.round(params[0]);\n        value = num.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n      }\n    }\n    if (value.match(/^-/)) {\n      // negative number\n      return value.replace(/^-/, `-${prefix}`);\n    } else if (value === \"unknown\") {\n      return \"(No information provided)\";\n    }\n    return prefix + value;\n  }\n  var _default = _exports.default = (0, _helper.helper)(formatNumber);\n});","define(\"settify-mvp/helpers/format-whitespace\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.formatWhitespace = formatWhitespace;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  // don't allow HTML to slip in!\n  // from https://github.com/wycats/handlebars.js/blob/7535e48a7969229f44489124a8ef07bd17363f06/lib/handlebars/utils.js\n  const escape = {\n    \"&\": \"&amp;\",\n    \"<\": \"&lt;\",\n    \">\": \"&gt;\",\n    '\"': \"&quot;\",\n    \"'\": \"&#x27;\",\n    \"`\": \"&#x60;\",\n    \"=\": \"&#x3D;\"\n  };\n  const badChars = /[&<>\"'`=]/g;\n  function escapeChar(chr) {\n    return escape[chr];\n  }\n  function formatWhitespace(params /* , hash */) {\n    if (!params || !params.length) {\n      return;\n    }\n    let retval = \"\";\n    for (let i = 0; i < params.length; i++) {\n      if (params[i]) {\n        let wip = `${params[i]}\\n\\n`;\n        wip = wip.replace(badChars, escapeChar);\n        wip = wip.replace(/[ \\t]+$/gm, \"\");\n        wip = wip.replace(/^[ \\t]+/gm, \"\");\n        wip = wip.replace(/([^\\n])\\n([^\\n])/g, \"$1 <br> $2\");\n        wip = wip.replace(/^\\s*(.+?)\\s*\\n\\s*\\n/gm, \"<p>$1</p>\\n\\n\");\n        retval += wip;\n      }\n    }\n    // console.log(retval);\n    return retval;\n  }\n  var _default = _exports.default = (0, _helper.helper)(formatWhitespace);\n});","define(\"settify-mvp/helpers/gender-defined\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.genderDefined = genderDefined;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function genderDefined(params /* , hash */) {\n    if (!params || !params.length || typeof params[0] === \"undefined\") {\n      return false;\n    }\n    if (params[0].gender === \"male\" || params[0].gender === \"female\") {\n      return true;\n    }\n    return false;\n  }\n  var _default = _exports.default = (0, _helper.helper)(genderDefined);\n});","define(\"settify-mvp/helpers/gender-specific\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.genderSpecific = genderSpecific;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function genderSpecific(params /* , hash */) {\n    if (!params || !params.length) {\n      return;\n    }\n    let type = params[0],\n      gender;\n    if (params.length > 1) {\n      gender = params[1];\n    }\n    switch (type) {\n      case \"object pronoun\":\n        switch (gender) {\n          case \"male\":\n            return \"him\";\n          case \"female\":\n            return \"her\";\n          default:\n            return \"them\";\n        }\n      case \"subject pronoun\":\n        switch (gender) {\n          case \"male\":\n            return \"he\";\n          case \"female\":\n            return \"she\";\n          default:\n            return \"they\";\n        }\n      case \"verb to be\":\n        switch (gender) {\n          case \"male\":\n          case \"female\":\n            return \"is\";\n          default:\n            return \"are\";\n        }\n      case \"verb to have\":\n        switch (gender) {\n          case \"male\":\n          case \"female\":\n            return \"has\";\n          default:\n            return \"have\";\n        }\n      case \"possessive pronoun\":\n        switch (gender) {\n          case \"male\":\n            return \"his\";\n          case \"female\":\n            return \"her\";\n          default:\n            return \"their\";\n        }\n      default:\n        return;\n    }\n  }\n  var _default = _exports.default = (0, _helper.helper)(genderSpecific);\n});","define(\"settify-mvp/helpers/get-answers-from\", [\"exports\", \"@ember/component/helper\", \"@ember/utils\", \"settify-mvp/helpers/get-people-from-ids\"], function (_exports, _helper, _utils, _getPeopleFromIds) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.getAnswersFrom = getAnswersFrom;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"@ember/utils\",0,\"settify-mvp/helpers/get-people-from-ids\"eaimeta@70e063a35619d71f\n  const replacePeopleWithIDs = (value, clientRecord) => {\n    const personOrPeople = (0, _getPeopleFromIds.getPeopleFromIds)([value], {\n      clientRecord\n    });\n    return personOrPeople || value;\n  };\n  function getAnswersFrom(params, hash) {\n    let {\n      client,\n      induction,\n      chapter,\n      page,\n      repeatToken,\n      create,\n      answersLocation,\n      loop,\n      filterByID\n    } = hash;\n    repeatToken = repeatToken || hash.repeat || null;\n    let answers;\n    if (answersLocation) {\n      // Evaluate custom and special variables, and if we get a result, use that rather than trying to fish out a value from the answers object\n      const customVariable = client.getCustomVariableValue(answersLocation, {\n        induction,\n        chapter,\n        page,\n        repeat: repeatToken,\n        loop\n      });\n      const specialVariable = client.getSpecialVariable(answersLocation);\n      if (specialVariable.exists) {\n        answers = replacePeopleWithIDs(specialVariable.value, client);\n      } else if (customVariable.exists) {\n        answers = replacePeopleWithIDs(customVariable.value, client);\n      } else {\n        let elements = answersLocation.split(\".\");\n        if (elements.length === 4) {\n          chapter = elements[0];\n          page = elements[1];\n          let questionID = elements[2];\n          let subquestionID = elements[3];\n          let answer = client.getPreciseAnswer(induction, chapter, page, questionID, subquestionID, repeatToken, {\n            create,\n            filterByID\n          });\n          if (answer && typeof answer === \"object\") {\n            answers = answer;\n          }\n        } else if (elements.length === 3) {\n          chapter = elements[0];\n          page = elements[1];\n          let questionID = elements[2];\n          let answer = client.getPreciseAnswer(induction, chapter, page, questionID, null, repeatToken, {\n            create,\n            filterByID\n          });\n          if (answer && typeof answer === \"object\") {\n            answers = answer;\n          }\n        } else if (elements.length === 2) {\n          chapter = elements[0];\n          page = elements[1];\n        } else if (elements.length === 1) {\n          page = elements[0];\n        }\n      }\n    }\n    if (Array.isArray(answers) && !(0, _utils.isNone)(loop)) {\n      // we should be looping through this array.\n      if (loop === \"max\") {\n        loop = answers.length - 1;\n      }\n      loop = parseInt(loop);\n      if (loop >= answers.length) {\n        loop = answers.length - 1;\n      }\n      if (loop < 0) {\n        loop = 0;\n      }\n      return answers[loop];\n    } else if (answers) {\n      return answers;\n    }\n    return client.getAnswersFor(induction, chapter, page, repeatToken, {\n      create,\n      filterByID\n    });\n  }\n  var _default = _exports.default = (0, _helper.helper)(getAnswersFrom);\n});","define(\"settify-mvp/helpers/get-each\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.getEach = getEach;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function getEach(params /* , hash */) {\n    if (params.length < 1) {\n      return [];\n    } else if (params.length === 1) {\n      return params[0];\n    }\n    return params[0].map(arrayElement => arrayElement[params[1]]);\n  }\n  var _default = _exports.default = (0, _helper.helper)(getEach);\n});","define(\"settify-mvp/helpers/get-known-entity\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.getKnownEntity = getKnownEntity;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function getKnownEntity([clientRecord, id]) {\n    return clientRecord.getKnownEntity(id);\n  }\n  var _default = _exports.default = (0, _helper.helper)(getKnownEntity);\n});","define(\"settify-mvp/helpers/get-people-from-ids\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.getPeopleFromIds = getPeopleFromIds;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  // getPeopleFromIds takes a personID (or an array of personIDs) and pulls out the right people from knownEntities\n  // It can also then recurse, and pull out subquestions of these people\n\n  // Inputs:\n  // params: [personID] OR [[personID1, personID1, ..., personIDx]]\n  // hash: {\n  //  clientRecord: a client record,\n  //  remainingSubquestions: [questionID1, questionID2, ...., questionIDX] (A list of subquestions we want OF these people),\n  //  options: {\n  //    filterById: personID (Only pull out a single person from the list of peopleIDs),\n  //    excludeFamily: boolean (exclude family members from the potential people),\n  //  }\n  // }\n  // Output:\n  // a person object OR [personObject1, personObject2, ...., personObjectX] OR an answer to a question OR any number of nested arrays each with answers pertaining to a single person]\n  function getPeopleFromIds(params, hash = {}) {\n    let {\n      clientRecord,\n      remainingSubquestions,\n      options = {}\n    } = hash;\n    let potentialID = params[0];\n    let retValue;\n    if (typeof potentialID === \"string\" && potentialID.match(/^[A-Za-z0-9]{8}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{12}$/)) {\n      retValue = (clientRecord.get(\"knownEntities\") || []).filter(p => p.id === potentialID)[0];\n    } else if (Array.isArray(potentialID) && potentialID.length && potentialID.every(a => typeof a === \"string\" && a.match(/^[A-Za-z0-9]{8}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{12}$/))) {\n      retValue = (clientRecord.get(\"knownEntities\") || []).filter(e => potentialID.includes(e.id));\n      if (options.filterByID) {\n        // We only need one person from the list\n        retValue = retValue.find(p => p.id === options.filterByID);\n      }\n    } else {\n      retValue = potentialID; // Its not an ID, or an array of ID, just an answer\n    }\n    if (remainingSubquestions && remainingSubquestions.length) {\n      let dereference = remainingSubquestions[0]; // Get the first subq\n      // Recurse, in case the subquestion was a personID/array of personIDs, or there are more subquestions\n      if (Array.isArray(retValue)) {\n        retValue = retValue.map(r => r[dereference]).map(r => {\n          return getPeopleFromIds([r], {\n            ...hash,\n            remainingSubquestions: remainingSubquestions.slice(1)\n          });\n        });\n        return retValue;\n      } else if (retValue) {\n        return getPeopleFromIds([retValue[dereference]], {\n          ...hash,\n          remainingSubquestions: remainingSubquestions.slice(1)\n        });\n      }\n    }\n    return retValue;\n  }\n  var _default = _exports.default = (0, _helper.helper)(getPeopleFromIds);\n});","define(\"settify-mvp/helpers/get-row-attributes\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.getRowAttributes = getRowAttributes;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function getRowAttributes(params) {\n    if (!params?.length) {\n      return false;\n    }\n    let style = \"\";\n    // For now there are only alignment attributes so let's return hardcoded alignment style\n    if (params[0]?.attrs?.textAlign) {\n      style = style.concat(`text-align: ${params[0].attrs.textAlign}`);\n    }\n    return style;\n  }\n  var _default = _exports.default = (0, _helper.helper)(getRowAttributes);\n});","define(\"settify-mvp/helpers/gt\", [\"exports\", \"ember-truth-helpers/helpers/gt\"], function (_exports, _gt) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _gt.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-truth-helpers/helpers/gt\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/gte\", [\"exports\", \"ember-truth-helpers/helpers/gte\"], function (_exports, _gte) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _gte.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-truth-helpers/helpers/gte\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/html-safe\", [\"exports\", \"@ember/component/helper\", \"@ember/template\"], function (_exports, _helper, _template) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.htmlSafe = htmlSafe;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"@ember/template\"eaimeta@70e063a35619d71f\n  function htmlSafe(params /* , hash */) {\n    return (0, _template.htmlSafe)(params[0]);\n  }\n  var _default = _exports.default = (0, _helper.helper)(htmlSafe);\n});","define(\"settify-mvp/helpers/includes\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.includes = includes;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function includes(params /* , hash */) {\n    if (!params || params.length !== 2) {\n      return false;\n    }\n    let list = params[0] || [];\n    let obj = params[1];\n    for (let i = 0; i < list.length; i++) {\n      const element = list[i];\n      if (obj === element) {\n        return true;\n      }\n    }\n    return false;\n  }\n  var _default = _exports.default = (0, _helper.helper)(includes);\n});","define(\"settify-mvp/helpers/informal-name\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.informalName = informalName;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function informalName(params /* , hash */) {\n    if (!params || !params.length) {\n      return;\n    }\n    let name = params[0];\n    let regexes = [/ OAM$/, / AM$/, / AO$/, / AC$/, / QC$/, / SC$/];\n    for (let i = 0; i < regexes.length; i++) {\n      name = name.replace(regexes[i], \"\");\n    }\n    return name;\n  }\n  var _default = _exports.default = (0, _helper.helper)(informalName);\n});","define(\"settify-mvp/helpers/inverse-relationship\", [\"exports\", \"@ember/component/helper\", \"settify-mvp/lib/relationshipgender\"], function (_exports, _helper, _relationshipgender) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.inverseRelationship = inverseRelationship;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"settify-mvp/lib/relationshipgender\"eaimeta@70e063a35619d71f\n  function inverseRelationship(params /* , hash */) {\n    let [relationship, gender] = params;\n    if (_relationshipgender.parentRelationships.includes(relationship)) {\n      return (0, _relationshipgender.genderOutput)(gender, \"son\", \"daughter\", \"child\");\n    } else if (_relationshipgender.stepParentRelationships.includes(relationship)) {\n      return (0, _relationshipgender.genderOutput)(gender, \"stepson\", \"stepdaughter\", \"stepchild\");\n    } else if (_relationshipgender.siblingRelationships.includes(relationship)) {\n      return (0, _relationshipgender.genderOutput)(gender, \"brother\", \"sister\", \"sibling\");\n    } else if (_relationshipgender.partnerRelationships.includes(relationship)) {\n      return (0, _relationshipgender.genderOutput)(gender, \"husband\", \"wife\", \"partner\");\n    } else if (_relationshipgender.piblingRelationships.includes(relationship)) {\n      return (0, _relationshipgender.genderOutput)(gender, \"nephew\", \"niece\", \"nibling\");\n    } else if (_relationshipgender.niblingRelationships.includes(relationship)) {\n      return (0, _relationshipgender.genderOutput)(gender, \"uncle\", \"aunt\", \"parent's sibling\");\n    } else if (_relationshipgender.childRelationships.includes(relationship)) {\n      return (0, _relationshipgender.genderOutput)(gender, \"father\", \"mother\", \"parent\");\n    } else if (_relationshipgender.stepChildRelationships.includes(relationship)) {\n      return (0, _relationshipgender.genderOutput)(gender, \"stepfather\", \"stepmother\", \"stepparent\");\n    } else if (_relationshipgender.grandParentRelationships.includes(relationship)) {\n      return (0, _relationshipgender.genderOutput)(gender, \"grandson\", \"granddaughter\", \"grandchild\");\n    } else if (_relationshipgender.grandChildRelationships.includes(relationship)) {\n      return (0, _relationshipgender.genderOutput)(gender, \"grandfather\", \"grandmother\", \"grandparent\");\n    } else if (relationship === \"client\") {\n      return \"professional advisor\";\n    }\n    // Partner, friend, cousin\n    return relationship;\n  }\n  var _default = _exports.default = (0, _helper.helper)(inverseRelationship);\n});","define(\"settify-mvp/helpers/invoice-item-name\", [\"exports\", \"@ember/component/helper\", \"moment\"], function (_exports, _helper, _moment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.invoiceItemName = invoiceItemName;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"moment\"eaimeta@70e063a35619d71f\n  function invoiceItemName(params /* , hash */) {\n    if (!params || !params.length) {\n      return;\n    }\n    let invoice = params[0];\n    let retval = \"[unnamed invoice request]\";\n    if (invoice.requestType === \"sweep\") {\n      retval = `Historical sweep (${(0, _moment.default)(invoice.requestSent).utc().format(\"MMMM YYYY\")})`;\n    } else if (invoice.requestType === \"rollout\") {\n      retval = `Rollout (${(0, _moment.default)(invoice.startDate).utc().format(\"MMMM YYYY\")})`;\n    } else {\n      retval = (0, _moment.default)(invoice.startDate).utc().format(\"MMMM YYYY\");\n    }\n    return retval;\n  }\n  var _default = _exports.default = (0, _helper.helper)(invoiceItemName);\n});","define(\"settify-mvp/helpers/is-array\", [\"exports\", \"ember-truth-helpers/helpers/is-array\"], function (_exports, _isArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _isArray.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-truth-helpers/helpers/is-array\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/is-empty\", [\"exports\", \"ember-truth-helpers/helpers/is-empty\"], function (_exports, _isEmpty) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _isEmpty.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-truth-helpers/helpers/is-empty\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/is-equal\", [\"exports\", \"ember-truth-helpers/helpers/is-equal\"], function (_exports, _isEqual) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _isEqual.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-truth-helpers/helpers/is-equal\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/json-stringify\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.jsonStringify = jsonStringify;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  /**\n   * Helper to stringify JSON objects with pretty printing.\n   * Usage: {{json-stringify object}}\n   * Usage with spacing: {{json-stringify object spacing=4}}\n   */\n  function jsonStringify([value], {\n    spacing = 2\n  } = {}) {\n    if (value === null || value === undefined) {\n      return \"\";\n    }\n    try {\n      return JSON.stringify(value, null, spacing);\n    } catch (error) {\n      console.error(\"Failed to stringify JSON:\", error);\n      return String(value);\n    }\n  }\n  var _default = _exports.default = (0, _helper.helper)(jsonStringify);\n});","define(\"settify-mvp/helpers/length\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.length = length;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  /**\n   * Return the length of the object/string/array.\n   *\n   * Inspired by handlebars-helpers package.\n   */\n  function length([value] /* , named */) {\n    if (typeof value === \"object\") {\n      value = Object.keys(value);\n    }\n    if (typeof value === \"string\" || Array.isArray(value)) {\n      return value.length;\n    }\n    return 0;\n  }\n  var _default = _exports.default = (0, _helper.helper)(length);\n});","define(\"settify-mvp/helpers/lf-lock-model\", [\"exports\", \"liquid-fire/helpers/lf-lock-model\"], function (_exports, _lfLockModel) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _lfLockModel.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/helpers/lf-lock-model\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/lf-or\", [\"exports\", \"liquid-fire/helpers/lf-or\"], function (_exports, _lfOr) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _lfOr.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/helpers/lf-or\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/load-async-data\", [\"exports\", \"@ember/component/helper\", \"@ember/debug\", \"@glimmer/tracking\"], function (_exports, _helper, _debug, _tracking) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.load = load;\n  var _class, _descriptor, _descriptor2, _descriptor3;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"@ember/debug\",0,\"@glimmer/tracking\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  /**\n   * A WeakMap to store and reuse Data instances for the same promise.\n   * This prevents duplicate state tracking for the same promise.\n   */\n  const MAP = new WeakMap();\n\n  /**\n   * This function takes a promise and tracks its state using Data.\n   * It ensures that the same promise won't have multiple Data instances\n   * by using a WeakMap to store the Data instance.\n   *\n   * @param {Promise} promise - The promise whose state needs to be tracked.\n   * @returns {Data} An instance of Data that tracks the promise's state.\n   */\n  function load(promise) {\n    // Check if the promise already has an associated Data instance.\n    let existingData = MAP.get(promise);\n    if (existingData) {\n      return existingData;\n    }\n\n    // If not, create a new Data instance and store it in the WeakMap.\n    let data = new Data();\n    MAP.set(promise, data);\n\n    // Set up the promise to resolve or reject and update the Data state accordingly.\n    resolveData(data, promise);\n    return data;\n  }\n\n  /**\n   * Resolves the given promise and updates the state of the provided `Data` instance.\n   * @param {Data} data - The `Data` instance that tracks the state of the promise.\n   * @param {Promise} promise - The promise whose state needs to be resolved and tracked.\n   */\n  async function resolveData(data, promise) {\n    try {\n      let value = await promise;\n      data.resolveWith(value);\n    } catch (error) {\n      data.rejectWith(error);\n    }\n  }\n\n  /**\n   * The `Data` class tracks the state of an asynchronous operation.\n   * It encapsulates the state (`LOADING`, `LOADED`, `ERROR`),\n   * the value of the resolved operation, and any error that occurs during the operation.\n   */\n  let Data = (_class = class Data {\n    constructor() {\n      /**\n        @state {'LOADING' | 'LOADED' | 'ERROR'}\n        @private\n       */\n      _initializerDefineProperty(this, \"_state\", _descriptor, this);\n      _initializerDefineProperty(this, \"_value\", _descriptor2, this);\n      _initializerDefineProperty(this, \"_error\", _descriptor3, this);\n    }\n    /**\n     * The current state of the asynchronous operation. Can be 'LOADING', 'LOADED', or 'ERROR'.\n     *\n     * @returns {string} The state of the operation.\n     */\n    get state() {\n      return this._state;\n    }\n\n    /**\n     * The resolved value of the asynchronous operation.\n     * This can only be accessed if the state is 'LOADED'.\n     *\n     * @throws {Error} Throws an assertion if accessed when the state is not 'LOADED'.\n     * @returns {any} The resolved value.\n     */\n    get value() {\n      (true && !(this.state === \"LOADED\") && (0, _debug.assert)(`You can only access 'value' when 'state' is 'LOADED', but it is ${this.state}`, this.state === \"LOADED\"));\n      return this._value;\n    }\n\n    /**\n     * The error of the asynchronous operation.\n     * This can only be accessed if the state is 'ERROR'.\n     *\n     * @throws {Error} Throws an assertion if accessed when the state is not 'ERROR'.\n     * @returns {any} The error.\n     */\n    get error() {\n      (true && !(this.state === \"ERROR\") && (0, _debug.assert)(`You can only access 'error' when 'state' is 'ERROR', but it is ${this.state}`, this.state === \"ERROR\"));\n      return this._error;\n    }\n\n    /**\n     * Returns true if the state is 'LOADING'.\n     *\n     * @returns {boolean} True if the operation is still loading.\n     */\n    get isLoading() {\n      return this.state === \"LOADING\";\n    }\n\n    /**\n     * Returns true if the state is 'LOADED'.\n     *\n     * @returns {boolean} True if the operation has loaded successfully.\n     */\n    get isLoaded() {\n      return this.state === \"LOADED\";\n    }\n\n    /**\n     * Returns true if the state is 'ERROR'.\n     *\n     * @returns {boolean} True if the operation resulted in an error.\n     */\n    get isError() {\n      return this.state === \"ERROR\";\n    }\n\n    /**\n     * Resolves the asynchronous operation with a value and updates the state to 'LOADED'.\n     *\n     * @param {any} value - The value to resolve with.\n     */\n    resolveWith(value) {\n      this._state = \"LOADED\";\n      this._value = value;\n    }\n\n    /**\n     * Rejects the asynchronous operation with an error and updates the state to 'ERROR'.\n     *\n     * @param {any} error - The error to reject with.\n     */\n    rejectWith(error) {\n      this._state = \"ERROR\";\n      this._error = error;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"_state\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"LOADING\";\n    }\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"_value\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"_error\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n  /**\n   * Helper that wraps the `load` function to track and resolve the state of a promise.\n   * This helper can be used in templates and JavaScript classes as well to track the\n   * loading, error, or success state of a promise.\n   *\n   * @param {Array} args - An array where the first item is the promise to track.\n   * @returns {Data} An Data instance that tracks the state of the promise.\n   */\n  var _default = _exports.default = (0, _helper.helper)(([promise]) => load(promise));\n});","define(\"settify-mvp/helpers/lt\", [\"exports\", \"ember-truth-helpers/helpers/lt\"], function (_exports, _lt) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _lt.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-truth-helpers/helpers/lt\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/lte\", [\"exports\", \"ember-truth-helpers/helpers/lte\"], function (_exports, _lte) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _lte.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-truth-helpers/helpers/lte\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/max-length\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.maxLength = maxLength;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function maxLength(params, hash) {\n    let text = params[0];\n    let length = 10;\n    if (params[1] !== undefined) {\n      length = params[1];\n    }\n    if (text.length > length && !hash.unlimited) {\n      return `${text.slice(0, length).trim()}...`;\n    }\n    return text;\n  }\n  var _default = _exports.default = (0, _helper.helper)(maxLength);\n});","define(\"settify-mvp/helpers/mul\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.mul = mul;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function mul(params /* , hash */) {\n    if (!params || !params.length) {\n      return;\n    }\n    let val = params[0];\n    for (let i = 1; i < params.length; i++) {\n      const element = params[i];\n      val *= element;\n    }\n    return val;\n  }\n  var _default = _exports.default = (0, _helper.helper)(mul);\n});","define(\"settify-mvp/helpers/non-empty-string\", [\"exports\", \"@ember/component/helper\", \"@ember/template\"], function (_exports, _helper, _template) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.nonEmptyString = nonEmptyString;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"@ember/template\"eaimeta@70e063a35619d71f\n  function nonEmptyString([stringToCheck] = [] /* , hash */) {\n    if (typeof stringToCheck === \"string\") {\n      return stringToCheck.trim().length > 0;\n    }\n    if ((0, _template.isHTMLSafe)(stringToCheck)) {\n      return stringToCheck.toString().trim().length > 0;\n    }\n    return false; // It's not a string or a HTML safe string, so it's definitely not a non-empty string\n  }\n  var _default = _exports.default = (0, _helper.helper)(nonEmptyString);\n});","define(\"settify-mvp/helpers/not-eq\", [\"exports\", \"ember-truth-helpers/helpers/not-eq\"], function (_exports, _notEq) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _notEq.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-truth-helpers/helpers/not-eq\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/not\", [\"exports\", \"ember-truth-helpers/helpers/not\"], function (_exports, _not) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _not.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-truth-helpers/helpers/not\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/on-document\", [\"exports\", \"ember-on-helper/helpers/on-document\"], function (_exports, _onDocument) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _onDocument.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-on-helper/helpers/on-document\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/on-window\", [\"exports\", \"ember-on-helper/helpers/on-window\"], function (_exports, _onWindow) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _onWindow.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-on-helper/helpers/on-window\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/on\", [\"exports\", \"ember-on-helper/helpers/on\"], function (_exports, _on) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _on.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-on-helper/helpers/on\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/or\", [\"exports\", \"ember-truth-helpers/helpers/or\"], function (_exports, _or) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _or.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-truth-helpers/helpers/or\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/ownership-percentage\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.ownershipPercentage = ownershipPercentage;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function ownershipPercentage([resource], {\n    type\n  }) {\n    if (!resource || !type) {\n      return \"\";\n    }\n    let assetExt = \"% share in\";\n    let liabilityExt = \"% share of\";\n    let percentage = null;\n    switch (type) {\n      case \"otherRealEstate\":\n      case \"propertymortgage\":\n        if (resource.owner === \"other\") {\n          let userRealEstatePercentage = resource.userOwnershipPercentage;\n          let spouseRealEstatePercentage = resource.spouseOwnershipPercentage;\n          if (!isNaN(parseInt(userRealEstatePercentage))) {\n            percentage += Number(userRealEstatePercentage);\n          }\n          if (!isNaN(parseInt(spouseRealEstatePercentage))) {\n            percentage += Number(spouseRealEstatePercentage);\n          }\n          if (percentage) {\n            if (type === \"otherRealEstate\") {\n              return percentage + assetExt;\n            }\n            return percentage + liabilityExt;\n          }\n        } else {\n          return \"\";\n        }\n        break;\n      case \"business\":\n        if (!isNaN(parseInt(resource.ownershipPercentage)) && resource.businessType !== \"publiccompany\" && resource.businessType !== \"dontknow\") {\n          percentage += Number(resource.ownershipPercentage);\n        }\n        if (percentage) {\n          return percentage + assetExt;\n        }\n        break;\n      case \"otherinvestment\":\n        if (!isNaN(parseInt(resource.ownershipPercentage))) {\n          percentage += Number(resource.ownershipPercentage);\n        }\n        if (percentage) {\n          return percentage + assetExt;\n        }\n        break;\n      case \"creditcardliability\":\n      case \"liabilitypersonalloans\":\n      case \"liabilitypurchaselease\":\n      case \"liabilityother\":\n        if (resource.owner === \"other\") {\n          let userCreditCardPercentage = resource.otherUserPercentage;\n          let spouseCreditCardPercentage = resource.otherSpousePercentage;\n          if (!isNaN(parseInt(userCreditCardPercentage))) {\n            percentage += Number(userCreditCardPercentage);\n          }\n          if (!isNaN(parseInt(spouseCreditCardPercentage))) {\n            percentage += Number(spouseCreditCardPercentage);\n          }\n          if (percentage) {\n            return percentage + liabilityExt;\n          }\n        } else {\n          return \"\";\n        }\n        break;\n      default:\n        return \"\";\n    }\n    return \"\";\n  }\n  var _default = _exports.default = (0, _helper.helper)(ownershipPercentage);\n});","define(\"settify-mvp/helpers/pa-colour\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.paColour = paColour;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  const PRACTICE_AREA_THEME = {\n    estates: \"estates\",\n    probate: \"probate\",\n    family: \"family\",\n    wills: \"wills\"\n  };\n  function paColour(params) {\n    if (params.length === 2 && typeof params[0] === \"string\" && typeof params[1] === \"string\") {\n      const practiceArea = params[0].toLowerCase();\n      const prefix = params[1];\n      return `${prefix}-${PRACTICE_AREA_THEME[practiceArea]}`;\n    }\n    return \"\";\n  }\n  var _default = _exports.default = (0, _helper.helper)(paColour);\n});","define(\"settify-mvp/helpers/page-title\", [\"exports\", \"ember-page-title/helpers/page-title\"], function (_exports, _pageTitle) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _pageTitle.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-page-title/helpers/page-title\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/parse-text\", [\"exports\", \"@ember/template\", \"@ember/utils\", \"@ember/service\", \"@ember/component/helper\", \"settify-mvp/helpers/age-from-dob\", \"settify-mvp/helpers/address-string\", \"settify-mvp/config/environment\", \"settify-mvp/helpers/pretty-date\", \"settify-mvp/helpers/get-people-from-ids\", \"settify-mvp/helpers/age-from-object\"], function (_exports, _template, _utils, _service, _helper, _ageFromDob, _addressString, _environment, _prettyDate, _getPeopleFromIds, _ageFromObject) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template\",0,\"@ember/utils\",0,\"@ember/service\",0,\"@ember/component/helper\",0,\"settify-mvp/helpers/age-from-dob\",0,\"settify-mvp/helpers/address-string\",0,\"settify-mvp/config/environment\",0,\"settify-mvp/helpers/pretty-date\",0,\"settify-mvp/helpers/get-people-from-ids\",0,\"settify-mvp/helpers/age-from-object\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _helper.default.extend({\n    firm: (0, _service.inject)(),\n    store: (0, _service.inject)(),\n    init() {\n      this._super(...arguments);\n      this.filters = [{\n        func: (text, expression, {\n          blueprintMode\n        }) => {\n          if (blueprintMode) {\n            text = `[${text}]`;\n          }\n          if (typeof text === \"string\") {\n            return text.toUpperCase();\n          }\n          return text;\n        },\n        blurb: \"Sets text to uppercase\",\n        name: \"Upper case\",\n        reference: \"uppercase\",\n        displayBlurb: false\n      }, {\n        func: (text, expression, {\n          blueprintMode\n        }) => {\n          if (blueprintMode) {\n            text = `[${text}]`;\n          }\n          if (typeof text === \"string\") {\n            return text.toLowerCase();\n          }\n          return text;\n        },\n        blurb: \"Sets text to lowercase\",\n        name: \"Lower case\",\n        reference: \"lowercase\",\n        displayBlurb: false\n      }, {\n        func: (text, expression, {\n          blueprintMode\n        }) => {\n          if (typeof text === \"string\" && text.length) {\n            let sentenceCase = text.charAt(0).toUpperCase() + text.slice(1);\n            if (blueprintMode) {\n              return `[${sentenceCase}]`;\n            }\n            return sentenceCase;\n          }\n          return text;\n        },\n        blurb: \"Sets text to sentence case\",\n        name: \"Sentence case\",\n        reference: \"sentencecase\",\n        displayBlurb: false\n      }, {\n        func: (text, expression, {\n          blueprintMode\n        }) => {\n          if (typeof text === \"string\" && text.length) {\n            const stringSplit = text.split(\" \");\n            if (stringSplit && stringSplit.length) {\n              const titleCase = stringSplit.map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(\" \");\n              if (blueprintMode) {\n                return `[${titleCase}]`;\n              }\n              return titleCase;\n            }\n          }\n          return text;\n        },\n        blurb: \"Sets text to title case (capitalise every first letter of the input)\",\n        name: \"Title case\",\n        reference: \"titlecase\",\n        displayBlurb: false\n      }, {\n        func: (text, expression, {\n          blueprintMode\n        }) => {\n          if (blueprintMode) {\n            return `[first word of ${text}]`;\n          }\n          if (typeof text === \"string\" && text.length) {\n            let matches = text.match(/^\\s*([^\\s]+)/);\n            if (matches && matches.length === 2) {\n              return matches[1];\n            }\n          }\n          return text;\n        },\n        blurb: \"Gets the first word\",\n        name: \"First Word\",\n        reference: \"firstword\",\n        displayBlurb: false\n      }, {\n        func: (text, alternative, {\n          blueprintMode\n        }) => {\n          if (blueprintMode) {\n            return `[${text} | ${alternative}]`;\n          }\n          return text || alternative;\n        },\n        blurb: \"Displays A or B\",\n        name: \"Or\",\n        reference: \"or\",\n        args: \"text to display if previous text is empty\",\n        displayBlurb: false\n      }, {\n        func: (text, expression, {\n          blueprintMode,\n          that\n        }) => {\n          if (blueprintMode) {\n            return \"[he/she]\";\n          }\n          return that.genderOutput(text, \"he\", \"she\", \"they\");\n        },\n        blurb: \"Displays he, she or they, based on the supplied gender\",\n        name: \"He or She\",\n        reference: \"heshe\",\n        displayBlurb: false\n      }, {\n        func: (text, expression, {\n          blueprintMode,\n          that\n        }) => {\n          if (blueprintMode) {\n            return \"[his/her]\";\n          }\n          return that.genderOutput(text, \"his\", \"her\", \"their\");\n        },\n        blurb: \"Displays his, her or their, based on the supplied gender\",\n        name: \"His or Her\",\n        reference: \"hisher\",\n        displayBlurb: false\n      }, {\n        func: (text, expression, {\n          blueprintMode,\n          that\n        }) => {\n          if (blueprintMode) {\n            return \"[him/her]\";\n          }\n          return that.genderOutput(text, \"him\", \"her\", \"them\");\n        },\n        blurb: \"Displays him, her or them, based on the supplied gender\",\n        name: \"Him or Her\",\n        reference: \"himher\",\n        displayBlurb: false\n      }, {\n        func: (text, expression, {\n          blueprintMode,\n          that\n        }) => {\n          if (blueprintMode) {\n            return \"[himself/herself]\";\n          }\n          return that.genderOutput(text, \"himself\", \"herself\", \"themselves\");\n        },\n        blurb: \"Displays himself, herself or themselves, based on the supplied gender\",\n        name: \"Himself or Herself\",\n        reference: \"himselfherself\",\n        displayBlurb: false\n      }, {\n        func: (text, expression, {\n          blueprintMode,\n          that\n        }) => {\n          if (blueprintMode) {\n            return \"[want/wants]\";\n          }\n          return that.genderOutput(text, \"wants\", \"wants\", \"want\");\n        },\n        blurb: \"Displays want or wants, based on the supplied gender\",\n        name: \"Want or wants\",\n        reference: \"wantwants\",\n        displayBlurb: false\n      }, {\n        func: (text, expression, {\n          blueprintMode,\n          that\n        }) => {\n          if (blueprintMode) {\n            return \"[was/were]\";\n          }\n          return that.genderOutput(text, \"was\", \"was\", \"were\");\n        },\n        blurb: \"Displays was or were, based on the supplied gender \",\n        name: \"Was or Were\",\n        reference: \"waswere\",\n        displayBlurb: false\n      }, {\n        func: (text, expression, {\n          blueprintMode,\n          that\n        }) => {\n          if (blueprintMode) {\n            return \"[was/were from a list]\";\n          }\n          return that.singularOrPluralOutput(text, \"was\", \"were\");\n        },\n        blurb: \"Displays was or were depending on how many people are in a list\",\n        name: \"Was or Were List\",\n        reference: \"waswerelist\",\n        displayBlurb: false\n      }, {\n        func: (text, expression, {\n          blueprintMode,\n          that\n        }) => {\n          if (blueprintMode) {\n            return \"[is/are]\";\n          }\n          return that.genderOutput(text, \"is\", \"is\", \"are\");\n        },\n        blurb: \"Displays is or are, based on the supplied gender \",\n        name: \"Is or Are\",\n        reference: \"isare\",\n        displayBlurb: false\n      }, {\n        func: (text, expression, {\n          blueprintMode,\n          that\n        }) => {\n          if (blueprintMode) {\n            return \"[is/are from a list]\";\n          }\n          return that.singularOrPluralOutput(text, \"is\", \"are\");\n        },\n        blurb: \"Displays is or are depending on how many people are in a list\",\n        name: \"Is or Are List\",\n        reference: \"isarelist\",\n        displayBlurb: false\n      }, {\n        func: (text, expression, {\n          blueprintMode,\n          that\n        }) => {\n          if (blueprintMode) {\n            return \"[has/have]\";\n          }\n          return that.genderOutput(text, \"has\", \"has\", \"have\");\n        },\n        blurb: \"Displays has or have, based on the supplied gender \",\n        name: \"Has or Have\",\n        reference: \"hashave\",\n        displayBlurb: false\n      }, {\n        func: (text, expression, {\n          blueprintMode,\n          that\n        }) => {\n          if (blueprintMode) {\n            return \"[has/have from a list]\";\n          }\n          return that.singularOrPluralOutput(text, \"has\", \"have\");\n        },\n        blurb: \"Displays has or have depending on how many people are in a list\",\n        name: \"Has or Have List\",\n        reference: \"hashavelist\",\n        displayBlurb: false\n      }, {\n        func: (obj, expression, {\n          blueprintMode\n        }) => {\n          if (blueprintMode) {\n            return `[age]`;\n          }\n          if (obj.dobday || obj.dobmonth || obj.dobyear) {\n            return (0, _ageFromDob.ageFromDob)([obj.dobday, obj.dobmonth, obj.dobyear]);\n          }\n          if (obj.day || obj.month || obj.year) {\n            return (0, _ageFromDob.ageFromDob)([obj.day, obj.month, obj.year]);\n          }\n        },\n        blurb: \"calculate the age given DOB\",\n        name: \"Calculate Age\",\n        reference: \"calculateage\",\n        displayBlurb: false\n      }, {\n        func: (obj, expression, {\n          blueprintMode\n        }) => {\n          if (blueprintMode) {\n            return `[timesince]`;\n          }\n          let time;\n          if (obj.dobday || obj.dobmonth || obj.dobyear) {\n            time = (0, _ageFromDob.yearsSince)(obj.dobday, obj.dobmonth, obj.dobyear);\n          } else if (obj.day || obj.month || obj.year) {\n            time = (0, _ageFromDob.yearsSince)(obj.day, obj.month, obj.year);\n          }\n          if (!time) {\n            return \"\"; // Return empty string so that \"NaN\" is not returned\n          }\n          return time >= 1 ? Math.floor(time) : Math.round(time * 10) / 10;\n        },\n        blurb: \"calculate time since given date\",\n        name: \"Time since\",\n        reference: \"timesince\",\n        displayBlurb: false\n      }, {\n        func: (address, expression, {\n          blueprintMode\n        }) => {\n          if (blueprintMode) {\n            return `[address]`;\n          }\n          let options = {\n            detailed: true,\n            linebreaks: expression.includes(\"linebreaks\")\n          };\n          return (0, _addressString.addressString)([address], options);\n        },\n        blurb: \"Format as address\",\n        reference: \"formataddress\",\n        name: \"Format as Address\",\n        displayBlurb: false\n      }, {\n        func: function ifElseFunction(variable, expression, {\n          blueprintMode,\n          clientRecord\n        }) {\n          if (!expression || !expression.match) {\n            return variable;\n          }\n          // If an if/else has a nested parse-text that references a text input, users can add a new line which breaks the regex below, so we just replace it with a br tag\n          expression = expression.replaceAll(\"\\n\", \"<br>\");\n          let ifOperatorThenElseIfRegex = /^\\s*([<>!]{0,1}[=]{0,1})\\s*'([^']*)'\\s*\\s*then\\s*(.*?)\\s*(else(if){0,1}\\s*[<>!]{0,1}[=]{0,1}\\s*'{0,1}[^']*'{0,1}\\s*\\s*(then){0,1}\\s*.*\\s*)*$/i;\n          let blocks = expression.match(ifOperatorThenElseIfRegex);\n          if (!blocks) {\n            return variable;\n          } else if (blocks.length === 7) {\n            let operators = [{\n              name: \"<\",\n              func: (lhs, rhs, bool) => {\n                return bool || lhs < rhs;\n              }\n            }, {\n              name: \">\",\n              func: (lhs, rhs, bool) => {\n                return bool || lhs > rhs;\n              }\n            }, {\n              name: \"=\",\n              func: (lhs, rhs, bool) => {\n                return bool || lhs === rhs;\n              }\n            }, {\n              // MAGIC: ! has to be last so it is the last operator that is applied, even when written !=.\n              name: \"!\",\n              func: (lhs, rhs, bool) => {\n                return !bool;\n              }\n            }];\n            let functions = [{\n              name: \"inFamilyTree\",\n              func: (variable, {\n                clientRecord\n              }) => {\n                return clientRecord.inFamilyTree(variable);\n              }\n            }, {\n              name: \"isRelated\",\n              func: (person, {\n                clientRecord\n              }) => {\n                if (!person) {\n                  return false;\n                }\n                if (person.relationship) {\n                  return ![\"friend\", \"client\"].includes(person.relationship);\n                }\n                // If they dont have a relationship lets check if they are in the family tree\n                return clientRecord.inFamilyTree(variable);\n              }\n            }];\n            let operator = blocks[1];\n            let RHS = blocks[2];\n            let output = blocks[3];\n            let elseIf = blocks[4];\n            if (!(0, _utils.isEmpty)(variable) && (typeof variable === \"number\" || typeof variable === \"string\" && !isNaN(variable))) {\n              // isNaN(true || false || null) returns false so we check that the variable is either a number or string before using it\n              // If we have a number, lets compare to a number\n              variable = Number(variable);\n              RHS = Number(RHS);\n            }\n            let functionsToRun = functions.filter(f => f.name === RHS);\n            if (blueprintMode) {\n              let blueprintOutput = `${output}`;\n              while (elseIf && elseIf.match(/else (if){0,1}/)) {\n                elseIf = elseIf.replace(/^else (if){0,1}/, \"\");\n                let matches = elseIf.match(ifOperatorThenElseIfRegex);\n                if (matches) {\n                  output = matches[3];\n                  elseIf = matches[4];\n                  blueprintOutput += ` | ${output}`;\n                } else {\n                  // We are at the 'else' part of the string\n                  blueprintOutput += ` | ${elseIf}`;\n                  break;\n                }\n              }\n              return `[${blueprintOutput}]`;\n            } else if (functionsToRun.length) {\n              // We are running a function\n              let functionOutput = functionsToRun.map(f => f.func(variable, {\n                clientRecord\n              })).reduce((prev, curr) => prev && curr);\n              if (functionOutput) {\n                return output;\n              }\n              if (elseIf) {\n                // Strip off the else if or else and recurse\n                if (!elseIf.match(/else if /)) {\n                  return elseIf.replace(/else /, \"\");\n                }\n                return ifElseFunction(variable, elseIf.replace(/else if /, \"\"), {\n                  blueprintMode\n                }); // Either return variable, or go it else if else\n              }\n              return variable;\n            } else if (!operator) {\n              // simple if, no condition\n              if (variable === RHS || variable && RHS === \"true\" || !variable && RHS === \"false\") {\n                return output;\n              }\n              if (elseIf) {\n                // Strip off the else if or else and recurse\n                if (!elseIf.match(/else if /)) {\n                  return elseIf.replace(/else/, \"\").trim();\n                }\n                return ifElseFunction(variable, elseIf.replace(/else if /, \"\"), {\n                  blueprintMode\n                }); // Either return variable, or go it else if else\n              }\n              return variable;\n            }\n            // contains conditions\n            let evaluatedExpression = operators.filter(o => operator.includes(o.name)).reduce((bool, o) => o.func(variable, RHS, bool), false);\n            if (evaluatedExpression) {\n              return output;\n            }\n            if (elseIf) {\n              // Strip off the else if or else and recurse\n              if (!elseIf.match(/else if /)) {\n                return elseIf.replace(/else/, \"\").trim();\n              }\n              return ifElseFunction(variable, elseIf.replace(/else if /, \"\"), {\n                blueprintMode\n              }); // Either return variable, or go it else if else\n            }\n            return variable;\n          }\n          return variable;\n        },\n        blurb: \"If/Else statement\",\n        name: \"If/Else\",\n        reference: \"if\",\n        args: \"(<,>,!,=) 'variable' then output\",\n        displayBlurb: false\n      }, {\n        func: (text, expression, {\n          blueprintMode\n        }) => {\n          if (blueprintMode) {\n            return `<b>${text}</b>`;\n          }\n          return `<b>${text}</b>`;\n        },\n        blurb: \"Makes the text bold\",\n        name: \"Bold\",\n        reference: \"bold\",\n        displayBlurb: false\n      }, {\n        func: (strings, expression, {\n          blueprintMode,\n          context,\n          clientRecord,\n          that,\n          model\n        }) => {\n          if (blueprintMode) {\n            return \"[concatenated strings]\";\n          }\n\n          // Takes any number of strings or answers and concatenates them\n          // eg. {induction.client.firstName | concatstrings induction.client.middleName induction.client.surname 'is your full name'}\n          const quoteCharacters = [\"'\", '\"', \"`\"];\n          const getValueFromAnswerOrString = string => {\n            // Check if the string is surrounded by quotes - if it is, then treat it as a literal string\n            // This is required so that if someone wants to use a word that is already used by a question answer or variable they can escape it\n            const firstCharacter = string[0];\n            const lastCharacter = string[string.length - 1];\n            if (firstCharacter === lastCharacter && quoteCharacters.includes(firstCharacter) && quoteCharacters.includes(lastCharacter)) {\n              return string.slice(1, string.length - 1);\n            }\n            // Otherwise, check if it's an answer/variable and if it's not, just return the original string\n            const value = that.evaluateVariable(string, clientRecord, context, model);\n            return value || string;\n          };\n\n          // Split the expression string into individual strings/answer locations. We can't use .split(\" \"), since a string might have spaces.\n          // eg. {induction.client.firstName | concatstrings ' is your first name'}\n          const expressionSplit = [];\n          let currentString = \"\";\n          let currentQuoteSymbol;\n          for (const char of expression) {\n            if (currentQuoteSymbol) {\n              currentString += char;\n              if (char === currentQuoteSymbol) {\n                currentQuoteSymbol = undefined;\n              }\n              continue;\n            } else if (quoteCharacters.includes(char)) {\n              currentQuoteSymbol = char;\n              currentString += char;\n              continue;\n            }\n            if (char === \" \") {\n              if (currentString) {\n                expressionSplit.push(currentString);\n                currentString = \"\";\n              }\n              continue;\n            }\n            currentString += char;\n          }\n          if (currentString) {\n            expressionSplit.push(currentString);\n          }\n          return [getValueFromAnswerOrString(strings), ...expressionSplit.map(str => getValueFromAnswerOrString(str))].join(\"\");\n        },\n        blurb: \"Concatenate any number of strings, either from answers or constant (surround with quotes), from left to right\",\n        name: \"Concatenate Strings\",\n        reference: \"concatstrings\",\n        displayBlurb: false\n      }, {\n        func: (text, expression, {\n          blueprintMode\n        }) => {\n          if (blueprintMode) {\n            return `<i>${text}</i>`;\n          }\n          return `<i>${text}</i>`;\n        },\n        blurb: \"Makes the text italic\",\n        name: \"Italics\",\n        reference: \"italics\",\n        displayBlurb: false\n      }, {\n        func: (text, expression, {\n          blueprintMode\n        }) => {\n          if (blueprintMode) {\n            return `<ul><li>${text}</li></ul>`;\n          }\n          return `<ul><li>${text}</li></ul>`;\n        },\n        blurb: \"Makes the text a bullet point\",\n        name: \"Bullet Point\",\n        reference: \"bullet\",\n        displayBlurb: false\n      }, {\n        func: (text, expression, {\n          blueprintMode\n        }) => {\n          if (blueprintMode) {\n            return `<u>${text}</u>`;\n          }\n          return `<u>${text}</u>`;\n        },\n        blurb: \"Makes the text underlined\",\n        name: \"Underline\",\n        reference: \"underline\",\n        displayBlurb: false\n      }, {\n        func: (text, expression, {\n          blueprintMode\n        }) => {\n          const newPageTags = ' target=\"_blank\" rel=\"noreferrer noopener\"';\n          const expressionArray = expression.split(\" \");\n          const link = expressionArray[0];\n          const tag = expressionArray[1];\n          let additionalTags = tag === \"newtab\" ? newPageTags : \"\";\n          let results = `<a href=${link}${additionalTags} class=\"text-blue-500 underline\">${text}</a>`; // TODO: Update color class to primary color once branding as been implemented\n\n          if (blueprintMode) {\n            let explainer = tag === \"newtab\" ? ` (Opens ${link} in a new tab)` : ` (Opens ${link})`;\n            return results + explainer;\n          }\n          return results;\n        },\n        blurb: \"Makes the text a hyperlink\",\n        name: \"Hyperlink\",\n        reference: \"link\",\n        args: \"url newtab\",\n        displayBlurb: false\n      }, {\n        func: (array, expression, {\n          blueprintMode\n        }) => {\n          if (blueprintMode) {\n            return `[filter a list to only show relevant entries]`;\n          }\n          array = Array.isArray(array) ? array : [array];\n\n          // Split the expression to extract the key (eg. age, isOverseas), operator (eg. >, <, !=, =) and value (eg. 3, 'true', 'some string')\n          const blocks = expression.split(/\\s*(=|!=|<=|<|>=|>)\\s*/).filter(s => s);\n          let key, operator, value;\n          if (blocks.length === 1) {\n            // Handle simple truthiness checks, eg {array | filterby hasHobbies}\n            key = blocks[0];\n            const flipTruthiness = key.startsWith(\"!\");\n            key = key.replace(/^!/, \"\");\n            return array.filter(arrayElement => arrayElement && (flipTruthiness ? !arrayElement[key] : !!arrayElement[key]));\n          } else if (blocks.length === 2) {\n            // For arrays that don't contain objects, eg we might want to do something like {[1, 2, 3]|filterby >= 2}\n            operator = blocks[0];\n            value = blocks[1];\n          } else if (blocks.length === 3) {\n            key = blocks[0];\n            operator = blocks[1];\n            value = blocks[2];\n          } else {\n            // Invalid syntax\n            return;\n          }\n          value = value.replace(/(^'|\")|('|\"$)/g, \"\");\n          const parseValue = value => {\n            switch (value) {\n              case \"true\":\n                return true;\n              case \"false\":\n                return false;\n              case \"undefined\":\n                return undefined;\n              case \"null\":\n                return null;\n            }\n            return value;\n          };\n          value = parseValue(value);\n\n          // Note: Inequalities are limited to numbers - if an element can't be compared, it is filtered out\n          const compareNumbersUsingFunction = (arrayElement, key, value, compareFunction) => {\n            let element = key ? arrayElement[key] : arrayElement;\n            if ([\"calculateage\", \"age\"].includes(key)) {\n              // We are trying to filter by the age. Lets use the ageFromObject helper rather than relying on just the age object key\n              element = (0, _ageFromObject.ageFromObject)([arrayElement]);\n            }\n            if (!isNaN(parseInt(element))) {\n              const elementAsNumber = parseInt(element);\n              const valueAsNumber = parseInt(value);\n              if (!isNaN(valueAsNumber)) {\n                return compareFunction(elementAsNumber, valueAsNumber);\n              }\n            }\n          };\n          const directEquality = (arrayElement, key, value, flipTruthiness) => {\n            const arrayValue = key ? arrayElement[key] : arrayElement;\n            if (value === false) {\n              return flipTruthiness ? !!arrayValue : !arrayValue;\n            }\n            return flipTruthiness ? value !== arrayValue : value === arrayValue;\n          };\n          const operatorFunctions = {\n            \"=\": (array, key, value) => array.filter(arrayElement => directEquality(arrayElement, key, value, false)),\n            \"!=\": (array, key, value) => array.filter(arrayElement => directEquality(arrayElement, key, value, true)),\n            \"<\": (array, key, value) => array.filter(arrayElement => compareNumbersUsingFunction(arrayElement, key, value, (a, b) => a < b)),\n            \"<=\": (array, key, value) => array.filter(arrayElement => compareNumbersUsingFunction(arrayElement, key, value, (a, b) => a <= b)),\n            \">\": (array, key, value) => array.filter(arrayElement => compareNumbersUsingFunction(arrayElement, key, value, (a, b) => a > b)),\n            \">=\": (array, key, value) => array.filter(arrayElement => compareNumbersUsingFunction(arrayElement, key, value, (a, b) => a >= b))\n          };\n          const operatorFunction = operatorFunctions[operator];\n          if (operatorFunction) {\n            return operatorFunction(array, key, value);\n          }\n          return array;\n        },\n        blurb: \"Filter a list by a given value\",\n        name: \"Filter By\",\n        reference: \"filterby\",\n        displayBlurb: false\n      }, {\n        func: (arr, expression, {\n          blueprintMode\n        }) => {\n          if (blueprintMode) {\n            return `[get values from each item of a list]`;\n          }\n          if (expression && expression.trim() === \"length\") {\n            if (arr) {\n              return (Array.isArray(arr) ? arr : [arr]).length;\n            }\n            return 0;\n          }\n          let retval;\n          let getFunction = function (person) {\n            return person[expression.trim()];\n          };\n          if (expression.trim() === \"fullname\") {\n            // We want the full name of each person\n            getFunction = function (person) {\n              let nameString = \"\";\n              if (person.firstName) {\n                nameString += person.firstName;\n              }\n              if (person.middleName) {\n                nameString += ` ${person.middleName}`;\n              }\n              if (person.surname) {\n                nameString += ` ${person.surname}`;\n              }\n              return nameString.trim();\n            };\n          }\n          // Get an array of expression values\n          retval = (Array.isArray(arr) ? arr : [arr]).filter(e => e).map(getFunction).filter(e => e);\n          if (!retval.length) {\n            if (_environment.default.environment !== \"production\") {\n              return \"WARNING: EMPTY STRING!\";\n            }\n            return \"\";\n          }\n\n          // Join them with the last item having 'and' before it\n          let isLastElement = (i, array) => {\n            return i >= array.length - 1;\n          };\n          return retval.reduce((text, value, i, array) => {\n            return text + (isLastElement(i, array) ? \" and \" : \", \") + value;\n          });\n        },\n        blurb: \"Get specific values from a given list of objects and joins them prosaically, eg 'Peter, Paul and Mary'\",\n        name: \"Get\",\n        reference: \"get\",\n        displayBlurb: false\n      }, {\n        func: (array, expression, {\n          blueprintMode,\n          context,\n          model,\n          clientRecord,\n          that\n        }) => {\n          if (blueprintMode) {\n            return \"[Concatenate two lists]\";\n          }\n          if (that.isVariable(expression)) {\n            expression = that.evaluateVariable(expression, clientRecord, context, model);\n            if (expression && !Array.isArray(expression)) {\n              expression = [expression];\n            }\n          }\n          return [...array, ...expression];\n        },\n        blurb: \"Concatenate two lists\",\n        name: \"Concat\",\n        reference: \"concat\",\n        displayBlurb: false\n      }, {\n        func: (input, expression, {\n          blueprintMode,\n          context,\n          model,\n          clientRecord,\n          that\n        }) => {\n          if (blueprintMode) {\n            return \"[sum of inputs]\";\n          }\n          let numericArray = that.createNumericArray(input, expression, {\n            context,\n            model,\n            clientRecord\n          });\n          if (!numericArray || !numericArray.length) {\n            return \"\";\n          }\n          return numericArray.reduce((acc, curr) => acc + curr);\n        },\n        blurb: \"Sum two variables, or string formatted as 'x, y and z'\",\n        name: \"Sum\",\n        reference: \"sum\",\n        displayBlurb: false\n      }, {\n        func: (input, expression, {\n          blueprintMode,\n          context,\n          model,\n          clientRecord,\n          that\n        }) => {\n          if (blueprintMode) {\n            return \"[Subtract inputs]\";\n          }\n          let numericArray = that.createNumericArray(input, expression, {\n            context,\n            model,\n            clientRecord\n          });\n          if (!numericArray || !numericArray.length) {\n            return \"\";\n          }\n          return numericArray.reduce((acc, curr) => acc - curr);\n        },\n        blurb: \"Subtract two variables, or string formatted as 'x, y and z'\",\n        name: \"Subtract\",\n        reference: \"subtract\",\n        displayBlurb: false\n      }, {\n        func: (input, expression, {\n          blueprintMode,\n          context,\n          model,\n          clientRecord,\n          that\n        }) => {\n          if (blueprintMode) {\n            return \"[The client or the spouse's name, 'Joint', 'Unknown', 'Not Specified' or 'Other']\";\n          }\n          // Input should be the location of the object, expression should contain the user and the spouses names location\n          // IE. {model.object | formatowner contactDetails.client.client.firstName otherPersonName flip}\n          let [userName, spouseName, flip] = that.readMultiVariableExpression(expression, {\n            context,\n            model,\n            clientRecord\n          });\n          if (input === \"user\") {\n            return flip ? `${spouseName}` : `${userName}`;\n          } else if (input === \"spouse\") {\n            return flip ? `${userName}` : `${spouseName}`;\n          } else if (input === \"joint\" || input === \"bothnames\") {\n            return \"Joint\";\n          } else if (input === \"dontknow\") {\n            return \"Unknown\";\n          } else if (input === \"other\") {\n            return \"Other\";\n          }\n          return \"Not specified\";\n        },\n        blurb: \"Takes the value for the ownership of something (ie user, spouse, joint) and spits out a pretty string\",\n        name: \"Format user or spouse\",\n        reference: \"formatuserspouse\",\n        args: \"clientsName spousesName flipNames\",\n        displayBlurb: false\n      }, {\n        func: (input, expression, {\n          blueprintMode,\n          context,\n          model,\n          clientRecord,\n          that\n        }) => {\n          if (blueprintMode) {\n            return \"[product of inputs]\";\n          }\n          let numericArray = that.createNumericArray(input, expression, {\n            context,\n            model,\n            clientRecord\n          });\n          if (!numericArray || !numericArray.length) {\n            return \"\";\n          }\n          return numericArray.reduce((acc, curr) => acc * curr);\n        },\n        blurb: \"Multiply two variables, or string formatted as 'x, y and z'\",\n        name: \"Product\",\n        reference: \"product\",\n        displayBlurb: false\n      }, {\n        func: (input, expression, {\n          blueprintMode,\n          context,\n          model,\n          clientRecord,\n          that\n        }) => {\n          if (blueprintMode) {\n            return \"[division of inputs]\";\n          }\n          let numericArray = that.createNumericArray(input, expression, {\n            context,\n            model,\n            clientRecord\n          });\n          if (!numericArray || !numericArray.length) {\n            return \"\";\n          }\n          return numericArray.reduce((acc, curr) => acc / curr);\n        },\n        blurb: \"Divide two variables, or string formatted as 'x, y and z'\",\n        name: \"Division\",\n        reference: \"division\",\n        displayBlurb: false\n      }, {\n        func: (dateObj, expression, {\n          blueprintMode\n        }) => {\n          if (blueprintMode) {\n            return \"[date]\";\n          }\n          if (!dateObj || typeof dateObj !== \"object\") {\n            return \"\";\n          }\n          return (0, _prettyDate.prettyDate)([dateObj.day, dateObj.month, dateObj.year]);\n        },\n        blurb: \"Formats a date\",\n        name: \"Format date\",\n        reference: \"formatdate\",\n        displayBlurb: false\n      }, {\n        func: (input, _, {\n          blueprintMode\n        }) => {\n          if (blueprintMode) {\n            return \"[state]\";\n          }\n          if (!input) {\n            return \"\";\n          }\n          return this.STATE_MAP[input];\n        },\n        blurb: \"Formats as a state from a three letter code\",\n        name: \"Format state\",\n        reference: \"formatstate\",\n        displayBlurb: false\n      }, {\n        func: (number, expression, {\n          blueprintMode\n        }) => {\n          if (blueprintMode) {\n            return \"[formatted number]\";\n          }\n          let currencies = [\"AUD\", \"CAD\", \"GBP\", \"NZD\", \"USD\"];\n          let options;\n          if (expression && currencies.includes(expression.toUpperCase())) {\n            options = {\n              style: \"currency\",\n              currency: expression\n            };\n          }\n          if (!isNaN(parseFloat(number))) {\n            // If we have a number return its value using toLocaleString which will add commas and format it to a currency if the options allow.\n            let formattedNumber = parseFloat(number).toLocaleString(undefined, options);\n\n            // Strip any letters from the start, eg. CAD$15.00 becomes just $15.00\n            formattedNumber = formattedNumber.replace(/^[A-Za-z\\s]+/, \"\");\n\n            // Strip any decimal places that are just 00\n            formattedNumber = formattedNumber.replace(/\\.00$/, \"\");\n            return formattedNumber;\n          }\n          return \"\";\n        },\n        blurb: \"Formats a number with commas\",\n        name: \"Format number\",\n        reference: \"formatnumber\",\n        displayBlurb: false\n      }, {\n        func: (input, expression, {\n          blueprintMode\n        }) => {\n          if (blueprintMode) {\n            return \"[icon]\";\n          }\n          if (!input) {\n            return \"\";\n          }\n          let styles = \"\";\n          let stylesWhitelist = [\"tight\", \"large\", \"negative\"];\n          if (expression && stylesWhitelist.includes(expression.toLowerCase())) {\n            styles = expression.toLowerCase();\n          }\n          return `<i class=\"fal ${input} ${styles}\"></i>`;\n        },\n        blurb: \"Displays an icon\",\n        name: \"Icon\",\n        reference: \"icon\"\n      }, {\n        func: (input, expression, {\n          blueprintMode,\n          clientRecord,\n          that,\n          context,\n          model\n        }) => {\n          if (blueprintMode) {\n            return \"[any documents uploaded]\";\n          }\n          let [chapter, page, question] = input.split(\".\");\n          let localContext = {\n            induction: context.induction,\n            chapter,\n            page,\n            question,\n            repeat: context.repeat\n          };\n          if (chapter === \"model\" && page && model) {\n            // We need to change localContext.question to the value of `page`\n            // This is because catalogue.filterBy will filter documents by `objectID.questionID`\n            // eg, input = `model.Q1` -> filterBy = `objectID.Q1`\n            localContext.question = page;\n          }\n          return that.anyDocumentsUploaded(input, clientRecord, localContext, model);\n        },\n        blurb: \"Returns true, false or 'Loading' depending on if any documents have been uploaded  answerLocation\",\n        name: \"Any Document Uploaded\",\n        reference: \"anydocsuploaded\",\n        displayBlurb: false\n      }, {\n        func: (input, expression, {\n          blueprintMode\n        }) => {\n          if (blueprintMode) {\n            return `[${input} | ${expression || \"(No data provided)\"}]`;\n          }\n          if (!input || typeof input === \"string\" && !input.trim()) {\n            return `<span class=\"highlight-required\">${expression || \"(No information provided)\"}</span>`;\n          }\n          return input;\n        },\n        blurb: \"Returns (No information provided) and highlights it if the input is empty\",\n        name: \"No data provided\",\n        reference: \"ornodataprovided\",\n        displayBlurb: false\n      }, {\n        func: (name, expression, {\n          blueprintMode,\n          clientRecord,\n          that,\n          context,\n          model\n        }) => {\n          if (blueprintMode) {\n            return `[Person name or relationship type]`;\n          }\n          if (name) {\n            return name;\n          }\n          const [status, firstPersonMode] = expression.split(\" \");\n          let relType;\n          if (that.isVariable(status)) {\n            relType = that.compute([`{${status}}`], {\n              blueprintMode,\n              context,\n              clientRecord,\n              model,\n              doNotWrap: true\n            }).toLocaleString();\n          }\n          const statusTypeMap = {\n            married: \"spouse\",\n            divorced: \"former spouse\"\n            // default: \"partner\",\n          };\n          const prefix = firstPersonMode ? \"my\" : \"your\";\n          return `${prefix} ${statusTypeMap[relType] || \"partner\"}`;\n        },\n        blurb: \"Returns a persons name or the relationship type\",\n        name: \"Person name or type\",\n        reference: \"personnameortype\",\n        args: \"status firstPersonMode\",\n        displayBlurb: false\n      }, {\n        func: (confidence, expression, {\n          blueprintMode\n        }) => {\n          if (blueprintMode) {\n            return `[Confidence indicator]`;\n          }\n          let confidenceLevelClass = \"\";\n          if (confidence > 75) {\n            confidenceLevelClass = \"full\";\n          } else if (confidence > 50) {\n            confidenceLevelClass = \"half\";\n          } else if (confidence > 25) {\n            confidenceLevelClass = \"quarter\";\n          }\n          return `<div class=\"confidence-display ${confidenceLevelClass}\"></div>`;\n        },\n        blurb: \"Displays a 4-step-quantised coloured bar indicating the value of an input between 0-100\",\n        name: \"Confidence indicator\",\n        reference: \"confidenceindicator\",\n        displayBlurb: false\n      }];\n      this.STATE_MAP = {\n        ACT: \"Australian Capital Territory\",\n        NSW: \"New South Wales\",\n        NT: \"Northern Territory\",\n        QLD: \"Queensland\",\n        SA: \"South Australia\",\n        TAS: \"Tasmania\",\n        VIC: \"Victoria\",\n        WA: \"Western Australia\"\n      };\n    },\n    readMultiVariableExpression(expression, formDetails) {\n      // An expression comes in the form argument1 argument2 argument... argumentN\n      const expressionSplit = expression.split(\" \");\n      return expressionSplit.map(expression => this.readExpression(expression, formDetails));\n    },\n    readExpression(expression, {\n      context,\n      model,\n      clientRecord\n    }) {\n      if (!this.isVariable(expression)) {\n        return expression;\n      }\n      return this.evaluateVariable(expression, clientRecord, context, model);\n    },\n    compute(params, hash) {\n      if (hash.getFilters) {\n        // return filters in alphabetical order for easier finding by human eyes\n        return this.filters.sort((a, b) => {\n          if (a.name < b.name) {\n            return -1;\n          } else if (a.name > b.name) {\n            return 1;\n          }\n          return 0;\n        });\n      }\n      if (!params || !params.length) {\n        return (0, _template.htmlSafe)(\"\");\n      }\n      if (typeof clientRecord === \"string\") {\n        hash.clientRecord = this.store.peekRecord(\"client\", hash.clientRecord);\n      }\n      let retval = \"\";\n      for (let i = 0; i < params.length; i++) {\n        let s = params[i];\n        if (s && typeof s !== \"string\") {\n          console.warn(\"parse-text provided a non-string\", s);\n          s = \"\";\n        }\n        let paramOutput = s || \"\";\n        // let didParseText = false;\n        if (s) {\n          if (!hash.doNotWrap) {\n            paramOutput = this.wrapTopLevelPTBlocks(paramOutput);\n          }\n          let innerBlock = this.findNextPTBlock(paramOutput);\n          while (innerBlock) {\n            // didParseText = true;\n            let output = this.calculatePTBlock(innerBlock, hash);\n            paramOutput = paramOutput.replace(innerBlock, output);\n            innerBlock = this.findNextPTBlock(paramOutput);\n          }\n        }\n        retval += paramOutput;\n      }\n      retval = retval.replace(/<span class=\"settify-sensitive\"><\\/span>/, \"\"); // We may have wrapped some PT's that ended up returning ''. Lets remove the wrapper\n      return (0, _template.htmlSafe)(retval.trim()); // remove errant spaces to allow for some formatting 'hacks' in the editor e.g {variable | if 'true' then some string else }\n    },\n    wrapTopLevelPTBlocks(string) {\n      let outputString = string;\n      let counter = 0;\n      let extraCharsAdded = 0;\n      for (let idx = 0; idx < string.length; idx++) {\n        if (string[idx] === \"{\") {\n          counter++;\n          if (counter === 1) {\n            outputString = `${outputString.slice(0, idx + extraCharsAdded)}<span class=\"settify-sensitive\">${outputString.slice(idx + extraCharsAdded)}`;\n            extraCharsAdded += `<span class=\"settify-sensitive\">`.length;\n          }\n        }\n        if (string[idx] === \"}\") {\n          counter--;\n          if (counter === 0) {\n            outputString = `${outputString.slice(0, idx + extraCharsAdded + 1)}</span>${outputString.slice(idx + extraCharsAdded + 1)}`;\n            extraCharsAdded += `</span>`.length;\n          }\n        }\n      }\n      return outputString;\n    },\n    calculatePTBlock(s, hash) {\n      if (s === \"{}\") {\n        // This is just an empty PT field and can be ignored\n        return \"\";\n      }\n      let {\n        clientRecord,\n        context,\n        blueprintMode\n      } = hash;\n      let expressions = s.match(/{[^}]+}/gi);\n      let paramOutput = s;\n      for (let j = 0; expressions && j < expressions.length; j++) {\n        let originalExpression = expressions[j];\n\n        // trim the curly braces\n        let expression = originalExpression.replace(/(^{)|(}$)/g, \"\");\n\n        // split into filters\n        let blocks = expression.split(/\\s*\\|\\s*/g);\n\n        // our first item is always a variable to look up, or a string\n        let variableName = blocks[0];\n        let expressionOutput = variableName.replace(/\"/g, \"\"); // replace any \" it might be wrapped in\n        if (this.isVariable(variableName) && !blocks.includes(\"anydocsuploaded\")) {\n          // We want to pass in the ID, not the value to anydocsuploaded\n          expressionOutput = this.evaluateVariable(variableName, clientRecord, context, hash.model);\n        }\n        if (blueprintMode) {\n          let variableComponents = blocks[0].split(\".\");\n          if (variableComponents.length >= 2) {\n            expressionOutput = `${variableComponents[variableComponents.length - 2]}.${variableComponents[variableComponents.length - 1]}`;\n          } else {\n            expressionOutput = blocks[0];\n          }\n        }\n\n        // expressionOutput can be numbers so we need to check its type\n        if (typeof expressionOutput === \"string\") {\n          // We don't want to allow any stored XSS attacked, so we replace html characters with literal equivalents\n          expressionOutput = expressionOutput.replace(/&(?!(amp|gt|lt);)/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n        }\n\n        // the rest are always filters, applied sequentially\n        for (let k = 1; k < blocks.length; k++) {\n          const filter = blocks[k];\n          expressionOutput = this.applyFilter(expressionOutput, filter, blueprintMode, clientRecord, context, hash.model);\n        }\n        if (typeof expressionOutput === \"object\") {\n          expressionOutput = expressionOutput.value;\n        }\n        if (blueprintMode && blocks.length === 1) {\n          // no filters - apply the [] ourselves\n          expressionOutput = `[${expressionOutput}]`;\n        }\n        paramOutput = paramOutput.replace(originalExpression, expressionOutput);\n      }\n      return paramOutput;\n    },\n    findNextPTBlock(string) {\n      let matches = string.match(/\\{[^{}]*\\}/);\n      if (matches) {\n        return matches[0];\n      }\n      return null;\n    },\n    isVariable(string) {\n      let match = string.match(/\\S\\s+\\S/);\n      let hasSpaces = match && match.length;\n      let hasQuotes = string.slice(0, 1) === '\"' && string.slice(-1) === '\"';\n      let isNotNumber = isNaN(parseFloat(string));\n      return !hasSpaces && !hasQuotes && isNotNumber;\n    },\n    createNumericArray(input, expression, {\n      context,\n      model,\n      clientRecord\n    }) {\n      // Take an input and expression that are either: strings, variables or numbers and concatenate them into one array of numbers\n      if (typeof input === \"string\") {\n        if (!input.length) {\n          return;\n        }\n        // String of format 'x, y and z'\n        // Split by , and 'and', reduce to a flat array, then map to numbers\n        input = input.split(\",\").map(str => str.split(\"and\")).reduce((acc, val) => acc.concat(val), []).map(str => parseFloat(str));\n      } else if (typeof input === \"number\") {\n        input = [input];\n      }\n      if (expression) {\n        if (this.isVariable(expression)) {\n          expression = this.evaluateVariable(expression, clientRecord, context, model);\n          if (!Array.isArray(expression)) {\n            expression = [expression];\n          }\n        } else {\n          expression = [parseFloat(expression)];\n        }\n      }\n      return [...input, ...expression].filter(e => typeof e === \"number\" && isFinite(e)); // remove anything that is not a number\n    },\n    evaluateVariable(variableName, clientRecord, context, model) {\n      let expressionOutput = this._evaluateVariable(variableName, clientRecord, context, model);\n      if (!expressionOutput) {\n        // Maybe we are actually looking for a date\n        let day = this._evaluateVariable(`${variableName}day`, clientRecord, context, model);\n        let month = this._evaluateVariable(`${variableName}month`, clientRecord, context, model);\n        let year = this._evaluateVariable(`${variableName}year`, clientRecord, context, model);\n        if (day || month || year) {\n          expressionOutput = {\n            day,\n            month,\n            year\n          };\n        }\n      }\n      return expressionOutput;\n    },\n    getSpecialVariable(variableName, clientRecord) {\n      let specialVariable = clientRecord.getSpecialVariable(variableName);\n      if (specialVariable.exists) {\n        return (0, _getPeopleFromIds.getPeopleFromIds)([specialVariable.value], {\n          clientRecord\n        });\n      }\n\n      // We might have a special variable that references a property on an object, eg. client.firstName\n      const variableNameSplit = variableName.split(\".\");\n      const specialVarWithoutDereference = variableNameSplit.slice(0, variableNameSplit.length - 1).join(\".\");\n      const dereference = variableNameSplit[variableNameSplit.length - 1];\n      specialVariable = clientRecord.getSpecialVariable(specialVarWithoutDereference);\n      if (specialVariable.exists) {\n        return (0, _getPeopleFromIds.getPeopleFromIds)([specialVariable.value], {\n          clientRecord,\n          remainingSubquestions: [dereference]\n        });\n      }\n      return null;\n    },\n    getCustomVariableValue(variableName, clientRecord, context) {\n      let customVariable = clientRecord.getCustomVariableValue(variableName, context);\n      if (customVariable.exists) {\n        return customVariable.value;\n      }\n      return null;\n    },\n    _evaluateVariable(v, clientRecord, context, model) {\n      if (v === \"this\") {\n        return model;\n      }\n      if (!context) {\n        return \"\";\n      }\n      let specialVar = this.getSpecialVariable(v, clientRecord);\n      if (specialVar) {\n        return specialVar;\n      }\n      const customVariable = this.getCustomVariableValue(v, clientRecord, context);\n      if (customVariable) {\n        return customVariable;\n      } else if (v.match(/^context./)) {\n        let key = v.replace(/^context./, \"\");\n        return context[key];\n      }\n      let inductionID = context.inductionObject ? context.inductionObject.id : context.induction;\n      let chapterID = context.chapterObject ? context.chapterObject.id : context.chapter;\n      let pageID = context.pageObject ? context.pageObject.id : context.page;\n      let repeatID = context.repeat;\n      let questionID = \"\";\n      let subquestionID = \"\";\n      let components = v.split(\".\");\n      if (components.length === 4) {\n        subquestionID = components[3];\n        questionID = components[2];\n        pageID = components[1];\n        chapterID = components[0];\n      } else if (components.length === 3) {\n        // this could be chapter.page.question, or page.question.subquestion. Assume it's the former\n        questionID = components[2];\n        pageID = components[1];\n        chapterID = components[0];\n      } else if (components.length === 2) {\n        // this could be page.question, or question.subquestion. Assume it's the former\n        questionID = components[1];\n        pageID = components[0];\n      } else if (components.length === 1) {\n        questionID = components[0];\n      }\n      let answer = clientRecord.getPreciseAnswer(inductionID, chapterID, pageID, questionID, subquestionID, repeatID);\n      if (!answer && (components.length === 1 || components[0] === \"model\") && model) {\n        // perhaps this is a reference to an item passed in the current model\n        // eg, if we're inside a yield block for a select or create, or free list\n        answer = model[components[0] === \"model\" ? components[1] : components[0]];\n        if (answer && typeof answer === \"object\" && components[2]) {\n          // perhaps this is a reference to an object and we need the value inside that object.\n          // eg. model.address.lineOne\n          answer = answer[components[2]];\n        }\n        answer = (0, _getPeopleFromIds.getPeopleFromIds)([answer], {\n          clientRecord\n        });\n      }\n      if ((0, _utils.isEmpty)(answer)) {\n        return \"\";\n      }\n      return answer;\n    },\n    applyFilter(variableValue, filterName, blueprintMode, clientRecord, context, model) {\n      let filter = filterName || \"\";\n      filter = filter.split(\" \")[0];\n      filter = filter.toLowerCase();\n      filter = this.filters.filter(fltr => fltr.reference === filter)[0];\n      let remnants = (filterName || \"\").replace(/^\\s*[^\\s]+\\s*/, \"\");\n      if (filter) {\n        filter = filter.func;\n        return filter(variableValue, remnants, {\n          blueprintMode,\n          clientRecord,\n          that: this,\n          context,\n          model\n        });\n      }\n      return variableValue;\n    },\n    genderOutput(input, maleOutput, femaleOutput, otherOutput) {\n      if (!input) {\n        return otherOutput;\n      }\n      let arr = Array.isArray(input) ? input : [input];\n      if (arr.length === 1) {\n        let testgender = arr[0];\n        if (testgender && typeof testgender !== \"string\") {\n          // we have an object, find the first key that ends in '-gender' and set that to the gender\n          for (const key in testgender) {\n            if (Object.prototype.hasOwnProperty.call(testgender, key) && key.includes(\"-gender\")) {\n              testgender = testgender[key];\n              break;\n            }\n          }\n        }\n        if (testgender === \"male\") {\n          return maleOutput;\n        }\n        if (testgender === \"female\") {\n          return femaleOutput;\n        }\n      }\n      return otherOutput;\n    },\n    singularOrPluralOutput(input, singular, plural) {\n      if (!input) {\n        return singular;\n      }\n      let arr = Array.isArray(input) ? input : [input];\n      return arr.length < 2 ? singular : plural;\n    },\n    anyDocumentsUploaded(answerLocation, clientRecord, context, model) {\n      let catalogue = this.store.peekRecord(\"catalogue\", clientRecord.clientID);\n      if (catalogue) {\n        // Get all documents that are saved to the given answerLocation\n        let retval = catalogue.filterBy(context.induction, context.repeat, context.chapter, context.page, context.question, answerLocation, model.id);\n        return Boolean(retval && retval.length);\n      }\n      // We dont have a catalogue saved locally so we need to retrieve it\n      this.store.findRecord(\"catalogue\", clientRecord.clientID)\n      // Now update touch so we re-render\n      .then(() => clientRecord.set(\"touch\", Date.now()));\n      return \"Loading\";\n    }\n  });\n});","define(\"settify-mvp/helpers/perform\", [\"exports\", \"ember-concurrency/helpers/perform\"], function (_exports, _perform) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _perform.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-concurrency/helpers/perform\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/popper-modifier\", [\"exports\", \"ember-popper-modifier/helpers/popper-modifier\"], function (_exports, _popperModifier) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"buildPopperModifier\", {\n    enumerable: true,\n    get: function () {\n      return _popperModifier.buildPopperModifier;\n    }\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _popperModifier.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-popper-modifier/helpers/popper-modifier\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/possible-colon\", [\"exports\", \"@ember/component/helper\", \"@ember/utils\"], function (_exports, _helper, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.possibleColon = possibleColon;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"@ember/utils\"eaimeta@70e063a35619d71f\n  function possibleColon(params, hash) {\n    let {\n      title\n    } = hash;\n    if (typeof title === \"object\" && !(0, _utils.isEmpty)(title)) {\n      if (title.string) {\n        // We might be passing in text from parse-text which is saved in a SafeString object\n        title = title.string;\n      }\n    }\n    if (typeof title !== \"string\") {\n      return \"\";\n    }\n    if (hash.displayOnly) {\n      if (title.match(/\\?\\s*$/)) {\n        return \"\"; // ends in ?, nothing to add\n      } else if (title.match(/^\\s*$/)) {\n        return \"\"; // entirely whitespace, nothing to add\n      } else if (title.match(/:\\s*$/)) {\n        return \"\"; // ends in :, nothing to add\n      } else if (title.match(/\\.\\s*$/)) {\n        return \"\"; // ends in '.', nothing to add\n      }\n      return \":\";\n    }\n    return \"\";\n  }\n  var _default = _exports.default = (0, _helper.helper)(possibleColon);\n});","define(\"settify-mvp/helpers/possible-the\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.possibleThe = possibleThe;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function possibleThe(params /* , hash */) {\n    let test = params[0];\n    if (!test) {\n      return \"\";\n    }\n    if (test.match(/^(your|the|any)\\s/i)) {\n      return \"\";\n    }\n    return \"the\";\n  }\n  var _default = _exports.default = (0, _helper.helper)(possibleThe);\n});","define(\"settify-mvp/helpers/pretty-date\", [\"exports\", \"@ember/component/helper\", \"moment\"], function (_exports, _helper, _moment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.prettyDate = prettyDate;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"moment\"eaimeta@70e063a35619d71f\n  function prettyDate(params, hash) {\n    if (!hash) {\n      hash = {};\n    }\n    if (params.length === 1) {\n      // simple formatted date string\n      let zuluSuffix = \"\";\n      if (hash.zuluTime) {\n        if (!params[0].includes(\"GMT\") && !params[0].match(/Z$/)) {\n          zuluSuffix = \"Z\";\n        }\n      }\n      if (hash.relativeTime) {\n        return (0, _moment.default)(new Date(params[0] + zuluSuffix)).fromNow(hash.noSuffix);\n      }\n      if (hash.daysSince) {\n        const days = (0, _moment.default)(new Date(params[0] + zuluSuffix)).diff((0, _moment.default)(), \"days\");\n        const daysSince = days < 0 ? days * -1 : days;\n        return days <= 0 ? `${daysSince}d ago` : `${daysSince}d from now`;\n      }\n      if (hash.includeTime) {\n        return (0, _moment.default)(new Date(params[0] + zuluSuffix)).format(\"dddd D MMMM YYYY hh:mm A\");\n      } else if (hash.isoDateString) {\n        return (0, _moment.default)(new Date(params[0] + zuluSuffix)).format(\"YYYY-MM-DD\");\n      } else if (hash.customFormat) {\n        return (0, _moment.default)(new Date(params[0] + zuluSuffix)).format(hash.customFormat);\n      }\n      return (0, _moment.default)(new Date(params[0] + zuluSuffix)).format(\"D MMMM YYYY\");\n    } else if (params.length === 3) {\n      // day, month, year, all of which (except year) could be null\n      let retval = [];\n      let monthNames = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\n      let isMonthWithinRange = params[1] && params[1] > 0 && params[1] <= 12;\n      if (params[0] && isMonthWithinRange && params[2]) {\n        retval.push(params[0]);\n        retval.push(monthNames[params[1] - 1]);\n        retval.push(params[2]);\n      } else if (params[0] && isMonthWithinRange) {\n        retval.push(params[0]);\n        retval.push(monthNames[params[1] - 1]);\n      } else if (isMonthWithinRange && params[2]) {\n        retval.push(monthNames[params[1] - 1]);\n        retval.push(params[2]);\n      } else if (params[2]) {\n        retval.push(params[2]);\n      } else {\n        return \"\";\n      }\n      if (params[0] && isMonthWithinRange && hash.monthInputFirst) {\n        // We need to swap the day and month values in the return value\n        [retval[0], retval[1]] = [retval[1], retval[0]];\n      }\n      return retval.join(\" \");\n    }\n    return \"\";\n  }\n  var _default = _exports.default = (0, _helper.helper)(prettyDate);\n});","define(\"settify-mvp/helpers/question-context-string\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.questionContextString = questionContextString;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  const excludeIDList = [\"checkbox\", \"block\"]; // Don't copy the question or subquestion ID for these question types\n  const optionIDOnlyList = [\"radio\", \"select\"]; // For these question types, if there is an option just return the option id\n\n  function questionContextString(params, hash = {}) {\n    let [chapter, page, question, subquestion, option] = params;\n    if (!question && subquestion) {\n      // This is a hack to make our variable-printer work and copy the right IDs.\n      question = subquestion;\n      subquestion = null;\n    }\n    let suffix = hash.suffix || \"\";\n    let contextString = \"\";\n    if (chapter) {\n      contextString += `${chapter.id}`;\n      if (page) {\n        contextString += `.${page.id}`;\n        if (page.answersLocation) {\n          contextString = `${page.answersLocation}`;\n        }\n        if (question) {\n          if (!excludeIDList.includes(question.type)) {\n            contextString += `.${question.id}`;\n          }\n          if (subquestion && !excludeIDList.includes(subquestion.type)) {\n            contextString += `.${subquestion.id}`;\n          }\n          if (option) {\n            if (optionIDOnlyList.includes(question.type) || subquestion && optionIDOnlyList.includes(subquestion.type)) {\n              contextString = option.id;\n            } else {\n              contextString += `.${option.id}`;\n            }\n          }\n        }\n      }\n    }\n    return contextString + suffix;\n  }\n  var _default = _exports.default = (0, _helper.helper)(questionContextString);\n});","define(\"settify-mvp/helpers/readable-page-name\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.readablePageName = readablePageName;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function readablePageName(params /* , hash */) {\n    if (!params || !params.length) {\n      return \"\";\n    }\n    // For now, this helper will just strip the \"d-\", \"a-\", \"bfa-\", etc from a page name\n    let page = params[0];\n    if (typeof page !== \"string\") {\n      return \"\";\n    }\n    if (page.match(/-(.*)/)) {\n      page = page.match(/-(.*)/)[1];\n    }\n    return `the ${page} page`;\n  }\n  var _default = _exports.default = (0, _helper.helper)(readablePageName);\n});","define(\"settify-mvp/helpers/ref-to\", [\"exports\", \"ember-ref-bucket/helpers/ref-to\"], function (_exports, _refTo) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _refTo.default;\n    }\n  });\n  Object.defineProperty(_exports, \"refTo\", {\n    enumerable: true,\n    get: function () {\n      return _refTo.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-ref-bucket/helpers/ref-to\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/s3-debucket\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.s3Debucket = s3Debucket;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function s3Debucket(params /* , hash */) {\n    // remove containing folders\n    let withoutfolder = params[0].slice(params[0].lastIndexOf(\"/\") + 1);\n\n    // remove timestamp, if present\n    let rex = withoutfolder.match(/[0-9]+-(.*)/);\n    if (rex && rex.length === 2) {\n      return rex[1];\n    }\n    return withoutfolder;\n  }\n  var _default = _exports.default = (0, _helper.helper)(s3Debucket);\n});","define(\"settify-mvp/helpers/sanitise-string\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.sanitiseString = sanitiseString;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  // Define a list of allowed tags\n  const allowedTags = [\"p\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"ul\", \"ol\", \"li\", \"div\", \"strong\", \"em\", \"b\", \"i\", \"br\", \"a\"];\n  // Define the allowed URL schemes\n  const allowedProtocols = [\"http\", \"https\", \"mailto\"];\n\n  /**\n   * Sanitizes a string of HTML by removing unsafe tags, attributes, and inline JavaScript.\n   *\n   * This helper:\n   * 1. Removes any HTML tags that are not in the allowedTags list.\n   * 2. Strips inline JavaScript event handlers (like onclick, onmouseover).\n   * 3. Sanitizes <a> tags to ensure href attributes only contain safe URLs or protocols.\n   *\n   * @param {string} string - The input string containing string with HTML to sanitize.\n   * @returns {string} - The sanitized HTML string with only safe content.\n   */\n  function sanitiseString(string) {\n    if (!string) return \"\";\n\n    // Use DOMParser to parse the input HTML string into a document\n    const parser = new DOMParser();\n    const doc = parser.parseFromString(string, \"text/html\") || document.createElement(\"body\");\n\n    // Iterate over all elements in the document and sanitize them\n    const elements = Array.from(doc.body.getElementsByTagName(\"*\"));\n    for (let element of elements) {\n      // Remove inline JavaScript event handlers\n      removeInlineJavaScript(element);\n\n      // If the tag is not allowed, remove the element\n      if (!allowedTags.includes(element.tagName.toLowerCase())) {\n        element.parentNode.removeChild(element);\n      }\n\n      // Sanitize <a> tags (links) and their href attributes\n      if (element.tagName.toLowerCase() === \"a\") {\n        const href = element.getAttribute(\"href\");\n        const sanitizedHref = sanitiseHref(href); // Sanitize the href attribute\n        element.setAttribute(\"href\", sanitizedHref);\n      }\n    }\n\n    // Return the sanitized HTML content as a string\n    return doc.body.innerHTML;\n  }\n\n  /**\n   * Removes inline JavaScript event handlers (like onclick, onmouseover, etc.)\n   * from an HTML element to prevent potential XSS (Cross-Site Scripting) attacks.\n   *\n   * @param {HTMLElement} element - The HTML element from which inline event handlers should be removed.\n   */\n  const removeInlineJavaScript = element => {\n    const {\n      attributes\n    } = element;\n    for (let attribute of attributes) {\n      if (attribute.name.startsWith(\"on\")) {\n        element.removeAttribute(attribute.name);\n      }\n    }\n  };\n\n  /**\n   * Sanitizes the href attribute of an <a> (link) element to prevent dangerous links,\n   * such as \"javascript:\" or links with unsafe protocols (e.g., \"data:\", \"file:\", etc.).\n   *\n   * This function ensures that only valid, safe links are kept:\n   * - Links with the `javascript:` scheme are replaced with a safe placeholder (`#`).\n   * - Only URLs with allowed protocols (http, https, mailto) are preserved.\n   *\n   * @param {string} href - The href attribute of the <a> element to sanitize.\n   * @returns {string} - The sanitized href attribute, either the original safe link or a placeholder.\n   */\n  const sanitiseHref = href => {\n    try {\n      if (!href) return href;\n\n      // Clean up the href by trimming and removing non-ASCII characters\n      href = href.trim().replace(/[^\\x20-\\x7E]/g, \"\");\n      if (href.toLowerCase().startsWith(\"javascript:\")) {\n        return \"#\"; // Replace with a safe placeholder (removes everything after javascript:)\n      }\n\n      // Parse as a valid URL\n      const url = new URL(href, window.location.href);\n      if (allowedProtocols.includes(url.protocol.replace(\":\", \"\"))) {\n        return href;\n      }\n      return \"#\";\n    } catch (e) {\n      // If the URL is invalid or not parsable, return '#' to avoid unsafe links\n      return \"#\";\n    }\n  };\n  var _default = _exports.default = (0, _helper.helper)(sanitiseString);\n});","define(\"settify-mvp/helpers/sentence-case\", [\"exports\", \"@ember/component/helper\", \"@ember/template\"], function (_exports, _helper, _template) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.sentenceCase = sentenceCase;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"@ember/template\"eaimeta@70e063a35619d71f\n  function sentenceCase(params /* , hash */) {\n    if (!params || params.length <= 0) {\n      return undefined;\n    }\n    let val = params[0];\n    if (typeof val !== \"string\") {\n      if ((0, _template.isHTMLSafe)(val)) {\n        // an HTML Safe String\n        let prefix = val.toString().match(/^(<[^>]*>)?/);\n        if (prefix) {\n          prefix = prefix[0];\n        }\n        val = val.toString().slice(prefix.length);\n        return (0, _template.htmlSafe)(prefix + val.charAt(0).toUpperCase() + val.slice(1));\n      }\n      return val;\n    }\n    if (val.length === 0) {\n      return val;\n    }\n    return val.charAt(0).toUpperCase() + val.slice(1);\n  }\n  var _default = _exports.default = (0, _helper.helper)(sentenceCase);\n});","define(\"settify-mvp/helpers/should-display\", [\"exports\", \"@ember/component/helper\", \"@ember/utils\", \"@ember/service\"], function (_exports, _helper, _utils, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  /**\n   * Determines whether a question should be displayed based on various factors.\n   *\n   * @param {Object} options - An object containing the following parameters:\n   * @param {Object} options.question - REQUIRED: The question object to evaluate.\n   * @param {Object} options.clientRecord - REQUIRED: The client record associated with the question.\n   * @param {Object} options.context - REQUIRED: The context in which the question is being evaluated.\n   * @param {number} options.touch - REQUIRED: A value indicating when the question has been touched (from model.touch).\n   * @param {Object} [options.model] - The model associated with the question.\n   *\n   * @returns {boolean} True if the question should be displayed, false otherwise.\n   *\n   * @throws {Error} If any of the required parameters are missing or invalid.\n   */\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"@ember/utils\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let ShouldDisplayHelper = _exports.default = (_class = class ShouldDisplayHelper extends _helper.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"questionnaireLogic\", _descriptor, this);\n    }\n    compute(positional, {\n      question,\n      clientRecord,\n      context,\n      touch,\n      model\n    }) {\n      if (!question) {\n        return true;\n      }\n      if (!clientRecord) {\n        throw new Error(\"Client record must be supplied to shouldDisplay\");\n      }\n      if (!context) {\n        throw new Error(\"Context must be supplied to shouldDisplay\");\n      }\n      if ((0, _utils.isNone)(touch)) {\n        throw new Error(\"Touch parameter (model.touch) must be supplied to shouldDisplay\");\n      }\n      return this.questionnaireLogic.computeDisplayIf(question, clientRecord, context, model);\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"questionnaireLogic\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/helpers/strip-firm-prefix\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.stripFirmPrefix = stripFirmPrefix;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function stripFirmPrefix(params /* , hash */) {\n    if (!params || !params.length) {\n      return \"\";\n    }\n    let str = params[0];\n    return str.replace(/^[\\d]+-/, \"\");\n  }\n  var _default = _exports.default = (0, _helper.helper)(stripFirmPrefix);\n});","define(\"settify-mvp/helpers/sub\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.sub = sub;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  /**\n   * Subtracts two or more numbers\n   *\n   * ```hbs\n   * {{sub a b}}\n   * ```\n   *\n   * @param {number[]} numbers A list of numbers to subtract\n   * @return {number} The difference of all the passed numbers\n   */\n\n  function sub(numbers) {\n    const safeNumbers = numbers.filter(num => !isNaN(parseInt(num))).map(Number);\n    if (!safeNumbers.length) {\n      return;\n    }\n    return safeNumbers.reduce((a, b) => a - b);\n  }\n  var _default = _exports.default = (0, _helper.helper)(sub);\n});","define(\"settify-mvp/helpers/sum\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.sum = sum;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function sum(params /* , hash */) {\n    let retval = params.reduce((a, b) => {\n      let badA = typeof a === \"undefined\" || a === null;\n      let badB = typeof b === \"undefined\" || b === null;\n      if (badA && badB) {\n        return;\n      } else if (badB) {\n        return a;\n      } else if (badA) {\n        return b;\n      }\n      return a + b;\n    });\n    return retval;\n  }\n  var _default = _exports.default = (0, _helper.helper)(sum);\n});","define(\"settify-mvp/helpers/task\", [\"exports\", \"ember-concurrency/helpers/task\"], function (_exports, _task) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _task.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-concurrency/helpers/task\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/testing\", [\"exports\", \"@ember/component/helper\", \"settify-mvp/config/environment\"], function (_exports, _helper, _environment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.testing = testing;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"settify-mvp/config/environment\"eaimeta@70e063a35619d71f\n  function testing(/* params, hash */\n  ) {\n    return _environment.default.testing;\n  }\n  var _default = _exports.default = (0, _helper.helper)(testing);\n});","define(\"settify-mvp/helpers/trim\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.trim = trim;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function trim(params /* , hash */) {\n    if (!params) {\n      return;\n    }\n    if (params.length !== 1) {\n      return;\n    }\n    let val = params[0];\n    if (typeof val !== \"string\") {\n      return val;\n    }\n    return val.trim();\n  }\n  var _default = _exports.default = (0, _helper.helper)(trim);\n});","define(\"settify-mvp/helpers/type-of\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.typeOf = typeOf;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function typeOf(params /* , hash */) {\n    // console.log(typeof params[0]);\n    return typeof params[0];\n  }\n  var _default = _exports.default = (0, _helper.helper)(typeOf);\n});","define(\"settify-mvp/helpers/uppercase\", [\"exports\", \"@ember/component/helper\"], function (_exports, _helper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.uppercase = uppercase;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\"eaimeta@70e063a35619d71f\n  function uppercase(params /* , hash */) {\n    if (!params || !params.length) {\n      return \"\";\n    }\n    let retval = \"\";\n    for (let i_iterator = 0; i_iterator < params.length; i_iterator++) {\n      let s = params[i_iterator];\n      if (typeof s === \"string\") {\n        retval += s.toUpperCase();\n      }\n    }\n    return retval;\n  }\n  var _default = _exports.default = (0, _helper.helper)(uppercase);\n});","define(\"settify-mvp/helpers/will-destroy-helper\", [\"exports\", \"ember-render-helpers/helpers/will-destroy-helper\"], function (_exports, _willDestroyHelper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _willDestroyHelper.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-render-helpers/helpers/will-destroy-helper\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/will-destroy\", [\"exports\", \"ember-render-helpers/helpers/will-destroy\"], function (_exports, _willDestroy) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _willDestroy.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-render-helpers/helpers/will-destroy\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/xor\", [\"exports\", \"ember-truth-helpers/helpers/xor\"], function (_exports, _xor) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _xor.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-truth-helpers/helpers/xor\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/helpers/years-since\", [\"exports\", \"@ember/component/helper\", \"settify-mvp/helpers/age-from-dob\"], function (_exports, _helper, _ageFromDob) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.yearsSince = yearsSince;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component/helper\",0,\"settify-mvp/helpers/age-from-dob\"eaimeta@70e063a35619d71f\n  function yearsSince(params /* , hash */) {\n    let [day, month, year, now] = params;\n    return (0, _ageFromDob.yearsSince)(day, month, year, now);\n  }\n  var _default = _exports.default = (0, _helper.helper)(yearsSince);\n});","define(\"settify-mvp/initializers/app-version\", [\"exports\", \"ember-cli-app-version/initializer-factory\", \"settify-mvp/config/environment\"], function (_exports, _initializerFactory, _environment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-cli-app-version/initializer-factory\",0,\"settify-mvp/config/environment\"eaimeta@70e063a35619d71f\n  let name, version;\n  if (_environment.default.APP) {\n    name = _environment.default.APP.name;\n    version = _environment.default.APP.version;\n  }\n  var _default = _exports.default = {\n    name: 'App Version',\n    initialize: (0, _initializerFactory.default)(name, version)\n  };\n});","define(\"settify-mvp/initializers/ember-data-id-generator\", [\"exports\", \"@ember-data/adapter\", \"uuid\"], function (_exports, _adapter, _uuid) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.initialize = initialize;\n  0; //eaimeta@70e063a35619d71f0,\"@ember-data/adapter\",0,\"uuid\"eaimeta@70e063a35619d71f\n  /**\n   * This initializer enhances Ember Data's default behavior by providing a custom method\n   * for generating UUIDs as record IDs.\n   * It reopens the Adapter class, overriding the default generateIdForRecord method,\n   * ensuring that newly created records are assigned unique UUIDs as their ID.\n   */\n\n  function initialize(/* application */\n  ) {\n    _adapter.default.reopen({\n      generateIdForRecord() {\n        return (0, _uuid.v4)();\n      }\n    });\n  }\n  var _default = _exports.default = {\n    initialize\n  };\n});","define(\"settify-mvp/initializers/ember-data\", [\"exports\", \"@ember-data/request-utils/deprecation-support\"], function (_exports, _deprecationSupport) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember-data/request-utils/deprecation-support\"eaimeta@70e063a35619d71f\n  /*\n    This code initializes EmberData in an Ember application.\n  */\n  var _default = _exports.default = {\n    name: 'ember-data',\n    initialize(application) {\n      application.registerOptionsForType('serializer', {\n        singleton: false\n      });\n      application.registerOptionsForType('adapter', {\n        singleton: false\n      });\n    }\n  };\n});","define(\"settify-mvp/initializers/ember-simple-auth\", [\"exports\", \"ember-simple-auth/initializers/ember-simple-auth\"], function (_exports, _emberSimpleAuth) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _emberSimpleAuth.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-simple-auth/initializers/ember-simple-auth\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/initializers/load-bootstrap-config\", [\"exports\", \"settify-mvp/config/environment\", \"ember-bootstrap/config\", \"ember-bootstrap/version\"], function (_exports, _environment, _config, _version) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.initialize = initialize;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/config/environment\",0,\"ember-bootstrap/config\",0,\"ember-bootstrap/version\"eaimeta@70e063a35619d71f\n  function initialize(/* container, application */\n  ) {\n    _config.default.load(_environment.default['ember-bootstrap'] || {});\n    (0, _version.registerLibrary)();\n  }\n  var _default = _exports.default = {\n    name: 'load-bootstrap-config',\n    initialize\n  };\n});","define(\"settify-mvp/initializers/startup\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.initialize = initialize;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  function initialize() {\n    console.debug(\"startup initialising...\");\n    // TODO: This is here for illustrative purposes and future thinking, we could initialise or resolve config here if needed.\n    // application.deferReadiness();\n    // const config = application.__container__.lookup('service:dynamic-config');\n    // config.resolve().then(() => {\n    //   console.debug(\"startup resolved...\");\n    //   application.advanceReadiness();\n    // });\n  }\n  var _default = _exports.default = {\n    initialize\n  };\n});","define(\"settify-mvp/instance-initializers/sentry-performance\", [\"exports\", \"@sentry/ember/instance-initializers/sentry-performance\"], function (_exports, _sentryPerformance) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _sentryPerformance.default;\n    }\n  });\n  Object.defineProperty(_exports, \"initialize\", {\n    enumerable: true,\n    get: function () {\n      return _sentryPerformance.initialize;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"@sentry/ember/instance-initializers/sentry-performance\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/instance-initializers/service-init\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.initialize = initialize;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  function initialize(application) {\n    console.debug(\"services initialising...\");\n\n    // load our service using detect logic (ensures they init before app loads)\n    application.lookup(\"service:security-service\");\n    application.lookup(\"service:version-service\");\n    application.lookup(\"service:downtime-service\");\n    application.lookup(\"service:session-service\");\n    console.debug(\"services initialised\");\n  }\n  var _default = _exports.default = {\n    after: \"settify\",\n    initialize\n  };\n});","define(\"settify-mvp/instance-initializers/settify\", [\"exports\", \"settify-mvp/config/environment\"], function (_exports, _environment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.initialize = initialize;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/config/environment\"eaimeta@70e063a35619d71f\n  function initialize(application) {\n    console.debug(\"settify initialise...\");\n    if (!_environment.default.environment === \"test\") {\n      const config = application.lookup(\"service:dynamic-config\");\n\n      // inject dynamicConfig into a couple of services\n      application.inject(\"service:lambda\", \"config\", \"service:dynamic-config\");\n      application.inject(\"service:aws-service\", \"config\", \"service:dynamic-config\");\n\n      // init config using detect logic (runs once and before app loads)\n      return config.get(\"promise\");\n    }\n  }\n  var _default = _exports.default = {\n    initialize\n  };\n});","define(\"settify-mvp/lib/aws\", [\"exports\", \"settify-mvp/config/environment\"], function (_exports, _environment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.ProductionAWSConfig = _exports.DevelopmentAWSConfig = _exports.AWSConfig = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/config/environment\"eaimeta@70e063a35619d71f\n  const DevelopmentAWSConfig = _exports.DevelopmentAWSConfig = {\n    Account: \"053864002891\",\n    Region: \"ap-southeast-2\",\n    LambdaEndpoint: \"https://496gvefm2h.execute-api.ap-southeast-2.amazonaws.com\",\n    UnauthIdentityPool: \"ap-southeast-2:a41a155d-cdba-4242-9f15-130f5f09a29a\",\n    UnauthIdentityLogin: \"cognito-idp.ap-southeast-2.amazonaws.com/ap-southeast-2_Xv81CT5PA\",\n    UnauthUserPoolID: \"ap-southeast-2_Xv81CT5PA\",\n    UnauthUserPoolAppID: \"2b5ouvs6ga9fo8sm774jtb7a0l\",\n    S3Prefix: \"dev.\",\n    PDFServer: \"https://pdfdev.settify.com.au\",\n    settifyURL: \"https://admin.devapp.settify.com.au\"\n  };\n  const ProductionAWSConfig = _exports.ProductionAWSConfig = {\n    Account: \"038746656398\",\n    Region: \"ap-southeast-2\",\n    LambdaEndpoint: \"https://l4w65ctk9e.execute-api.ap-southeast-2.amazonaws.com\",\n    UnauthIdentityPool: \"ap-southeast-2:c7209468-040a-4057-b465-4f0dfea06a7f\",\n    UnauthIdentityLogin: \"cognito-idp.ap-southeast-2.amazonaws.com/ap-southeast-2_V7bnbKa1u\",\n    UnauthUserPoolID: \"ap-southeast-2_V7bnbKa1u\",\n    UnauthUserPoolAppID: \"4aeln2kghk2gq8e1fbd78hal7l\",\n    S3Prefix: \"\",\n    PDFServer: \"https://pdf.settify.com.au\",\n    settifyURL: \"https://admin.app.settify.com.au\"\n  };\n  const AWSConfig = _exports.AWSConfig = _environment.default.environment === \"production\" ? ProductionAWSConfig : DevelopmentAWSConfig;\n});","define(\"settify-mvp/lib/clientconsts\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.cc = void 0;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  const cc = _exports.cc = {\n    yes: \"yes\",\n    no: \"no\",\n    // legal statuses\n    marriageStatuses: {\n      married: \"married\",\n      unmarried: \"unmarried\",\n      engaged: \"engaged\",\n      divorced: \"divorced\",\n      notsure: \"notsure\"\n    },\n    unusualMarriageTypes: {\n      marriedoverseas: \"marriedoverseas\",\n      civilceremony: \"civilceremony\",\n      religiouswedding: \"religiouswedding\",\n      informalmarriage: \"informalmarriage\",\n      other: \"other\"\n    },\n    situations: {\n      thinkingaboutseparation: \"thinkingaboutseparation\",\n      thinkweareseparating: \"thinkweareseparating\",\n      notsurewhatisnext: \"notsurewhatisnext\",\n      notsurewhatseparationis: \"notsurewhatseparationis\",\n      wanttogetthingssorted: \"wanttogetthingssorted\",\n      wanttoprotectmyself: \"wanttoprotectmyself\"\n    },\n    childrenTypes: {\n      yes: \"yes\",\n      no: \"no\",\n      complicated: \"complicated\",\n      propertyonly: \"propertyonly\"\n    },\n    childrenComplications: {\n      haveownchildren: \"haveownchildren\",\n      childrenover18: \"childrenover18\",\n      adoption: \"adoption\",\n      defactoparent: \"defactoparent\"\n    },\n    amicability: {\n      reallygood: 84,\n      amicable: 67,\n      mostlyamicable: 50,\n      wanttobeamicable: 34,\n      thingsarebad: 17,\n      concernedforsafety: 0\n    },\n    finances: {\n      assetrich: \"assetrich\",\n      assetmedium: \"assetmedium\",\n      assetpoor: \"assetpoor\",\n      dontknow: \"dontknow\",\n      parentingonly: \"parentingonly\"\n    },\n    livingArrangements: {\n      notseparated: \"notseparated\",\n      separatedunderoneroof: \"separatedunderoneroof\",\n      onemovedout: \"onemovedout\",\n      bothmovedout: \"bothmovedout\",\n      alternating: \"alternating\",\n      other: \"other\"\n    },\n    person: {\n      user: \"user\",\n      spouse: \"spouse\"\n    },\n    whereLiving: {\n      friendsorfamily: \"friendsorfamily\",\n      rental: \"rental\",\n      ownedproperty: \"ownedproperty\",\n      other: \"other\"\n    }\n  };\n});","define(\"settify-mvp/lib/customisations/email_payload\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.getInitialPhoneMeetingPayload = _exports.getGeneralEnquiryPayload = _exports.getFollowUpPayload = _exports.getAppointmentConfirmationPayload = void 0;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  // Appointment confirmation email payload\n  const getAppointmentConfirmationPayload = function () {\n    return {\n      type: \"doc\",\n      content: [{\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"Dear \"\n        }, {\n          type: \"nonEditableInline\",\n          content: [{\n            type: \"text\",\n            text: \"CLIENT_FIRST_NAME\"\n          }],\n          attrs: {\n            canBeRemoved: true\n          }\n        }, {\n          type: \"text\",\n          text: \",\"\n        }],\n        attrs: {\n          HTMLTag: \"p\"\n        }\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"Thank you for allowing \"\n        }, {\n          type: \"nonEditableInline\",\n          content: [{\n            type: \"text\",\n            text: \"FIRM_NAME\"\n          }],\n          attrs: {\n            canBeRemoved: true\n          }\n        }, {\n          type: \"text\",\n          text: \" to assist you with your matter.\"\n        }],\n        attrs: {\n          HTMLTag: \"p\"\n        }\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"I confirm you have booked an appointment for \"\n        }, {\n          type: \"nonEditableInline\",\n          content: [{\n            type: \"text\",\n            text: \"APPOINTMENT_DATE\"\n          }],\n          attrs: {\n            canBeRemoved: true\n          }\n        }, {\n          type: \"text\",\n          text: \" at \"\n        }, {\n          type: \"nonEditableInline\",\n          content: [{\n            type: \"text\",\n            text: \"APPOINTMENT_TIME\"\n          }],\n          attrs: {\n            canBeRemoved: true\n          }\n        }, {\n          type: \"text\",\n          text: \". \"\n        }, {\n          type: \"text\",\n          text: \"The appointment will be at our \"\n        }, {\n          type: \"nonEditableInline\",\n          content: [{\n            type: \"text\",\n            text: \"OFFICE_SUBURB\"\n          }],\n          attrs: {\n            canBeRemoved: true\n          }\n        }, {\n          type: \"text\",\n          text: \" offices, at \"\n        }, {\n          type: \"nonEditableInline\",\n          content: [{\n            type: \"text\",\n            text: \"APPOINTMENT_LOCATION\"\n          }],\n          attrs: {\n            canBeRemoved: true\n          }\n        }, {\n          type: \"text\",\n          text: \". \"\n        }, {\n          type: \"text\",\n          text: \"Please allow approximately \"\n        }, {\n          type: \"nonEditableInline\",\n          content: [{\n            type: \"text\",\n            text: \"APPOINTMENT_DURATION\"\n          }],\n          attrs: {\n            canBeRemoved: true\n          }\n        }, {\n          type: \"text\",\n          text: \" for this first meeting.\"\n        }],\n        attrs: {\n          HTMLTag: \"p\"\n        }\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"In order to make the most of our time when we first meet, I invite you to complete our short induction questionnaire online.\"\n        }],\n        attrs: {\n          HTMLTag: \"p\"\n        }\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"By completing this process in your own time and space, you will enable me to consider some of the key information on your matter ahead of our meeting, so that we can make the most of our initial conference. If you have any problems or queries, I would be happy to address them when we meet.\"\n        }],\n        attrs: {\n          HTMLTag: \"p\"\n        }\n      }, {\n        type: \"nonEditable\",\n        content: [{\n          type: \"text\",\n          text: \"SETTIFY_BUTTON\"\n        }],\n        attrs: {\n          isSettifyButton: true,\n          HTMLTag: \"\"\n        }\n      }, {\n        type: \"nonEditable\",\n        content: [{\n          type: \"text\",\n          text: \"OPTIONAL_EXTRA\"\n        }],\n        attrs: {\n          hideOnAdminTemplate: true,\n          HTMLTag: \"\"\n        }\n      }, {\n        type: \"nonEditable\",\n        content: [{\n          type: \"text\",\n          text: \"LAWYER_BIO\"\n        }],\n        attrs: {\n          canBeRemoved: true\n        }\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"I look forward to meeting with you soon.\"\n        }],\n        attrs: {\n          HTMLTag: \"p\"\n        }\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"Kind regards,\"\n        }],\n        attrs: {\n          HTMLTag: \"p\"\n        }\n      }, {\n        type: \"nonEditable\",\n        content: [{\n          type: \"text\",\n          text: \"SIGNATURE\"\n        }],\n        attrs: {\n          hideOnAdminTemplate: true,\n          HTMLTag: \"p\"\n        }\n      }]\n    };\n  };\n\n  // Initial phone meeting - appointment confirmation email payload\n  _exports.getAppointmentConfirmationPayload = getAppointmentConfirmationPayload;\n  const getInitialPhoneMeetingPayload = function () {\n    return {\n      type: \"doc\",\n      content: [{\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"Dear \"\n        }, {\n          type: \"nonEditableInline\",\n          content: [{\n            type: \"text\",\n            text: \"CLIENT_FIRST_NAME\"\n          }],\n          attrs: {\n            canBeRemoved: true\n          }\n        }, {\n          type: \"text\",\n          text: \",\"\n        }],\n        attrs: {\n          HTMLTag: \"p\"\n        }\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"Thank you for allowing \"\n        }, {\n          type: \"nonEditableInline\",\n          content: [{\n            type: \"text\",\n            text: \"FIRM_NAME\"\n          }],\n          attrs: {\n            canBeRemoved: true\n          }\n        }, {\n          type: \"text\",\n          text: \" to assist you with your matter.\"\n        }],\n        attrs: {\n          HTMLTag: \"p\"\n        }\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"I confirm you have booked a call for \"\n        }, {\n          type: \"nonEditableInline\",\n          content: [{\n            type: \"text\",\n            text: \"APPOINTMENT_DATE\"\n          }],\n          attrs: {\n            canBeRemoved: true\n          }\n        }, {\n          type: \"text\",\n          text: \" at \"\n        }, {\n          type: \"nonEditableInline\",\n          content: [{\n            type: \"text\",\n            text: \"APPOINTMENT_TIME\"\n          }],\n          attrs: {\n            canBeRemoved: true\n          }\n        }, {\n          type: \"text\",\n          text: \". \"\n        }, {\n          type: \"text\",\n          text: \"Please allow approximately \"\n        }, {\n          type: \"nonEditableInline\",\n          content: [{\n            type: \"text\",\n            text: \"APPOINTMENT_DURATION\"\n          }],\n          attrs: {\n            canBeRemoved: true\n          }\n        }, {\n          type: \"text\",\n          text: \" for this first meeting.\"\n        }],\n        attrs: {\n          HTMLTag: \"p\"\n        }\n      }, {\n        type: \"nonEditable\",\n        content: [{\n          type: \"text\",\n          text: \"PHONE_MEETING_MESSAGE\"\n        }],\n        attrs: {\n          canBeRemoved: false\n        }\n      }, {\n        type: \"nonEditable\",\n        content: [{\n          type: \"text\",\n          text: \"PHONE_MEETING_HYPERLINK\"\n        }],\n        attrs: {\n          canBeRemoved: false\n        }\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"In order to make the most of our time when we speak, I invite you to complete our short induction questionnaire online.\"\n        }],\n        attrs: {\n          HTMLTag: \"p\"\n        }\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"By completing this process in your own time and space, you will enable me to consider some of the key information on your matter ahead of our call, so that we can make the most of our initial conference. If you have any problems or queries, I would be happy to address them when we speak.\"\n        }],\n        attrs: {\n          HTMLTag: \"p\"\n        }\n      }, {\n        type: \"nonEditable\",\n        content: [{\n          type: \"text\",\n          text: \"SETTIFY_BUTTON\"\n        }],\n        attrs: {\n          isSettifyButton: true,\n          HTMLTag: \"\"\n        }\n      }, {\n        type: \"nonEditable\",\n        content: [{\n          type: \"text\",\n          text: \"OPTIONAL_EXTRA\"\n        }],\n        attrs: {\n          hideOnAdminTemplate: true,\n          HTMLTag: \"\"\n        }\n      }, {\n        type: \"nonEditable\",\n        content: [{\n          type: \"text\",\n          text: \"LAWYER_BIO\"\n        }],\n        attrs: {\n          canBeRemoved: true\n        }\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"I look forward to speaking with you soon.\"\n        }],\n        attrs: {\n          HTMLTag: \"p\"\n        }\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"Kind regards,\"\n        }],\n        attrs: {\n          HTMLTag: \"p\"\n        }\n      }, {\n        type: \"nonEditable\",\n        content: [{\n          type: \"text\",\n          text: \"SIGNATURE\"\n        }],\n        attrs: {\n          hideOnAdminTemplate: true,\n          HTMLTag: \"p\"\n        }\n      }]\n    };\n  };\n\n  // General enquiry email payload\n  _exports.getInitialPhoneMeetingPayload = getInitialPhoneMeetingPayload;\n  const getGeneralEnquiryPayload = function () {\n    return {\n      type: \"doc\",\n      content: [{\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"Dear \"\n        }, {\n          type: \"nonEditableInline\",\n          content: [{\n            type: \"text\",\n            text: \"CLIENT_FIRST_NAME\"\n          }],\n          attrs: {\n            canBeRemoved: true\n          }\n        }, {\n          type: \"text\",\n          text: \",\"\n        }],\n        attrs: {\n          HTMLTag: \"p\"\n        }\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"Thank you for allowing \"\n        }, {\n          type: \"nonEditableInline\",\n          content: [{\n            type: \"text\",\n            text: \"FIRM_NAME\"\n          }],\n          attrs: {\n            canBeRemoved: true\n          }\n        }, {\n          type: \"text\",\n          text: \" to assist you with your matter.\"\n        }],\n        attrs: {\n          HTMLTag: \"p\"\n        }\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"We invite you to make use of our online induction tool. This easy-to-use system will help you to understand the process, and ask a series of questions to help us both prepare for our first meeting together, should you decide to engage us.\"\n        }],\n        attrs: {\n          HTMLTag: \"p\"\n        }\n      }, {\n        type: \"nonEditable\",\n        content: [{\n          type: \"text\",\n          text: \"SETTIFY_BUTTON\"\n        }],\n        attrs: {\n          isSettifyButton: true,\n          HTMLTag: \"\"\n        }\n      }, {\n        type: \"nonEditable\",\n        content: [{\n          type: \"text\",\n          text: \"OPTIONAL_EXTRA\"\n        }],\n        attrs: {\n          hideOnAdminTemplate: true,\n          HTMLTag: \"\"\n        }\n      }, {\n        type: \"nonEditable\",\n        content: [{\n          type: \"text\",\n          text: \"LAWYER_BIO\"\n        }],\n        attrs: {\n          canBeRemoved: true\n        }\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"We hope that you find our system helpful, and look forward to assisting you further.\"\n        }],\n        attrs: {\n          HTMLTag: \"p\"\n        }\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"Kind regards,\"\n        }],\n        attrs: {\n          HTMLTag: \"p\"\n        }\n      }, {\n        type: \"nonEditable\",\n        content: [{\n          type: \"text\",\n          text: \"SIGNATURE\"\n        }],\n        attrs: {\n          hideOnAdminTemplate: true,\n          HTMLTag: \"p\"\n        }\n      }]\n    };\n  };\n  _exports.getGeneralEnquiryPayload = getGeneralEnquiryPayload;\n  const getFollowUpPayload = function () {\n    return {\n      type: \"doc\",\n      content: [{\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"Dear \"\n        }, {\n          type: \"nonEditableInline\",\n          content: [{\n            type: \"text\",\n            text: \"CLIENT_FIRST_NAME\"\n          }],\n          attrs: {\n            canBeRemoved: true\n          }\n        }, {\n          type: \"text\",\n          text: \",\"\n        }],\n        attrs: {\n          HTMLTag: \"p\"\n        }\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"Thank you for allowing \"\n        }, {\n          type: \"nonEditableInline\",\n          content: [{\n            type: \"text\",\n            text: \"FIRM_NAME\"\n          }],\n          attrs: {\n            canBeRemoved: true\n          }\n        }, {\n          type: \"text\",\n          text: \" to assist you with your matter.\"\n        }],\n        attrs: {\n          HTMLTag: \"p\"\n        }\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"As discussed, the next step is for you to return to our online induction, and either complete the remaining sections, provide more detail where sections were skipped over, or update it to reflect any change in circumstances. This will be a significant help in gathering the information required to progress your matter, in an efficient and effective manner.\"\n        }],\n        attrs: {\n          HTMLTag: \"p\"\n        }\n      }, {\n        type: \"nonEditable\",\n        content: [{\n          type: \"text\",\n          text: \"SETTIFY_BUTTON\"\n        }],\n        attrs: {\n          isSettifyButton: true,\n          HTMLTag: \"\"\n        }\n      }, {\n        type: \"nonEditable\",\n        content: [{\n          type: \"text\",\n          text: \"OPTIONAL_EXTRA\"\n        }],\n        attrs: {\n          hideOnAdminTemplate: true,\n          HTMLTag: \"\"\n        }\n      }, {\n        type: \"nonEditable\",\n        content: [{\n          type: \"text\",\n          text: \"LAWYER_BIO\"\n        }],\n        attrs: {\n          canBeRemoved: true\n        }\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"We hope that you find our system helpful, and look forward to assisting you further.\"\n        }],\n        attrs: {\n          HTMLTag: \"p\"\n        }\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"Kind regards,\"\n        }],\n        attrs: {\n          HTMLTag: \"p\"\n        }\n      }, {\n        type: \"nonEditable\",\n        content: [{\n          type: \"text\",\n          text: \"SIGNATURE\"\n        }],\n        attrs: {\n          hideOnAdminTemplate: true,\n          HTMLTag: \"p\"\n        }\n      }]\n    };\n  };\n  _exports.getFollowUpPayload = getFollowUpPayload;\n});","define(\"settify-mvp/lib/customisations/form\", [\"exports\", \"settify-mvp/helpers/format-whitespace\"], function (_exports, _formatWhitespace) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.titleSelects = _exports.initialiseFormAgnosticValues = _exports.initialiseClientRecordFormContent = _exports.getInviteEmailCustomBody = _exports.getInviteEmailAutomatedBody = _exports.createInvitationInformationObject = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/helpers/format-whitespace\"eaimeta@70e063a35619d71f\n  /**\n   * Module which contains utility functions and config data for invitation form.\n   * @class Form\n   * {array} [this.titleSelects] - Array used to define different titles for the person (e.g. Mr, Mrs)\n   * {function} [this.getInviteEmailAutomatedBody] - Function prepares invitation email in the text format.\n   * {function} [this.initialiseFormAgnosticValues] - Function initilise client record data\n   * {function} [this.initialiseClientRecordFormContent] - Function initialise form content and sets client record answers\n   * {function} [this.createInvitationInformationObject] - Function create object sent during the submission of the invitation\n   */\n\n  const titleSelects = _exports.titleSelects = [{\n    name: \"Mr\",\n    value: \"Mr\"\n  }, {\n    name: \"Mrs\",\n    value: \"Mrs\"\n  }, {\n    name: \"Ms\",\n    value: \"Ms\"\n  }, {\n    name: \"Dr\",\n    value: \"Dr\"\n  }];\n  const getInviteEmailAutomatedBody = ({\n    plaintext = null,\n    context\n  } = {}) => {\n    let body = \"\";\n    let el = document.getElementById(\"preview-email-css-wrapper\");\n    if (plaintext) {\n      if (el.hasChildNodes()) {\n        let children = el.childNodes;\n        for (let i = 0; i < children.length; i++) {\n          let text;\n          // NOTE: List is live, adding or removing children will change the list\n          switch (children[i].id) {\n            case \"email_button\":\n              body += \"[SETTIFY BUTTON]\\n\\n\";\n              break;\n            case \"inviteEmailLawyerBio\":\n              body += \"[LAWYER BIOGRAPHY]\\n\\n\";\n              break;\n            case \"inviteEmailSecondLawyerBio\":\n              body += \"[SECOND LAWYER BIOGRAPHY]\\n\\n\";\n              break;\n            case \"optionalExtra\":\n              if (context.optionalExtraMessage) {\n                body += context.optionalExtraMessage;\n                body += \"\\n\\n\";\n              }\n              break;\n            default:\n              text = children[i].innerHTML;\n              if (children[i].className === \"no-free-edit\") {\n                text = \"\";\n              }\n              if (text) {\n                text = text.replace(/([^\\n])\\n([^\\n])/g, \"$1 $2\") // Add space after newline if not already present\n                .replace(/[ ]{2,}/g, \" \") // Replace multiple spaces with a single space\n                .replace(/&amp;/g, \"&\") // Convert ampersands\n                .replace(/&nbsp;/g, \" \") // Convert non-breaking space\n                .replace(/<li>/g, \"<li>• \") // Convert <li> to bullet points\n                .replace(/<\\/li>/g, \"</li>\\n\") // Convert </li> to newline\n                .replace(/\\s*<br\\s*[/]?>\\s*/gi, \"\\n\") // Convert <br> to newline\n                .replace(/<[^>]*>/gi, \"\") // Strip all other HTML tags\n                .replace(/^[ ]+/gm, \"\") // Replace leading spaces on lines\n                .replace(/[ ]+$/gm, \"\") // Replace trailing spaces on lines\n                .trim(); // Remove leading and trailing whitespaces\n\n                if (text.match(/\\S/)) {\n                  body += `${text}\\n\\n`;\n                }\n              }\n              break;\n          }\n        }\n        return body;\n      }\n    }\n    body = plaintext ? el.textContent : el.innerHTML;\n    let buttonEl = document.getElementById(\"email_button\");\n    if (buttonEl) {\n      // replace the HTML button with a directive to the lambda function to insert\n      // a button at this location.\n      body = body.replace(buttonEl.outerHTML, \"\\n[SETTIFY BUTTON]\\n\");\n    }\n    let bioEl = document.getElementById(\"inviteEmailLawyerBio\");\n    if (bioEl) {\n      body = body.replace(bioEl.outerHTML, \"\\n[LAWYER BIOGRAPHY]\\n\");\n    }\n    let secondBio = document.getElementById(\"inviteEmailSecondLawyerBio\");\n    if (secondBio) {\n      body = body.replace(secondBio.outerHTML, \"\\n[SECOND LAWYER BIOGRAPHY]\\n\");\n    }\n    el = document.getElementById(\"optionalExtra\");\n    let match = el.outerHTML;\n    if (context.optionalExtraMessage) {\n      body = body.replace(match, context.formattedOptionalMessage);\n    } else {\n      body = body.replace(match, \"\");\n    }\n    return body;\n  };\n  _exports.getInviteEmailAutomatedBody = getInviteEmailAutomatedBody;\n  const getInviteEmailCustomBody = context => {\n    let html = (0, _formatWhitespace.formatWhitespace)([context.inviteEmailCustomBody]);\n    html = html.replace(\"<p>[SETTIFY BUTTON]</p>\", \"[SETTIFY BUTTON]\");\n    html = html.replace(\"<p>[LAWYER BIOGRAPHY]</p>\", \"[LAWYER BIOGRAPHY]\");\n    html = html.replace(\"<p>[SECOND LAWYER BIOGRAPHY]</p>\", \"[SECOND LAWYER BIOGRAPHY]\");\n    return html;\n  };\n  _exports.getInviteEmailCustomBody = getInviteEmailCustomBody;\n  const initialiseFormAgnosticValues = (clientRecord, context) => {\n    if (context.conflictCheckPerformed && clientRecord.conflictCheck !== \"noconflict\") {\n      clientRecord.conflictCheck = \"noconflict\";\n      clientRecord.conflictCheckTimestamp = new Date().toString();\n      context.eventLogging.log(clientRecord.clientID, context.eventLogging.IDs.ConflictCheckCompleted, \"NO_CONFLICT\", clientRecord.practiceArea);\n    }\n    clientRecord.firstName = context.clientFirstName;\n    clientRecord.surname = context.clientSurname;\n    if (context.clientTitle) {\n      clientRecord.title = context.clientTitle;\n    }\n    if (context.lawyerName) {\n      clientRecord.firmPartnerName = context.lawyerName;\n      clientRecord.preferredLawyer = context.lawyerName;\n    }\n\n    // Appointment details\n    if (context.formattedAppointmentDate) {\n      clientRecord.firmAppointmentDate = context.formattedAppointmentDate;\n    }\n    if (context.appointmentTime) {\n      clientRecord.firmAppointmentTime = context.appointmentTime;\n    }\n    if (context.appointmentDate && context.appointmentTime) {\n      context.eventLogging.log(clientRecord.clientID, context.eventLogging.IDs.AppointmentTime, context.startTimeDate, clientRecord.practiceArea);\n      clientRecord.hasReceivedAppointmentEmail = true;\n    }\n    if (context.selectedOffice) {\n      // Set clients preferred office to the one selected in the invitation.\n      clientRecord.preferredOffice = context.selectedOffice.suburb;\n    }\n    if (context.model.client) {\n      // we're sending them a follow up email of some sort\n      clientRecord.hasReceivedAppointmentEmail = true;\n    }\n    clientRecord.email = context.clientEmail;\n    if (context.doNotNotifyFirmContactAddress) {\n      // clear the default settings for update notifications\n      clientRecord.notifyUpdates = [];\n    }\n    if (!clientRecord.notifyUpdates) {\n      // sometimes, for some reason, context array ends up blank\n      clientRecord.notifyUpdates = [];\n    }\n    if (context.lawyerEmail && !context.lawyerDetails.doNotBCC) {\n      clientRecord.notifyUpdates.pushObject({\n        email: context.lawyerEmail\n      });\n    }\n    if (context.secondLawyerEmail && !context.secondLawyerDetails.doNotBCC) {\n      clientRecord.notifyUpdates.pushObject({\n        email: context.secondLawyerEmail\n      });\n    }\n    if (context.sendFrom?.email) {\n      clientRecord.notifyUpdates.pushObject({\n        email: context.sendFrom.email\n      });\n    }\n    if (context.secondLawyerDetails?.sendFrom?.email) {\n      clientRecord.notifyUpdates.pushObject({\n        email: context.secondLawyerDetails.sendFrom.email\n      });\n    }\n    if (context?.lawyerCCs) {\n      clientRecord.notifyUpdates.pushObjects(context.lawyerCCs.map(x => ({\n        email: x\n      })));\n    }\n    if (context?.secondLawyerCCs) {\n      clientRecord.notifyUpdates.pushObjects(context.secondLawyerCCs.map(x => ({\n        email: x\n      })));\n    }\n    clientRecord.notifyUpdates = [...new Set(clientRecord.notifyUpdates)];\n\n    // We only want to set one induction to the client\n    const induction = context.masterForm.getInduction(context.inductions);\n    clientRecord.inductions = [induction].map(value => ({\n      id: value.id,\n      repeatToken: value.repeatToken || 1,\n      repeatBreadcrumb: value.repeatBreadcrumb || undefined,\n      canBeDeleted: false\n    }));\n    if (clientRecord.detailedInductionComplete) {\n      // MVPTODO: we're sending a follow-up email, so enable the second stage of the induction\n      clientRecord.postMeeting = true;\n    }\n\n    // save all details of this invitation, in case the law firm wants to re-send it\n    clientRecord.invitationInformation = createInvitationInformationObject(context);\n  };\n  _exports.initialiseFormAgnosticValues = initialiseFormAgnosticValues;\n  const initialiseClientRecordFormContent = (clientRecord, context) => {\n    const induction = context.masterForm.getInduction(context.inductions);\n    const repeatToken = induction.repeatToken || 1;\n    const references = context.masterForm.staticReferences(clientRecord, context);\n    const initFunctions = {\n      Probate: clientRecord => {\n        clientRecord.lawFirmHasWill = !!context.lawFirmAlreadyHasWill;\n        const hasWillAlreadyAnswered = !!clientRecord.getPreciseAnswer(induction.id, references?.didPrepareWillQuestion?.chapter, references?.didPrepareWillQuestion?.page, references?.didPrepareWillQuestion?.question, null, repeatToken);\n        if (!hasWillAlreadyAnswered && context.lawFirmAlreadyHasWill) {\n          clientRecord.setPreciseAnswer(induction.id, references?.didPrepareWillQuestion?.chapter, references?.didPrepareWillQuestion?.page, references?.didPrepareWillQuestion?.question, null, repeatToken, \"yes\");\n          clientRecord.setPreciseAnswer(induction.id, references?.knowsWillLocationQuestion?.chapter, references?.knowsWillLocationQuestion?.page, references?.knowsWillLocationQuestion?.question, null, repeatToken, \"yes\");\n          clientRecord.setPreciseAnswer(induction.id, references?.willLocationQuestion?.chapter, references?.willLocationQuestion?.page, references?.willLocationQuestion?.question, null, repeatToken, \"lawFirm\");\n        }\n        if (clientRecord.firstName) {\n          clientRecord.setPreciseAnswer(induction.id, references?.instructorQuestion?.chapter, references?.instructorQuestion?.page, references?.instructorQuestion?.question, null, repeatToken, clientRecord.firstName);\n        }\n      },\n      Estates: clientRecord => {\n        const hasWillAlreadyAnswered = !!clientRecord.getPreciseAnswer(induction.id, references?.didPrepareWillQuestion?.chapter, references?.didPrepareWillQuestion?.page, references?.didPrepareWillQuestion?.question, null, repeatToken);\n        if (!hasWillAlreadyAnswered && context.lawFirmAlreadyHasWill) {\n          clientRecord.setPreciseAnswer(induction.id, references?.didPrepareWillQuestion?.chapter, references?.didPrepareWillQuestion?.page, references?.didPrepareWillQuestion?.question, null, repeatToken, \"yes\");\n        }\n        if (clientRecord.firstName) {\n          clientRecord.setPreciseAnswer(induction.id, references?.instructorQuestion?.chapter, references?.instructorQuestion?.page, references?.instructorQuestion?.question, null, repeatToken, clientRecord.primaryContactPersonID);\n        }\n      },\n      Family: clientRecord => {\n        if (clientRecord.firstName) {\n          clientRecord.setPreciseAnswer(induction.id, references?.clientDetailsQuestion?.chapter, references?.clientDetailsQuestion?.page, references?.clientDetailsQuestion?.question, null, repeatToken, clientRecord.primaryContactPersonID);\n        }\n        if (context.lawyerName) {\n          clientRecord.setPreciseAnswer(induction.id, references?.preferredLawyerQuestion?.chapter, references?.preferredLawyerQuestion?.page, references?.preferredLawyerQuestion?.question, null, repeatToken, context.lawyerName);\n        }\n      }\n    };\n    initFunctions[clientRecord.practiceArea](clientRecord);\n  };\n  _exports.initialiseClientRecordFormContent = initialiseClientRecordFormContent;\n  const createInvitationInformationObject = context => {\n    // note that some of the key values on the left are different to the ones on the right\n    // that's so we can blindly do a this.set() and not clobber computed properties, etc\n    return {\n      includePhoneMeetingAttachments: context.includePhoneMeetingAttachments,\n      includePhoneMeetingMessage: context.includePhoneMeetingMessage,\n      phoneMeetingMessage: context.phoneMeetingMessage,\n      emailSenderName: context.emailSenderName,\n      emailSenderTitle: context.emailSenderTitle,\n      emailSenderEmail: context.emailSenderEmail,\n      emailSenderPhone: context.emailSenderPhone,\n      forceIncludeSettifyButton: context.forceIncludeSettifyButton,\n      optionalExtraMessage: context.optionalExtraMessage,\n      showOptionalExtra: context.showOptionalExtra,\n      sendCalendarInvite: context.sendCalendarInvite,\n      includeAdditionalCCs: context.includeAdditionalCCs,\n      additionalCCsText: context.additionalCCsText,\n      editingCustomEmailBody: context.editingCustomEmailBody,\n      showCancelCustomMessageBody: context.showCancelCustomMessageBody,\n      inviteEmailCustomBody: context.inviteEmailCustomBody,\n      lawFirmAlreadyHasWill: context.lawFirmAlreadyHasWill,\n      selectedOfficeIdx: context.selectedOfficeIndex,\n      secondLawyer: context.secondLawyer,\n      forceSecondLawyer: context.secondLawyerName,\n      initialPhoneMeeting: context.initialPhoneMeeting,\n      includeMeetingHyperlink: context.includeMeetingHyperlink,\n      hyperlinkURL: context.hyperlinkURL,\n      hyperlinkText: context.hyperlinkText,\n      includeAsAppointmentLocation: context.includeAsAppointmentLocation\n    };\n  };\n  _exports.createInvitationInformationObject = createInvitationInformationObject;\n});","define(\"settify-mvp/lib/customisations/landing_page_payload\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.getWillsLandingPayload = _exports.getProbateLandingPayload = _exports.getFamilyLandingPayload = _exports.getEstatesLandingPayload = void 0;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  // Family law landing page default wording\n  const getFamilyLandingPayload = function () {\n    return {\n      type: \"doc\",\n      content: [{\n        type: \"heading\",\n        attrs: {\n          textAlign: \"left\",\n          level: 1\n        },\n        content: [{\n          type: \"text\",\n          text: \"Thank you for choosing \"\n        }, {\n          type: \"nonEditableInline\",\n          content: [{\n            type: \"text\",\n            text: \"FIRM_NAME\"\n          }]\n        }]\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"This questionnaire will help you understand the process ahead, and will cover:\"\n        }]\n      }, {\n        type: \"bulletList\",\n        content: [{\n          type: \"listItem\",\n          attrs: {\n            HTMLTag: \"li\"\n          },\n          content: [{\n            type: \"paragraph\",\n            attrs: {\n              textAlign: \"left\",\n              HTMLTag: \"p\"\n            },\n            content: [{\n              type: \"text\",\n              text: \"Key steps and likely timelines\"\n            }]\n          }]\n        }, {\n          type: \"listItem\",\n          attrs: {\n            HTMLTag: \"li\"\n          },\n          content: [{\n            type: \"paragraph\",\n            attrs: {\n              textAlign: \"left\",\n              HTMLTag: \"p\"\n            },\n            content: [{\n              type: \"text\",\n              text: \"Your role and obligations\"\n            }]\n          }]\n        }, {\n          type: \"listItem\",\n          attrs: {\n            HTMLTag: \"li\"\n          },\n          content: [{\n            type: \"paragraph\",\n            attrs: {\n              textAlign: \"left\",\n              HTMLTag: \"p\"\n            },\n            content: [{\n              type: \"text\",\n              text: \"How we can help you\"\n            }]\n          }]\n        }]\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"It will also allow you to provide us with some key information, helping us save you time and cost.\"\n        }]\n      }]\n    };\n  };\n\n  // Wills landing page default wording\n  _exports.getFamilyLandingPayload = getFamilyLandingPayload;\n  const getWillsLandingPayload = function () {\n    return {\n      type: \"doc\",\n      content: [{\n        type: \"heading\",\n        attrs: {\n          textAlign: \"left\",\n          level: 1\n        },\n        content: [{\n          type: \"text\",\n          text: \"Thank you for choosing \"\n        }, {\n          type: \"nonEditableInline\",\n          content: [{\n            type: \"text\",\n            text: \"FIRM_NAME\"\n          }]\n        }]\n      }, {\n        type: \"bulletList\",\n        content: [{\n          type: \"listItem\",\n          attrs: {\n            HTMLTag: \"li\"\n          },\n          content: [{\n            type: \"paragraph\",\n            attrs: {\n              textAlign: \"left\",\n              HTMLTag: \"p\"\n            },\n            content: [{\n              type: \"text\",\n              text: \"Get peace of mind with a solicitor-drafted Will and other important documents\"\n            }]\n          }]\n        }, {\n          type: \"listItem\",\n          attrs: {\n            HTMLTag: \"li\"\n          },\n          content: [{\n            type: \"paragraph\",\n            attrs: {\n              textAlign: \"left\",\n              HTMLTag: \"p\"\n            },\n            content: [{\n              type: \"text\",\n              text: \"Ensure your loved ones are provided for\"\n            }]\n          }]\n        }, {\n          type: \"listItem\",\n          attrs: {\n            HTMLTag: \"li\"\n          },\n          content: [{\n            type: \"paragraph\",\n            attrs: {\n              textAlign: \"left\",\n              HTMLTag: \"p\"\n            },\n            content: [{\n              type: \"text\",\n              text: \"Have your Will prepared as quickly and easily as possible\"\n            }]\n          }]\n        }]\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"This questionnaire will allow you to provide us with some key information, helping us save you time and cost.\"\n        }]\n      }]\n    };\n  };\n\n  // Probate landing page default wording\n  _exports.getWillsLandingPayload = getWillsLandingPayload;\n  const getProbateLandingPayload = function () {\n    return {\n      type: \"doc\",\n      content: [{\n        type: \"heading\",\n        attrs: {\n          textAlign: \"left\",\n          level: 1\n        },\n        content: [{\n          type: \"text\",\n          text: \"Thank you for choosing \"\n        }, {\n          type: \"nonEditableInline\",\n          content: [{\n            type: \"text\",\n            text: \"FIRM_NAME\"\n          }]\n        }]\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"We're here to help at this difficult time. This system will enable you to find out the process ahead including:\"\n        }]\n      }, {\n        type: \"bulletList\",\n        content: [{\n          type: \"listItem\",\n          attrs: {\n            HTMLTag: \"li\"\n          },\n          content: [{\n            type: \"paragraph\",\n            attrs: {\n              textAlign: \"left\",\n              HTMLTag: \"p\"\n            },\n            content: [{\n              type: \"text\",\n              text: \"Key steps and likely timelines\"\n            }]\n          }]\n        }, {\n          type: \"listItem\",\n          attrs: {\n            HTMLTag: \"li\"\n          },\n          content: [{\n            type: \"paragraph\",\n            attrs: {\n              textAlign: \"left\",\n              HTMLTag: \"p\"\n            },\n            content: [{\n              type: \"text\",\n              text: \"Your role and obligations\"\n            }]\n          }]\n        }, {\n          type: \"listItem\",\n          attrs: {\n            HTMLTag: \"li\"\n          },\n          content: [{\n            type: \"paragraph\",\n            attrs: {\n              textAlign: \"left\",\n              HTMLTag: \"p\"\n            },\n            content: [{\n              type: \"text\",\n              text: \"How we can help you\"\n            }]\n          }]\n        }]\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"It will also allow you to provide us with some key information, helping us save you time and cost.\"\n        }]\n      }]\n    };\n  };\n\n  // Estates landing page default wording\n  _exports.getProbateLandingPayload = getProbateLandingPayload;\n  const getEstatesLandingPayload = function () {\n    return {\n      type: \"doc\",\n      content: [{\n        type: \"heading\",\n        attrs: {\n          textAlign: \"left\",\n          level: 1\n        },\n        content: [{\n          type: \"text\",\n          text: \"Thank you for choosing \"\n        }, {\n          type: \"nonEditableInline\",\n          content: [{\n            type: \"text\",\n            text: \"FIRM_NAME\"\n          }]\n        }]\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"We're here to make this as easy as possible. This system will enable you to discover the process ahead, and will discuss:\"\n        }]\n      }, {\n        type: \"bulletList\",\n        content: [{\n          type: \"listItem\",\n          attrs: {\n            HTMLTag: \"li\"\n          },\n          content: [{\n            type: \"paragraph\",\n            attrs: {\n              textAlign: \"left\",\n              HTMLTag: \"p\"\n            },\n            content: [{\n              type: \"text\",\n              text: \"Key steps and likely timelines\"\n            }]\n          }]\n        }, {\n          type: \"listItem\",\n          attrs: {\n            HTMLTag: \"li\"\n          },\n          content: [{\n            type: \"paragraph\",\n            attrs: {\n              textAlign: \"left\",\n              HTMLTag: \"p\"\n            },\n            content: [{\n              type: \"text\",\n              text: \"Your role and obligations\"\n            }]\n          }]\n        }, {\n          type: \"listItem\",\n          attrs: {\n            HTMLTag: \"li\"\n          },\n          content: [{\n            type: \"paragraph\",\n            attrs: {\n              textAlign: \"left\",\n              HTMLTag: \"p\"\n            },\n            content: [{\n              type: \"text\",\n              text: \"How we can help you\"\n            }]\n          }]\n        }]\n      }, {\n        type: \"draggableItem\",\n        content: [{\n          type: \"text\",\n          text: \"It will also allow you to provide us with some key information, helping us save you time and cost.\"\n        }]\n      }]\n    };\n  };\n  _exports.getEstatesLandingPayload = getEstatesLandingPayload;\n});","define(\"settify-mvp/lib/customisations/tiptap_extensions/heading\", [\"exports\", \"@tiptap/extension-heading\"], function (_exports, _extensionHeading) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@tiptap/extension-heading\"eaimeta@70e063a35619d71f\n  /**\n   * CustomHeading is a TipTap extension that extends the default Heading\n   * to support draggable functionality within the editor.\n   */\n  const CustomHeading = _extensionHeading.default.extend({\n    draggable: true\n  });\n  var _default = _exports.default = CustomHeading;\n});","define(\"settify-mvp/lib/customisations/tiptap_extensions/index\", [\"exports\", \"settify-mvp/lib/customisations/tiptap_extensions/heading\", \"settify-mvp/lib/customisations/tiptap_extensions/paragraph\", \"settify-mvp/lib/customisations/tiptap_extensions/list_item\"], function (_exports, _heading, _paragraph, _list_item) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"CustomHeading\", {\n    enumerable: true,\n    get: function () {\n      return _heading.default;\n    }\n  });\n  Object.defineProperty(_exports, \"CustomListItem\", {\n    enumerable: true,\n    get: function () {\n      return _list_item.default;\n    }\n  });\n  Object.defineProperty(_exports, \"CustomParagraph\", {\n    enumerable: true,\n    get: function () {\n      return _paragraph.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/lib/customisations/tiptap_extensions/heading\",0,\"settify-mvp/lib/customisations/tiptap_extensions/paragraph\",0,\"settify-mvp/lib/customisations/tiptap_extensions/list_item\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/lib/customisations/tiptap_extensions/list_item\", [\"exports\", \"@tiptap/extension-list-item\", \"@tiptap/core\"], function (_exports, _extensionListItem, _core) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@tiptap/extension-list-item\",0,\"@tiptap/core\"eaimeta@70e063a35619d71f\n  /**\n   * CustomListItem is a TipTap extension that extends the default ListItem\n   * to support draggable functionality and custom HTML attributes.\n   */\n  const CustomListItem = _extensionListItem.default.extend({\n    draggable: true,\n    /**\n     * Adds custom attributes to the list item.\n     * @returns {object} The default HTML tag for the list item.\n     */\n    addAttributes() {\n      return {\n        HTMLTag: {\n          default: \"li\"\n        }\n      };\n    },\n    /**\n     * Defines how the list item is rendered in HTML with merged attributes.\n     * @param {object} HTMLAttributes - The attributes passed to the HTML element.\n     * @returns {Array} The HTML tag, attributes, and content slot.\n     */\n    renderHTML({\n      HTMLAttributes\n    }) {\n      return [\"li\", (0, _core.mergeAttributes)({\n        class: \"draggable-item\"\n      }, HTMLAttributes), 0];\n    }\n  });\n  var _default = _exports.default = CustomListItem;\n});","define(\"settify-mvp/lib/customisations/tiptap_extensions/paragraph\", [\"exports\", \"@tiptap/extension-paragraph\", \"@tiptap/core\"], function (_exports, _extensionParagraph, _core) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@tiptap/extension-paragraph\",0,\"@tiptap/core\"eaimeta@70e063a35619d71f\n  /**\n   * CustomParagraph is a TipTap extension that extends the default Paragraph\n   * to support draggable functionality and custom HTML attributes.\n   */\n  const CustomParagraph = _extensionParagraph.default.extend({\n    draggable: true,\n    /**\n     * Adds custom attributes to the paragraph element.\n     * @returns {object} The default HTML tag for the paragraph.\n     */\n    addAttributes() {\n      return {\n        HTMLTag: {\n          default: \"p\"\n        }\n      };\n    },\n    /**\n     * Defines how the paragraph is rendered in HTML with merged attributes.\n     * @param {object} HTMLAttributes - The attributes passed to the HTML element.\n     * @returns {Array} The HTML tag, attributes, and content slot.\n     */\n    renderHTML({\n      HTMLAttributes\n    }) {\n      return [\"p\", (0, _core.mergeAttributes)({\n        class: \"draggable-item\"\n      }, HTMLAttributes), 0];\n    }\n  });\n  var _default = _exports.default = CustomParagraph;\n});","define(\"settify-mvp/lib/customisations/tiptap_nodes/draggable_item\", [\"exports\", \"@tiptap/core\"], function (_exports, _core) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@tiptap/core\"eaimeta@70e063a35619d71f\n  /**\n   * DraggableItem is a TipTap custom node that represents a draggable block element.\n   * It supports custom HTML attributes, parsing, and insertion commands.\n   */\n  const DraggableItem = _core.Node.create({\n    name: \"draggableItem\",\n    draggable: true,\n    group: \"block\",\n    // Specifies that this node belongs to the block group.\n\n    content: \"inline*\",\n    // Defines the content model allowing inline elements inside the block.\n\n    /**\n     * Adds custom attributes to the draggable item.\n     * @returns {object} The default HTML tag for the node.\n     */\n    addAttributes() {\n      return {\n        HTMLTag: {\n          default: \"p\"\n        }\n      };\n    },\n    /**\n     * Specifies how this node is parsed from HTML.\n     * @returns {Array} An array of HTML tags to be parsed as this node.\n     */\n    parseHTML() {\n      return [{\n        tag: \"p\"\n      }];\n    },\n    /**\n     * Defines how this node is rendered as HTML with merged attributes.\n     * @param {object} HTMLAttributes - The attributes passed to the HTML element.\n     * @returns {Array} The HTML tag, attributes, and content slot.\n     */\n    renderHTML({\n      HTMLAttributes\n    }) {\n      return [\"p\", (0, _core.mergeAttributes)({\n        class: \"draggable-item\"\n      }, HTMLAttributes), 0];\n    },\n    addCommands() {\n      return {\n        // Command to insert a new draggable item. Each new line enter press will call this command.\n        insertDraggableItem: () => ({\n          chain,\n          editor\n        }) => {\n          if (editor.isActive(\"bulletList\")) return editor.commands.splitListItem(\"listItem\");\n          return chain().insertContent({\n            type: this.name\n          }).run();\n        },\n        // Command to convert the current node to a draggable item.\n        setDraggableItem: () => ({\n          chain\n        }) => {\n          return chain().setNode(this.name).run();\n        }\n      };\n    }\n  });\n  var _default = _exports.default = DraggableItem;\n});","define(\"settify-mvp/lib/customisations/tiptap_nodes/index\", [\"exports\", \"settify-mvp/lib/customisations/tiptap_nodes/draggable_item\", \"settify-mvp/lib/customisations/tiptap_nodes/non_editable_inline_node\", \"settify-mvp/lib/customisations/tiptap_nodes/non_editable_block_node\"], function (_exports, _draggable_item, _non_editable_inline_node, _non_editable_block_node) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"DraggableItem\", {\n    enumerable: true,\n    get: function () {\n      return _draggable_item.default;\n    }\n  });\n  Object.defineProperty(_exports, \"NonEditableBlockNode\", {\n    enumerable: true,\n    get: function () {\n      return _non_editable_block_node.default;\n    }\n  });\n  Object.defineProperty(_exports, \"NonEditableInlineNode\", {\n    enumerable: true,\n    get: function () {\n      return _non_editable_inline_node.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/lib/customisations/tiptap_nodes/draggable_item\",0,\"settify-mvp/lib/customisations/tiptap_nodes/non_editable_inline_node\",0,\"settify-mvp/lib/customisations/tiptap_nodes/non_editable_block_node\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/lib/customisations/tiptap_nodes/non_editable_block_node\", [\"exports\", \"@tiptap/core\", \"@tiptap/pm/state\", \"settify-mvp/lib/customisations/tiptap_nodes/utils/prevent-destroy\"], function (_exports, _core, _state, _preventDestroy) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@tiptap/core\",0,\"@tiptap/pm/state\",0,\"settify-mvp/lib/customisations/tiptap_nodes/utils/prevent-destroy\"eaimeta@70e063a35619d71f\n  /**\n   * NonEditableBlockNode is a TipTap custom node that represents\n   * a non-editable block element with optional draggable functionality.\n   */\n  const NonEditableBlockNode = _core.Node.create({\n    name: \"nonEditable\",\n    group: \"block\",\n    // Specifies that this node belongs to the block group.\n\n    content: \"text*\",\n    selectable: true,\n    draggable: true,\n    atom: true,\n    // Marks this as an atomic or single, indivisible non editable unit/node.\n    isolating: true,\n    // Prevents content from merging in/out of this node during delete/backspace operations\n\n    /**\n     * Adds custom attributes to the non-editable block node.\n     * @returns {object} The default attributes for the node.\n     */\n    addAttributes() {\n      return {\n        // Sets contenteditable to false as default value\n        contenteditable: {\n          default: false\n        },\n        // Sets `is-settify-button` attribute and optional alignment style for specific node\n        isSettifyButton: {\n          default: false,\n          renderHTML: attributes => ({\n            style: `${attributes.isSettifyButton ? \"text-align: center\" : \"\"}`\n          })\n        },\n        // Sets attribute to control weather the node should be visible on the admin template\n        hideOnAdminTemplate: {\n          default: false,\n          renderHTML: attributes => ({\n            style: `${attributes.hideOnAdminTemplate ? \"display: none\" : \"\"}`\n          })\n        },\n        HTMLTag: {\n          default: \"div\"\n        },\n        // Sets attribute to control weather the node can be removed\n        canBeRemoved: {\n          default: false,\n          renderHTML: attributes => attributes.canBeRemoved\n        }\n      };\n    },\n    /**\n     * Specifies how this node is parsed from HTML.\n     * @returns {Array} An array of HTML tags to be parsed as this node.\n     */\n    parseHTML() {\n      return [{\n        tag: \"div\"\n      }];\n    },\n    /**\n     * Defines how this node is rendered as HTML with merged attributes.\n     * @param {object} HTMLAttributes - The attributes passed to the HTML element.\n     * @param {object} node - The current ProseMirror/TipTap node.\n     * @returns {Array} The HTML tag, attributes, and content slot.\n     */\n    renderHTML({\n      HTMLAttributes,\n      node\n    }) {\n      if (node.attrs.isSettifyButton) {\n        return [\"div\", (0, _core.mergeAttributes)(HTMLAttributes, {\n          id: \"email_button\",\n          class: \"draggable-item\"\n        }), [\"div\", {\n          class: \"validationbutton\"\n        }, [\"p\", \"Click here to get started\"]]];\n      }\n      return [\"div\", (0, _core.mergeAttributes)(HTMLAttributes, {\n        class: \"tiptap-noneditable-node draggable-item\"\n      }), 0];\n    },\n    /**\n     * Adds ProseMirror plugin to prevent destruction of this node.\n     * @returns {Array} The ProseMirror plugins for this node.\n     */\n    addProseMirrorPlugins() {\n      return [new _state.Plugin({\n        key: new _state.PluginKey(\"nonEditable\"),\n        filterTransaction(transaction, state) {\n          return (0, _preventDestroy.default)(\"nonEditable\", transaction, state);\n        }\n      })];\n    }\n  });\n  var _default = _exports.default = NonEditableBlockNode;\n});","define(\"settify-mvp/lib/customisations/tiptap_nodes/non_editable_inline_node\", [\"exports\", \"@tiptap/core\", \"@tiptap/pm/state\", \"settify-mvp/lib/customisations/tiptap_nodes/utils/prevent-destroy\"], function (_exports, _core, _state, _preventDestroy) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@tiptap/core\",0,\"@tiptap/pm/state\",0,\"settify-mvp/lib/customisations/tiptap_nodes/utils/prevent-destroy\"eaimeta@70e063a35619d71f\n  /**\n   * NonEditableInlineNode is a TipTap custom node that represents\n   * a non-editable inline element with optional draggable functionality.\n   */\n  const NonEditableInlineNode = _core.Node.create({\n    name: \"nonEditableInline\",\n    group: \"inline\",\n    // Specifies that this node belongs to the inline group.\n\n    content: \"inline+\",\n    // Defines the content model allowing inline elements inside.\n\n    inline: true,\n    selectable: true,\n    draggable: true,\n    atom: true,\n    // Marks this as an atomic or single, indivisible non editable unit/node.\n\n    /**\n     * Adds custom attributes to the non-editable inline node.\n     * @returns {object} The default attributes for the node.\n     */\n    addAttributes() {\n      return {\n        contenteditable: {\n          default: false\n        },\n        // Sets attribute to control weather the node should be visible on the admin template\n        hideOnAdminTemplate: {\n          default: false,\n          renderHTML: attributes => ({\n            style: `${attributes.hideOnAdminTemplate ? \"display: none\" : \"\"}`\n          })\n        },\n        HTMLTag: {\n          default: \"p\"\n        },\n        // Sets attribute to control weather the node can be removed\n        canBeRemoved: {\n          default: false,\n          renderHTML: attributes => {\n            return attributes.canBeRemoved;\n          }\n        }\n      };\n    },\n    /**\n     * Specifies how this node is parsed from HTML.\n     * @returns {Array} An array of HTML tags to be parsed as this node.\n     */\n    parseHTML() {\n      return [{\n        tag: \"span\"\n      }];\n    },\n    /**\n     * Defines how this node is rendered as HTML with merged attributes.\n     * @param {object} HTMLAttributes - The attributes passed to the HTML element.\n     * @returns {Array} The HTML tag, attributes, and content slot.\n     */\n    renderHTML({\n      HTMLAttributes\n    }) {\n      return [\"span\", (0, _core.mergeAttributes)({\n        class: \"tiptap-noneditable-node\"\n      }, HTMLAttributes), 0];\n    },\n    /**\n     * Adds ProseMirror plugin to prevent destruction of this node.\n     * @returns {Array} The ProseMirror plugins for this node.\n     */\n    addProseMirrorPlugins() {\n      return [new _state.Plugin({\n        key: new _state.PluginKey(\"nonEditableInline\"),\n        filterTransaction(transaction, state) {\n          return (0, _preventDestroy.default)(\"nonEditableInline\", transaction, state);\n        }\n      })];\n    }\n  });\n  var _default = _exports.default = NonEditableInlineNode;\n});","define(\"settify-mvp/lib/customisations/tiptap_nodes/utils/prevent-destroy\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = preventDestroy;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  /**\n   * A function to prevent the removal or replacement of certain custom nodes (like `nonEditable` or `nonEditableInline`)\n   * from the document in a ProseMirror transaction. This is useful for ensuring that non-editable nodes are not accidentally deleted\n   * or modified, unless they are explicitly marked as removable or are part of a drag-and-drop action.\n   *\n   * @param {string} nodeType - The name of the node type to protect (e.g., \"nonEditable\" or \"nonEditableInline\").\n   * @param {object} transaction - The current ProseMirror transaction that represents the user's action.\n   * @param {object} state - The ProseMirror editor state, which contains the document and selection information.\n   *\n   * @returns {boolean} - Returns `true` if the transaction is allowed to proceed, `false` if it is prevented.\n   *                      By default, transactions are allowed unless specific conditions block them.\n   *\n   */\n  function preventDestroy(nodeType, transaction, state) {\n    let result = true; // true for keep, false for stop transaction\n    const replaceSteps = [];\n    // Check if the transaction contains any \"replace\" steps (i.e., actions that replace or remove content)\n    transaction.steps.forEach((step, index) => {\n      if (step.jsonID === \"replace\") {\n        replaceSteps.push(index);\n      }\n    });\n\n    // For each \"replace\" step, inspect the range of nodes being replaced.\n    replaceSteps.forEach(index => {\n      const map = transaction.mapping.maps[index];\n      const oldStart = map.ranges[0];\n      const oldEnd = map.ranges[0] + map.ranges[1];\n      state.doc.nodesBetween(oldStart, oldEnd, node => {\n        // If any of the nodes being replaced match the specified `nodeType` (\"nonEditable\" or \"nonEditableInline\") and are marked as non-removable (`canBeRemoved: false`),\n        // the function prevents the transaction from proceeding, unless the action is a drag-and-drop event.\n        if (node.type.name === nodeType && !node.attrs.canBeRemoved && transaction.meta.uiEvent !== \"drop\") {\n          result = false;\n        }\n      });\n    });\n    return result;\n  }\n});","define(\"settify-mvp/lib/href\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.hrefRelativetoAbsolute = void 0;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  // import Ember from 'ember';\n\n  let hrefRelativetoAbsolute = function (htmlText) {\n    // if an href doesn't start with http, prepend the settify domain\n    return htmlText.replace(/href=\"((?!http)[^\"]*)\"/g, 'href=\"http://settify.com.au$1\"');\n  };\n  _exports.hrefRelativetoAbsolute = hrefRelativetoAbsolute;\n});","define(\"settify-mvp/lib/identity\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.getIdentityID = _exports.getClientID = void 0;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  let getClientID = function (cookies, session) {\n    if (cookies?.exists(\"proxyActive\")) {\n      // We are going through the client induction as an Admin. Use the proxyID\n      return cookies.read(\"proxyID\");\n    }\n    if (session) {\n      if (session?.isAuthenticated) {\n        if (session?.data?.authenticated?.adminUser) {\n          return \"\";\n        }\n        return cookies.read(\"activeID\") || session?.data?.authenticated?.clientID;\n      }\n    }\n    if (cookies) {\n      return cookies.read(\"clientID\");\n    }\n  };\n  _exports.getClientID = getClientID;\n  let getIdentityID = function (session) {\n    if (session) {\n      if (session?.isAuthenticated) {\n        if (session?.data?.authenticated?.adminUser) {\n          return \"\";\n        }\n        return session?.data?.authenticated?.identityID;\n      }\n    }\n  };\n  _exports.getIdentityID = getIdentityID;\n});","define(\"settify-mvp/lib/relationshipgender\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.stepParentRelationships = _exports.stepChildRelationships = _exports.siblingRelationships = _exports.piblingRelationships = _exports.partnerRelationships = _exports.parentRelationships = _exports.niblingRelationships = _exports.neutralRelationships = _exports.maleRelationships = _exports.grandParentRelationships = _exports.grandChildRelationships = _exports.genderOutput = _exports.femaleRelationships = _exports.childRelationships = void 0;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  const maleRelationships = _exports.maleRelationships = [\"father\", \"husband\", \"brother\", \"uncle\", \"son\", \"stepson\", \"nephew\", \"stepfather\", \"grandson\", \"grandfather\"];\n  const femaleRelationships = _exports.femaleRelationships = [\"mother\", \"wife\", \"sister\", \"aunt\", \"daughter\", \"stepdaughter\", \"niece\", \"stepmother\", \"granddaughter\", \"grandmother\"];\n  const neutralRelationships = _exports.neutralRelationships = [\"parent\", \"partner\", \"sibling\", \"child\", \"stepchild\", \"stepparent\", \"grandchild\", \"grandparent\"];\n  const grandParentRelationships = _exports.grandParentRelationships = [\"grandmother\", \"grandfather\", \"grandparent\"];\n  const parentRelationships = _exports.parentRelationships = [\"mother\", \"father\", \"parent\"];\n  const stepParentRelationships = _exports.stepParentRelationships = [\"stepmother\", \"stepfather\", \"stepparent\"];\n  const piblingRelationships = _exports.piblingRelationships = [\"aunt\", \"uncle\", \"parents sibling\"];\n  const siblingRelationships = _exports.siblingRelationships = [\"brother\", \"sister\", \"sibling\"];\n  const partnerRelationships = _exports.partnerRelationships = [\"wife\", \"husband\", \"spouse\", \"partner\", \"formerpartner\"];\n  const childRelationships = _exports.childRelationships = [\"daughter\", \"son\", \"child\"];\n  const stepChildRelationships = _exports.stepChildRelationships = [\"stepdaughter\", \"stepson\", \"stepchild\"];\n  const niblingRelationships = _exports.niblingRelationships = [\"newphew\", \"niece\", \"nibling\"];\n  const grandChildRelationships = _exports.grandChildRelationships = [\"granddaughter\", \"grandson\", \"grandchild\"];\n  const genderOutput = (gender, maleOutput, femaleOutput, otherOutput) => {\n    if (gender === \"male\") {\n      return maleOutput;\n    } else if (gender === \"female\") {\n      return femaleOutput;\n    }\n    return otherOutput;\n  };\n  _exports.genderOutput = genderOutput;\n});","define(\"settify-mvp/lib/sendhttp\", [\"exports\", \"rsvp\"], function (_exports, _rsvp) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.sendHTTP = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"rsvp\"eaimeta@70e063a35619d71f\n  let sendHTTP = function (url, verb, payload, apikey) {\n    return new _rsvp.Promise((resolve, reject) => {\n      let xhr = new XMLHttpRequest();\n      xhr.open(verb, url);\n      xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n      xhr.onreadystatechange = handler;\n      xhr.responseType = \"json\";\n      xhr.setRequestHeader(\"Accept\", \"application/json\");\n      if (apikey) {\n        xhr.setRequestHeader(\"x-api-key\", apikey);\n      }\n\n      // console.log(\"Payload: \", payload);\n      xhr.send(JSON.stringify(payload));\n      function handler() {\n        if (this.readyState === this.DONE) {\n          if (this.status >= 200 && this.status < 300) {\n            // Internet Explorer 11 doesn't convert strings to JSON, even when content type is application/json\n            if (typeof this.response === \"string\") {\n              try {\n                let parsed = JSON.parse(this.response);\n                resolve(parsed);\n              } catch (e) {\n                resolve(this.response);\n              }\n            } else {\n              resolve(this.response);\n            }\n          } else {\n            reject(new Error(`sendRequest: \\`${url}\\` failed with status: [${this.status}]`));\n          }\n        }\n      }\n    });\n  };\n  _exports.sendHTTP = sendHTTP;\n});","define(\"settify-mvp/lib/settings\", [\"exports\", \"rsvp\", \"settify-mvp/lib/aws\", \"settify-mvp/config/environment\"], function (_exports, _rsvp, _aws, _environment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"rsvp\",0,\"settify-mvp/lib/aws\",0,\"settify-mvp/config/environment\"eaimeta@70e063a35619d71f\n  // global settings (regardless of region)\n  const GlobalSettings = {\n    production: {\n      Account: \"038746656398\",\n      PDFServer: \"https://pdf.settify.com.au\"\n    },\n    development: {\n      Account: \"053864002891\",\n      PDFServer: \"https://pdf.settify.com.au\"\n    }\n  };\n\n  // Wills User Pools\n  // NB: DEV uses one pool for both Family/Wills duplicated below to keep logic simpler between environments\n  const WillsCognitoPools = {\n    production: {\n      \"ap-southeast-2\": {\n        UnauthIdentityPool: \"ap-southeast-2:446c7383-b022-4238-93d4-05a4aebf2498\",\n        UnauthUserPoolID: \"ap-southeast-2_zqBVPT7ig\",\n        UnauthUserPoolAppID: \"4v206vgf7bg3dn99spf7gbpi8i\"\n      },\n      \"eu-west-2\": {\n        UnauthIdentityPool: \"eu-west-2:b2876391-9a9e-4114-911f-db06550b7159\",\n        UnauthUserPoolID: \"eu-west-2_4mEP1bHj8\",\n        UnauthUserPoolAppID: \"412pgb6hmdhcv7megrs1a5gdr2\"\n      }\n    },\n    development: {\n      \"ap-southeast-2\": {\n        UnauthIdentityPool: \"ap-southeast-2:a41a155d-cdba-4242-9f15-130f5f09a29a\",\n        UnauthUserPoolID: \"ap-southeast-2_Xv81CT5PA\",\n        UnauthUserPoolAppID: \"2b5ouvs6ga9fo8sm774jtb7a0l\"\n      }\n    }\n  };\n  const PracticeAreaUriSegments = {\n    wills: \"Wills\",\n    probate: \"Probate\",\n    estates: \"Estates\",\n    on: \"Forms\"\n  };\n\n  // region specific settings\n  const RegionalSettings = {\n    production: {\n      \"ap-southeast-2\": {\n        name: \"anz\",\n        Region: \"ap-southeast-2\",\n        LatteEndpoint: \"https://api.prod.latte.settify.com.au/stage\",\n        LambdaEndpoint: \"https://l4w65ctk9e.execute-api.ap-southeast-2.amazonaws.com\",\n        CognitoIdentityUrl: \"cognito-idp.ap-southeast-2.amazonaws.com\",\n        UnauthIdentityPool: \"ap-southeast-2:c7209468-040a-4057-b465-4f0dfea06a7f\",\n        UnauthUserPoolID: \"ap-southeast-2_V7bnbKa1u\",\n        UnauthUserPoolAppID: \"4aeln2kghk2gq8e1fbd78hal7l\",\n        SettifyPoolID: \"ap-southeast-2_IXQ6qAOHk\",\n        SettifyPoolAppID: \"47t8gfd4ptbl79bvpevv0ha36\",\n        SettifyIdentityPoolID: \"ap-southeast-2:085a1df4-5d47-4b4b-b425-8637a42e6885\",\n        S3BaseUrl: \"https://s3-ap-southeast-2.amazonaws.com\",\n        AssetsUrl: \"https://cdn.settify.com.au\",\n        Buckets: {\n          clientdocuments: \"clientdocuments.settify.com.au\",\n          billing: \"billing.settify.com.au\",\n          firmdata: \"firmdata.settify.com.au\",\n          assets: \"assets.settify.com.au\",\n          quarantine: \"file-upload-quarantine.settify.com.au\",\n          widgets: \"widgets.settify.com.au\"\n        }\n      },\n      \"eu-west-2\": {\n        name: \"gb\",\n        Region: \"eu-west-2\",\n        LatteEndpoint: \"https://api.prod.latte.settify.co.uk/stage\",\n        LambdaEndpoint: \"https://a0zhrj8ov3.execute-api.eu-west-2.amazonaws.com\",\n        CognitoIdentityUrl: \"cognito-idp.eu-west-2.amazonaws.com\",\n        UnauthIdentityPool: \"eu-west-2:b8e541ae-813d-4f3f-af6d-5bcfaf67c5f9\",\n        UnauthUserPoolID: \"eu-west-2_RkhnKXWFd\",\n        UnauthUserPoolAppID: \"15ba7vfovnc33bqis75gkaqarr\",\n        SettifyPoolID: \"eu-west-2_dbw2kbGGQ\",\n        SettifyPoolAppID: \"5aj5dd1mjhhmo66463ohj68idf\",\n        SettifyIdentityPoolID: \"eu-west-2:17b4ecd1-d96b-43dd-8ba5-0eb79f5a1f24\",\n        S3BaseUrl: \"https://s3-eu-west-2.amazonaws.com\",\n        AssetsUrl: \"https://cdn.settify.co.uk\",\n        Buckets: {\n          clientdocuments: \"clientdocuments.uk.settify.com.au\",\n          billing: \"billing.uk.settify.com.au\",\n          firmdata: \"firmdata.uk.settify.com.au\",\n          assets: \"assets.uk.settify.com.au\",\n          quarantine: \"file-upload-quarantine.uk.settify.com.au\",\n          widgets: \"widgets.uk.settify.com.au\"\n        }\n      },\n      \"ca-central-1\": {\n        name: \"ca\",\n        Region: \"ca-central-1\",\n        LatteEndpoint: \"https://api.prod.latte.settify.ca/stage\",\n        LambdaEndpoint: \"https://fbzdy22mx3.execute-api.ca-central-1.amazonaws.com\",\n        CognitoIdentityUrl: \"cognito-idp.ca-central-1.amazonaws.com\",\n        UnauthIdentityPool: \"ca-central-1:ef161ba9-ae78-4e9b-bdab-10d88e97301c\",\n        UnauthUserPoolID: \"ca-central-1_C9RAol8A1\",\n        UnauthUserPoolAppID: \"52m0fe3f6p7bus0ct9adol9684\",\n        SettifyPoolID: \"ca-central-1_Ro552UnW0\",\n        SettifyPoolAppID: \"68pacvobcds7e50gorarb8ggb8\",\n        SettifyIdentityPoolID: \"ca-central-1:e1bf125d-ae35-4652-b5ce-1973150dd3e3\",\n        S3BaseUrl: \"https://s3-ca-central-1.amazonaws.com\",\n        AssetsUrl: \"https://cdn.settify.ca\",\n        Buckets: {\n          clientdocuments: \"clientdocuments.ca.settify.com.au\",\n          billing: \"billing.ca.settify.com.au\",\n          firmdata: \"firmdata.ca.settify.com.au\",\n          assets: \"assets.ca.settify.com.au\",\n          quarantine: \"file-upload-quarantine.ca.settify.com.au\",\n          widgets: \"widgets.ca.settify.com.au\"\n        }\n      },\n      \"us-west-2\": {\n        name: \"usa\",\n        Region: \"us-west-2\",\n        LatteEndpoint: \"https://api.prod.latte.settify.com/stage\",\n        LambdaEndpoint: \"https://3jw0aajeaf.execute-api.us-west-2.amazonaws.com\",\n        CognitoIdentityUrl: \"cognito-idp.us-west-2.amazonaws.com\",\n        UnauthIdentityPool: \"us-west-2:0f22d163-0f23-4364-8e33-30b086763273\",\n        UnauthUserPoolID: \"us-west-2_X3Dxtqnci\",\n        UnauthUserPoolAppID: \"dsgi6ftb89uabshstg6kmtroe\",\n        SettifyPoolID: \"us-west-2_fiamkPt9v\",\n        SettifyPoolAppID: \"3b6bsja2pu1293vhaqu7olpb0q\",\n        SettifyIdentityPoolID: \"us-west-2:4473f942-70b6-4359-8e97-eb7998646877\",\n        S3BaseUrl: \"https://s3-us-west-2.amazonaws.com\",\n        AssetsUrl: \"https://cdn.settify.com\",\n        Buckets: {\n          clientdocuments: \"clientdocuments.usa.settify.com.au\",\n          billing: \"billing.usa.settify.com.au\",\n          firmdata: \"firmdata.usa.settify.com.au\",\n          assets: \"assets.usa.settify.com.au\",\n          quarantine: \"file-upload-quarantine.usa.settify.com.au\",\n          widgets: \"widgets.usa.settify.com.au\"\n        }\n      }\n    },\n    development: {\n      \"ap-southeast-2\": {\n        name: \"anz\",\n        Region: \"ap-southeast-2\",\n        LatteEndpoint: \"https://api.dev.latte.settify.com.au/latest\",\n        APIGatewayEndpoint: \"https://496gvefm2h.execute-api.ap-southeast-2.amazonaws.com\",\n        CognitoIdentityUrl: \"cognito-idp.ap-southeast-2.amazonaws.com\",\n        UnauthIdentityPool: \"ap-southeast-2:a41a155d-cdba-4242-9f15-130f5f09a29a\",\n        UnauthUserPoolID: \"ap-southeast-2_Xv81CT5PA\",\n        UnauthUserPoolAppID: \"2b5ouvs6ga9fo8sm774jtb7a0l\",\n        SettifyPoolID: \"ap-southeast-2_DCuKKXKlA\",\n        SettifyPoolAppID: \"3fc57rfh1ohreorrfavmro0emb\",\n        SettifyIdentityPoolID: \"ap-southeast-2:67ca3872-d61d-4be9-aa03-27b9aef71b23\",\n        S3BaseUrl: \"https://s3-ap-southeast-2.amazonaws.com\",\n        AssetsUrl: \"https://cdn.dev.settify.com.au\",\n        Buckets: {\n          clientdocuments: \"clientdocuments.dev.settify.com.au\",\n          billing: \"billing.dev.settify.com.au\",\n          firmdata: \"firmdata.dev.settify.com.au\",\n          assets: \"assets.dev.settify.com.au\",\n          quarantine: \"file-upload-quarantine.dev.settify.com.au\",\n          widgets: \"widgets.dev.settify.com.au\"\n        }\n      },\n      \"us-west-2\": {\n        name: \"usa\",\n        Region: \"us-west-2\",\n        LatteEndpoint: \"https://api.dev.latte.settify.com/latest\",\n        APIGatewayEndpoint: \"https://g93ftiysye.execute-api.us-west-2.amazonaws.com\",\n        CognitoIdentityUrl: \"cognito-idp.us-west-2.amazonaws.com\",\n        UnauthIdentityPool: \"us-west-2:29a31b21-4995-4998-9609-84e735316cd6\",\n        UnauthUserPoolID: \"us-west-2_Qhufs4psu\",\n        UnauthUserPoolAppID: \"2n6v1pgk8el5optnt3r8lp1hhi\",\n        SettifyPoolID: \"us-west-2_N9iemQdty\",\n        SettifyPoolAppID: \"1dlt53gjs3qp1t8bci7s7tqcgt\",\n        SettifyIdentityPoolID: \"us-west-2:3ebeb89e-e215-401c-9dc1-5ad4ca445423\",\n        S3BaseUrl: \"https://s3-us-west-2.amazonaws.com\",\n        AssetsUrl: \"https://cdn.dev.settify.com\",\n        Buckets: {\n          clientdocuments: \"clientdocuments.usa.dev.settify.com.au\",\n          billing: \"billing.usa.dev.settify.com.au\",\n          firmdata: \"firmdata.usa.dev.settify.com.au\",\n          assets: \"assets.usa.dev.settify.com.au\",\n          quarantine: \"file-upload-quarantine.usa.dev.settify.com.au\",\n          widgets: \"widgets.usa.dev.settify.com.au\"\n        }\n      }\n    }\n  };\n  const testFirmConfig = {\n    firmID: \"000000000-TESTCONFIG\",\n    adminPoolID: \"adminPoolID\",\n    adminIdentityPoolID: \"adminIdentityPoolID\",\n    adminPoolAppID: \"adminPoolAppID\"\n  };\n  var _default = _exports.default = {\n    /**\n     * Use AWSConfig file to determine AWS account (prod or dev) of current code\n     * In testing we just assume always production account (as the files vary from branch to branch)\n     *\n     * todo: Is AWSConfig file is the best way to do this? This works as long as\n     *       the dev site is deployed with this value in its own bucket\n     *       which could work fine as a permanent solution.\n     */\n    isDevelopmentAccount() {\n      return \"053864002891\" === _aws.AWSConfig.Account && !_environment.default.testing;\n    },\n    getFallbackLocation() {\n      try {\n        return new URL(_aws.AWSConfig.settifyURL);\n      } catch (e) {\n        console.warn(\"invalid fallback location\", _aws.AWSConfig.settifyURL);\n        return new URL(\"http://localhost\");\n      }\n    },\n    detectFallbackRegion() {\n      return _aws.AWSConfig.Region;\n    },\n    /**\n     * TODO: Ideally we would figure out a way to mock these instead\n     * These values are only used when we initialise dynamic config via constructor for Ember testing.\n     */\n    getTestSettings(domain) {\n      const configuration = {};\n      const settifyUrl = new URL(_aws.AWSConfig.settifyURL);\n      const practiceArea = this._getPracticeAreaFromHostname(settifyUrl.hostname);\n      console.debug(\"using test configuration\", domain.environment, domain.id, practiceArea);\n      const globalSettings = GlobalSettings[domain.environment];\n      const regionalSettings = RegionalSettings[domain.environment][domain.region];\n      Object.assign(configuration, globalSettings, regionalSettings);\n      const {\n        firmID,\n        adminPoolID,\n        adminPoolAppID,\n        adminIdentityPoolID\n      } = testFirmConfig;\n      Object.assign(configuration, {\n        Firm: {\n          id: firmID,\n          practiceArea: practiceArea\n        },\n        adminPoolID,\n        adminPoolAppID,\n        adminIdentityPoolID\n      });\n      return configuration;\n    },\n    resolve(domain, hostname) {\n      const configuration = {};\n      const practiceArea = this._getPracticeAreaFromHostname(hostname);\n      console.debug(\"using dynamic configuration\", domain.environment, domain.id, practiceArea);\n      const globalSettings = GlobalSettings[domain.environment];\n      const regionalSettings = RegionalSettings[domain.environment][domain.region];\n      Object.assign(configuration, globalSettings, regionalSettings);\n      if (practiceArea === \"Wills\") {\n        // overwrite cognito pools with wills specific ones\n        const willsCognitoPools = WillsCognitoPools[domain.environment][domain.region];\n        Object.assign(configuration, willsCognitoPools);\n      }\n\n      // Uses subdomain as firm identifier (testlawfirm.settify.com = testlawfirm)\n      const firmFromHost = hostname.split(\".\")[0];\n\n      // TODO: might need to set domain.id to `au` for dev. This is a workaround to load the config\n      const domainID = domain.id === \"dev\" ? \"au\" : domain.id;\n      let url = `${configuration.AssetsUrl}/config/${firmFromHost}-${domainID}.config.json`;\n      return this._getConfigFile(url).then(data => {\n        const {\n          firmID,\n          adminPoolID,\n          adminPoolAppID,\n          adminIdentityPoolID\n        } = data;\n        Object.assign(configuration, {\n          Firm: {\n            id: firmID,\n            practiceArea: \"global\"\n          },\n          adminPoolID,\n          adminPoolAppID,\n          adminIdentityPoolID\n        });\n\n        // returns a deep copy of the settings (avoid mutation of original values)\n        return JSON.parse(JSON.stringify(configuration));\n      });\n    },\n    _getConfigFile(url) {\n      return new _rsvp.Promise((resolve, reject) => {\n        if (_environment.default.testing) {\n          // for ENV.testing we just use our fake test firm config\n          resolve(testFirmConfig);\n        } else {\n          const requireAttributes = [\"firmID\", \"adminPoolID\", \"adminPoolAppID\", \"adminIdentityPoolID\"];\n          let req = new XMLHttpRequest();\n          req.open(\"GET\", url);\n          req.onreadystatechange = () => {\n            if (req.readyState === req.DONE) {\n              if (req.status === 200) {\n                const attributes = Object.keys(req.response || {});\n                const missingAttributes = requireAttributes.filter(el => !attributes.includes(el));\n                if (missingAttributes.length > 0) {\n                  reject(new Error(`Missing required attribute(s) in config: ${missingAttributes.join(\", \")}`));\n                } else {\n                  resolve(req.response);\n                }\n              } else {\n                reject(new Error(`Config Request Failed: http-${req.status}`));\n              }\n            }\n          };\n          req.responseType = \"json\";\n          req.setRequestHeader(\"Accept\", \"application/json\");\n          req.send();\n        }\n      });\n    },\n    _getPracticeAreaFromHostname(hostname) {\n      let practiceArea = \"global\";\n      let practiceAreaSegment = hostname.split(\".\")[1];\n      if (Object.keys(PracticeAreaUriSegments).includes(practiceAreaSegment)) {\n        practiceArea = PracticeAreaUriSegments[practiceAreaSegment];\n      }\n      return practiceArea;\n    }\n  };\n});","define(\"settify-mvp/lib/stateviolenceorders\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.stateViolenceOrders = void 0;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  const stateViolenceOrders = _exports.stateViolenceOrders = {\n    VIC: \"a Family Violence Intervention Order\",\n    SA: \"a Family Violence Intervention Order\",\n    QLD: \"a Protection Order\",\n    NSW: \"an Apprehended Domestic Violence Order\",\n    WA: \"a Violence Restraining Order\",\n    TAS: \"a Family Violence Order\",\n    ACT: \"a Domestic Violence Order\",\n    NT: \"a Domestic Violence Order\",\n    default: \"a Family Violence Order\"\n  };\n});","define(\"settify-mvp/mixins/balance-sheet-export\", [\"exports\", \"@ember/object/mixin\"], function (_exports, _mixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object/mixin\"eaimeta@70e063a35619d71f\n  /* global $JExcel */\n  /* global saveAs */\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create({\n    // exchangeRates: Ember.inject.service(),\n\n    // our sheets\n    BalanceSheet: 0,\n    HelpSheet: 1,\n    // our columns (for the balance sheet)\n    itemNumberColumn: 0,\n    ownershipColumn: 1,\n    descriptionColumn: 2,\n    superNameColumn: 2,\n    // same as description, since description spans 2 columns\n    superTypeColumn: 3,\n    userValueColumn: 4,\n    // typically spans 2 columns\n    spouseValueColumn: 6,\n    // typically spans 2 columns\n    headerBlockKeyColumn: 4,\n    headerBlockValueColumn: 5,\n    // typically spans 3 columns\n    headerBlockTimeKeyColumn: 6,\n    headerBlockTimeValueColumn: 7,\n    // This function demonstrates a few different formatting things that might be helpful.\n    exportExcelTestFile() {\n      let excel = $JExcel.new(\"Calibri 10 #333333\");\n      excel.addSheet(\"Test Excel\");\n      let evenRow = excel.addStyle({\n        border: \"none,none,none,thin #333333\"\n      });\n      let oddRow = excel.addStyle({\n        fill: \"#ECECEC\",\n        border: \"none,none,none,thin #333333\"\n      });\n      for (let i = 1; i < 50; i++) {\n        excel.set({\n          row: i,\n          style: i % 2 === 0 ? evenRow : oddRow\n        });\n      }\n      excel.set({\n        row: 3,\n        value: 30\n      });\n      let headers = [\"Header 0\", \"Header 1\", \"Header 2\", \"Header 3\", \"Header 4\"];\n      let formatHeader = excel.addStyle({\n        border: \"none,none,none,thin #333333\",\n        font: \"Calibri 12 #0000AA B\"\n      });\n      for (let i = 0; i < headers.length; i++) {\n        // Loop headers\n        excel.set(0, i, 0, headers[i], formatHeader); // Set CELL header text & header format\n        excel.set(0, i, undefined, \"auto\"); // Set COLUMN width to auto\n      }\n      let initDate = new Date(2000, 0, 1);\n      let endDate = new Date(2016, 0, 1);\n      let dStyle = excel.addStyle({\n        align: \"R\",\n        format: \"yyyy.mm.dd hh:mm:ss\",\n        font: \"#00AA00\"\n      });\n      for (let i = 1; i < 50; i++) {\n        // Generate 50 rows\n        excel.set(0, 0, i, `This is line ${i}`); // This column is a TEXT\n        let d = this.randomDate(initDate, endDate); // Get a random date\n        excel.set(0, 1, i, d.toLocaleString()); // Random date as STRING\n        excel.set(0, 2, i, $JExcel.toExcelLocalTime(d)); // Date as a NUMERIC\n        excel.set(0, 3, i, $JExcel.toExcelLocalTime(d), dStyle); // Date as a NUMERIC in dStyle.format\n        excel.set(0, 4, i, \"Some other text\"); // Some other text\n      }\n      excel.set(0, 1, undefined, 30); // Set COLUMN B to 30 chars width\n      excel.set(0, 3, undefined, 30); // Set COLUMN D to 20 chars width\n      excel.set(0, 4, undefined, 20, excel.addStyle({\n        align: \"R\"\n      })); // Align column 4 to the right\n      excel.set(0, 1, 3, undefined, excel.addStyle({\n        align: \"L T\"\n      })); // CELL B4  to LEFT-TOP\n      excel.set(0, 2, 3, undefined, excel.addStyle({\n        align: \"C C\"\n      })); // CELL C4  to CENTER-CENTER\n      excel.set(0, 3, 3, undefined, excel.addStyle({\n        align: \"R B\"\n      })); // CELL D4  to RIGHT-BOTTOM\n\n      excel.set(0, 0, 52, \"This is a merged across cell\", null, {\n        mergeAcross: 3\n      });\n      excel.generate(\"SampleData.xlsx\").then(content => {\n        saveAs(content, \"SampleData.xlsx\");\n      });\n    },\n    randomDate(start, end) {\n      let d = new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime()));\n      return d;\n    },\n    exportBalanceSheetToExcel(model) {\n      let excel = $JExcel.new(\"Arial 10 #333333\");\n      this.createSheets(excel);\n      this.createStyles(excel);\n      this.buildBalanceSheet(excel, model);\n      this.buildHelpSheet(excel, model);\n      return excel.generate();\n    },\n    createSheets(excel) {\n      let pageMargins = `<pageMargins left=\"0.7\" right=\"0.7\" top=\"0.75\" bottom=\"0.75\" header=\"0.3\" footer=\"0.3\"/>`;\n      let pageSetup = `<pageSetup paperSize=\"9\" orientation=\"portrait\" horizontalDpi=\"0\" verticalDpi=\"0\"/>`;\n      let zoomedInSheet = `   \n      <sheetViews>\n        <sheetView topLeftCell=\"A1\" zoomScale=\"130\" zoomScaleNormal=\"130\" workbookViewId=\"0\">\n        </sheetView>\n      </sheetViews>\n    `;\n      excel.addSheet(\"Joint Balance Sheet\", pageMargins, pageSetup, zoomedInSheet);\n      excel.addSheet(\"Help and Instructions\"); // , pageMargins, pageSetup);\n    },\n    createStyles(excel) {\n      // Styling for Balance Sheet\n      let fontFace = \"Arial\";\n      let fontSize = \"10\";\n      let fontColour = \"#000000\";\n      let basicFont = `${fontFace} ${fontSize} ${fontColour}`;\n      let currencyFormat = \"$#,##0_);($#,##0)\"; // If negatives need to be red make currenyFormat this - $#,##0_);[Red]($#,##0)\n\n      this.set(\"headerBlockStyle\", excel.addStyle({\n        font: basicFont,\n        align: `L C`,\n        border: `thin,thin,thin,thin`\n      }));\n      this.set(\"mainTitleStyle\", excel.addStyle({\n        font: `${fontFace} 16 B`,\n        align: `L C`\n      }));\n      this.set(\"mainSubheadingStyle\", excel.addStyle({\n        font: `${fontFace} 10`,\n        align: `- C`,\n        wrapText: true // wrapText must have align style applied for it to work\n      }));\n      this.set(\"sectionHeadingStyle\", excel.addStyle({\n        font: `${fontFace} 11 B`,\n        fill: \"#e6e6e6\",\n        align: `- C`,\n        border: \"thin,thin,thin,thin\"\n      }));\n      this.set(\"sectionSubheadingStyle\", excel.addStyle({\n        font: `${fontFace} 10 B`,\n        align: `C -`,\n        border: \"thin,thin,thin,thin\"\n      }));\n      this.set(\"sectionSubheadingLeftStyle\", excel.addStyle({\n        font: `${fontFace} 10 B`,\n        align: `L -`,\n        border: \"thin,thin,thin,thin\"\n      }));\n      this.set(\"itemNumberStyle\", excel.addStyle({\n        border: \"thin,thin,thin,thin\",\n        align: `L B`\n      }));\n      this.set(\"basicMoneyStyle\", excel.addStyle({\n        format: currencyFormat,\n        border: \"thin,thin,thin,thin\",\n        align: `R B`\n      }));\n      this.set(\"boldMoneyStyle\", excel.addStyle({\n        format: currencyFormat,\n        border: \"thin,thin,thin,thin\",\n        font: `${fontFace} 10 B`\n      }));\n      this.set(\"subTotalStyle\", excel.addStyle({\n        format: currencyFormat,\n        border: \"thin,thin,thin,thin\",\n        font: `${fontFace} 11 B`\n      }));\n      this.set(\"descriptionStyle\", excel.addStyle({\n        align: `- C`,\n        wrapText: true,\n        // wrapText must have align style applied for it to work\n        border: \"thin,thin,thin,thin\"\n      }));\n      this.set(\"notesHeaderStyle\", excel.addStyle({\n        font: `${fontFace} 14 B`,\n        align: `- C`\n      }));\n      this.set(\"notesNumberStyle\", excel.addStyle({\n        align: `L B`\n      }));\n      this.set(\"notesTextStyle\", excel.addStyle({\n        font: basicFont,\n        wrapText: true,\n        align: `- B`\n      }));\n      this.set(\"approvedByStyle\", excel.addStyle({\n        fill: \"#e6e6e6\"\n      }));\n      this.set(\"borderOnlyStyle\", excel.addStyle({\n        border: \"thin,thin,thin,thin\"\n      }));\n\n      // Styling for Help and Instructions sheet\n\n      let helpFontFace = \"Calibri (Body)\";\n      let helpFontSize = 12;\n      this.set(\"helpBoldStyle\", excel.addStyle({\n        font: `${helpFontFace} ${helpFontSize} B`\n      }));\n      this.set(\"helpMainStyle\", excel.addStyle({\n        font: `${helpFontFace} ${helpFontSize}`\n      }));\n    },\n    buildBalanceSheet(excel, json) {\n      let sheet = this.BalanceSheet;\n\n      // Set Row Widths\n      excel.set(sheet, this.itemNumberColumn, undefined, 3.6640625);\n      excel.set(sheet, this.ownershipColumn, undefined, 9.5);\n      excel.set(sheet, this.superNameColumn, undefined, 19);\n      excel.set(sheet, this.superTypeColumn, undefined, 19);\n      excel.set(sheet, this.headerBlockKeyColumn, undefined, 6.83203125);\n      excel.set(sheet, this.headerBlockValueColumn, undefined, 9);\n      excel.set(sheet, this.headerBlockTimeKeyColumn, undefined, 6.1640625);\n      excel.set(sheet, this.headerBlockTimeValueColumn, undefined, 8.83203125);\n\n      // Set Row Heights\n      excel.set(sheet, undefined, 0, 0.5 * 72);\n      excel.set(sheet, undefined, 1, 0.5 * 72);\n      excel.set(sheet, undefined, 2, 0.5 * 72);\n      excel.set(sheet, undefined, 3, 0.5 * 72);\n      excel.set(sheet, undefined, 5, 0.28 * 72);\n      let currentRow = 0;\n      [\"buildBalanceHeader\", \"buildBalanceAssets\", \"buildBalanceAddbacks\", \"buildBalanceLiabilities\", \"buildBalanceSuper\", \"buildBalanceResources\", \"buildBalanceTotals\", \"buildBalanceNotes\", \"buildBalanceApproval\"].forEach(functionName => {\n        currentRow = this[functionName](sheet, excel, json, currentRow);\n      });\n    },\n    // Header rows\n    buildBalanceHeader(sheet, excel, json, currentRow) {\n      excel.set(sheet, this.headerBlockKeyColumn, currentRow, `Name`, this.headerBlockStyle);\n      excel.set(sheet, this.headerBlockValueColumn, currentRow, `${json.user.surname ? json.user.surname.toUpperCase() : \"###\"} v ${json.spouse.surname ? json.spouse.surname.toUpperCase() : \"###\"}`, this.headerBlockStyle, {\n        mergeAcross: 2\n      });\n      excel.set(sheet, this.headerBlockTimeKeyColumn, currentRow, \"\", this.borderOnlyStyle);\n      excel.set(sheet, this.headerBlockTimeValueColumn, currentRow, \"\", this.borderOnlyStyle);\n      currentRow++; // newline\n\n      excel.set(sheet, this.itemNumberColumn, currentRow, `Balance Sheet`, this.mainTitleStyle);\n      excel.set(sheet, this.headerBlockKeyColumn, currentRow, `File No`, this.headerBlockStyle);\n      excel.set(sheet, this.headerBlockValueColumn, currentRow, null, this.headerBlockStyle, {\n        mergeAcross: 2\n      });\n      excel.set(sheet, this.headerBlockTimeKeyColumn, currentRow, \"\", this.borderOnlyStyle);\n      excel.set(sheet, this.headerBlockTimeValueColumn, currentRow, \"\", this.borderOnlyStyle);\n      currentRow++; // newline\n\n      excel.set(sheet, this.itemNumberColumn, currentRow, `Note: This document can be sent by electronic means between the parties prior to it being filed at court.`, this.mainSubheadingStyle, {\n        mergeAcross: 3\n      });\n      excel.set(sheet, this.headerBlockKeyColumn, currentRow, `Date`, this.headerBlockStyle);\n      excel.set(sheet, this.headerBlockTimeKeyColumn, currentRow, `Time`, this.headerBlockStyle);\n      excel.set(sheet, this.headerBlockTimeValueColumn, currentRow, \"\", this.borderOnlyStyle);\n      currentRow++; // newline\n\n      excel.set(sheet, this.headerBlockKeyColumn, currentRow, `Before`, this.headerBlockStyle);\n      excel.set(sheet, this.headerBlockValueColumn, currentRow, `Judge XXX`, this.headerBlockStyle, {\n        mergeAcross: 2\n      });\n      excel.set(sheet, this.headerBlockTimeKeyColumn, currentRow, \"\", this.borderOnlyStyle);\n      excel.set(sheet, this.headerBlockTimeValueColumn, currentRow, \"\", this.borderOnlyStyle);\n      return currentRow;\n    },\n    // Assets table\n    buildBalanceAssets(sheet, excel, json, currentRow) {\n      currentRow = this.buildSectionHeading(\"ASSETS\", sheet, excel, json, currentRow);\n      let totalStart = currentRow;\n      let assetList = json.assets;\n      if (assetList.length === 0) {\n        assetList = [{\n          assetOwner: \"\",\n          assetName: \"\",\n          assetValue: \" \" // hack: space in a string is truthy so will not display N/K when generating cells\n        }];\n      }\n      assetList.forEach(asset => {\n        excel.set(sheet, this.itemNumberColumn, currentRow, `=1+COUNT($A$1:INDIRECT(CONCATENATE(\"A\",ROW()-1)))`, this.itemNumberStyle);\n        excel.set(sheet, this.ownershipColumn, currentRow, `${asset.assetOwner || \"\"}`, this.borderOnlyStyle);\n        excel.set(sheet, this.descriptionColumn, currentRow, `${asset.assetName || \"\"}`, this.descriptionStyle, {\n          mergeAcross: 1\n        });\n        this.applyBordersToCell(this.descriptionColumn, currentRow, 1, sheet, excel);\n        excel.set(sheet, this.userValueColumn, currentRow, `${asset.assetValue || \"N/K\"}`, this.basicMoneyStyle, {\n          mergeAcross: 1\n        });\n        this.applyBordersToCell(this.userValueColumn, currentRow, 1, sheet, excel);\n        excel.set(sheet, this.spouseValueColumn, currentRow, \"\", this.basicMoneyStyle, {\n          mergeAcross: 1\n        });\n        this.applyBordersToCell(this.spouseValueColumn, currentRow, 1, sheet, excel);\n        currentRow++; // newline\n      });\n      currentRow = this.buildTotalRow(totalStart, currentRow, sheet, excel, \"assets\");\n      return currentRow;\n    },\n    // Addbacks (always just an empty table, a placeholder for the user to complete)\n    buildBalanceAddbacks(sheet, excel, json, currentRow) {\n      currentRow = this.buildSectionHeading(\"ADDBACKS\", sheet, excel, json, currentRow);\n      let totalStart = currentRow;\n      excel.set(sheet, this.itemNumberColumn, currentRow, `=1+COUNT($A$1:INDIRECT(CONCATENATE(\"A\",ROW()-1)))`, this.itemNumberStyle);\n      excel.set(sheet, this.ownershipColumn, currentRow, \"\", this.borderOnlyStyle);\n      excel.set(sheet, this.descriptionColumn, currentRow, \"\", this.descriptionStyle, {\n        mergeAcross: 1\n      });\n      this.applyBordersToCell(this.descriptionColumn, currentRow, 1, sheet, excel);\n      excel.set(sheet, this.userValueColumn, currentRow, \"\", this.basicMoneyStyle, {\n        mergeAcross: 1\n      });\n      this.applyBordersToCell(this.userValueColumn, currentRow, 1, sheet, excel);\n      excel.set(sheet, this.spouseValueColumn, currentRow, \"\", this.basicMoneyStyle, {\n        mergeAcross: 1\n      });\n      this.applyBordersToCell(this.spouseValueColumn, currentRow, 1, sheet, excel);\n      currentRow++; // newline\n\n      currentRow = this.buildTotalRow(totalStart, currentRow, sheet, excel, \"addbacks\");\n      return currentRow;\n    },\n    // Liabilities\n    buildBalanceLiabilities(sheet, excel, json, currentRow) {\n      currentRow = this.buildSectionHeading(\"LIABILITIES\", sheet, excel, json, currentRow);\n      let totalStart = currentRow;\n      let liabilityList = json.liabilities;\n      if (liabilityList.length === 0) {\n        liabilityList = [{\n          liabilityOwner: \"\",\n          liabilityName: \"\",\n          liabilityValue: \" \" // hack: space in a string is truthy so will not display N/K when generating cells\n        }];\n      }\n      liabilityList.forEach(liability => {\n        excel.set(sheet, this.itemNumberColumn, currentRow, `=1+COUNT($A$1:INDIRECT(CONCATENATE(\"A\",ROW()-1)))`, this.itemNumberStyle);\n        excel.set(sheet, this.ownershipColumn, currentRow, `${liability.liabilityOwner || \"\"}`, this.borderOnlyStyle);\n        excel.set(sheet, this.descriptionColumn, currentRow, `${liability.liabilityName || \"\"}`, this.descriptionStyle, {\n          mergeAcross: 1\n        });\n        this.applyBordersToCell(this.descriptionColumn, currentRow, 1, sheet, excel);\n        excel.set(sheet, this.userValueColumn, currentRow, `${liability.liabilityValue || \"N/K\"}`, this.basicMoneyStyle, {\n          mergeAcross: 1\n        });\n        this.applyBordersToCell(this.userValueColumn, currentRow, 1, sheet, excel);\n        excel.set(sheet, this.spouseValueColumn, currentRow, \"\", this.basicMoneyStyle, {\n          mergeAcross: 1\n        });\n        this.applyBordersToCell(this.spouseValueColumn, currentRow, 1, sheet, excel);\n        currentRow++; // newline\n      });\n      currentRow = this.buildTotalRow(totalStart, currentRow, sheet, excel, \"liability\");\n      return currentRow;\n    },\n    // Superannuation\n    buildBalanceSuper(sheet, excel, json, currentRow) {\n      currentRow = this.buildSectionHeading(\"SUPERANNUATION\", sheet, excel, json, currentRow);\n      let totalStart = currentRow;\n      let superList = json.superannuation;\n      if (superList.length === 0) {\n        superList = [{\n          superOwner: \"\",\n          superName: \"\",\n          superType: \"\",\n          superValue: \" \" // hack: space in a string is truthy so will not display N/K when generating cells\n        }];\n      }\n      superList.forEach(superAccount => {\n        excel.set(sheet, this.itemNumberColumn, currentRow, `=1+COUNT($A$1:INDIRECT(CONCATENATE(\"A\",ROW()-1)))`, this.itemNumberStyle);\n        excel.set(sheet, this.ownershipColumn, currentRow, `${superAccount.superOwner || \"\"}`, this.borderOnlyStyle);\n        excel.set(sheet, this.superNameColumn, currentRow, `${superAccount.superName || \"\"}`, this.descriptionStyle);\n        excel.set(sheet, this.superTypeColumn, currentRow, `${superAccount.superType || \"\"}`, this.descriptionStyle);\n        excel.set(sheet, this.userValueColumn, currentRow, `${superAccount.superValue || \"N/K\"}`, this.basicMoneyStyle, {\n          mergeAcross: 1\n        });\n        this.applyBordersToCell(this.userValueColumn, currentRow, 1, sheet, excel);\n        excel.set(sheet, this.spouseValueColumn, currentRow, \"\", this.basicMoneyStyle, {\n          mergeAcross: 1\n        });\n        this.applyBordersToCell(this.spouseValueColumn, currentRow, 1, sheet, excel);\n        currentRow++; // newline\n      });\n      currentRow = this.buildTotalRow(totalStart, currentRow, sheet, excel, \"super\");\n      return currentRow;\n    },\n    // Financial resources (always just an empty table, a placeholder for the user to complete)\n    buildBalanceResources(sheet, excel, json, currentRow) {\n      currentRow = this.buildSectionHeading(\"FINANCIAL RESOURCES\", sheet, excel, json, currentRow);\n      let totalStart = currentRow;\n      excel.set(sheet, this.itemNumberColumn, currentRow, `=1+COUNT($A$1:INDIRECT(CONCATENATE(\"A\",ROW()-1)))`, this.itemNumberStyle);\n      excel.set(sheet, this.ownershipColumn, currentRow, \"\", this.borderOnlyStyle);\n      excel.set(sheet, this.descriptionColumn, currentRow, \"\", this.descriptionStyle, {\n        mergeAcross: 1\n      });\n      this.applyBordersToCell(this.descriptionColumn, currentRow, 1, sheet, excel);\n      excel.set(sheet, this.userValueColumn, currentRow, \"\", this.basicMoneyStyle, {\n        mergeAcross: 1\n      });\n      this.applyBordersToCell(this.userValueColumn, currentRow, 1, sheet, excel);\n      excel.set(sheet, this.spouseValueColumn, currentRow, \"\", this.basicMoneyStyle, {\n        mergeAcross: 1\n      });\n      this.applyBordersToCell(this.spouseValueColumn, currentRow, 1, sheet, excel);\n      currentRow++; // newline\n\n      currentRow = this.buildTotalRow(totalStart, currentRow, sheet, excel);\n      return currentRow;\n    },\n    // Totals\n    buildBalanceTotals(sheet, excel, json, currentRow) {\n      currentRow += 2; // newline plus padding\n\n      excel.set(sheet, this.itemNumberColumn, currentRow, `TOTAL NET NON SUPERANNUATION PROPERTY`, this.subTotalStyle, {\n        mergeAcross: 3\n      });\n      this.applyBordersToCell(this.itemNumberColumn, currentRow, 3, sheet, excel);\n      excel.set(sheet, this.userValueColumn, currentRow, `=${this.assetsUserTotal}+${this.addbacksUserTotal}-${this.liabilityUserTotal}`, this.subTotalStyle, {\n        mergeAcross: 1\n      });\n      this.applyBordersToCell(this.userValueColumn, currentRow, 1, sheet, excel);\n      excel.set(sheet, this.spouseValueColumn, currentRow, `=${this.assetsSpouseTotal}+${this.addbacksSpouseTotal}-${this.liabilitySpouseTotal}`, this.subTotalStyle, {\n        mergeAcross: 1\n      });\n      this.applyBordersToCell(this.spouseValueColumn, currentRow, 1, sheet, excel);\n      let userNonSuperTotal = this.generateCellName(this.userValueColumn, currentRow);\n      let spouseNonSuperTotal = this.generateCellName(this.spouseValueColumn, currentRow);\n      currentRow++; // newline\n\n      excel.set(sheet, this.itemNumberColumn, currentRow, `TOTAL SUPERANNUATION PROPERTY`, this.subTotalStyle, {\n        mergeAcross: 3\n      });\n      this.applyBordersToCell(this.itemNumberColumn, currentRow, 3, sheet, excel);\n      excel.set(sheet, this.userValueColumn, currentRow, `=${this.superUserTotal}`, this.subTotalStyle, {\n        mergeAcross: 1\n      });\n      this.applyBordersToCell(this.userValueColumn, currentRow, 1, sheet, excel);\n      excel.set(sheet, this.spouseValueColumn, currentRow, `=${this.superSpouseTotal}`, this.subTotalStyle, {\n        mergeAcross: 1\n      });\n      this.applyBordersToCell(this.spouseValueColumn, currentRow, 1, sheet, excel);\n      let userSuperTotal = this.generateCellName(this.userValueColumn, currentRow);\n      let spouseSuperTotal = this.generateCellName(this.spouseValueColumn, currentRow);\n      currentRow++; // newline\n\n      excel.set(sheet, this.itemNumberColumn, currentRow, `TOTAL NET ASSETS (including Superannuation)`, this.subTotalStyle, {\n        mergeAcross: 3\n      });\n      this.applyBordersToCell(this.itemNumberColumn, currentRow, 3, sheet, excel);\n      excel.set(sheet, this.userValueColumn, currentRow, `=${userNonSuperTotal}+${userSuperTotal}`, this.subTotalStyle, {\n        mergeAcross: 1\n      });\n      this.applyBordersToCell(this.userValueColumn, currentRow, 1, sheet, excel);\n      excel.set(sheet, this.spouseValueColumn, currentRow, `=${spouseNonSuperTotal}+${spouseSuperTotal}`, this.subTotalStyle, {\n        mergeAcross: 1\n      });\n      this.applyBordersToCell(this.spouseValueColumn, currentRow, 1, sheet, excel);\n      return currentRow;\n    },\n    // Notes\n    buildBalanceNotes(sheet, excel, json, currentRow) {\n      currentRow += 2; // newline plus padding\n      excel.set(sheet, undefined, currentRow, 0.33 * 72); // set row height\n      excel.set(sheet, this.itemNumberColumn, currentRow, `Notes`, this.notesHeaderStyle);\n      currentRow++; // newline\n\n      excel.set(sheet, undefined, currentRow, 0.4 * 72); // set row height\n      excel.set(sheet, this.itemNumberColumn, currentRow, `In relation to any disputed items and all disputed values for items a party should state, using the item number as a heading:`, this.notesTextStyle, {\n        mergeAcross: 7\n      });\n      currentRow++; // newline\n\n      excel.set(sheet, this.itemNumberColumn, currentRow, `1.`, this.notesNumberStyle);\n      excel.set(sheet, this.ownershipColumn, currentRow, `Why an item should not be on the balance sheet.`, this.notesTextStyle, {\n        mergeAcross: 6\n      });\n      currentRow++; // newline\n\n      excel.set(sheet, undefined, currentRow, 0.43 * 72); // set row height\n      excel.set(sheet, this.itemNumberColumn, currentRow, `2.`, this.notesNumberStyle);\n      excel.set(sheet, this.ownershipColumn, currentRow, `Whether expert evidence is required to resolve a dispute as to value and what steps have been taken to agree upon and appoint a single expert.`, this.notesTextStyle, {\n        mergeAcross: 6\n      });\n      currentRow++; // newline\n\n      excel.set(sheet, undefined, currentRow, 0.44 * 72); // set row height\n      excel.set(sheet, this.itemNumberColumn, currentRow, `3.`, this.notesNumberStyle);\n      excel.set(sheet, this.ownershipColumn, currentRow, `Whether documents in the possession of the other party need to be provided before the value of an item can be agreed.`, this.notesTextStyle, {\n        mergeAcross: 6\n      });\n      currentRow++; // newline\n\n      excel.set(sheet, this.itemNumberColumn, currentRow, `4.`, this.notesNumberStyle);\n      excel.set(sheet, this.ownershipColumn, currentRow, `Any other comment a party wishes to make in relation to the disputed item.`, this.notesTextStyle, {\n        mergeAcross: 6\n      });\n      currentRow++; // padding\n\n      for (let i = 0; i <= 3; i++) {\n        currentRow++; // newline\n        let header = i === 0 ? `Item No` : ``;\n        excel.set(sheet, this.itemNumberColumn, currentRow, header, this.sectionSubheadingLeftStyle, {\n          mergeAcross: 1\n        });\n        this.applyBordersToCell(this.itemNumberColumn, currentRow, 1, sheet, excel);\n        excel.set(sheet, this.descriptionColumn, currentRow, ``, this.descriptionStyle, {\n          mergeAcross: 5\n        });\n        this.applyBordersToCell(this.descriptionColumn, currentRow, 5, sheet, excel);\n      }\n      return currentRow;\n    },\n    // Approval cell\n    buildBalanceApproval(sheet, excel, json, currentRow) {\n      currentRow += 2; // newline plus padding\n      excel.set(sheet, this.itemNumberColumn, currentRow, \"Approved by the Principal Registrar pursuant to subrule 12.06(2)    [01-03-09] V2\", this.approvedByStyle, {\n        mergeAcross: 7\n      });\n    },\n    buildSectionHeading(headingName, sheet, excel, json, currentRow) {\n      currentRow += 2;\n      excel.set(sheet, this.itemNumberColumn, currentRow, headingName, this.sectionHeadingStyle, {\n        mergeAcross: 7\n      });\n      this.applyBordersToCell(this.itemNumberColumn, currentRow, 7, sheet, excel);\n      currentRow++; // new line\n\n      excel.set(sheet, this.itemNumberColumn, currentRow, `Ownership`, this.sectionSubheadingStyle, {\n        mergeAcross: 1\n      });\n      this.applyBordersToCell(this.itemNumberColumn, currentRow, 1, sheet, excel);\n      if (headingName.toUpperCase() === \"SUPERANNUATION\") {\n        excel.set(sheet, this.superNameColumn, currentRow, `Name of Fund`, this.sectionSubheadingLeftStyle);\n        excel.set(sheet, this.superTypeColumn, currentRow, `Type of Interest`, this.sectionSubheadingLeftStyle);\n      } else {\n        excel.set(sheet, this.descriptionColumn, currentRow, `Description`, this.sectionSubheadingLeftStyle, {\n          mergeAcross: 1\n        });\n        this.applyBordersToCell(this.descriptionColumn, currentRow, 1, sheet, excel);\n      }\n      excel.set(sheet, this.userValueColumn, currentRow, `${json.user.firstName}'s value`, this.sectionSubheadingStyle, {\n        mergeAcross: 1\n      });\n      this.applyBordersToCell(this.userValueColumn, currentRow, 1, sheet, excel);\n      excel.set(sheet, this.spouseValueColumn, currentRow, `${json.spouse.firstName}'s value`, this.sectionSubheadingStyle, {\n        mergeAcross: 1\n      });\n      this.applyBordersToCell(this.spouseValueColumn, currentRow, 1, sheet, excel);\n      currentRow++; // new line\n\n      return currentRow;\n    },\n    buildTotalRow(totalStart, currentRow, sheet, excel, name) {\n      excel.set(sheet, this.itemNumberColumn, currentRow, \"Total\", this.sectionSubheadingLeftStyle, {\n        mergeAcross: 1\n      });\n      this.applyBordersToCell(this.itemNumberColumn, currentRow, 1, sheet, excel);\n      excel.set(sheet, this.descriptionColumn, currentRow, \"\", this.borderOnlyStyle, {\n        mergeAcross: 1\n      });\n      this.applyBordersToCell(this.descriptionColumn, currentRow, 1, sheet, excel);\n\n      // Users total\n      let startCell = this.generateCellName(this.userValueColumn, totalStart);\n      let totalCell = this.generateCellName(this.userValueColumn, currentRow);\n      excel.set(sheet, this.userValueColumn, currentRow, `=SUM(${startCell}:INDIRECT(CONCATENATE(\"E\",ROW()-1)))`, this.boldMoneyStyle, {\n        mergeAcross: 1\n      });\n      this.applyBordersToCell(this.userValueColumn, currentRow, 1, sheet, excel);\n      this.set(`${name}UserTotal`, totalCell);\n\n      // Spouses total\n      startCell = this.generateCellName(this.spouseValueColumn, totalStart);\n      totalCell = this.generateCellName(this.spouseValueColumn, currentRow);\n      excel.set(sheet, this.spouseValueColumn, currentRow, `=SUM(${startCell}:INDIRECT(CONCATENATE(\"G\",ROW()-1)))`, this.boldMoneyStyle, {\n        mergeAcross: 1\n      });\n      this.applyBordersToCell(this.spouseValueColumn, currentRow, 1, sheet, excel);\n      this.set(`${name}SpouseTotal`, totalCell);\n      return currentRow;\n    },\n    applyBordersToCell(column, row, horizontalSpan, sheet, excel) {\n      for (let i = 0; i < horizontalSpan; i++) {\n        column++;\n        excel.set(sheet, column, row, \"\", this.borderOnlyStyle);\n      }\n    },\n    buildHelpSheet(excel) {\n      let sheet = this.HelpSheet;\n      excel.set(sheet, 0, 0, `How to add a new row`, this.helpBoldStyle);\n      excel.set(sheet, 0, 1, `• Insert a new row in the relevant section of the document.`, this.helpMainStyle);\n      excel.set(sheet, 0, 2, `– For example, click on the word \"Total\", then click Insert -> Rows`, this.helpMainStyle);\n      excel.set(sheet, 0, 3, `• The new row you created will now need to have formulas and merged cells draged down`, this.helpMainStyle);\n      excel.set(sheet, 0, 4, `– To do this, select the cells in the above row, from the item number to the end of the table.`, this.helpMainStyle);\n      excel.set(sheet, 0, 5, `– You will then see a small box in the bottom right hand corner of the selected cells`, this.helpMainStyle);\n      excel.set(sheet, 0, 6, `– Click and drag this box down to the newly created row`, this.helpMainStyle);\n      excel.set(sheet, 0, 7, `– This link shows what we mean:`, this.helpMainStyle);\n      excel.set(sheet, 3, 7, `https://support.office.com/en-us/article/copy-a-formula-by-dragging-the-fill-handle-in-excel-for-mac-dd928259-622b-473f-9a33-83aa1a63e218`, this.helpMainStyle);\n      excel.set(sheet, 0, 9, `How to make it say Husband, Wife, Applicant, or Respondent`, this.helpBoldStyle);\n      excel.set(sheet, 0, 10, `• Click Edit -> Find -> Replace`, this.helpMainStyle);\n      excel.set(sheet, 0, 11, `• Replace the party's first name (eg Timothy) with their role in the matter (eg Applicant)`, this.helpMainStyle);\n      excel.set(sheet, 0, 13, `How to copy and paste into a Word document`, this.helpBoldStyle);\n      excel.set(sheet, 0, 14, `• Select all the cells`, this.helpMainStyle);\n      excel.set(sheet, 0, 15, `• Click Edit -> Copy`, this.helpMainStyle);\n      excel.set(sheet, 0, 16, `• Open a new Microsoft Word document`, this.helpMainStyle);\n      excel.set(sheet, 0, 17, `• Click Edit -> Paste`, this.helpMainStyle);\n      excel.set(sheet, 0, 19, `This joint balance sheet was initially generated by Settify`, this.helpBoldStyle);\n      excel.set(sheet, 0, 20, `Find out more at:`, this.helpMainStyle);\n      excel.set(sheet, 2, 20, `www.settify.com.au`, this.helpMainStyle);\n    },\n    generateCellName(column, row) {\n      let C = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\"[column];\n      return `${C}${row + 1}`;\n    }\n  });\n});","define(\"settify-mvp/mixins/chronology-mixin\", [\"exports\", \"@ember/object\", \"@ember/object/mixin\", \"@ember/object/computed\", \"settify-mvp/mixins/date-generator\", \"settify-mvp/helpers/age-from-object\", \"settify-mvp/helpers/format-number\", \"settify-mvp/helpers/address-string\"], function (_exports, _object, _mixin, _computed, _dateGenerator, _ageFromObject, _formatNumber, _addressString) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/object/mixin\",0,\"@ember/object/computed\",0,\"settify-mvp/mixins/date-generator\",0,\"settify-mvp/helpers/age-from-object\",0,\"settify-mvp/helpers/format-number\",0,\"settify-mvp/helpers/address-string\"eaimeta@70e063a35619d71f\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create(_dateGenerator.default, {\n    reset() {\n      this._super(...arguments);\n      this.set(\"userTitle\", \"\");\n      this.set(\"spouseTitle\", \"\");\n    },\n    datesList: (0, _object.computed)(\"model.client\", \"userTitle\", \"spouseTitle\", \"jsonExport\", \"model.client.id\", \"store\", function () {\n      // build up a list of all the possible, relevant dates\n      let preRelationshipDates = [];\n      let duringRelationshipDates = [];\n      let postRelationshipDates = [];\n      let client = this.get(\"model.client\");\n      if (!client) {\n        return [];\n      }\n\n      // HACK: use the JSON exporter to consolidate things like initial contributions\n      // better approach would be to have more computed properties, like we do in Wills\n      let adapter = this.store.adapterFor(\"client\");\n      let src = adapter.getReferenceJSON(this.get(\"model.client.id\"));\n      src = JSON.parse(src);\n      let json = this.jsonExport.generate(src);\n      this.set(\"jsonClient\", json);\n      preRelationshipDates = preRelationshipDates.concat(this.generateUserBirthday(client) || []);\n      preRelationshipDates = preRelationshipDates.concat(this.generateSpouseBirthday(client) || []);\n      preRelationshipDates = preRelationshipDates.concat(this.generatePreviousChildrenBirthdates(client) || []);\n      duringRelationshipDates = duringRelationshipDates.concat(this.generateKeyDates(client) || []);\n      duringRelationshipDates = duringRelationshipDates.concat(this.generateChildrenBirthdates(client) || []);\n      duringRelationshipDates = duringRelationshipDates.concat(this.generateFamilyHomePurchase(client) || []);\n      duringRelationshipDates = duringRelationshipDates.concat(this.generateExternalContributions(client) || []);\n      postRelationshipDates = postRelationshipDates.concat(this.generatePostAcquisitions(client) || []);\n      postRelationshipDates = postRelationshipDates.concat(this.generatePostDisposals(client) || []);\n      preRelationshipDates.forEach(t => t.ordinality = 1);\n      duringRelationshipDates.forEach(t => t.ordinality = 2);\n      postRelationshipDates.forEach(t => t.ordinality = 3);\n\n      // sort and combine\n      function compareDatesInObject(a, b) {\n        function getDateForComparison(d) {\n          let dateObject;\n          if (!d) {\n            return 0;\n          }\n          if (typeof d !== \"string\") {\n            d = d.toString();\n          }\n          if (d.includes(\"/\")) {\n            let components = d.split(\"/\");\n            if (components.length === 3) {\n              dateObject = new Date(parseInt(components[2]), (parseInt(components[1]) || 1) - 1, parseInt(components[0]) || 1);\n            } else if (components.length === 2) {\n              dateObject = new Date(parseInt(components[1]), (parseInt(components[0]) || 1) - 1, 1);\n            }\n          } else if (d.includes(\" or \")) {\n            let earliestYear = d.substr(0, 4);\n            dateObject = new Date(earliestYear, 1, 1);\n          } else if (!isNaN(parseInt(d))) {\n            dateObject = new Date(parseInt(d), 1, 1);\n          }\n          if (dateObject) {\n            return dateObject.getTime();\n          }\n          return 0;\n        }\n        let aComp = getDateForComparison(a.date);\n        let bComp = getDateForComparison(b.date);\n        if (aComp === 0 || bComp === 0) {\n          // invalid dates\n          return a.ordinality - b.ordinality;\n        }\n        if (aComp < bComp) {\n          return -1;\n        }\n        if (aComp > bComp) {\n          return +1;\n        }\n        return a.ordinality - b.ordinality;\n      }\n      let combinedList = preRelationshipDates.concat(duringRelationshipDates).concat(postRelationshipDates);\n      combinedList = combinedList.sort(compareDatesInObject);\n\n      // remove any invalid information\n      combinedList = combinedList.filter(d => !!d.description);\n      combinedList.forEach(l => {\n        if (l.description && l.description.replace) {\n          l.description = l.description.replace(/(\\W)null(\\W)/gi, \"$1$2\");\n          l.description = l.description.replace(/(\\W)undefined(\\W)/gi, \"$1$2\");\n        }\n      });\n      return combinedList;\n    }),\n    userNameOrTitle: (0, _computed.or)(\"model.client.firstName\", \"userTitle\"),\n    spouseNameOrTitle: (0, _computed.or)(\"model.client.partnerFirstName\", \"spouseTitle\"),\n    generateUserBirthday(client) {\n      // Example: Husband BRUCE MICHAEL SIMPLE born (now aged 53)\n      let name = `${client.get(\"firstName\")} ${client.get(\"middleName\")} ${client.get(\"surname\")}`.trim().replace(/\\s+/g, \" \");\n      name = name.toUpperCase();\n      let description = `${this.userTitle} ${name} born (now aged ${client.get(\"userAge\")})`.trim();\n      return {\n        date: client.get(\"dateOfBirth\"),\n        description: description\n      };\n    },\n    generateSpouseBirthday(client) {\n      // Example: Wife PRUE FULLER SIMPLE born (now aged 47)\n      let name = `${client.get(\"partnerFirstName\")} ${client.get(\"partnerMiddleName\")} ${client.get(\"partnerSurname\")}`.trim().replace(/\\s+/g, \" \");\n      name = name.toUpperCase();\n      let description = `${this.spouseTitle} ${name} born (now aged ${client.get(\"otherPersonAge\")})`;\n      return {\n        date: client.get(\"partnerDateOfBirth\"),\n        description: description\n      };\n    },\n    generatePreviousChildrenBirthdates(client) {\n      if (!client.get(\"otherChildrenCount\")) {\n        return;\n      }\n      return this.generateBirthdatesList(client.get(\"otherChildren\"));\n    },\n    generateBirthdatesList(list) {\n      // Example: EMILY GRACE SIMPLE born (now aged 15), in good health\n      // Example: TEIAH LORRAINE SIMPLE born (now aged 11)\n      // Example: Wife has child, MICHAEL POST with PETER MICHAEL POST (now aged 17)\n      let retval = [];\n      for (let i = 0; i < list.length; i++) {\n        const c = list[i];\n        let date = this.toDateString(c.dobDay, c.dobMonth, c.dobYear);\n        if (!date) {\n          date = this.guessYearFromAge(c.age);\n        }\n        let age = (0, _ageFromObject.ageFromObject)([c]);\n        if (age >= 2) {\n          // years is fine\n          age = Math.floor(age);\n        } else {\n          // calculate in months\n          age = Math.floor(age * 12);\n          age = `${age} months`;\n        }\n        let description = `${c.firstName ? c.firstName.toUpperCase() : \"CHILD NAME\"}`;\n        if (c.biologicalParent) {\n          // a child to a former relationship\n          description = `${c.biologicalParent === \"user\" ? this.userNameOrTitle : this.spouseNameOrTitle} has child, ${description}, with ${c.otherParentName || \"FORMER PARTNER\"} `;\n        } else {\n          // regular child\n          description += ` born`;\n        }\n        description += ` (now aged ${age})`;\n        if (c.specialNeeds === \"no\") {\n          description += \", in good health\";\n        } else if (c.specialNeeds === \"yes\") {\n          description += \", has special needs\";\n          if (c.specialNeedsMoreInfo) {\n            description += ` (${c.specialNeedsMoreInfo})`;\n          }\n        }\n        retval.push({\n          date: date,\n          description: description\n        });\n      }\n      return retval;\n    },\n    generateKeyDates(client) {\n      let retval = [];\n      // Example: Parties commence relationship\n      retval.push({\n        date: this.toDateString(client.get(\"relationshipStartDay\"), client.get(\"relationshipStartMonth\"), client.get(\"relationshipStartYear\")),\n        description: \"Parties commence relationship\"\n      });\n      // Example: Parties commence cohabitation\n      if (!client.get(\"cohabitationNeverLivedTogether\")) {\n        retval.push({\n          date: this.toDateString(client.get(\"cohabitationStartDay\"), client.get(\"cohabitationStartMonth\"), client.get(\"cohabitationStartYear\")),\n          description: \"Parties commence cohabitation\",\n          moreInfo: this.generateCohabitationAssets(client)\n        });\n      }\n      // Example: Parties marry at Melbourne\n      if (client.get(\"hasBeenMarried\")) {\n        retval.push({\n          date: this.toDateString(client.get(\"marriageDay\"), client.get(\"marriageMonth\"), client.get(\"marriageYear\")),\n          description: `Parties marry${client.get(\"marriageLocation\") ? ` at ${client.get(\"marriageLocation\")}` : \"\"}`\n        });\n      }\n      // Example: Parties separate\n      if (!client.get(\"notSeparated\")) {\n        retval.push({\n          date: this.toDateString(client.get(\"separationDay\"), client.get(\"separationMonth\"), client.get(\"separationYear\")),\n          description: \"Parties separate\"\n        });\n      }\n      // Example: Parties divorce\n      if (client.get(\"divorced\")) {\n        retval.push({\n          date: this.toDateString(client.get(\"divorceDay\"), client.get(\"divorceMonth\"), client.get(\"divorceYear\")),\n          description: \"Parties divorce\"\n        });\n      }\n      return retval;\n    },\n    generateCohabitationAssets(client) {\n      // Example: John's assets at cohabitation: No significant assets\n      // Example: Susan's assets at cohabitation:\n      // - Share Portfolio - $26,000\n      // - Toyota Camry - $10,000\n      // return a list of strings, one per line.\n      let retval = [];\n      if (client.get(\"initialContributionsUserShowAssetAppendix\")) {\n        retval.push(`${this.userNameOrTitle}'s assets at cohabitation:`);\n        let initialList = this.jsonClient.initialContributions.filter(e => e.contributor === \"user\");\n        initialList.forEach(l => {\n          retval.push(` • ${this.contributionName(l)} – ${(0, _formatNumber.formatNumber)([l.value], {\n            money: true\n          })}`);\n        });\n      } else {\n        retval.push(`${this.userNameOrTitle}'s assets at cohabitation: No significant assets`);\n      }\n      if (client.get(\"initialContributionsUserShowLiabilitiesAppendix\")) {\n        retval.push(`${this.userNameOrTitle}'s liabilities at cohabitation:`);\n        let initialList = this.jsonClient.initialLiabilities.filter(e => e.contributor === \"user\");\n        initialList.forEach(l => {\n          retval.push(` •${this.contributionName(l)} – ${(0, _formatNumber.formatNumber)([l.debt], {\n            money: true\n          })}`);\n        });\n      } else {\n        retval.push(`${this.userNameOrTitle}'s liabilities at cohabitation: No significant liabilities`);\n      }\n      if (client.get(\"initialContributionsSpouseShowAssetAppendix\")) {\n        retval.push(`${this.spouseNameOrTitle}'s assets at cohabitation:`);\n        let initialList = this.jsonClient.initialContributions.filter(e => e.contributor === \"spouse\");\n        initialList.forEach(l => {\n          retval.push(` • ${this.contributionName(l)} – ${(0, _formatNumber.formatNumber)([l.value], {\n            money: true\n          })}`);\n        });\n      } else {\n        retval.push(`${this.spouseNameOrTitle}'s assets at cohabitation: No significant assets`);\n      }\n      if (client.get(\"initialContributionsSpouseShowLiabilitiesAppendix\")) {\n        retval.push(`${this.spouseNameOrTitle}'s liabilities at cohabitation:`);\n        let initialList = this.jsonClient.initialLiabilities.filter(e => e.contributor === \"spouse\");\n        initialList.forEach(l => {\n          retval.push(` • ${this.contributionName(l)} – ${(0, _formatNumber.formatNumber)([l.debt], {\n            money: true\n          })}`);\n        });\n      } else {\n        retval.push(`${this.spouseNameOrTitle}'s liabilities at cohabitation: No significant liabilities`);\n      }\n      return retval;\n    },\n    contributionName(contribution) {\n      let retval = contribution.name || contribution.lender || \"\";\n      let type = this.contributionType(contribution.type);\n      if (!retval && type) {\n        retval = type;\n      } else if (type) {\n        retval += ` (${type})`;\n      }\n      if (!retval) {\n        retval = \"CONTRIBUTION\";\n      }\n      return retval;\n    },\n    contributionType(type) {\n      let typeMap = {\n        realestate: \"real estate\",\n        individualShareholding: \"shares\",\n        aggregateShareholding: \"share portfolio\",\n        motorvehicle: \"motor vehicle\",\n        personalproperty: \"personal property\",\n        smsf: \"SMSF\",\n        hirepurchase: \"hire purchase\",\n        taxdebt: \"tax debt\",\n        creditcard: \"credit card\",\n        personalloan: \"personal loan\",\n        studentloan: \"student loan\"\n      };\n      let retval = typeMap[type];\n      if (retval) {\n        return retval;\n      }\n      return type;\n    },\n    generateChildrenBirthdates(client) {\n      if (!client.get(\"childrenCount\")) {\n        return;\n      }\n      return this.generateBirthdatesList(client.get(\"children\"));\n    },\n    generateFamilyHomePurchase(client) {\n      // Example: Former Matrimonial Home at 42 Home Street, Canterbury purchased for $920,000, funded by selling Wife’s shares and a mortgage to Commonwealth Bank. Current value: $1.2m\n      if (client.get(\"ownsOwnHome\") !== \"yes\") {\n        return;\n      }\n      let day = client.get(\"homeAcquisitionStartDay\");\n      let month = client.get(\"homeAcquisitionStartMonth\");\n      let year = client.get(\"homeAcquisitionStartYear\");\n      if (day || month || year) {\n        let date = this.toDateString(day, month, year);\n        if (!date && year) {\n          date = year;\n        }\n        let description = \"Former matrimonial home \";\n        let address = (0, _addressString.addressString)([client.get(\"ownHomeAddress\")]);\n        if (address) {\n          description += `at ${address} `;\n        }\n        description += `purchased`;\n        let purchasePrice = client.get(\"ownHomePrice\");\n        if (purchasePrice) {\n          description += ` for ${(0, _formatNumber.formatNumber)([purchasePrice], {\n            money: true\n          })}`;\n        }\n        description += \".\";\n        let savings = client.get(\"ownHomeFundingSavings\");\n        let saleOfAssets = client.get(\"ownHomeFundingOtherAssets\");\n        let inheritanceContribution = client.get(\"ownHomeFundingInheritanceOrContribution\");\n        if (savings || saleOfAssets || inheritanceContribution) {\n          description += ` Purchase was funded through `;\n          let sources = [];\n          if (savings) {\n            sources.push(\"savings\");\n          }\n          if (saleOfAssets) {\n            sources.push(\"sale of other assets\");\n          }\n          if (inheritanceContribution) {\n            sources.push(\"help from family or friends\");\n          }\n          description += sources.join(\" and \");\n          description += \".\";\n        }\n        let currentValue = client.get(\"ownHomeValue\");\n        if (currentValue) {\n          description += ` Current value: ${(0, _formatNumber.formatNumber)([currentValue], {\n            money: true\n          })}`;\n        }\n        return {\n          date: date,\n          description: description\n        };\n      }\n      return;\n    },\n    generateExternalContributions(client) {\n      // Example: Wife receives Inheritance of $200,000 from Mary Parkes\n      // Example: Husband received lump sum payment of $35,000 from Commonwealth Bank\n      let list = client.get(\"duringContributionsExternalList\");\n      let retval = [];\n      for (let i = 0; i < list.length; i++) {\n        const c = list[i];\n        if (c.value || c.recipient || c.year || c.fromWhom || c.type) {\n          let owner = this.userNameOrTitle;\n          let receives = \"receives\";\n          let value = (0, _formatNumber.formatNumber)([c.value], {\n            money: true\n          });\n          if (c.recipient === \"spouse\") {\n            owner = this.spouseNameOrTitle;\n          }\n          if (c.recipient === \"joint\") {\n            owner = \"Parties\";\n            receives = \"receive\";\n          }\n          retval.push({\n            date: c.year ? c.year.toString() : \"?\",\n            description: `${owner} ${receives} ${this.externalContributionType(c.type)} of ${value} ${c.fromWhom ? `from ${c.fromWhom}` : \"\"}`\n          });\n        }\n      }\n      return retval;\n    },\n    externalContributionType(type) {\n      let typeMap = {\n        inheritance: \"inheritance\",\n        moneyfromfamily: \"money or property from family\",\n        helpfromfamily: \"in-kind help from friends or family\",\n        lotterywin: \"lottery win\",\n        compensation: \"compensation payout\",\n        employmentlumpsum: \"employment lump sum or windfall\",\n        personalinjury: \"personal injury payment\",\n        gift: \"gift\",\n        other: \"other\"\n      };\n      let retval = typeMap[type];\n      if (retval) {\n        return retval;\n      }\n      return type;\n    },\n    generatePostAcquisitions(client) {\n      // Example: Wife acquires Ford Explorer Motor vehicle (value: $5,000)\n      let retval = [];\n      if (client.get(\"userPostRelationshipAcquisitions\")) {\n        let list = client.get(\"userPostRelationshipAcquisitionList\");\n        for (let i = 0; i < list.length; i++) {\n          const acq = list[i];\n          let value = (0, _formatNumber.formatNumber)([acq.value], {\n            money: true\n          });\n          retval.push({\n            date: this.toDateString(acq.acquisitionDay, acq.acquisitionMonth, acq.acquisitionYear),\n            description: `${this.userNameOrTitle} acquires ${acq.description} for ${value}`\n          });\n        }\n      }\n      if (client.get(\"spousePostRelationshipAcquisitions\")) {\n        let list = client.get(\"spousePostRelationshipAcquisitionList\");\n        for (let i = 0; i < list.length; i++) {\n          const acq = list[i];\n          let value = (0, _formatNumber.formatNumber)([acq.value], {\n            money: true\n          });\n          retval.push({\n            date: this.toDateString(acq.acquisitionDay, acq.acquisitionMonth, acq.acquisitionYear),\n            description: `${this.spouseNameOrTitle} acquires ${acq.description} for ${value}`\n          });\n        }\n      }\n      return retval;\n    },\n    generatePostDisposals(client) {\n      // Example: Husband sells shares (value: $15,000)\n      let retval = [];\n      if (client.get(\"userPostRelationshipDisposals\")) {\n        let list = client.get(\"userPostRelationshipDisposalList\");\n        for (let i = 0; i < list.length; i++) {\n          const acq = list[i];\n          let value = (0, _formatNumber.formatNumber)([acq.value], {\n            money: true\n          });\n          retval.push({\n            date: this.toDateString(acq.acquisitionDay, acq.acquisitionMonth, acq.acquisitionYear),\n            description: `${this.userNameOrTitle} sells ${acq.name} for ${value}`\n          });\n        }\n      }\n      if (client.get(\"spousePostRelationshipDisposals\")) {\n        let list = client.get(\"spousePostRelationshipDisposalList\");\n        for (let i = 0; i < list.length; i++) {\n          const acq = list[i];\n          let value = (0, _formatNumber.formatNumber)([acq.value], {\n            money: true\n          });\n          let date = \"\";\n          if (acq.moreInfo && acq.moreInfo.match) {\n            let matches = acq.moreInfo.match(/\\d{1,2}\\/\\d{1,2}\\/\\d{2,4}/);\n            if (matches) {\n              date = matches[0];\n            }\n            if (!date) {\n              let matches = acq.moreInfo.match(/(19|20)\\d\\d/);\n              if (matches) {\n                date = matches[0];\n              }\n            }\n          }\n          retval.push({\n            date: date,\n            description: `${this.spouseNameOrTitle} sells ${acq.name} for ${value}`\n          });\n        }\n      }\n      return retval;\n    }\n  });\n});","define(\"settify-mvp/mixins/create-wills-record\", [\"exports\", \"@ember/service\", \"@ember/object/mixin\", \"settify-mvp/mixins/send-resume-link\"], function (_exports, _service, _mixin, _sendResumeLink) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@ember/object/mixin\",0,\"settify-mvp/mixins/send-resume-link\"eaimeta@70e063a35619d71f\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create(_sendResumeLink.default, {\n    eventLogging: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    createWillsRecord() {\n      // don't make multiple connected records...\n      let existingLinks = this.get(\"model.settifyLinks.length\");\n      if (existingLinks && existingLinks.length) {\n        let existingWills = existingLinks.filter(l => l.practiceArea === \"Wills\");\n        if (existingWills.length) {\n          return existingWills[0];\n        }\n      }\n      this.set(\"creatingWillsAccount\", true);\n      let copy;\n      let willsConnection;\n      let {\n        eventLogging\n      } = this;\n      let {\n        model\n      } = this;\n      let {\n        firm\n      } = this;\n\n      // Duplicate the current client record\n      return this.model.copy().then(duplicate => {\n        copy = duplicate;\n\n        // Remove any password protection tags from it\n        copy.set(\"passwordProtected\", false);\n\n        // Unless firmIDs don't match, then remove any conflict check information. (If it's the same firm, then we want to make sure the firm doesn't get access to their Wills information if conflicted out of acting for them on a family law matter.)\n        // TODO: handle firm to firm referrals\n        // However, if this is an invited client, we can keep the conflict check information\n        if (!model.get(\"invitedByLawFirm\")) {\n          copy.set(\"conflictCheck\", null);\n          copy.set(\"conflictCheckTimestamp\", null);\n        }\n\n        // Change the practice area\n        copy.set(\"practiceArea\", \"Wills\");\n\n        // TODO: Change the firmID (if appropriate)\n\n        // Set the client ID to match the newly generated id\n        copy.set(\"clientID\", copy.get(\"id\"));\n\n        // Reset progression metrics, page completion percents, etc\n        copy.set(\"pageCompletedPercent\", {});\n        copy.set(\"seenPathway\", false);\n        copy.set(\"hasReceivedResumeLinkEmail\", false);\n        copy.set(\"hasReceivedPathwayEmail\", false);\n        copy.set(\"hasReceivedAppointmentEmail\", false);\n        copy.set(\"acceptedTermsAndConditions\", false);\n        copy.set(\"bookedAppointment\", false);\n        copy.set(\"furthestPage\", null);\n        copy.set(\"detailedInductionCommenced\", false);\n        copy.set(\"detailedInductionComplete\", false);\n        copy.set(\"preferredLawyer\", null);\n        copy.set(\"firstLogin\", false);\n        copy.set(\"creatingAccount\", false);\n\n        // Push to \"settifyLinks\" object {Family Firm ID, Family settifyURL, Family Client ID, 'Family'}\n        // note we need to duplicate the array, so that the copy object isn't editing the original object\n        let newLink = {\n          firmID: firm.get(\"id\"),\n          // TODO: change this when we enable firm to firm referrals\n          clientID: model.get(\"clientID\"),\n          settifyURL: firm.get(\"settifyURL\"),\n          practiceArea: \"Family\"\n        };\n        copy.set(\"settifyLinks\", (JSON.parse(JSON.stringify(copy.get(\"settifyLinks\"))) || []).concat([newLink]));\n\n        // Push to \"settifyLinks\" object in local record: {Wills Firm ID, Wills settifyURL, Wills Client ID, 'Wills'}\n        willsConnection = {\n          firmID: firm.get(\"id\"),\n          // TODO: change this when we enable firm to firm referrals\n          clientID: copy.get(\"clientID\"),\n          settifyURL: firm.get(\"otherSettifyURLs.Wills\"),\n          practiceArea: \"Wills\"\n        };\n        model.set(\"settifyLinks\", (JSON.parse(JSON.stringify(model.get(\"settifyLinks\"))) || []).concat([willsConnection]));\n\n        // console.log(`Created new client ${copy.get('id')}`);\n        // console.log(`ClientID: ${copy.get('clientID')}`);\n        // console.log(`NB - existing clientID is: ${this.get('model.clientID')}`);\n        // console.log(`settifyLinks: ${JSON.stringify(copy.get('settifyLinks'))}`);\n        // console.log(`Practice Area: ${copy.get('practiceArea')}`);\n        // console.log(`Updated our existing settifyLinks: ${JSON.stringify(this.get('model.settifyLinks'))}`);\n        // Save both records\n        return copy.save();\n      }).then(() => {\n        return model.save();\n      }).then(() => {\n        return eventLogging.logWithFirm(copy.get(\"clientID\"), eventLogging.get(\"IDs.NewLead\"), model.get(\"wantsBFA\") ? \"family-bfa\" : \"family-separation\", {\n          id: copy.get(\"firmID\"),\n          practiceArea: \"Wills\"\n        });\n      }).then(() => {\n        return eventLogging.logWithFirm(copy.get(\"clientID\"), eventLogging.get(\"IDs.SetHasLinkedRecord\"), true, {\n          id: copy.get(\"firmID\"),\n          practiceArea: \"Wills\"\n        });\n      }).then(() => {\n        return eventLogging.logWithFirm(model.get(\"clientID\"), eventLogging.get(\"IDs.SetHasLinkedRecord\"), true, {\n          id: model.get(\"firmID\"),\n          practiceArea: \"Family\"\n        });\n      }).then(() => {\n        if (model.get(\"invitedByLawFirm\") && model.get(\"conflictCheck\")) {\n          return eventLogging.logWithFirm(copy.get(\"clientID\"), eventLogging.get(\"IDs.ConflictCheckCompleted\"), model.get(\"conflictCheck\") === \"noconflict\" ? \"NO_CONFLICT\" : \"CONFLICT\", {\n            id: copy.get(\"firmID\"),\n            practiceArea: \"Wills\"\n          });\n        }\n      }).then(() => {\n        return eventLogging.logABTest(copy.get(\"clientID\"), \"shorterFamilyWillsBridgeMay19\", firm.get(\"settings.induction.shorterFamilyWillsBridge\") || false);\n      }).then(() => {\n        // Send the user a resume link email using Wills firm and client ID\n        return this.sendResumeLink(copy);\n      }).then(() => {\n        this.set(\"creatingWillsAccount\", false);\n        return willsConnection;\n      });\n    }\n  });\n});","define(\"settify-mvp/mixins/date-generator\", [\"exports\", \"@ember/object/mixin\"], function (_exports, _mixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object/mixin\"eaimeta@70e063a35619d71f\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create({\n    toDateString(day, month, year) {\n      if (day && month && year) {\n        return `${this.pad(day, 2)}/${this.pad(month, 2)}/${year}`;\n      } else if (month && year) {\n        return `${this.pad(month, 2)}/${year}`;\n      } else if (year) {\n        return year.toString();\n      }\n      return \"\";\n    },\n    pad(n, width, z) {\n      z = z || \"0\";\n      if (typeof n === \"undefined\" || n === null) {\n        n = \"??\";\n      }\n      n = `${n}`;\n      return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;\n    },\n    guessYearFromAge(age) {\n      let currentYear = new Date().getFullYear();\n      // if someone is 10 in 2019, they were born in either 2009 (and have had their birthday), or in 2008 (and have not yet had their birthday)\n      if (age === null || typeof age === \"undefined\") {\n        return \"UNKNOWN DATE\";\n      }\n      return `${currentYear - age - 1} or ${currentYear - age}`;\n    }\n  });\n});","define(\"settify-mvp/mixins/document-upload\", [\"exports\", \"@ember/runloop\", \"rsvp\", \"@ember/object\", \"@ember/service\", \"@ember/object/mixin\", \"uuid\"], function (_exports, _runloop, _rsvp, _object, _service, _mixin, _uuid) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"rsvp\",0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/object/mixin\",0,\"uuid\"eaimeta@70e063a35619d71f\n  let uniqueID = 1;\n\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create({\n    firm: (0, _service.inject)(),\n    lambda: (0, _service.inject)(),\n    session: (0, _service.inject)(),\n    awsService: (0, _service.inject)(),\n    config: (0, _service.inject)(\"dynamic-config\"),\n    whitelist: [\"pdf\", \"docx\", \"xlsx\", \"doc\", \"xls\", \"csv\", \"jpg\", \"jpeg\", \"png\", \"gif\", \"tif\", \"tiff\", \"mp3\", \"mp4\", \"mov\"],\n    filesToAccept: (0, _object.computed)(\"whitelist\", function () {\n      let files = this.whitelist.map(e => `.${e}`).join(\",\");\n      files += \",\";\n      files += this.whitelist.map(e => `.${e.toUpperCase()}`).join(\",\");\n      return files;\n    }),\n    resetDocumentUpload() {\n      this.set(\"fileDragging\", 0);\n      this.set(\"showHelpModal\", false);\n      this.set(\"showFileSizeWarning\", false);\n      this.set(\"showFileTypeWarning\", false);\n      this.set(\"sendComplete\", false);\n      this.set(\"sending\", false);\n      this.set(\"sendError\", false);\n      this.set(\"uniqueID\", uniqueID++);\n    },\n    actions: {\n      downloadDocument(file) {\n        this.downloadUserUpload(file);\n      },\n      removeDocument(file) {\n        let documentList = this.get(\"catalogue.documents\");\n        documentList.removeObject(file);\n        file.destroyRecord();\n      },\n      startDraggingDocument(ev) {\n        // console.log(\"start dragging\");\n        this.decrementProperty(\"fileDragging\");\n        ev.preventDefault();\n      },\n      stopDraggingDocument(ev) {\n        // console.log(\"stop dragging\");\n        this.incrementProperty(\"fileDragging\");\n        ev.preventDefault();\n      },\n      dragOver(ev) {\n        // console.log(\"drag over\");\n        ev.preventDefault();\n      },\n      dropDocument(ev) {\n        // console.log(\"drop file\");\n        ev.preventDefault();\n        if (!ev || !ev.dataTransfer) {\n          // TODO: better error handling\n          return;\n        }\n        if (this.sendComplete) {\n          return;\n        }\n        this.set(\"showFileTypeWarning\", false);\n        this.set(\"showFileSizeWarning\", false);\n        if (ev.dataTransfer.items) {\n          for (let i = 0; i < ev.dataTransfer?.items.length; ++i) {\n            const item = ev.dataTransfer.items[i];\n            if (!item) {\n              continue;\n            }\n            if (item.webkitGetAsEntry) {\n              // we appear to support webkit, which means we can recurse into folders\n              const entry = item.webkitGetAsEntry(); // WebKit/chromium needs 'webkit' prefix (since Chrome 21)\n              this.scanFiles(entry);\n            } else {\n              // we don't appear to support webkit, which means we can't recurse into folders\n              if (item.kind !== \"file\") {\n                continue;\n              }\n              if (item.getAsFile) {\n                const file = item.getAsFile();\n                this.addDocumentToUploadQueue(file, file.name);\n              }\n            }\n          }\n        } else if (ev.dataTransfer.files && ev.dataTransfer.files.length) {\n          // support browsers that do not support 'items' property\n          for (let i = 0; i < ev.dataTransfer.files.length; i++) {\n            const file = ev.dataTransfer.files[i];\n            this.addDocumentToUploadQueue(file, file.name);\n          }\n        }\n        this.set(\"fileDragging\", 0);\n      },\n      uploadDocument() {\n        if (this.sendComplete) {\n          return;\n        }\n        this.set(\"showFileTypeWarning\", false);\n        this.set(\"showFileSizeWarning\", false);\n        const fileChooser = document.getElementById(`document-upload-input-${this.uniqueID}`);\n        if (fileChooser) {\n          for (let i = 0; i < fileChooser.files.length; i++) {\n            const f = fileChooser.files[i];\n            this.addDocumentToUploadQueue(f, f.name);\n          }\n        }\n        // Set the value of the uploader to null so the onchange will fire again if a document with the same name is uploaded\n        fileChooser.value = null;\n      }\n    },\n    scanFiles(file, path) {\n      path = path ? `${path}/` : \"\";\n      if (file.isDirectory) {\n        const directoryReader = file.createReader();\n        directoryReader.readEntries(entries => {\n          entries.forEach(entry => {\n            this.scanFiles(entry, path + file.name);\n          });\n        });\n      } else {\n        this.addDocumentToUploadQueue(file, path + file.name);\n      }\n    },\n    addDocumentToUploadQueue(file, fullName) {\n      const that = this;\n      function doInsertion(fullN, ext, obj, fileSize) {\n        return that.uploadDocument({\n          fullName: fullN,\n          extension: ext,\n          fileObject: obj\n        }).then(data => {\n          // add to the document catalogue\n          const catalogue = that.get(\"catalogue\");\n          catalogue.addDocument(that.get(\"context.induction\"), that.get(\"context.repeat\"), that.get(\"context.chapter\"), that.get(\"context.page\"), that.get(\"questionID\"), that.get(\"context.answersLocation\"), that.get(\"objectID\"), {\n            fileName: fullN,\n            S3Key: data.Key,\n            fileSize: fileSize\n          });\n        });\n      }\n      let extension = fullName.match(/\\.\\w+$/i);\n      if (!extension) {\n        console.log(`File ${fullName} has no extension - not allowing`);\n        this.set(\"showFileTypeWarning\", true);\n      } else {\n        extension = extension[0].toLowerCase();\n        extension = extension.substr(1); // strip leading period\n        if (this.whitelist.includes(extension)) {\n          // check file size\n          const maxSize = 50 * 1024 * 1024; // 50 mb limit\n          const {\n            size\n          } = file;\n          if (size) {\n            if (size < maxSize) {\n              return doInsertion(fullName, extension, file, size);\n            }\n            console.log(`File ${fullName} is too large: ${file.size} bytes`);\n            this.set(\"showFileSizeWarning\", true);\n          } else if (!size && file.getMetadata) {\n            file.getMetadata(m => {\n              if (m.size < maxSize) {\n                return doInsertion(fullName, extension, file, m.size);\n              }\n              console.log(`File ${fullName} is too large: ${m.size} bytes`);\n              this.set(\"showFileSizeWarning\", true);\n            });\n          } else if (!size && file.file) {\n            file.file(f => {\n              if (f.size < maxSize) {\n                return doInsertion(fullName, extension, file, f.size);\n              }\n              console.log(`File ${fullName} is too large: ${f.size} bytes`);\n              this.set(\"showFileSizeWarning\", true);\n            });\n          } else {\n            console.log(`File ${fullName} cannot determine size, so rejecting`);\n          }\n        } else {\n          console.log(`File ${fullName} has a bad extension (${extension}) - not allowing`);\n          this.set(\"showFileTypeWarning\", true);\n        }\n      }\n    },\n    uploadDocument(file) {\n      if (!file) {\n        return (0, _rsvp.reject)(new Error(\"No file provided\"));\n      }\n      const mimeTypes = {\n        pdf: \"application/pdf\",\n        docx: \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n        xlsx: \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n        doc: \"application/msword\",\n        xls: \"application/vnd.ms-excel\",\n        csv: \"text/csv\",\n        jpg: \"image/jpeg\",\n        jpeg: \"image/jpeg\",\n        png: \"image/png\",\n        gif: \"image/gif\",\n        tif: \"image/tiff\",\n        tiff: \"image/tiff\",\n        mp3: \"audio/mpeg\",\n        mp4: \"video/mp4\",\n        mov: \"video/quicktime\"\n      };\n      const userIdentityID = this.awsService.getConfigCredentialsIdentity();\n      const adminIdentityID = this.get(\"config.settings.adminIdentityPoolID\");\n\n      // todo: add better error handling for if/when adminIdentityPoolID or userIdentityID are null\n      let uploadLocation = `uploads/${adminIdentityID}/staging/${userIdentityID}/${this.clientID}`;\n      if (this.get(\"session.isAuthenticated\")) {\n        uploadLocation = uploadLocation.replace(\"/staging\", \"\");\n      }\n      const params = {\n        Key: `${uploadLocation}/${(0, _uuid.v4)()}.${file.extension}`,\n        ContentType: mimeTypes[file.extension],\n        Body: file.fileObject\n      };\n      this.set(\"uploadingDocument\", true);\n      return new _rsvp.Promise((resolve, reject) => {\n        if (typeof file.fileObject.file === \"function\") {\n          // what we have is a FileSystemFileEntry, not a File\n          file.fileObject.file(fObject => {\n            resolve(fObject);\n          }, error => {\n            reject(error);\n          });\n        } else {\n          // this is a regular File\n          resolve(file.fileObject);\n        }\n      }).then(fileObject => {\n        params.Body = fileObject;\n        // console.log(params);\n\n        return new _rsvp.Promise((resolve, reject) => {\n          // setTimeout(() => {\n          //   resolve({\n          //     Key: params.Key\n          //   });\n          // }, Math.min(4000, 1000 + fileObject.size / 1000));\n          this.awsService.getS3ByType(\"clientdocuments\").then(s3Client => {\n            s3Client.upload(params, (err /* , data */) => {\n              if (err) {\n                console.log(\"Error uploading file\");\n                console.log(err);\n                return reject(err);\n              }\n              console.log(\"Successfully uploaded document\");\n              (0, _runloop.later)(() => {\n                // Set back to false after a short wait to not break the liquid-if\n                this.set(\"uploadingDocument\", false);\n              }, 200);\n              return resolve({\n                Key: params.Key\n              });\n            });\n          });\n        });\n      });\n    }\n  });\n});","define(\"settify-mvp/mixins/edit-firm-settings\", [\"exports\", \"rsvp\", \"@ember/service\", \"@ember/object/mixin\"], function (_exports, _rsvp, _service, _mixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"rsvp\",0,\"@ember/service\",0,\"@ember/object/mixin\"eaimeta@70e063a35619d71f\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create({\n    store: (0, _service.inject)(),\n    firmSettings: (0, _service.inject)(),\n    firmDetails: (0, _service.inject)(),\n    firmOffices: (0, _service.inject)(),\n    globalDetails: null,\n    practiceAreaDetails: null,\n    offices: null,\n    requiredGlobalFields: [{\n      key: \"accountsPayableNames\",\n      requiredText: \"The name(s) of the person/people to whom our invoices will be sent\"\n    }, {\n      key: \"accountsPayableEmails\",\n      requiredText: \"The email address(es) of the person/people to whom our invoices will be sent\"\n    }],\n    requiredPAFields: [{\n      key: \"websiteURL\",\n      requiredText: \"The firm's website URL, including all the https:// stuff\",\n      link: \"admin.config.dashboard\"\n    }, {\n      key: \"websitePretty\",\n      requiredText: \"The firm's pretty website URL - the sort of thing you might see on a billboard\",\n      link: \"admin.config.dashboard\"\n    }, {\n      key: \"contactEmail\",\n      requiredText: \"The email address to which Settify notifications are sent\",\n      link: \"admin.config.dashboard\"\n    }, {\n      key: \"conversionGroup\",\n      requiredText: \"Billing type\"\n    }, {\n      key: \"wentLive\",\n      requiredText: \"The date on which the firm went live\"\n    }, {\n      key: \"contractExpiry\",\n      requiredText: \"The contract expiry date\"\n    }, {\n      key: \"addresses\",\n      requiredText: \"At least one office address\",\n      link: \"admin.config.offices\"\n    }],\n    reset() {\n      this._super(...arguments);\n      this.reloadFirm(true);\n    },\n    actions: {\n      revertChanges() {\n        this.reloadFirm(true).then(() => {\n          // Reload the firm settings to discard any recent changes\n          return this.store.findAll(\"settings\", {\n            reload: true\n          });\n        });\n      },\n      saveChanges() {\n        this.set(\"savingChanges\", true);\n        this.set(\"savingChangesSuccess\", false);\n        if (typeof this.preSaveChanges === \"function\") {\n          this.preSaveChanges();\n        }\n        return this.saveDetails().then(() => {\n          this.set(\"savingChangesSuccess\", true);\n          if (typeof this.postSaveChanges === \"function\") {\n            this.postSaveChanges();\n          }\n        }).catch(err => {\n          console.log(err);\n          this.set(\"savingChangesError\", \"Uh oh - an error occurred! Please try again.\");\n        }).finally(() => {\n          this.set(\"savingChanges\", false);\n        });\n      }\n    },\n    saveDetails() {\n      return (0, _rsvp.resolve)().then(() => {\n        if (this.accessDetails) {\n          return this.firmDetails.save(this.firmID);\n        }\n      }).then(() => {\n        if (this.accessSettings) {\n          return this.firmSettings.save(this.firmID);\n        }\n      }).then(() => {\n        if (this.accessOffices) {\n          return this.firmOffices.save(this.firmID);\n        }\n      });\n    },\n    reloadFirm(forceReload) {\n      if (!this.firmID) {\n        return (0, _rsvp.resolve)();\n      }\n      return (0, _rsvp.resolve)().then(() => {\n        if (this.accessDetails) {\n          return this.firmDetails.load(forceReload, this.firmID);\n        }\n      }).then(() => {\n        if (this.accessSettings) {\n          return this.firmSettings.load(forceReload, this.firmID, this.practiceArea);\n        }\n      }).then(() => {\n        if (this.accessOffices) {\n          return this.firmOffices.load(forceReload, this.firmID);\n        }\n      }).then(() => {\n        this.set(\"savingChanges\", false);\n        this.set(\"savingChangesSuccess\", false);\n        this.set(\"savingChangesError\", null);\n      });\n    }\n  });\n});","define(\"settify-mvp/mixins/edit-helpers\", [\"exports\", \"@ember/object\", \"@ember/object/mixin\", \"settify-mvp/mixins/mock-data\"], function (_exports, _object, _mixin, _mockData) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/object/mixin\",0,\"settify-mvp/mixins/mock-data\"eaimeta@70e063a35619d71f\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create(_mockData.default, {\n    insertSummaryContentWithIDAt(position, id) {\n      const customDefinition = this.induction?.firmSummary?.customDefinition;\n      customDefinition.insertAt(position, {\n        id: id\n      });\n    },\n    actions: {\n      toggleExpand(obj) {\n        (0, _object.set)(obj, \"expand\", !obj.expand);\n      },\n      insertStandalonePage(forceID) {\n        const possibleExistingStandaloneChapter = this.model.chapters.find(chapter => chapter.id === \"standalone\");\n        const emptyPage = {\n          expand: true,\n          id: forceID || `PG${this.model.uniqueNumber}`,\n          displayIf: {},\n          questions: []\n        };\n        this.incrementProperty(\"model.uniqueNumber\");\n        if (possibleExistingStandaloneChapter) {\n          const location = this.getByIndexes(possibleExistingStandaloneChapter);\n          location.chapterObject.pages.addObject(emptyPage);\n        } else {\n          const newStandaloneChapter = {\n            standalonePages: true,\n            hideFromFirm: true,\n            title: \"Standalone Pages\",\n            id: \"standalone\",\n            pages: [emptyPage],\n            expand: true,\n            displayIf: {}\n          };\n          this.model.chapters.insertAt(this.model?.chapters?.length, newStandaloneChapter);\n        }\n      },\n      insertChapterAfter(chapter) {\n        let insertIndex = 0;\n        if (chapter) {\n          const location = this.getByIndexes(chapter);\n          insertIndex = location.chapterIndex + 1;\n        }\n        // console.log(insertIndex);\n        const createdChapter = {\n          expand: true,\n          id: `CH${this.model.uniqueNumber}`,\n          displayIf: {},\n          pages: []\n        };\n        this.incrementProperty(\"model.uniqueNumber\");\n        this.model.chapters.insertAt(insertIndex, createdChapter);\n      },\n      insertPageAfter(chapter, page) {\n        const location = this.getByIndexes(chapter, page);\n        let insertIndex = 0;\n        if (page) {\n          insertIndex = location.pageIndex + 1;\n        }\n        location.chapterObject.pages.insertAt(insertIndex, {\n          expand: true,\n          id: `PG${this.model.uniqueNumber}`,\n          displayIf: {},\n          questions: []\n        });\n        this.incrementProperty(\"model.uniqueNumber\");\n      },\n      insertQuestionAfter(chapter, page, question) {\n        const location = this.getByIndexes(chapter, page, question);\n        let insertIndex = 0;\n        if (question) {\n          insertIndex = location.questionIndex + 1;\n        }\n        location.pageObject.questions.insertAt(insertIndex, {\n          expand: true,\n          id: `QU${this.model.uniqueNumber}`,\n          onYes: {\n            documentsRequired: [],\n            setValues: []\n          },\n          onNo: {\n            documentsRequired: [],\n            setValues: []\n          },\n          onNotSure: {\n            documentsRequired: [],\n            setValues: []\n          },\n          displayIf: {},\n          askFor: {},\n          requiredFields: {},\n          columns: [],\n          rows: [],\n          startingRows: [],\n          documentsRequired: [],\n          options: [],\n          icons: [],\n          styles: {\n            expand: false\n          },\n          border: false,\n          whitespace: false\n        });\n        this.incrementProperty(\"model.uniqueNumber\");\n      },\n      insertOptionAfter(question, option) {\n        let insertIndex = 0;\n        if (!question.options) {\n          (0, _object.set)(question, \"options\", []);\n        }\n        if (option) {\n          insertIndex = question.options.findIndex(o => o.id === option.id) + 1;\n        }\n        question.options.insertAt(insertIndex, {\n          expand: true,\n          id: `OPT${this.model.uniqueNumber}`,\n          displayIf: {},\n          documentsRequired: [],\n          setValues: [],\n          showToOlderClients: true\n        });\n        this.incrementProperty(\"model.uniqueNumber\");\n      },\n      insertMultiRadioRowAfter(question, row) {\n        let insertIndex = 0;\n        if (!question.multiRadioRows) {\n          (0, _object.set)(question, \"multiRadioRows\", []);\n        }\n        if (row) {\n          insertIndex = question.multiRadioRows.findIndex(r => r.id === row.id) + 1;\n        }\n        question.multiRadioRows.insertAt(insertIndex, {\n          expand: true,\n          id: `ROW${this.model.uniqueNumber}`,\n          displayIf: {},\n          showToOlderClients: true\n        });\n        this.incrementProperty(\"model.uniqueNumber\");\n      },\n      insertSubquestionAfter(question, content) {\n        let insertIndex = 0;\n        if (!question.content) {\n          (0, _object.set)(question, \"content\", []);\n        }\n        if (content) {\n          insertIndex = question.content.findIndex(o => o.id === content.id) + 1;\n        }\n        question.content.insertAt(insertIndex, {\n          expand: true,\n          id: `SUBQ${this.model.uniqueNumber}`,\n          onYes: {\n            documentsRequired: [],\n            setValues: []\n          },\n          onNo: {\n            documentsRequired: [],\n            setValues: []\n          },\n          onNotSure: {\n            documentsRequired: [],\n            setValues: []\n          },\n          askFor: {},\n          requiredFields: {},\n          displayIf: {},\n          options: [],\n          setValues: [],\n          documentsRequired: [],\n          columns: [],\n          rows: [],\n          startingRows: [],\n          icons: [],\n          styles: {\n            expand: false\n          },\n          showToOlderClients: true\n        });\n        this.incrementProperty(\"model.uniqueNumber\");\n      },\n      insertSummaryContentSelectAt(position) {\n        const customDefinition = this.induction?.firmSummary?.customDefinition;\n        customDefinition.insertAt(position, {\n          id: `AddContent${this.induction.firmSummary.uniqueNumber}`,\n          isNewElement: \"true\"\n        });\n        this.incrementProperty(\"induction.firmSummary.uniqueNumber\");\n      },\n      addContent(idx, id) {\n        const possibleAdditions = this.listOfPossibleAdditions;\n        // Include all elements that begin with the same ID, but not itself\n        const additions = possibleAdditions.filter(addition => {\n          if (addition.id.indexOf(id) === 0) {\n            return addition.id !== id;\n          }\n          return false;\n        });\n        for (let i = 0; i < additions.length; i++) {\n          this.insertSummaryContentWithIDAt(idx, additions[i].id);\n          idx++;\n        }\n      },\n      insertRowAfter(parentObject, parentKey, content, columns) {\n        if (parentObject && parentKey) {\n          let insertIndex = 0;\n          if (!parentObject[parentKey]) {\n            (0, _object.set)(parentObject, parentKey, []);\n          }\n          if (content && typeof content === \"object\") {\n            insertIndex = parentObject[parentKey].findIndex(o => o.id === content.id) + 1;\n          } else if (typeof content === \"number\") {\n            insertIndex = content + 1;\n          } else {\n            insertIndex = 0;\n          }\n          const rowCols = [];\n          columns.forEach(() => {\n            rowCols.insertAt(rowCols.length, {});\n          });\n          parentObject[parentKey].insertAt(insertIndex, {\n            columns: rowCols,\n            expand: true,\n            id: `OBJ${this.model.uniqueNumber}`,\n            showToOlderClients: true,\n            styles: {}\n          });\n        }\n        this.incrementProperty(\"model.uniqueNumber\");\n      },\n      insertColumnAfter(parentObject, parentKey, content) {\n        if (parentObject && parentKey) {\n          let insertIndex = 0;\n          if (!parentObject[parentKey]) {\n            (0, _object.set)(parentObject, parentKey, []);\n          }\n          if (content && typeof content === \"object\") {\n            insertIndex = parentObject[parentKey].findIndex(o => o.id === content.id) + 1;\n          } else if (typeof content === \"number\") {\n            insertIndex = content + 1;\n          } else {\n            insertIndex = 0;\n          }\n          const colToInsert = {\n            expand: true,\n            id: `OBJ${this.model.uniqueNumber}`,\n            showToOlderClients: true\n          };\n\n          // we have to make a copy and use Ember.set, rather than just .insertAt(), due to (what appears to be) a bug in Ember\n          const colCopy = JSON.parse(JSON.stringify(parentObject[parentKey]));\n          colCopy.insertAt(insertIndex, colToInsert);\n          (0, _object.set)(parentObject, parentKey, colCopy);\n          parentObject.rows.forEach(row => {\n            row.columns.insertAt(insertIndex, {\n              colID: colToInsert.id\n            });\n          });\n\n          // Set the new column as the selected one\n          this.send(\"toggleColumn\", colToInsert);\n        }\n        this.incrementProperty(\"model.uniqueNumber\");\n      },\n      insertAfter(parentObject, parentKey, content) {\n        if (parentObject && parentKey) {\n          let insertIndex = 0;\n          if (!parentObject[parentKey]) {\n            (0, _object.set)(parentObject, parentKey, []);\n          }\n          if (content && typeof content === \"object\") {\n            insertIndex = parentObject[parentKey].findIndex(o => o.id === content.id) + 1;\n          } else if (typeof content === \"number\") {\n            insertIndex = content + 1;\n          } else {\n            insertIndex = 0;\n          }\n          parentObject[parentKey].insertAt(insertIndex, {\n            expand: true,\n            id: `OBJ${this.model.uniqueNumber}`,\n            showToOlderClients: true\n          });\n        }\n        this.incrementProperty(\"model.uniqueNumber\");\n      }\n    }\n  });\n});","define(\"settify-mvp/mixins/family-tree-generator\", [\"exports\", \"@ember/utils\", \"@ember/object/mixin\", \"settify-mvp/helpers/age-from-object\"], function (_exports, _utils, _mixin, _ageFromObject) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/utils\",0,\"@ember/object/mixin\",0,\"settify-mvp/helpers/age-from-object\"eaimeta@70e063a35619d71f\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create({\n    createFamilyTreeStructure(model, filters, saveObjects) {\n      if (!model || !model.get) {\n        console.log(\"Invalid object passed to createFamilyTreeStructure\");\n        return [];\n      }\n      filters = filters || {};\n      filters.children = filters.children || {};\n      filters.grandchildren = filters.grandchildren || {};\n      filters.householders = filters.householders || {};\n      filters.dependants = filters.dependants || {};\n      const user = JSON.parse(JSON.stringify(model.get(\"userAsObject\")));\n      user.sourceObject = model.get(\"userAsObject\");\n      if (saveObjects) {\n        this.set(\"savedUserObject\", user.sourceObject);\n      }\n      if (filters.disableUser) {\n        user.disableEditing = true;\n      }\n      let spouse = null;\n      let addSpouse = false;\n      user.spouses = [];\n      user.bloodRelative = true;\n      if (model.get(\"hasSpouse\")) {\n        addSpouse = true;\n        spouse = JSON.parse(JSON.stringify(model.get(\"spouseAsObject\")));\n        spouse.sourceObject = model.get(\"spouseAsObject\");\n        if (saveObjects) {\n          this.set(\"savedSpouseObject\", spouse.sourceObject);\n        }\n        if (model.get(\"requireSpouseInformation\")) {\n          spouse.bloodRelative = true;\n        }\n        spouse.children = this.buildChildrenList(\"user\", \"spouse\", model, filters);\n        if (filters.excludeTopLevelWithoutChildren) {\n          if (!spouse.children.length) {\n            addSpouse = false;\n          }\n        }\n        if (filters.disableSpouse) {\n          spouse.disableEditing = true;\n        }\n        if (addSpouse) {\n          user.spouses.push(spouse);\n        }\n      }\n      const topLevelParents = [];\n      let includeUser = true;\n      if (filters.excludeTopLevelWithoutChildren) {\n        if (!user.spouses.length) {\n          includeUser = false;\n        }\n      }\n      if (includeUser) {\n        topLevelParents.push(user);\n      }\n      let topLevelSpouse = null;\n      const formerPartners = model.get(\"allPreviousPartners\");\n      for (let i = 0; formerPartners && i < formerPartners.length; i++) {\n        const p = JSON.parse(JSON.stringify(formerPartners[i]));\n        p.sourceObject = formerPartners[i];\n        let topLevelObject = null;\n        if (p.relatedToName === user.firstName) {\n          // this is a former partner of the user\n          p.children = this.buildChildrenList(\"user\", p.id, model, filters);\n          p.formerPartner = `${user.firstName}'s former ${p.marriageStatus === \"married\" ? \"spouse\" : \"partner\"}`;\n          if (p.id === model.get(\"widowOrFormerSpouse.id\") && model.get(\"marriageStatus\") === \"widowed\" || p.formallySeparated === \"deceased\") {\n            p.formerPartner += \" - now deceased\";\n          }\n          topLevelObject = user;\n        } else if (spouse && p.relatedToName === spouse.firstName) {\n          // related to the spouse - need a top level spouse entry!\n          if (!topLevelSpouse) {\n            topLevelSpouse = JSON.parse(JSON.stringify(model.get(\"spouseAsObject\")));\n            topLevelSpouse.sourceObject = model.get(\"spouseAsObject\");\n            topLevelSpouse.spouses = [];\n            if (model.get(\"requireSpouseInformation\")) {\n              topLevelSpouse.bloodRelative = true;\n            }\n            if (filters.disableSpouse) {\n              topLevelSpouse.disableEditing = true;\n            }\n          }\n          p.children = this.buildChildrenList(\"spouse\", p.id, model, filters);\n          p.formerPartner = `${spouse.firstName}'s former ${p.marriageStatus === \"married\" ? \"spouse\" : \"partner\"}`;\n          topLevelObject = topLevelSpouse;\n        } else {\n          console.log(`Unclear who ${p.firstName} ${p.surname} is related to - allegedly ${p.relatedToName}`);\n        }\n        if (topLevelObject) {\n          let addSpouse = true;\n          if (filters.excludeTopLevelWithoutChildren) {\n            if (!p.children.length) {\n              addSpouse = false;\n            }\n          }\n          if (filters.disableFormerPartners) {\n            p.disableEditing = true;\n          }\n          if (addSpouse) {\n            topLevelObject.spouses.push(p);\n          }\n        }\n      }\n      if (topLevelSpouse) {\n        topLevelParents.push(topLevelSpouse);\n      }\n\n      // now add any top-level nonFamilyMemberParents\n      const nonFamilyMemberParents = model.get(\"nonFamilyMemberParents\");\n      for (let i = 0; nonFamilyMemberParents && i < nonFamilyMemberParents.length; i++) {\n        const nfmp = nonFamilyMemberParents[i];\n        [\"user\", \"spouse\"].forEach(type => {\n          const children = this.buildChildrenList(type, nfmp.id, model, filters);\n          if (children.length) {\n            const output = JSON.parse(JSON.stringify(nfmp));\n            output.sourceObject = nfmp;\n            output.children = children;\n            let obj = user;\n            if (type === \"spouse\") {\n              obj = spouse;\n            }\n            if (!topLevelParents.includes(obj)) {\n              // we don't already have this person as a top-level parent\n              // SO, we need to make a copy of them for the top level,\n              // otherwise we'll be duplicating children lists.\n              // HOWEVER, we need to preserve the sourceObject\n              const tempSourceObject = obj.sourceObject;\n              obj = JSON.parse(JSON.stringify(obj));\n              delete obj.children;\n              obj.spouses = [];\n              obj.sourceObject = tempSourceObject;\n              topLevelParents.push(obj);\n            }\n            obj.spouses = obj.spouses || [];\n            obj.spouses.push(output);\n          }\n        });\n      }\n\n      // now add householders\n      if (!filters.excludeHouseholders) {\n        if (model.get(\"hasHouseholders\") === \"yes\") {\n          const householders = model.get(\"householders\");\n          for (let i = 0; i < householders.length; i++) {\n            const h = JSON.parse(JSON.stringify(householders[i]));\n            h.sourceObject = householders[i];\n            h.householder = true;\n\n            // check age (if relevant)\n            let include = true;\n            const age = (0, _ageFromObject.ageFromObject)([h]);\n            if (filters.householders.minAge && ((0, _utils.isNone)(age) || age < filters.householders.minAge)) {\n              include = false;\n            }\n            if (filters.householders.maxAge && ((0, _utils.isNone)(age) || age > filters.householders.maxAge)) {\n              include = false;\n            }\n            if (include) {\n              topLevelParents.push(h);\n            }\n          }\n        }\n      }\n\n      // now add financial dependants\n      if (!filters.excludeDependants) {\n        if (model.get(\"hasFinancialDependants\") === \"yes\") {\n          const dependants = model.get(\"financialDependants\");\n          for (let i = 0; i < dependants.length; i++) {\n            const d = JSON.parse(JSON.stringify(dependants[i]));\n            d.sourceObject = dependants[i];\n            d.dependant = true;\n\n            // check age (if relevant)\n            let include = true;\n            const age = (0, _ageFromObject.ageFromObject)([d]);\n            if (filters.dependants.minAge && ((0, _utils.isNone)(age) || age < filters.dependants.minAge)) {\n              include = false;\n            }\n            if (filters.dependants.maxAge && ((0, _utils.isNone)(age) || age > filters.dependants.maxAge)) {\n              include = false;\n            }\n            if (include) {\n              topLevelParents.push(d);\n            }\n          }\n        }\n      }\n\n      // now add children who don't belong elsewhere (children whose biological parents are not in the family tree)\n      // note that children's children can also fall into this category.\n\n      // first, get children. If they aren't already in the family tree, then add them beneath user (and spouse if user has spouse)\n      const children = model.get(\"childrenComputedList\");\n      let whereToAddChildren = user.children;\n      let parentObject = addSpouse ? spouse : user;\n      parentObject.children = parentObject.children || [];\n      whereToAddChildren = parentObject.children;\n      for (let i = 0; children && i < children.length; i++) {\n        const child = children[i];\n        let foundChild = this.findInTree(topLevelParents, child);\n        if (!foundChild) {\n          foundChild = this.buildChildrenObject(child, model, filters);\n          if (foundChild) {\n            whereToAddChildren.push(foundChild);\n          }\n        }\n\n        // then, for every child of those children, if they aren't already in the family tree, then add them beneath the child (and child's spouse if applicable)\n        if (child.hasChildren === \"yes\") {\n          let needToAddChild = false;\n          if (!foundChild) {\n            // the child is not in the tree, due to filters\n            // create a temporary object for them, and if it ends up with children, add it to the tree but disabled\n            foundChild = this.buildChildrenObject(child, model, {\n              children: {\n                disablePartners: true\n              },\n              grandchildren: {\n                maxAge: -1\n              }\n            });\n            foundChild.disableEditing = true;\n            needToAddChild = true;\n          }\n          let whereToAddGrandchildren = foundChild.children;\n          let gcAdded = false;\n          parentObject = foundChild;\n          const firstParentID = parentObject.id;\n          if ([\"married\", \"engaged\", \"unmarried\", \"civilunion\"].indexOf(child.marriageStatus) >= 0) {\n            parentObject = foundChild.spouses[0];\n          }\n          parentObject.children = parentObject.children || [];\n          whereToAddGrandchildren = parentObject.children;\n          for (let j = 0; child.children && j < child.children.length; j++) {\n            const grandchild = child.children[j];\n            if (!this.findInTree(topLevelParents, grandchild)) {\n              const g = this.buildGrandchildObject(grandchild, filters);\n              if (g) {\n                g.stepchildInfo = \"\";\n                if ([g.firstParent, g.secondParent].includes(firstParentID) === false) {\n                  // this is some sort of step child\n                  const biologicalParentID = g.firstParent === parentObject.id ? g.secondParent : g.firstParent;\n                  const biologicalParent = model.getPersonByID(biologicalParentID);\n                  if (biologicalParent) {\n                    g.stepchildInfo = `step-child, parent is ${biologicalParent.firstName || \"\"} ${biologicalParent.middleName || \"\"} ${biologicalParent.surname || \"\"}`;\n                  }\n                }\n                gcAdded = true;\n                whereToAddGrandchildren.push(g);\n              }\n            }\n          }\n          if (gcAdded && needToAddChild) {\n            whereToAddChildren.push(foundChild);\n          }\n        }\n      }\n      return topLevelParents;\n    },\n    findInTree(haystack, needle) {\n      if (!haystack || !haystack.length) {\n        return;\n      }\n      for (let index = 0; index < haystack.length; index++) {\n        const obj = haystack[index];\n        if (obj.id === needle.id || obj.sourceObject === needle) {\n          return obj;\n        }\n        const search = this.findInTree(obj.spouses, needle) || this.findInTree(obj.children, needle);\n        if (search) {\n          return search;\n        }\n      }\n      return;\n    },\n    buildChildrenList(id1, id2, model, filters) {\n      if (model.get(\"childrenCount\") === 0) {\n        return [];\n      }\n      const retval = [];\n      const children = model.get(\"children\");\n      const validIDs = [id1, id2];\n      for (let i = 0; i < children.length; i++) {\n        const child = children[i];\n        if (validIDs.indexOf(child.firstParent) >= 0) {\n          if (validIDs.indexOf(child.secondParent) >= 0) {\n            // this child belongs to the parents we're considering\n            const output = this.buildChildrenObject(child, model, filters);\n            if (output) {\n              retval.push(output);\n            }\n          }\n        }\n      }\n      return retval;\n    },\n    buildChildrenObject(child, model, filters) {\n      let include = true;\n\n      // check age (if relevant)\n      const age = (0, _ageFromObject.ageFromObject)([child]);\n      if (filters && filters.children && filters.children.minAge && ((0, _utils.isNone)(age) || age < filters.children.minAge)) {\n        include = false;\n      }\n      if (filters && filters.children && filters.children.maxAge && ((0, _utils.isNone)(age) || age > filters.children.maxAge)) {\n        include = false;\n      }\n      if (filters && filters.children && filters.children.mustHavePartner) {\n        if (![\"married\", \"engaged\", \"unmarried\", \"civilunion\"].includes(child.marriageStatus)) {\n          include = false;\n        }\n      }\n      if (include) {\n        const output = JSON.parse(JSON.stringify(child));\n        output.sourceObject = child;\n        output.bloodRelative = [\"biological\", \"adopted\"].includes(output.relationship);\n        output.spouses = this.buildChildrenSpouses(child, model, filters, output.bloodRelative);\n        delete output.children;\n        return output;\n      }\n    },\n    buildChildrenSpouses(child, model, filters, parentIsBloodRelative) {\n      const retval = [];\n      if ([\"married\", \"engaged\", \"unmarried\", \"civilunion\"].indexOf(child.marriageStatus) >= 0) {\n        // add the partner\n        const output = JSON.parse(JSON.stringify(child.partner));\n        output.sourceObject = child.partner;\n        output.children = this.buildGrandchildrenList(child, child.id, output.id, filters, parentIsBloodRelative);\n        output.currentPartner = `${child.firstName}'s ${child.marriageStatus === \"married\" ? \"spouse\" : \"partner\"}`;\n        let addPartner = true;\n        if (filters && filters.children && filters.children.disablePartners) {\n          output.disableEditing = true;\n        }\n        if (filters && filters.children && filters.children.excludePartners) {\n          addPartner = output.children.length > 0;\n        }\n        if (addPartner) {\n          retval.push(output);\n        }\n      }\n\n      // now add any top-level nonFamilyMemberParents\n      const nonFamilyMemberParents = model.get(\"nonFamilyMemberParents\");\n      for (let i = 0; nonFamilyMemberParents && i < nonFamilyMemberParents.length; i++) {\n        const nfmp = nonFamilyMemberParents[i];\n        const children = this.buildGrandchildrenList(child, child.id, nfmp.id, filters, parentIsBloodRelative);\n        if (children.length) {\n          let addPartner = true;\n          const formerPartner = JSON.parse(JSON.stringify(nfmp));\n          formerPartner.sourceObject = nfmp;\n          formerPartner.children = children;\n          formerPartner.formerPartner = `${child.firstName}'s former partner`;\n          if (filters && filters.children && filters.children.disablePartners) {\n            formerPartner.disableEditing = true;\n          }\n          if (filters && filters.children && filters.children.excludePartners) {\n            addPartner = formerPartner.children.length > 0;\n          }\n          if (addPartner) {\n            retval.push(formerPartner);\n          }\n        }\n      }\n      return retval;\n    },\n    buildGrandchildrenList(child, parent1, parent2, filters, parentIsBloodRelative) {\n      if (child.hasChildren !== \"yes\") {\n        return [];\n      }\n      const validIDs = [parent1, parent2];\n      const retval = [];\n      for (let i = 0; child.children && i < child.children.length; i++) {\n        const gc = child.children[i];\n        if (validIDs.indexOf(gc.firstParent) >= 0) {\n          if (validIDs.indexOf(gc.secondParent) >= 0) {\n            const output = this.buildGrandchildObject(gc, filters, parentIsBloodRelative);\n            if (output) {\n              retval.push(output);\n            }\n          }\n        }\n      }\n      return retval;\n    },\n    buildGrandchildObject(gc, filters, parentIsBloodRelative) {\n      // this grandchild belongs to the two people under consideration\n      let include = true;\n\n      // check age (if relevant)\n      const age = (0, _ageFromObject.ageFromObject)([gc]);\n      if (filters && filters.grandchildren && filters.grandchildren.minAge && ((0, _utils.isNone)(age) || age < filters.grandchildren.minAge)) {\n        include = false;\n      }\n      if (filters && filters.grandchildren && filters.grandchildren.maxAge && ((0, _utils.isNone)(age) || age > filters.grandchildren.maxAge)) {\n        include = false;\n      }\n      if (include) {\n        const output = JSON.parse(JSON.stringify(gc));\n        output.bloodRelative = parentIsBloodRelative && [\"biological\", \"adopted\"].includes(output.relationship);\n        output.sourceObject = gc;\n        return output;\n      }\n    },\n    getEditingCount(root, property) {\n      this.set(\"countedElements\", []);\n      return this.getCount(root, elt => !!elt[property]);\n    },\n    getPersonCount(root) {\n      this.set(\"countedElements\", []);\n      return this.getCount(root, () => true);\n    },\n    getEditableCount(root) {\n      this.set(\"countedElements\", []);\n      return this.getCount(root, elt => !elt.disableEditing);\n    },\n    getCount(root, filterFunc) {\n      if (!root || !filterFunc || !root.length || !root[0]) {\n        return 0;\n      }\n      let retval = 0;\n      for (let i = 0; i < root.length; i++) {\n        const element = root[i];\n        if (filterFunc(element) && !this.countedElements.includes(element.id)) {\n          retval++;\n          this.countedElements.push(element.id);\n        }\n        if (element.spouses) {\n          retval += this.getCount(element.spouses, filterFunc);\n        } else if (element.children) {\n          retval += this.getCount(element.children, filterFunc);\n        }\n      }\n      return retval;\n    }\n  });\n});","define(\"settify-mvp/mixins/firm-notes\", [\"exports\", \"@ember/object/computed\", \"@ember/object\", \"@ember/service\", \"@ember/object/mixin\"], function (_exports, _computed, _object, _service, _mixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object/computed\",0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/object/mixin\"eaimeta@70e063a35619d71f\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create({\n    firmSettings: (0, _service.inject)(),\n    firmDetails: (0, _service.inject)(),\n    firmOffices: (0, _service.inject)(),\n    editingCount: 0,\n    reset() {\n      this._super();\n      this.set(\"editingCount\", 0);\n    },\n    currentlyEditing: (0, _computed.gt)(\"editingCount\", 0),\n    actions: {\n      editClientNotes(client) {\n        this.incrementProperty(\"editingCount\");\n        (0, _object.set)(client, \"editingNotes\", true);\n      },\n      cancelEditClientNotes(client) {\n        this.decrementProperty(\"editingCount\");\n        (0, _object.set)(client, \"tempNotes\", client.firmNotes);\n        (0, _object.set)(client, \"editingNotes\", false);\n      },\n      saveClientNotes(client) {\n        (0, _object.set)(client, \"editingNotes\", false);\n        this.decrementProperty(\"editingCount\");\n        if (client.tempNotes !== client.firmNotes) {\n          // they changed the notes - we need to save it\n          const payload = {\n            firmID: this.firm.id,\n            clientID: client.clientID,\n            notes: client.tempNotes\n          };\n          this.eventLogging.adminLog(client.clientID, this.eventLogging.adminIDs.noteAdded, null, null, client.practiceArea);\n          this.lambda.invoke(this.lambda.updateFirmNotesLambda, payload, this.session).then(() => {\n            (0, _object.set)(client, \"firmNotes\", client.tempNotes);\n          });\n        }\n      }\n    }\n  });\n});","define(\"settify-mvp/mixins/gender-mixin\", [\"exports\", \"@ember/service\", \"@ember/object/mixin\"], function (_exports, _service, _mixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@ember/object/mixin\"eaimeta@70e063a35619d71f\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create({\n    config: (0, _service.inject)(\"dynamic-config\"),\n    _genders: {\n      male: {\n        name: \"Male\",\n        icon: \"icons/male-icon.png\",\n        letter: \"M\"\n      },\n      female: {\n        name: \"Female\",\n        icon: \"icons/female-icon.png\",\n        letter: \"F\"\n      },\n      \"non-binary\": {\n        name: \"Non-Binary\",\n        icon: \"icons/bullet-point-icon.png\",\n        letter: \"X\"\n      }\n    },\n    updateGender(key) {\n      const gender = this._genders[key] || this._genders[\"non-binary\"];\n      const baseUrl = this.get(\"config.settings.AssetsUrl\");\n      this.set(\"genderName\", gender.name);\n      this.set(\"genderLetter\", gender.letter);\n      this.set(\"genderIconUrl\", `${baseUrl}/${gender.icon}`);\n      return gender;\n    }\n  });\n});","define(\"settify-mvp/mixins/get-source-list\", [\"exports\", \"@ember/object/mixin\", \"settify-mvp/helpers/get-answers-from\"], function (_exports, _mixin, _getAnswersFrom) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object/mixin\",0,\"settify-mvp/helpers/get-answers-from\"eaimeta@70e063a35619d71f\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create({\n    getSourceListAsArray() {\n      if (!this?.sourceList) return [];\n      if (typeof this.sourceList === \"string\") {\n        const answers = this.sourceList.split(/[\\s,;]+/).map(s => {\n          if (s.trim()) {\n            return (0, _getAnswersFrom.getAnswersFrom)([], {\n              client: this.clientRecord,\n              induction: this.get(\"context.induction\"),\n              chapter: this.get(\"context.chapter\"),\n              page: this.get(\"context.page\"),\n              repeatToken: this.get(\"context.repeat\"),\n              create: null,\n              answersLocation: s.trim(),\n              loop: this.get(\"context.loop\")\n            });\n          }\n        }).flat();\n\n        // Filter out any falsey items or items without an id\n        return answers.filter(a => a && a.id);\n      }\n      return this.sourceList;\n    }\n  });\n});","define(\"settify-mvp/mixins/master-form-mixin\", [\"exports\", \"@ember/object/mixin\", \"@ember/object\", \"@ember/service\"], function (_exports, _mixin, _object, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object/mixin\",0,\"@ember/object\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create({\n    config: (0, _service.inject)(\"dynamic-config\"),\n    masterFormID: (0, _object.computed)(\"config.settings.Firm.practiceArea\", function () {\n      const practiceArea = this.get(\"config.settings.Firm.practiceArea\");\n      switch (practiceArea) {\n        case \"Probate\":\n          return \"8ded4171-dc1c-4804-baf0-b4380e9fafdf\";\n        case \"Estates\":\n          return \"b03922a6-b8f2-4078-8312-4d7afcfd61b9\";\n        case \"Family\":\n          return \"574989d9-72f6-4a76-973f-f41a8013435e\";\n      }\n      return \"\";\n    }),\n    isMasterForm: function (form) {\n      return form.id ? form.id : form.formID === this.masterFormID;\n    },\n    getInduction: function (inductions) {\n      if (!inductions) {\n        return;\n      }\n      let form = null;\n      if (inductions.length > 1 && this?.masterFormID) {\n        form = inductions.filter(f => f.id === this.masterFormID || f.formID === this.masterFormID)[0];\n      } else if (inductions.length) {\n        form = inductions[0];\n      }\n      return form;\n    },\n    staticReferences: (0, _object.computed)(\"clientRecord.practiceArea\", \"config.settings.Firm.practiceArea\", \"practiceArea\", function () {\n      const practiceArea = this.practiceArea || this.clientRecord.practiceArea || this.config.settings.Firm.practiceArea;\n      switch (practiceArea) {\n        case \"Probate\":\n          return {\n            didPrepareWillQuestion: {\n              chapter: \"deceased\",\n              page: \"willPrepared\",\n              question: \"willPrepared\"\n            },\n            instructorQuestion: {\n              chapter: \"deceased\",\n              page: \"instructor\",\n              question: \"firstName\"\n            },\n            deceasedQuestion: {\n              chapter: \"deceased\",\n              page: \"deceased\",\n              question: \"deceased\"\n            },\n            isExecutorQuestion: {\n              chapter: \"deceased\",\n              page: \"executor\",\n              question: \"isExecutor\"\n            },\n            deceasedAssetsPage: {\n              chapter: \"deceased\",\n              page: \"assetTypes\"\n            },\n            executorListQuestion: {\n              chapter: \"theWill\",\n              page: \"executors\",\n              question: \"executorsBasicDetails\"\n            },\n            knowsWillLocationQuestion: {\n              chapter: \"theWill\",\n              page: \"willLocation\",\n              question: \"knowsWillLocation\"\n            },\n            willLocationQuestion: {\n              chapter: \"theWill\",\n              page: \"willLocation\",\n              question: \"willLocation\"\n            },\n            hadAccountantQuestion: {\n              chapter: \"assets\",\n              page: \"accountant\",\n              question: \"hadAccountant\"\n            },\n            accountantDetailsQuestion: {\n              chapter: \"assets\",\n              page: \"accountant\",\n              question: \"accountant\"\n            },\n            hadFinancialAdvisorQuestion: {\n              chapter: \"assets\",\n              page: \"financialAdvisor\",\n              question: \"hadFinancialAdvisor\"\n            },\n            financialAdvisorDetailsQuestion: {\n              chapter: \"assets\",\n              page: \"financialAdvisor\",\n              question: \"financialAdvisor\"\n            },\n            assetsLocations: [{\n              page: \"business\",\n              question: \"business\",\n              assetType: \"business\"\n            }, {\n              page: \"cashInTheBank\",\n              question: \"banks\",\n              assetType: \"bank\"\n            }, {\n              page: \"chattels\",\n              question: \"chattels\",\n              assetType: \"chattel\"\n            }, {\n              page: \"realestate\",\n              question: \"properties\",\n              assetType: \"property\"\n            }, {\n              page: \"shares\",\n              question: \"shares\",\n              assetType: \"share\"\n            }, {\n              page: \"trusts\",\n              question: \"trusts\",\n              assetType: \"trust\"\n            }]\n          };\n        case \"Estates\":\n          return {\n            didPrepareWillQuestion: {\n              chapter: \"howCanWeHelp\",\n              page: \"willPrepared\",\n              question: \"willPrepared\"\n            },\n            instructorQuestion: {\n              chapter: \"howCanWeHelp\",\n              page: \"instructor\",\n              question: \"instructor\"\n            },\n            deceasedQuestion: {\n              chapter: \"howCanWeHelp\",\n              page: \"deceased\",\n              question: \"deceased\"\n            },\n            isExecutorQuestion: {\n              chapter: \"howCanWeHelp\",\n              page: \"executor\",\n              question: \"isExecutor\"\n            },\n            claimantQuestion: {\n              chapter: \"howCanWeHelp\",\n              page: \"otherSide\",\n              question: \"otherSide\"\n            },\n            matterTypeQuestion: {\n              chapter: \"howCanWeHelp\",\n              page: \"matterType\",\n              question: \"matterType\"\n            },\n            lastPlaceOfResidenceQuestion: {\n              chapter: \"howCanWeHelp\",\n              page: \"deceasedDeathState\",\n              question: \"state\"\n            },\n            probateGrantedStateQuestion: {\n              chapter: \"howCanWeHelp\",\n              page: \"adminGrantedInDeceasedState\",\n              question: \"adminGrantedLocation\"\n            },\n            dateOfProbateQuestion: {\n              chapter: \"howCanWeHelp\",\n              page: \"dateOfProbate\",\n              question: \"dateOfProbate\"\n            },\n            dateOfProbateQuestion2: {\n              chapter: \"will\",\n              page: \"grantDate\",\n              question: \"grantDate\"\n            },\n            dateOfDeathQuestion: {\n              chapter: \"howCanWeHelp\",\n              page: \"deceasedPassedDate\",\n              question: \"deceasedPassedDate\"\n            },\n            secondDateOfDeathQuestion: {\n              chapter: \"deceased\",\n              page: \"dateOfDeath\",\n              question: \"date\"\n            },\n            notSureAboutWillQuestion: {\n              chapter: \"howCanWeHelp\",\n              page: \"willPrepared\",\n              question: \"notSureReason\"\n            }\n          };\n        case \"Family\":\n          return {\n            clientDetailsQuestion: {\n              chapter: \"contactDetails\",\n              page: \"client\",\n              question: \"client\"\n            },\n            preferredLawyerQuestion: {\n              chapter: \"contactDetails\",\n              page: \"referralSource\",\n              question: \"referralSourcePreferredLawyer\"\n            }\n          };\n      }\n\n      // If not practiceArea, return safe value\n      return {};\n    })\n  });\n});","define(\"settify-mvp/mixins/mock-data\", [\"exports\", \"@ember/utils\", \"@ember/object\", \"@ember/object/mixin\", \"settify-mvp/helpers/get-answers-from\", \"uuid\"], function (_exports, _utils, _object, _mixin, _getAnswersFrom, _uuid) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/utils\",0,\"@ember/object\",0,\"@ember/object/mixin\",0,\"settify-mvp/helpers/get-answers-from\",0,\"uuid\"eaimeta@70e063a35619d71f\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create({\n    simpleDataTypes: [{\n      type: \"textline\",\n      values: [\"Client's response\", null]\n    }, {\n      type: \"textarea\",\n      values: [\"Client's response\", null]\n    }, {\n      type: \"firstname\",\n      // Jessie & Ash are gender neutral name\n      values: [\"Larry\", \"Amy\", \"Jessie\", \"Noah\", \"Samantha\", \"Ash\", \"Ava\", \"Mia\", \"Lucas\", \"Oliver\", null]\n    }, {\n      type: \"surnames\",\n      values: [\"Doe\", \"Smith\", \"Jenkins\", \"Thompson\", \"Harris\", null]\n    }, {\n      type: \"email\",\n      values: [\"valid@email.com\", \"invalidemail\", null]\n    }, {\n      type: \"phone\",\n      values: [\"03 9732 1101\", \"0400112221\", null]\n    }, {\n      type: \"number\",\n      values: [40, 0, null]\n    }, {\n      type: \"money\",\n      values: [10000, 0, null]\n    }, {\n      type: \"title\",\n      values: [\"Mr\", \"Mrs\", \"Dr\", null]\n    }, {\n      type: \"yesno\",\n      values: [\"yes\", \"no\", \"notsure\"]\n    }],\n    generateMockData() {\n      const {\n        model\n      } = this;\n      const answers = {};\n      answers[`${model.id}#1`] = {};\n      for (let i = 0; model.chapters && i < model.chapters.length; i++) {\n        const chapter = model.chapters[i];\n        if (chapter.deleted) {\n          continue;\n        }\n        answers[`${model.id}#1`][chapter.id] = {};\n        for (let i = 0; chapter.pages && i < chapter.pages.length; i++) {\n          const page = chapter.pages[i];\n          if (page.deleted) {\n            continue;\n          }\n          answers[`${model.id}#1`][chapter.id][page.id] = {};\n          for (let i = 0; page.questions && i < page.questions.length; i++) {\n            const question = page.questions[i];\n            if (question.deleted) {\n              continue;\n            }\n            let saveLocation = answers[`${model.id}#1`][chapter.id][page.id];\n            if (page.id === \"deceasedSiblings\" && question.id === \"deceased\") {\n              // We skip this question because when we first create a sibiling the \"deceased\" checkbox is ticked by default.\n              //  We then get to this page and because \"deceased\" is already ticked we then untick it, which causes the following page to not be displayed\n              continue;\n            }\n            if (page.answersLocation) {\n              saveLocation = (0, _getAnswersFrom.getAnswersFrom)([], {\n                client: this.clientRecord,\n                induction: model.id,\n                chapter: chapter.id,\n                page: page.id,\n                answersLocation: page.answersLocation,\n                repeatToken: 1\n              });\n            }\n            this.handleDataChange(question, saveLocation, answers, {\n              client: this.clientRecord,\n              induction: model.id,\n              chapter: chapter.id,\n              page: page.id,\n              answersLocation: page.answersLocation\n            });\n            (0, _object.set)(this.clientRecord, \"answers\", answers);\n          }\n        }\n      }\n    },\n    handleDataChange(question, saveLocation, answersObject, context) {\n      if (Array.isArray(saveLocation) && saveLocation.length) {\n        saveLocation = saveLocation[0];\n      }\n      const saveKey = question.id || question.shortTitle || question.title || \"name\";\n      if ([\"paragraph\", \"heading\"].includes(question.type)) {\n        return;\n      } else if (question.type === \"block\") {\n        for (let i = 0; question.content && i < question.content.length; i++) {\n          const content = question.content[i];\n          if (content.deleted) {\n            continue;\n          }\n          this.handleDataChange(content, saveLocation);\n        }\n      } else if ([\"radio\", \"select\"].includes(question.type)) {\n        this.handleRadioOrSelectChange(question, saveLocation, saveKey);\n      } else if (question.type === \"checkbox\") {\n        this.handleCheckboxChange(question, saveLocation);\n      } else if (question.type === \"selectorcreate\") {\n        this.handleSelectOrCreateChange(question, saveLocation, saveKey);\n      } else if (question.type === \"address\") {\n        this.handleAddressChange(saveLocation, saveKey);\n      } else if (question.type === \"grid\") {\n        this.handleGridChange(question, saveLocation);\n      } else if (question.type === \"list\") {\n        this.handleListChange(question, saveLocation, saveKey);\n      } else if (question.type === \"checkboxlist\") {\n        if (!Object.keys(this.get(\"clientRecord.answers\")).length) {\n          // We set the answers now because in the initial creation of the answers on the client model wouldn't have this set yet\n          //  and we need it to retrieve data at the checkbox-list sourceListIDs\n          this.clientRecord.set(\"answers\", answersObject);\n        }\n        this.handleCheckboxlistChange(question, context);\n      } else if (question.type === \"date\") {\n        this.handleDateChange(question, saveLocation);\n      } else if (question.type === \"unitsPer\") {\n        this.handleUnitsPerChange(question, saveLocation);\n      }\n      // else if (question.type === 'familytreeselect') {\n      //   this.handleFamilyTreeChange(this.get('clientRecord'), saveKey);\n      // }\n      else {\n        this.handleSimpleDataChange(question, saveLocation, saveKey);\n      }\n    },\n    // Handle either the initial load or the toggle of data that contains just strings or numbers\n    handleSimpleDataChange(question, saveLocation, saveKey) {\n      const questionType = this.simpleDataTypes.find(d => {\n        if (question.id === \"surname\") {\n          // if we are setting surnames toggle that different then a normal textline\n          return d.type === \"surnames\";\n        }\n        return d.type === question.type;\n      });\n      if (questionType && questionType.values) {\n        const answer = saveLocation[saveKey];\n        let saveVal;\n        const next = questionType.values.indexOf(answer) + 1;\n        if (next < questionType.values.length) {\n          saveVal = questionType.values[next];\n        } else {\n          // Set back to the first option\n          saveVal = questionType.values[0];\n        }\n        (0, _object.set)(saveLocation, saveKey, saveVal);\n      } else {\n        console.log(\"No mock data created for \", question.type);\n      }\n    },\n    // Handle either the initial load or the toggle of a radio or dropdown inputs ONLY\n    handleRadioOrSelectChange(question, saveLocation, saveKey) {\n      const answer = saveLocation[saveKey];\n      let nextIndex = question.options.findIndex(o => (o.id || o.title) === answer) + 1;\n      if (nextIndex === question.options.length) {\n        nextIndex = 0;\n      }\n      (0, _object.set)(saveLocation, saveKey, question.options[nextIndex].id || question.options[nextIndex].title);\n    },\n    // Handle either the initial load or the toggle of a checkbox input ONLY\n    handleCheckboxChange(question, saveLocation) {\n      if (!question.options || !question.options.length) {\n        return;\n      }\n      const answer = saveLocation[question.options[0].id];\n      if (!answer) {\n        // Set the first option to true\n        (0, _object.set)(saveLocation, question.options[0].id, true);\n      } else if (answer && question.options.length > 1 && !saveLocation[question.options[1].id]) {\n        // Set all options to true\n        question.options.forEach(o => {\n          (0, _object.set)(saveLocation, o.id, true);\n        });\n      } else {\n        // Set all options to false\n        question.options.forEach(o => {\n          (0, _object.set)(saveLocation, o.id, false);\n        });\n      }\n    },\n    // Handle either the initial load or the toggle of a select-or-create input ONLY\n    handleSelectOrCreateChange(question, saveLocation, saveKey) {\n      const answer = saveLocation[saveKey];\n      let selection;\n      if (question.multipleSelections) {\n        selection = [];\n        if ((0, _utils.isEmpty)(answer)) {\n          selection.push(\"8ded4171-dc1c-4804-baf0-b4380e9fafdc\");\n        } else if (!answer.includes(\"8ded4171-dc1c-4804-baf0-b4380e9fafdb\")) {\n          selection.push(\"8ded4171-dc1c-4804-baf0-b4380e9fafdc\", \"8ded4171-dc1c-4804-baf0-b4380e9fafdb\");\n        }\n        // This prevents any weird loopy business since we might end up with a child who has the same ID as their parent, for example\n        selection = selection.filter(id => id !== saveLocation.id);\n      } else {\n        if (question.id === \"deceased\") {\n          // Just toggle the deceased on or off\n          if ((0, _utils.isEmpty)(answer)) {\n            selection = \"8ded4171-dc1c-4804-baf0-b4380e9fafda\";\n          }\n        } else if (question.id === \"accountant\") {\n          // Have someone that isn't part of the Family list and can't be added to it\n          if ((0, _utils.isEmpty)(answer)) {\n            selection = \"8ded4171-dc1c-4804-baf0-b4380e9fafdd\";\n          }\n        } else if (question.id === \"financialAdvisor\") {\n          // Have someone that isn't part of the Family list and can't be added to it\n          if ((0, _utils.isEmpty)(answer)) {\n            selection = \"8ded4171-dc1c-4804-baf0-b4380e9fafde\";\n          }\n        } else {\n          if ((0, _utils.isEmpty)(answer)) {\n            selection = \"8ded4171-dc1c-4804-baf0-b4380e9fafdb\";\n          } else if (answer === \"8ded4171-dc1c-4804-baf0-b4380e9fafdb\") {\n            selection = \"8ded4171-dc1c-4804-baf0-b4380e9fafdc\";\n          }\n        }\n      }\n      (0, _object.set)(saveLocation, saveKey, selection);\n\n      // This is a hack to trigger the selectorcreate onSourceListChanged observer to rebuild the list\n      this.set(\"clientRecord.knownEntities.touch\", Date.now());\n    },\n    // Handle either the initial load or the toggle of an address input ONLY\n    handleAddressChange(saveLocation, saveKey) {\n      const answer = saveLocation[saveKey];\n      let address = {};\n      if (!answer || !answer.lineOne) {\n        address = {\n          lineOne: \"100 Wallaby Way\",\n          suburb: \"Sydney\",\n          state: \"NSW\",\n          postcode: \"2000\"\n        };\n      } else if (answer.state === \"NSW\") {\n        address = {\n          lineOne: \"Unit 74\",\n          lineTwo: \"123 Sample St\",\n          suburb: \"Melbourne\",\n          state: \"Vic\",\n          postcode: \"3000\"\n        };\n      }\n      (0, _object.set)(saveLocation, saveKey, address);\n    },\n    // Handle either the initial load or the toggle of a grid input ONLY\n    handleGridChange(question, saveLocation) {\n      for (let i = 0; question.startingRows && i < question.startingRows.length; i++) {\n        const r = question.startingRows[i];\n        for (let j = 0; question.columns && j < question.columns.length; j++) {\n          const c = question.columns[j];\n          if (!r[c.title || c.name]) {\n            if (c.type === \"textline\") {\n              r[c.title || c.name] = \"Client information\";\n            } else if (c.type === \"money\" || c.type === \"number\") {\n              r[c.title || c.name] = 500;\n            }\n          }\n        }\n      }\n      (0, _object.set)(saveLocation, question.id, question.startingRows);\n    },\n    // Handle either the initial load or the toggle of a list input ONLY\n    handleListChange(question, saveLocation, saveKey) {\n      let options = [];\n      const answer = saveLocation[saveKey];\n      if (answer && answer.length === 1) {\n        // Add an empty item to the list\n        options = [...answer, {\n          id: (0, _uuid.v4)()\n        }];\n      } else if (answer && answer.length === 2) {\n        // Remove all items\n        options = [];\n      } else {\n        // Add an item with values for the content set\n        const option = {\n          id: (0, _uuid.v4)()\n        };\n        for (let i = 0; question.content && i < question.content.length; i++) {\n          const content = question.content[i];\n          if (content.deleted) {\n            continue;\n          }\n          this.handleDataChange(content, option);\n        }\n        options = [option];\n      }\n      (0, _object.set)(saveLocation, saveKey, options);\n    },\n    // Handle either the initial load or the toggle of a date input ONLY\n    handleDateChange(question, saveLocation) {\n      const hasDay = saveLocation[`${question.id}day`];\n      const hasMonth = saveLocation[`${question.id}month`];\n      const hasYear = saveLocation[`${question.id}year`];\n      if (hasDay && hasMonth && hasYear) {\n        // remove the day\n        (0, _object.set)(saveLocation, `${question.id}day`, null);\n      } else if (hasMonth && hasYear) {\n        // reinstate the day, remove the month\n        (0, _object.set)(saveLocation, `${question.id}day`, 21);\n        (0, _object.set)(saveLocation, `${question.id}month`, null);\n      } else if (hasDay && hasYear) {\n        // switch to just day and month\n        (0, _object.set)(saveLocation, `${question.id}month`, 2);\n        (0, _object.set)(saveLocation, `${question.id}year`, null);\n      } else if (hasDay && hasMonth) {\n        // switch to nothing\n        (0, _object.set)(saveLocation, `${question.id}day`, null);\n        (0, _object.set)(saveLocation, `${question.id}year`, null);\n        (0, _object.set)(saveLocation, `${question.id}month`, null);\n      } else {\n        // switch back to everthing\n        (0, _object.set)(saveLocation, `${question.id}day`, 21);\n        (0, _object.set)(saveLocation, `${question.id}month`, 2);\n        (0, _object.set)(saveLocation, `${question.id}year`, 2020);\n      }\n    },\n    // Handle either the initial load or the toggle of a unitsPer input ONLY\n    handleUnitsPerChange(question, saveLocation) {\n      const hasUnits = saveLocation[`${question.id}unitsPer`];\n      const hasTimePeriod = saveLocation[`${question.id}timeperiod`];\n      const timePeriods = Object.keys(question.timePeriods || {});\n      if (hasUnits && hasTimePeriod) {\n        (0, _object.set)(saveLocation, `${question.id}unitsPer`, null);\n        (0, _object.set)(saveLocation, `${question.id}timeperiod`, timePeriods[0]);\n      } else if (!hasUnits && hasTimePeriod) {\n        (0, _object.set)(saveLocation, `${question.id}unitsPer`, 3);\n        (0, _object.set)(saveLocation, `${question.id}timeperiod`, null);\n      } else {\n        (0, _object.set)(saveLocation, `${question.id}unitsPer`, 5);\n        (0, _object.set)(saveLocation, `${question.id}timeperiod`, timePeriods[0]);\n      }\n    },\n    // Handle either the initial load or the toggle of a checkbox-list input ONLY\n    handleCheckboxlistChange(question, context) {\n      let sourceList = [];\n      if (question.sourceListIDs) {\n        // We need to get the answers at a specific location\n        const IDs = question.sourceListIDs.split(/[\\s,;]+/).filter(id => id);\n        for (const key in IDs) {\n          if (Object.prototype.hasOwnProperty.call(IDs, key)) {\n            const answer = (0, _getAnswersFrom.getAnswersFrom)([], {\n              client: this.clientRecord,\n              induction: context.induction,\n              chapter: context.chapter,\n              page: context.page,\n              answersLocation: IDs[key],\n              repeatToken: 1\n            });\n            sourceList = [].concat(sourceList, answer);\n          }\n        }\n      } else {\n        // Defaults to knownEntities\n        sourceList = this.get(\"clientRecord.knownEntities\");\n      }\n      if (sourceList.every(s => s[question.id])) {\n        // uncheck all\n        sourceList.forEach(s => (0, _object.set)(s, question.id, false));\n      } else if (sourceList.some(s => s[question.id])) {\n        // check all\n        sourceList.forEach(s => (0, _object.set)(s, question.id, true));\n      } else {\n        // check only the first one\n        (0, _object.set)(sourceList[0], question.id, true);\n      }\n    },\n    handleFamilyTreeChange(client, saveKey) {\n      if (!client) {\n        return;\n      }\n      const family = client.get(\"allFamilyMembers\");\n      if (family.every(f => f[saveKey])) {\n        family.forEach(f => (0, _object.set)(f, saveKey, false));\n      } else if (family.some(f => f[saveKey])) {\n        family.forEach(f => (0, _object.set)(f, saveKey, true));\n      } else {\n        (0, _object.set)(family[0], saveKey, true);\n      }\n    },\n    actions: {\n      toggleIconType(obj, value) {\n        (0, _object.set)(obj, \"icon\", value);\n      },\n      removeTitle(obj) {\n        (0, _object.set)(obj, \"shortTitle\", \" \");\n        this.send(\"toggleSummaryEditor\", obj);\n      },\n      toggleSummaryEditor(obj) {\n        (0, _object.set)(obj, \"adminEditing\", !obj.adminEditing);\n      },\n      toggleAnswer(question, context) {\n        this.handleDataChange(question, this.model, null, context);\n      }\n    }\n  });\n});","define(\"settify-mvp/mixins/pms-settings-inputs\", [\"exports\", \"@ember/object\", \"@ember/runloop\", \"@ember/object/mixin\"], function (_exports, _object, _runloop, _mixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/runloop\",0,\"@ember/object/mixin\"eaimeta@70e063a35619d71f\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create({\n    init() {\n      this._super(...arguments);\n\n      // If the updateCanSubmit observer is triggered on the init run loop, IE. If we triggered it on some input variable\n      // Then for whatever reason it will update canSubmit on the component itself but it won't actually propagate to the canSubmit in send-to-pms\n      (0, _runloop.next)(() => {\n        this.set(\"canSubmit\", this.checkCanSubmit());\n      });\n    },\n    // Abstract method\n    checkCanSubmit() {\n      return false;\n    },\n    clearPropertyIfInvalid(possibleOptions, propertyToCheck) {\n      (0, _runloop.next)(() => {\n        const option = possibleOptions.find(possibleOption => possibleOption.value === this?.pmsSettingsModel[propertyToCheck]);\n        if (!option) {\n          (0, _object.set)(this.pmsSettingsModel, propertyToCheck, undefined);\n        }\n      });\n    },\n    matterTypeIdOptionsFilteredByState: (0, _object.computed)(\"options.matterTypeId\", \"pmsSettingsModel.state\", function () {\n      const matterTypeIdOptions = this.get(\"options.matterTypeId\");\n      const selectedState = this.get(\"pmsSettingsModel.state\");\n\n      // If a state hasn't been selected we don't want to hide any options.\n      if (!selectedState) {\n        return matterTypeIdOptions;\n      }\n      const possibleMatterTypeIdOptions = matterTypeIdOptions.filter(matterTypeOption => matterTypeOption.state ? matterTypeOption.state.includes(this.get(\"pmsSettingsModel.state\")) || matterTypeOption.state.includes(\"All\") : true);\n      this.clearPropertyIfInvalid(possibleMatterTypeIdOptions, \"matterTypeId\");\n      return possibleMatterTypeIdOptions;\n    })\n  });\n});","define(\"settify-mvp/mixins/practice-areas\", [\"exports\", \"@ember/object/mixin\"], function (_exports, _mixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object/mixin\"eaimeta@70e063a35619d71f\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create({\n    practiceAreaCollection: [{\n      name: \"Family Law\",\n      code: \"Family\"\n    }, {\n      name: \"Wills & Estates\",\n      code: \"Wills\"\n    }, {\n      name: \"Both\",\n      code: \"All\"\n    }]\n  });\n});","define(\"settify-mvp/mixins/question-types-mixin\", [\"exports\", \"@ember/object/computed\", \"@ember/object\", \"@ember/object/mixin\", \"@ember/service\"], function (_exports, _computed, _object, _mixin, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object/computed\",0,\"@ember/object\",0,\"@ember/object/mixin\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create({\n    config: (0, _service.inject)(\"dynamic-config\"),\n    // All the different question types\n    questionTypesList: [{\n      value: \"textline\",\n      label: \"Text - single line\",\n      description: \"A simple single-line text input for a client to input data\"\n    }, {\n      value: \"textarea\",\n      label: \"Text - multiple lines\",\n      description: \"A multi-line text input for a client to input data. Generally meant for longer text to hold things like messages or descriptions\"\n    }, {\n      value: \"yesno\",\n      label: \"Yes / no / not sure\",\n      description: 'Three radio buttons with values \"Yes\", \"No\", \"Not sure\". The \"Not sure\" option can be disabled if required'\n    }, {\n      value: \"selectorcreate\",\n      label: \"Select a person or company (or a create new one)\",\n      description: \"Select from a list of known people of companies, or create a new one with information based on the supplied content questions. Can be either a single select or allow multiple to be selected or created\"\n    }, {\n      value: \"selectorcreatesingle\",\n      label: \"Select a single person or company (or a create new one)\",\n      description: \"Select someone from a list of known people of companies, or create a new one with information based on the supplied content questions\"\n    }, {\n      value: \"selectorcreatemulti\",\n      label: \"Select multiple people or companies (or create new ones)\",\n      description: \"Select people from a list of known people of companies, or create a new one with information based on the supplied content questions\"\n    }, {\n      value: \"radio\",\n      label: \"Radio buttons\",\n      description: \"Add one or many radio buttons that a client can select from with custom values and text for each. Only one radio button in a given group can be selected at the same time\"\n    }, {\n      value: \"checkbox\",\n      label: \"Checkbox(es)\",\n      description: \"Add one or many checkboxes that a client can mark with custom values and text for each. All checkboxes in a given group can be marked at the same time\"\n    }, {\n      value: \"select\",\n      label: \"Select from a dropdown list\",\n      description: \"Add one or many options for a client to select from a drop down list with custom values and text for each. Only one option  in a given group can be selected at the same time\"\n    }, {\n      value: \"paragraph\",\n      label: \"Paragraph of text\",\n      description: \"A paragraph of text displayed on the page. By default, the paragraph will not be shown in either the client or firm-facing brief but can be shown by ticking the relevant settings\"\n    }, {\n      value: \"link\",\n      label: \"Hyperlink\",\n      description: \"A clickable link to a URL. Both the text and the link itself need to be supplied\"\n    }, {\n      value: \"address\",\n      label: \"Street address\",\n      description: \"A collection of inputs for obtaining an address if no address was detected in the induction, otherwise offers previously entered addresses with the ability to add a new one. The suburb, state and postcode input text is customisable. Address line 3 and Country can be enabled as required\"\n    }, {\n      value: \"email\",\n      label: \"Email address\",\n      description: \"A single-line text input that requires and validates a client input as a valid email address. Will also check for common spelling errors in the email domain\"\n    }, {\n      value: \"phone\",\n      label: \"Phone number\",\n      description: \"A single-line text input that requires and validates a client input as a valid phone number\"\n    }, {\n      value: \"date\",\n      label: \"Date\",\n      description: \"A collection of 3 inputs to collect a date from a client. By default does not allow future dates, but this option can be enabled. The date format is customisable to suit the region\"\n    }, {\n      value: \"number\",\n      label: \"Number\",\n      description: \"A single-line text input that requires and validates a client input as a number. A min and max value can be set to limit the range\"\n    }, {\n      value: \"money\",\n      label: \"Money\",\n      description: \"A single-line text input that requires and validates a client input as a number and converts it to currency. A min an max value can be set to limit the range\"\n    }, {\n      value: \"grid\",\n      label: \"Grid / spreadsheet\",\n      description: \"A table input that you are able to define the number of columns and what question type is contained within each column. Can take one or more lists (separated by whitespace or line breaks) to create rows from or a client can add new rows as required\"\n    }, {\n      value: \"list\",\n      label: \"List\",\n      description: \"Creates a list of items with questions that will be asked for each item. Can either be a basic list or a tabbed list with the ability to add new items\"\n    }, {\n      value: \"checkboxlist\",\n      label: \"A list of checkboxes\",\n      description: \"Creates one checkbox for each item in a given list. Additional questions can be asked for an item if a checkbox is marked\"\n    }, {\n      value: \"title\",\n      label: \"Title (Mr, Mrs, etc)\",\n      description: \"A dropdown list with predefined options to select from\"\n    }, {\n      value: \"firstname\",\n      label: \"First name with gender detection\",\n      description: \"A single-line text input for a client to input first names. If the settings are enabled, it will also attempt to detect gender and/or will ask for pronouns\"\n    }, {\n      value: \"heading\",\n      label: \"Heading\",\n      description: \"Text displayed as a header on the page that can include an one or many icons\"\n    }, {\n      value: \"image\",\n      label: \"Image\",\n      description: \"A image to be shown on the page. Accepts either a local image/icon or a URL\"\n    }, {\n      value: \"block\",\n      label: \"Content block\",\n      description: \"A way of grouping a collection of questions together. This allows you are able to have things like a displayIf written once on the block, rather than across multiple questions\"\n    }, {\n      value: \"docupload\",\n      label: \"Document upload\",\n      description: \"A input that allows a client to upload a document. Can have one or more documents requested\"\n    }, {\n      value: \"hiddenCalculatedField\",\n      label: \"Hidden calculated field\",\n      description: \"A question not shown to the client, but will calculate a given parse-text value when the page loads or another input is updated\"\n    }, {\n      value: \"summaryTable\",\n      label: \"Summary table\",\n      description: \"Creates a read only table with a given number of columns and rows. Each row can represent different data and can pull items from a given list to display\"\n    }, {\n      value: \"documentsRequiredList\",\n      label: \"A list of documents required\",\n      description: 'Displays a list of documents marked as required while completing the induction. If no documents have been marked as required, displays text \"No documents required\"'\n    }, {\n      value: \"immutableList\",\n      label: \"Immutable list\",\n      description: \"Asks one or more questions for each item from a given list. Similar to a list question without the ability to add any new items\"\n    }, {\n      value: \"divider\",\n      label: \"Divider\",\n      description: \"An input to allow for either a visual divider between questions or for extra whitespace\"\n    }, {\n      value: \"inputslider\",\n      label: \"Sliding Scale\",\n      description: \"A sliding scale input that contains one or more options to slider between. Text can be added to either end of the scale and a default position can be set\"\n    }, {\n      value: \"unitsPer\",\n      label: \"Units per\",\n      description: \"Ask for either the number of days or the money amount per given period. The period options are selected when creating the question\"\n    }, {\n      value: \"multiradio\",\n      label: \"Rows of radio buttons\",\n      description: \"Create a table with a given number of columns and options (rows) where a radio button will set within each column. Only one radio button in a given row can be selected at the same time\"\n    }, {\n      value: \"officeselect\",\n      label: \"Select a firm office\",\n      description: \"Radio buttons with values of each of the firms addresses. Additional options can be added as needed.\"\n    }, {\n      value: \"button\",\n      label: \"Button\",\n      description: \"This component is just a button that leads to the request appointment page. It could be expanded for futher functionality in the future.\",\n      practiceAreas: [\"Estates\"]\n    }, {\n      value: \"propertyValuation\",\n      label: \"Property Valuation\",\n      description: \"This is a button that opens a modal component. This is an experimental feature for retrieving a property valuation from a third party API\"\n    }, {\n      value: \"vehicleValuation\",\n      label: \"Vehicle Valuation\",\n      description: \"This is a button that opens modal component. This is an experimental feature for retrieving a vehicle valuation from a third party API\"\n    }, {\n      value: \"guessclient\",\n      label: \"Smart Client details\",\n      description: \"An input which guesses the client in the Probate system\",\n      practiceAreas: [\"Probate\"]\n    }],\n    questionTypes: (0, _object.computed)(\"config.settings.Firm.practiceArea\", \"firm.practiceArea\", \"questionTypesList\", function () {\n      return this.questionTypesList.filter(question => question.practiceAreas ? question.practiceAreas.includes(this.get(\"config.settings.Firm.practiceArea\")) : true);\n    }),\n    // A group represents types you can switch between\n    questionGroups: [[\"textline\", \"textarea\", \"phone\", \"email\", \"firstname\"], [\"money\", \"number\"], [\"radio\", \"select\", \"checkbox\", \"inputslider\", \"title\"]],\n    // Types which allow you to press the 'reset' button to update the preview\n    canResetPreviewTypes: [\"grid\", \"yesno\", \"radio\", \"checkbox\", \"select\", \"selectorcreate\", \"checkboxlist\", \"heading\"],\n    // Types which allow you to provide extra feedback text to the lawyer\n    allowFeedbackToLawyerTypes: [\"textline\", \"textarea\", \"address\", \"email\", \"phone\", \"date\", \"number\", \"money\"],\n    // Question types that can be used to generate the clients displayName\n    breadcrumbTypes: [\"selectorcreate\", \"textline\", \"textarea\", \"title\", \"firstname\"],\n    // Types which can have a default value set\n    defaultTypes: [\"textline\"],\n    // Types which can have a placeholder value\n    placeholderTypes: [\"textline\", \"textarea\", \"firstname\", \"phone\", \"email\", \"number\", \"money\"],\n    // Types for which you can customise the label\n    itemLabelTypes: [\"selectorcreate\", \"checkboxlist\"],\n    // Types that default to being hidden on the client brief\n    defaultHiddenOnBriefTypes: [\"link\", \"paragraph\", \"heading\", \"hiddenCalculatedField\", \"image\"],\n    // Types for which you can add options (and make them set other values)\n    multipleOptionsTypes: [\"radio\", \"checkbox\", \"select\", \"inputslider\", \"multiradio\", \"officeselect\"],\n    // Types that are numeric fields\n    numericFieldsTypes: [\"number\", \"money\"],\n    // Types that can contain a prompt when there is nothing is selected\n    promptTypes: [\"select\"],\n    // Types that have subcontent questions\n    subContentTypes: [\"selectorcreate\", \"list\", \"checkboxlist\", \"immutableList\", \"familytreeselect\", \"guessclient\"],\n    // Types that can have their content displayed before the standard questions\n    subContentPositionChoiceTypes: [\"selectorcreate\"],\n    // Types that allow you select previous answers, and filter/include certain answers\n    objectFilterTypes: [\"selectorcreate\", \"address\", \"documentsRequiredList\"],\n    // Types where you can specify a sourceList\n    sourceListTypes: [\"checkboxlist\", \"immutableList\", \"grid\"],\n    // Types that allow styling in the editor\n    allowStylingTypes: [{\n      type: \"paragraph\",\n      supportedStyles: [\"bold\", \"bullet\", \"italics\", \"indentation\", \"removeLinebreak\"]\n    }, {\n      type: \"heading\",\n      supportedStyles: [\"bold\", \"bullet\", \"italics\", \"indentation\", \"removeLinebreak\"]\n    }, {\n      type: \"link\",\n      supportedStyles: [\"bold\", \"bullet\", \"italics\", \"indentation\"]\n    }, {\n      type: \"documentsRequiredList\",\n      supportedStyles: [\"bold\", \"bullet\", \"italics\", \"indentation\"]\n    }, {\n      type: \"immutableList\",\n      supportedStyles: [\"bold\", \"bullet\", \"italics\", \"indentation\"]\n    }, {\n      type: \"block\",\n      supportedStyles: [\"removeLinebreak\"]\n    }, {\n      type: \"grid\",\n      supportedStyles: [\"borderless\", \"removeLinebreak\"]\n    }, {\n      type: \"date\",\n      supportedStyles: [\"removeLinebreak\"]\n    }, {\n      type: \"textline\",\n      supportedStyles: [\"removeLinebreak\"]\n    }, {\n      type: \"textarea\",\n      supportedStyles: [\"removeLinebreak\", \"indentation\"]\n    }, {\n      type: \"number\",\n      supportedStyles: [\"removeLinebreak\"]\n    }, {\n      type: \"money\",\n      supportedStyles: [\"removeLinebreak\"]\n    }, {\n      type: \"checkbox\",\n      supportedStyles: [\"indentation\", \"removeLinebreak\"]\n    }, {\n      type: \"image\",\n      supportedStyles: [\"bold\", \"italics\", \"removeLinebreak\"]\n    }],\n    // Types that can have a 'not sure' checkbox\n    // NOTE: When adding types into this array, you must also add support into the question types component itself,\n    // since the switcher can't handle the hiding of the question (because it would also hide the label)\n    notSureTypes: [\"textline\", \"textarea\", \"address\", \"email\", \"phone\", \"date\", \"number\", \"money\", \"inputslider\", \"selectorcreate\"],\n    // Questions that can be used to calculate the clients displayName\n    displayNameTypes: (0, _computed.reads)(\"breadcrumbTypes\"),\n    // Questions that have a checkbox for 'This question must be answered'\n    requiredTypes: (0, _object.computed)(\"questionTypes\", function () {\n      const excludedTypes = [\"docupload\", \"summaryTable\", \"documentsRequiredList\"];\n      return this.questionTypes.map(q => q.value).filter(q => !excludedTypes.includes(q));\n    }),\n    // Questions that have a checkbox for 'Include this question in the conflict check\n    conflictCheckTypes: (0, _object.computed)(\"questionTypes\", function () {\n      const excludedTypes = [\"docupload\", \"summaryTable\", \"documentsRequiredList\"];\n      return this.questionTypes.map(q => q.value).filter(q => !excludedTypes.includes(q));\n    }),\n    // Questions that can have helpText\n    helpTextTypes: (0, _object.computed)(\"questionTypes\", function () {\n      const excludedTypes = [\"docupload\"];\n      return this.questionTypes.map(q => q.value).filter(q => !excludedTypes.includes(q));\n    }),\n    // Questions that can ask for documents on answer\n    askForDocumentTypes: (0, _object.computed)(\"alwaysAskForDocumentTypes\", \"questionTypes\", function () {\n      const excludedTypes = [\"block\", \"summaryTable\", \"documentsRequiredList\", ...this.alwaysAskForDocumentTypes];\n      return this.questionTypes.map(q => q.value).filter(q => !excludedTypes.includes(q));\n    }),\n    alwaysAskForDocumentTypes: [\"docupload\"],\n    // Options for a yes/no/maybe input\n    getYesNoOptions: function (includeNotSure) {\n      const retval = [{\n        title: 'If the user answers \"Yes\"',\n        key: \"onYes\"\n      }, {\n        title: 'If the user answers \"No\"',\n        key: \"onNo\"\n      }];\n      if (includeNotSure) {\n        retval.push({\n          title: 'If the user answers \"Not sure\"',\n          key: \"onNotSure\"\n        });\n      }\n      return retval;\n    },\n    // Options for yes/no icons\n    yesNoIconTypes: [{\n      label: \"Default\",\n      value: undefined\n    }, {\n      label: \"Positive (this is a good thing)\",\n      value: \"positive\"\n    }, {\n      label: \"Negative (this is a bad thing)\",\n      value: \"negative\"\n    }, {\n      label: \"Warning (alert law firm to this response)\",\n      value: \"warning\"\n    }, {\n      label: \"Not sure\",\n      value: \"notsure\"\n    }],\n    // Options for column width (for grid inputs)\n    columnWidthTypes: [{\n      label: \"Default\",\n      value: undefined\n    }, {\n      label: \"Thin\",\n      value: \"thin\"\n    }, {\n      label: \"Very thin\",\n      value: \"very-thin\"\n    }],\n    // Options for a title input\n    titleSelectOptions: [{\n      title: \"Ms\",\n      id: \"Ms\"\n    }, {\n      title: \"Mrs\",\n      id: \"Mrs\"\n    }, {\n      title: \"Miss\",\n      id: \"Miss\"\n    }, {\n      title: \"Mr\",\n      id: \"Mr\"\n    }, {\n      title: \"Dr\",\n      id: \"Dr\"\n    }],\n    // Options for date layout\n    dateLayoutOptions: [{\n      label: \"DAY/MONTH/YEAR\",\n      value: undefined\n    }, {\n      label: \"MONTH/DAY/YEAR\",\n      value: \"MM/DD/YYYY\"\n    }],\n    // Options for an authorised representative (used by company select-or-creates)\n    authorisedRepresentativeTypeOptions: [{\n      title: \"Director\",\n      id: \"director\"\n    }, {\n      title: \"Company Secretary\",\n      id: \"secretary\"\n    }],\n    // Options for unitsPer component\n    unitTypesToSelectFrom: [{\n      label: \"Days\",\n      value: \"days\"\n    }, {\n      label: \"Money\",\n      value: \"money\"\n    }],\n    timePeriodOptions: [\"week\", \"fortnight\", \"every two weeks\", \"month\", \"year\"],\n    getQuestionTypeString: function (type) {\n      let typeString = \"\";\n      switch (type) {\n        case \"paragraph\":\n        case \"heading\":\n        case \"grid\":\n        case \"block\":\n          break;\n        case \"textline\":\n          typeString = \"short text\";\n          break;\n        case \"textarea\":\n          typeString = \"long text\";\n          break;\n        case \"yesno\":\n          typeString = \"yes/no/maybe\";\n          break;\n        case \"selectorcreate\":\n          if (this.get(\"question.allowPeople\")) {\n            typeString += \"person\";\n          }\n          if (this.get(\"question.allowCorporations\")) {\n            if (typeString) {\n              typeString += \" or \";\n            }\n            typeString += \"company\";\n          }\n          typeString += \" select\";\n          break;\n        case \"checkboxlist\":\n          return \"(a list, with a checkbox next to each item)\";\n        case \"address\":\n          return `(an address input)`;\n        case \"familytreeselect\":\n          return \"(a family tree with checkboxes next to each name)\";\n        case \"guessclient\":\n          return \"(an intelligent component to guess who the user is, and ask for additional details as required)\";\n        case \"image\":\n          return `(an image/icon input)`;\n        default:\n          typeString = type;\n          break;\n      }\n      if (typeString) {\n        return `(a ${typeString} input)`;\n      }\n      return \"\";\n    }\n  });\n});","define(\"settify-mvp/mixins/remove-empty-items\", [\"exports\", \"@ember/object/mixin\", \"settify-mvp/utils/is-empty-object-checker\"], function (_exports, _mixin, _isEmptyObjectChecker) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object/mixin\",0,\"settify-mvp/utils/is-empty-object-checker\"eaimeta@70e063a35619d71f\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create({\n    removeEmptyListItems(list = []) {\n      return list.filter(answer => !(0, _isEmptyObjectChecker.default)(answer, {\n        ignoreEmptySubobjects: true\n      }));\n    },\n    removeEmptyModelItems() {\n      const updateModelList = this.removeEmptyListItems(this.model);\n      this.set(\"model\", updateModelList);\n    }\n  });\n});","define(\"settify-mvp/mixins/request-appointment\", [\"exports\", \"@ember/object\", \"@ember/utils\", \"@ember/service\", \"@ember/object/mixin\", \"settify-mvp/mixins/master-form-mixin\", \"settify-mvp/helpers/check-unique-standalone-page-id\"], function (_exports, _object, _utils, _service, _mixin, _masterFormMixin, _checkUniqueStandalonePageId) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/utils\",0,\"@ember/service\",0,\"@ember/object/mixin\",0,\"settify-mvp/mixins/master-form-mixin\",0,\"settify-mvp/helpers/check-unique-standalone-page-id\"eaimeta@70e063a35619d71f\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create(_masterFormMixin.default, {\n    eventLogging: (0, _service.inject)(),\n    lambda: (0, _service.inject)(),\n    userOtherNamesProvided: true,\n    spouseOtherNamesProvided: true,\n    showMoreInfo: false,\n    titleSelects: [{\n      label: \"Mr\",\n      value: \"Mr\"\n    }, {\n      label: \"Mrs\",\n      value: \"Mrs\"\n    }, {\n      label: \"Ms\",\n      value: \"Ms\"\n    }, {\n      label: \"Dr\",\n      value: \"Dr\"\n    }],\n    init() {\n      this._super();\n      this.reset(this.model);\n    },\n    reset(model) {\n      this._super(...arguments);\n      this.set(\"highlightRequiredFields\", false);\n      if (model) {\n        const induction = this.getInduction(this.model.inductions);\n        this.set(\"practiceAreaSettings\", induction.settings);\n        if (this.practiceAreaSettings?.settings?.induction?.askToReceiveFurtherInformation && model && (0, _utils.isNone)(model.client?.receiveFurtherInformation)) {\n          // default to true, but only if we're asking the question and it hasn't already been asked.\n          model.client.set(\"receiveFurtherInformation\", true);\n        }\n      }\n    },\n    canProgress: (0, _object.computed)(\"model.client.touch\", function () {\n      if ((0, _checkUniqueStandalonePageId.checkUniqueStandalonePageID)([], {\n        client: this.model?.client,\n        pageID: \"basicdetails\"\n      })) {\n        return document.body.querySelectorAll(\".required-field-marker\").length === document.body.querySelectorAll(\".required-field-provided\").length;\n      }\n      return this.minimumInformationForConflictCheckProvided();\n    }),\n    askForContactDetails: (0, _object.computed)(\"model.client.invitedByLawFirm\", \"model.inductions.[]\", function () {\n      if (this.model?.client?.invitedByLawFirm) {\n        return false;\n      }\n      const inductions = this.model?.inductions;\n      let hasContactDetails = false;\n      if (inductions) {\n        inductions.forEach(i => {\n          if (hasContactDetails) {\n            return;\n          }\n          i.chapters.forEach(c => {\n            if (hasContactDetails) {\n              return;\n            }\n            c.pages.forEach(p => {\n              if (hasContactDetails) {\n                return;\n              }\n              p.questions.forEach(q => {\n                if (hasContactDetails) {\n                  return;\n                } else if (q.type === \"selectorcreate\" && q.setAsPrimaryContact) {\n                  // we have a question in our induction which sets the primary contact\n                  // that's enough!\n                  // don't need to ask this again - just direct people to answer the actual question\n                  // where it appears in the induction\n                  hasContactDetails = true;\n\n                  // if (this.get('model.client.primaryContactPersonID')) {\n                  //   // we have asked and for a primary contact and saved an ID as the primaryContactPersonID\n                  //   // we should now check that information was supplied and not skipped\n                  //   let contact = this.get('model.client').getPreciseAnswer(i.id, c.id, p.id, q.id, null, i.repeatToken);\n                  //   if (contact && contact.firstName && contact.surname && contact.phone && contact.email) {\n                  //     hasContactDetails = true;\n                  //   }\n                  // }\n                }\n              });\n            });\n          });\n        });\n      }\n      return !hasContactDetails;\n    }),\n    contactDetailsProvided(i, c, p) {\n      // this is a contact details page.\n      // have all required fields been provided?\n      const requiredContactDetails = [[\"firstName\", \"name\"], [\"surname\", \"name\"], [\"email\"], [\"phone\", \"mobile\", \"directPhone\"]];\n      const answers = this.model.client.getAnswersFor(i.id, c.id, p.id, i.repeatToken);\n      const knownEntities = this.model?.client?.knownEntities || [];\n      let lookupObject = {};\n      for (const key in answers) {\n        if (Object.prototype.hasOwnProperty.call(answers, key)) {\n          const val = answers[key];\n          const knownEntity = knownEntities.filter(ke => ke.id === val)[0];\n          if (knownEntity) {\n            lookupObject = knownEntity;\n          }\n        }\n      }\n\n      // make sure at least one field from each row is provided\n      let allFieldsProvided = true;\n      requiredContactDetails.forEach(group => {\n        if (!allFieldsProvided) {\n          return;\n        }\n        let atLeastOneFieldProvided = false;\n        for (let i = 0; i < group.length; i++) {\n          const element = group[i];\n          if (answers[element] || lookupObject[element]) {\n            atLeastOneFieldProvided = true;\n            break;\n          }\n        }\n        if (!atLeastOneFieldProvided) {\n          allFieldsProvided = false;\n        }\n      });\n      return allFieldsProvided;\n    },\n    minimumInformationForConflictCheckProvided() {\n      const hasRequiredFields = !!document.body.querySelectorAll(\".required-field\").length;\n      const numberOfRequiredQuestions = document.body.querySelectorAll(\".required-field-marker\").length;\n      const numberOfTicks = document.body.querySelectorAll(\".required-field-provided\").length;\n      return numberOfRequiredQuestions === numberOfTicks && !hasRequiredFields;\n    },\n    onlyRequiredLabels: (0, _object.computed)(\"model.client\", \"model.client.touch\", \"pageLoaded\", function () {\n      const hasRequiredFields = !!document.body.querySelectorAll(\".required-field\").length;\n      const hasRequiredAsterisks = document.body.querySelectorAll(\".required-field-marker\").length - document.body.querySelectorAll(\".required-field-provided\").length > 0;\n      return hasRequiredFields && !hasRequiredAsterisks;\n    }),\n    requiredQuestionAnswered(i, c, p, ...qs) {\n      let isAnswered = true;\n      const q = qs[0];\n      if (q.required) {\n        let answer = this.model.client.getPreciseAnswer(i.id, c.id, p.id, q.id, qs.slice(1), i.repeatToken);\n        if (q.type === \"checkbox\") {\n          answer = q.options.map(o => {\n            const idAnswer = this.model.client.getPreciseAnswer(i.id, c.id, p.id, o.id, null, i.repeatToken);\n            const titleAnswer = this.model.client.getPreciseAnswer(i.id, c.id, p.id, o.title, null, i.repeatToken);\n            return idAnswer || titleAnswer;\n          }).filter(e => e);\n        }\n        if ((0, _utils.isEmpty)(answer)) {\n          isAnswered = false;\n        }\n      }\n      if (q.requiredFields && !(0, _utils.isEmpty)(q.requiredFields)) {\n        for (const key in q.requiredFields) {\n          if (q.requiredFields[key]) {\n            const answer = this.model.client.getPreciseAnswer(i.id, c.id, p.id, q.id, [...qs.slice(1), key], i.repeatToken);\n            if ((0, _utils.isEmpty)(answer)) {\n              isAnswered = false;\n            }\n          }\n        }\n      }\n      if (q.content && Array.isArray(q.content)) {\n        q.content.forEach(subQ => {\n          if (subQ.required) {\n            // We slice here since we don't need to keep the ID of the block question in the questions array, since\n            // the blockID isn't used in the answers object\n            const newQuestions = q.type === \"block\" ? [...qs.slice(1), subQ] : [...qs, subQ];\n            isAnswered = isAnswered && this.requiredQuestionAnswered(i, c, p, newQuestions);\n          }\n        });\n      }\n      return isAnswered;\n    },\n    relatedEntities: (0, _object.computed)(\"practiceAreaSettings.settings.admin.conflictCheck.requireRelatedEntities\", function () {\n      // NOTE - don't need full list of dependencies, since they don't actually change\n      // BUT we want a separate function so that we can unit test it easily.\n      return this.generateOtherInformation();\n    }),\n    generateOtherInformation() {\n      let otherInformation = [];\n      if (this.get(\"model.client.assetHasBusinessInterests\") && (this.get(\"practiceAreaSettings.settings.admin.conflictCheck.requireRelatedEntities\") || this.get(\"practiceAreaSettings.settings.admin.conflictCheck.showBusinesses\"))) {\n        const bs = this.get(\"model.client.assetAllBusinesses\");\n        if (bs) {\n          for (let i = 0; i < bs.length; i++) {\n            const businessName = `${bs[i].name || \"Unnamed business\"} (${bs[i].companyName || \"no company name provided\"})`;\n            otherInformation.push({\n              name: \"Related business\",\n              content: businessName\n            });\n          }\n        }\n      } else if (this.get(\"practiceAreaSettings.settings.admin.conflictCheck.requireRelatedEntities\") && !this.get(\"model.client.assetHasBusinessInterests\")) {\n        otherInformation.push({\n          name: \"Related businesses\",\n          content: \"No related businesses specified at this stage\"\n        });\n      }\n      if (this.get(\"model.client.assetHasTrusts\") && (this.get(\"practiceAreaSettings.settings.admin.conflictCheck.requireRelatedEntities\") || this.get(\"practiceAreaSettings.settings.admin.conflictCheck.showTrusts\"))) {\n        const bs = this.get(\"model.client.assetTrustList\");\n        if (bs) {\n          for (let i = 0; i < bs.length; i++) {\n            const trustName = bs[i].name || \"Unnamed trust\";\n            otherInformation.push({\n              name: \"Related trust\",\n              content: trustName\n            });\n          }\n        }\n      } else if (this.get(\"practiceAreaSettings.settings.admin.conflictCheck.requireRelatedEntities\") && !this.get(\"model.client.assetHasTrusts\")) {\n        otherInformation.push({\n          name: \"Related trusts\",\n          content: \"No related trusts specified at this stage\"\n        });\n      }\n      if (this.get(\"model.client.assetHasOtherInvestments\") && (this.get(\"practiceAreaSettings.settings.admin.conflictCheck.requireRelatedEntities\") || this.get(\"practiceAreaSettings.settings.admin.conflictCheck.showInvestments\"))) {\n        const bs = this.get(\"model.client.assetOtherInvestmentList\");\n        if (bs) {\n          for (let i = 0; i < bs.length; i++) {\n            const investmentName = bs[i].name || \"Unnamed investment\";\n            otherInformation.push({\n              name: \"Related investment\",\n              content: investmentName\n            });\n          }\n        }\n      } else if (this.get(\"practiceAreaSettings.settings.admin.conflictCheck.requireRelatedEntities\") && !this.get(\"model.client.assetHasOtherInvestments\")) {\n        otherInformation.push({\n          name: \"Related investments\",\n          content: \"No related investments specified at this stage\"\n        });\n      }\n      if (this.get(\"practiceAreaSettings.settings.admin.conflictCheck.requireRelatedEntities\") || this.get(\"practiceAreaSettings.settings.admin.conflictCheck.showSMSFs\")) {\n        const user = this.get(\"model.client.superUserAllAccounts\") || [];\n        const spouse = this.get(\"model.client.superSpouseAllAccounts\") || [];\n        const combined = user.concat(spouse);\n        const output = [];\n        for (let i = 0; i < combined.length; i++) {\n          if (combined[i].type === \"smsf\") {\n            const bdesc = combined[i].name || \"Unnamed SMSF\";\n            output.push({\n              name: \"Related SMSF\",\n              content: bdesc\n            });\n          }\n        }\n        if (output.length === 0 && this.get(\"practiceAreaSettings.settings.admin.conflictCheck.requireRelatedEntities\")) {\n          output.push({\n            name: \"Related SMSFs\",\n            content: \"No related SMSFs specified at this stage\"\n          });\n        }\n        otherInformation = otherInformation.concat(output);\n      }\n      if (!(0, _utils.isEmpty)(this.get(\"model.client.conflictCheckExtraInfo\"))) {\n        const conflictCheckExtraInfo = this.get(\"model.client.conflictCheckExtraInfo\");\n        for (let i = 0; i < conflictCheckExtraInfo.length; i++) {\n          if (conflictCheckExtraInfo[i].name) {\n            otherInformation.push({\n              name: conflictCheckExtraInfo[i].name,\n              content: conflictCheckExtraInfo[i].content || \"(not yet provided)\"\n            });\n          }\n        }\n      }\n      return otherInformation;\n    },\n    generateRequestAppointmentPayload(emailClient) {\n      const retval = {\n        client: {\n          id: this.get(\"model.client.clientID\"),\n          title: this.get(\"model.client.title\"),\n          firstName: this.get(\"model.client.firstName\"),\n          middleName: this.get(\"model.client.middleName\"),\n          surname: this.get(\"model.client.surname\"),\n          email: this.get(\"model.client.mostLikelyContactEmail\"),\n          phone: this.get(\"model.client.phone\"),\n          detailedInductionComplete: this.get(\"model.client.detailedInductionComplete\"),\n          preferredLawyer: this.get(\"model.client.preferredLawyer\"),\n          matterReferenceNumber: this.get(\"model.client.matterReferenceNumber\"),\n          practiceArea: this.model.client.practiceArea\n        },\n        sendEmailToClient: emailClient && !!this.get(\"model.client.mostLikelyContactEmail\"),\n        // don't email client if no email address can be found\n        includeResumeLink: !this.get(\"model.client.hasReceivedResumeLinkEmail\"),\n        mockFirmName: this.get(\"model.client.mockFirmName\"),\n        mockFirmLogo: this.get(\"model.client.mockFirmLogo\"),\n        firmID: this.get(\"firm.id\"),\n        practiceArea: this.model.client.practiceArea,\n        multidisciplinary: !!this.get(\"firm.otherSettifyURLs\"),\n        otherInformation: this.generateOtherInformation(),\n        conflictCheckCompleted: !!this.get(\"model.client.conflictCheckTimestamp\"),\n        conflictCheckCanAct: this.get(\"model.client.conflictCheck\") === \"noconflict\",\n        existingLead: this.get(\"model.client.bookedAppointment\")\n      };\n      if (this.get(\"model.client.relatedEntitiesForConflictCheck\")) {\n        retval.otherInformation.push({\n          name: \"Any other related entities\",\n          content: this.get(\"model.client.relatedEntitiesForConflictCheck\")\n        });\n      }\n      if (this.get(\"model.client.invitedByLawFirm\")) {\n        retval.invitedByLawFirm = {\n          stage: \"simpleinduction\",\n          recipients: this.get(\"model.client.notifyUpdates\"),\n          conflictCheckCompleted: this.get(\"model.client.conflictCheck\") === \"noconflict\"\n        };\n      }\n      return retval;\n    },\n    requestAppointment(emailClient = true, invitationStage = null) {\n      const payload = this.generateRequestAppointmentPayload(emailClient);\n      if (invitationStage && this.get(\"model.client.invitedByLawFirm\")) {\n        payload.invitedByLawFirm.stage = invitationStage;\n      }\n\n      // TODO: If we're in \"offline mode\", then the user's data hasn't been saved to DynamoDB\n      // In that case, try just emailing their entire client record to Settify. At least that way\n      // it won't be lost. We can then manually send the \"new client booking\" email to the firm\n      // If sending the email fails, then we should display a message to the user that something\n      // weird has happened, and suggest they download their data.\n\n      // NOTE: This would also be relevant at the end of the detailed induction, as well as\n      // when the client requests an email link or a pathway email, and even when the client\n      // tries to view their separation pathway...\n\n      return this.lambda.invokeWithRetry(this.lambda.emailBookingNotificationLambda, payload, null, 2, response => response && response.success).then(() => {\n        // save the record with updated information\n        this.model.client.set(\"bookedAppointment\", true);\n        if (payload.sendEmailToClient) {\n          this.model.client.set(\"hasReceivedResumeLinkEmail\", true);\n        }\n        return this.model.client.save().then(() => {\n          return this.eventLogging.log(payload.client.id, this.eventLogging.IDs.ReferredToFirm, null, payload.client.practiceArea);\n        });\n      }).then(() => {\n        const calendarPayload = this.generateExpiryCalendarEventPayload(this.model.client);\n        return calendarPayload ? this.lambda.invoke(this.lambda.sendCalendarInviteLambda, calendarPayload) : undefined;\n      });\n    },\n    generateExpiryCalendarEventPayload(storedModel) {\n      const grantExpiryDate = storedModel.get(\"claimWindowExpiryDate\");\n      if (!grantExpiryDate || !grantExpiryDate.year || !grantExpiryDate.month || storedModel.get(\"missedWindow\")) {\n        return;\n      }\n      const instructor = storedModel.get(\"instructor\");\n      const deceased = storedModel.get(\"deceased\");\n      const description = `This calendar appointment diarises the ${storedModel.get(\"claimWindowDuration\")} months since the ${[\"NSW\", \"QLD\"].includes(storedModel.get(\"stateOfApplicationAbbreviated\")) ? `date of deceased's death` : `date of Grant of Probate`}, as advised by ${instructor.firstName}.\\n\\n`;\n      const descriptionExtension = `\n    We recommend confirming this date as soon as possible.\\n\\n\n    Client\n    Name: ${instructor.firstName} ${instructor.surnam ? instructor.surname : \"\"}\n    Phone: ${instructor.phone}\n    Email: ${instructor.email}\n    The deceased: ${storedModel.get(\"deceased\").firstName}`;\n      const firm = storedModel.get(\"firm\");\n      const recipientLines = [`${firm.name} <${firm.contactEmail}>`];\n      const invitationInformation = storedModel.get(\"invitationInformation\");\n      if (storedModel.get(\"invitedByLawFirm\") && invitationInformation && invitationInformation.emailSenderEmail) {\n        recipientLines.push(`${invitationInformation.emailSenderName} <${invitationInformation.emailSenderEmail}>`);\n      }\n      return {\n        organiser: {\n          name: firm.name,\n          email: firm.contactEmail\n        },\n        recipients: recipientLines.join(\", \"),\n        cc: firm.contactEmailCCs,\n        location: firm.name,\n        start: `${grantExpiryDate.year}` + `${this.lpad(`${grantExpiryDate.month}`, 2)}` + `${this.lpad(`${grantExpiryDate.day}`, 2) || \"01\"}`,\n        title: `${instructor.firstName} ${instructor.surname ? instructor.surname : \"\"} - Estate of ${deceased.firstName} ${deceased.surname ? deceased.surname : \"\"}`,\n        description,\n        descriptionExtension,\n        estatesExpiryWarning: true\n      };\n    },\n    lpad(str, len) {\n      console.log(\"Str: \", str);\n      console.log(\"Len: \", len);\n      if (str.length < len) {\n        return this.lpad(`0${str}`, len);\n      }\n      return str;\n    },\n    actions: {\n      nullAction() {\n        this.set(\"highlightRequiredFields\", true);\n      }\n    }\n  });\n});","define(\"settify-mvp/mixins/search-clients\", [\"exports\", \"@ember/runloop\", \"@ember/object\", \"@ember/service\", \"@ember/object/mixin\"], function (_exports, _runloop, _object, _service, _mixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/object/mixin\"eaimeta@70e063a35619d71f\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create({\n    lambda: (0, _service.inject)(),\n    eventLogging: (0, _service.inject)(),\n    searchQuery: null,\n    emailSearchQuery: null,\n    searchResults: null,\n    emailSearchResults: null,\n    nameSearchQuery: null,\n    nameSearchResults: null,\n    noSearchResults: false,\n    onSearchChanged: (0, _object.observer)(\"searchQuery\", \"emailSearchQuery\", \"nameSearchQuery\", function () {\n      const key = arguments[1];\n      (0, _runloop.debounce)(this, \"searchForClient\", key, 500);\n    }),\n    searchForClient(key) {\n      const searchQuery = this.get(key);\n      if (searchQuery && searchQuery.length >= 2) {\n        const payload = {\n          query: searchQuery,\n          practiceArea: this.restrictPracticeAreaTo,\n          invitesOnly: this.invitesOnly\n        };\n        this.eventLogging.adminLog(null, this.eventLogging.adminIDs.clientSearch, searchQuery.length);\n        this.lambda.invoke(this.get(\"lambda.searchClientsLambda\"), payload, this.session).then(this.lambda.processResponse).then(data => {\n          if (key === \"emailSearchQuery\") {\n            this.set(\"emailSearchResults\", data.results);\n          } else if (key === \"nameSearchQuery\") {\n            this.set(\"nameSearchResults\", data.results);\n          } else {\n            this.set(\"searchResults\", data.results);\n          }\n          this.set(\"noSearchResults\", !data.results.length);\n        });\n      } else {\n        this.set(\"searchResults\", null);\n        if (key === \"emailSearchQuery\") {\n          this.set(\"emailSearchResults\", null);\n        } else if (key === \"nameSearchQuery\") {\n          this.set(\"nameSearchResults\", null);\n        }\n        this.set(\"noSearchResults\", false);\n      }\n    }\n  });\n});","define(\"settify-mvp/mixins/select-firm\", [\"exports\", \"rsvp\", \"@ember/runloop\", \"@ember/object/mixin\", \"@ember/object\"], function (_exports, _rsvp, _runloop, _mixin, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"rsvp\",0,\"@ember/runloop\",0,\"@ember/object/mixin\",0,\"@ember/object\"eaimeta@70e063a35619d71f\n  function GetConversionGroupDebouncer() {\n    let PAs = this.selectedFirmPracticeAreaDetails;\n    if (!PAs) {\n      return;\n    }\n    PAs.forEach(pa => {\n      return this.lambda.invoke(this.get(\"lambda.getConversionGroupDetailsLambda\"), {\n        practiceArea: pa.practiceArea,\n        conversionGroup: pa.conversionGroup\n      }).then(this.lambda.processResponse).then(details => {\n        (0, _object.set)(pa, \"conversionGroupDetails\", details.billingOptions);\n        this.set(`conversionGroupDetails${pa.practiceArea}`, details.billingOptions);\n      });\n    });\n  }\n  function LoadFirmDebouncer() {\n    this.loadFirm(this.selectedFirmID);\n  }\n\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create({\n    timezones: [{\n      value: \"Australia/Adelaide\"\n    }, {\n      value: \"Australia/Brisbane\"\n    }, {\n      value: \"Australia/Canberra\"\n    }, {\n      value: \"Australia/Darwin\"\n    }, {\n      value: \"Australia/Hobart\"\n    }, {\n      value: \"Australia/Melbourne\"\n    }, {\n      value: \"Australia/Perth\"\n    }, {\n      value: \"Australia/Sydney\"\n    }, {\n      value: \"Europe/London\"\n    }, {\n      value: \"Pacific/Auckland\"\n    }, {\n      value: \"America/Toronto\"\n    }, {\n      value: \"America/Vancouver\"\n    }, {\n      value: \"America/Edmonton\"\n    }, {\n      value: \"America/Chicago\"\n    }, {\n      value: \"America/New_York\"\n    }],\n    currencies: [{\n      value: \"AUD\"\n    }, {\n      value: \"NZD\"\n    }, {\n      value: \"GBP\"\n    }, {\n      value: \"CAD\"\n    }, {\n      value: \"USD\"\n    }],\n    gstCodes: [{\n      value: \"AU\",\n      label: \"Australia\"\n    }, {\n      value: \"UK\",\n      label: \"UK\"\n    }, {\n      value: \"NZ\",\n      label: \"New Zealand\"\n    }, {\n      value: \"ON\",\n      label: \"Ontario\"\n    }, {\n      value: \"BC\",\n      label: \"British Columbia\"\n    }, {\n      value: \"AB\",\n      label: \"Alberta\"\n    }, {\n      value: \"Scotland\",\n      label: \"Scotland\"\n    }, {\n      value: \"Texas\",\n      label: \"Texas\"\n    }, {\n      value: \"Oklahoma\",\n      label: \"Oklahoma\"\n    }, {\n      value: \"Illinois\",\n      label: \"Illinois\"\n    }, {\n      value: \"Florida\",\n      label: \"Florida\"\n    }],\n    firmSelectOptions: (0, _object.computed)(\"model.firms\", \"model.firms.[]\", function () {\n      let firms = this.get(\"model.firms\");\n      if (firms && firms.length) {\n        return firms.map(e => {\n          return {\n            label: `${e.name} (${e.firmID})`,\n            value: e.firmID\n          };\n        });\n      }\n      return null;\n    }),\n    selectedFirm: (0, _object.computed)(\"selectedFirmID\", \"model.firms\", \"model.firms.@each.firmID\", function () {\n      let firms = this.get(\"model.firms\");\n      if (!firms || !firms.length) {\n        return null;\n      }\n      let {\n        selectedFirmID\n      } = this;\n      let filtered = firms.filter(e => e.firmID === selectedFirmID);\n      if (filtered && filtered.length === 1) {\n        return filtered[0];\n      }\n      return null;\n    }),\n    firmGuesses: (0, _object.computed)(\"searchquery\", \"selectedFirmID\", \"model.firms\", \"model.firms.@each.firmID\", function () {\n      let firms = this.get(\"model.firms\");\n      if (!firms || !firms.length) {\n        return;\n      }\n      let {\n        searchquery\n      } = this;\n      if (!searchquery) {\n        return;\n      }\n      searchquery = searchquery.toLowerCase();\n      let filtered = firms.filter(f => {\n        return f.name && f.name.toLowerCase().includes(searchquery) || f.firmID && f.firmID.toLowerCase().includes(searchquery) || f.billingEntityName && f.billingEntityName.toLowerCase().includes(searchquery);\n      });\n      return filtered;\n    }),\n    onFirmSelected: (0, _object.observer)(\"selectedFirmID\", function () {\n      (0, _runloop.debounce)(this, LoadFirmDebouncer, 50, false);\n    }),\n    loadFirm(id) {\n      if (!id) {\n        this.set(\"selectedFirmGlobalDetails\", null);\n        this.set(\"selectedFirmPracticeAreaDetails\", null);\n        this.set(\"selectedFirmRecurringFees\", null);\n        return (0, _rsvp.resolve)();\n      }\n\n      // detects selected firm id changes across legacy uno admin pages\n      this.cache.write({\n        namespace: \"current\",\n        key: \"firmId\",\n        value: id\n      });\n      this.set(\"searchquery\", id);\n      return this.lambda.invoke(this.lambda.getFirmDetailsLambda, {\n        firmID: id\n      }).then(this.lambda.processResponse).then(details => {\n        this.set(\"selectedFirmGlobalDetails\", details.practiceAreas.filter(e => e.practiceArea === \"global\")[0]);\n        this.set(\"selectedFirmPracticeAreaDetails\", details.practiceAreas.filter(e => e.practiceArea !== \"global\"));\n        this.set(\"selectedFirmRecurringFees\", details.recurringFees);\n      });\n    },\n    onGotFirmDetails: (0, _object.observer)(\"selectedFirmPracticeAreaDetails\", \"selectedFirmPracticeAreaDetails.@each.{firmID,conversionGroup}\", function () {\n      (0, _runloop.debounce)(this, GetConversionGroupDebouncer, 50, false);\n    }),\n    actions: {\n      selectFirm(id) {\n        this.set(\"selectedFirmID\", id);\n        this.set(\"searchquery\", id);\n      }\n    }\n  });\n});","define(\"settify-mvp/mixins/separationpathway-mixin\", [\"exports\", \"@ember/object\", \"@ember/template\", \"@ember/service\", \"@ember/object/mixin\", \"moment\"], function (_exports, _object, _template, _service, _mixin, _moment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/template\",0,\"@ember/service\",0,\"@ember/object/mixin\",0,\"moment\"eaimeta@70e063a35619d71f\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create({\n    lambda: (0, _service.inject)(),\n    today: (0, _moment.default)().format(\"dddd D MMMM YYYY [at] H:mm\"),\n    pathwayHTML: null,\n    retrievePathwayHtml() {\n      let payload = {\n        clientID: this.get(\"model.client.clientID\"),\n        firmID: this.get(\"firm.id\")\n      };\n      return this.lambda.invoke(this.get(\"lambda.generatePathwayLambda\"), payload).then(this.lambda.processResponse).then(HTML => {\n        if (this.isDestroyed || this.isDestroying) {\n          return;\n        }\n        if (!HTML) {\n          throw new Error(`The server returned blank HTML. Payload was ${JSON.stringify(payload, null, 2)}`);\n        }\n        if (!HTML.match) {\n          throw new Error(`Expected an HTML string, but got something else: ${JSON.stringify(HTML, null, 2)}`);\n        }\n        if (HTML.match(\"/<script/i\") || HTML.match(\"/<xss/i\")) {\n          throw new Error(\"The server returned an inappropriate response, which has been discarded for your protection\");\n        }\n        this.set(\"pathwayHTML\", (0, _template.htmlSafe)(HTML));\n      });\n    },\n    pathwayTitle: (0, _object.computed)(\"model.client.helpWanted\", function () {\n      if (this.get(\"model.client.helpWanted\") === \"bfa\") {\n        return \"Pathway to Agreement\";\n      }\n      return \"Separation Pathway\";\n    })\n  });\n});","define(\"settify-mvp/mixins/settify-input-mixin\", [\"exports\", \"@ember/object\", \"@ember/object/mixin\"], function (_exports, _object, _mixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/object/mixin\"eaimeta@70e063a35619d71f\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create({\n    // in case we ever want to add common functionality to settify input classes\n    _mixin_onModelChanged: (0, _object.observer)(\"model\", \"model.length\", function () {\n      this.invokeOnChangeCallback();\n    }),\n    invokeOnChangeCallback() {\n      const callback = this.onChange;\n      if (callback) {\n        callback();\n      }\n    },\n    autoCompleteValue: (0, _object.computed)(\"autoComplete\", \"autocomplete\", function () {\n      if (this.autoComplete === \"off\" || this.autocomplete === \"off\") {\n        const isChrome = /chrome|chromium/i.test(window.navigator.userAgent);\n        return isChrome ? \"chrome-off\" : \"off\";\n      }\n      return \"\";\n    })\n  });\n});","define(\"settify-mvp/mixins/summary-page-mixin\", [\"exports\", \"jquery\", \"rsvp\", \"@ember/object\", \"@ember/runloop\", \"@ember/array\", \"@ember/service\", \"@ember/object/mixin\", \"bowser\", \"uuid\", \"settify-mvp/mixins/violence-order\", \"settify-mvp/mixins/balance-sheet-export\", \"settify-mvp/mixins/chronology-mixin\", \"settify-mvp/mixins/separationpathway-mixin\", \"moment\"], function (_exports, _jquery, _rsvp, _object, _runloop, _array, _service, _mixin, _bowser, _uuid, _violenceOrder, _balanceSheetExport, _chronologyMixin, _separationpathwayMixin, _moment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"jquery\",0,\"rsvp\",0,\"@ember/object\",0,\"@ember/runloop\",0,\"@ember/array\",0,\"@ember/service\",0,\"@ember/object/mixin\",0,\"bowser\",0,\"uuid\",0,\"settify-mvp/mixins/violence-order\",0,\"settify-mvp/mixins/balance-sheet-export\",0,\"settify-mvp/mixins/chronology-mixin\",0,\"settify-mvp/mixins/separationpathway-mixin\",0,\"moment\"eaimeta@70e063a35619d71f\n  const EXTRA_PDF_CSS = \".pdf-only { display: block; }\";\n  /* global saveAs */\n  /* global X2JS */\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create(_violenceOrder.default, _balanceSheetExport.default, _chronologyMixin.default, _separationpathwayMixin.default, {\n    awsService: (0, _service.inject)(),\n    jsonExport: (0, _service.inject)(),\n    renderedMoreInfoStrings: (0, _service.inject)(),\n    config: (0, _service.inject)(\"dynamic-config\"),\n    firm: (0, _service.inject)(),\n    store: (0, _service.inject)(),\n    eventLogging: (0, _service.inject)(),\n    lawyerList: (0, _service.inject)(),\n    lambda: (0, _service.inject)(),\n    addAnotherAsset: false,\n    addAnotherLiability: false,\n    showHowToReadSummary: false,\n    showKeepMeNotified: false,\n    allowRemovalOfLawyerRecipients: false,\n    preDeterminedRecipients: false,\n    emailMessage: null,\n    pageLoaded: false,\n    emailToType: null,\n    emailErrorMessage: null,\n    recipients: (0, _array.A)(),\n    documentsSelected: {},\n    fileTypeExplanationRaw: [{\n      document: \"PDF\",\n      explanation: `The client brief, setting out the client’s instructions in a professionally formatted PDF document.`,\n      shortExplanation: `Client brief (PDF format)`\n    }, {\n      document: \"Word\",\n      explanation: `Settify Word documents are an editable version of the client brief, which you can use as a living document throughout the matter.\n      Correct any client typos and add further information to perfect your file note. Then you can save a version as an up to date aide-memoire for the matter.`,\n      shortExplanation: `Client brief (Word format)`\n    }, {\n      document: \"Excel\",\n      explanation: `Settify prepares a schedule of the parties’ assets and liabilities in Excel. Instantly calculate the total property pool,\n       model overall outcomes, and even generate a detailed ‘effect of orders’ by allocating which party would keep what asset.\n       Use it in initial meetings, send a copy to financially savvy clients, or have it as a powerful calculator for negotiations, mediations and conciliations.`,\n      shortExplanation: `Asset schedule (Excel format)`\n    }, {\n      document: \"Balance Sheet\",\n      explanation: `The Joint Balance Sheet in court-approved format, pre-filled with the information provided by your client.\n      It is an Excel spreadsheet, which means that all the totals and sub-totals are automatically updated whenever any value changes.\n      You can edit it, exchange it with the other side, and when it is complete, simply ‘save as a PDF’.`,\n      shortExplanation: `Balance sheet (Excel format)`\n    }, {\n      document: \"CSV\",\n      explanation: `Settify CSV files are a bare extract of the client's assets and liabilities, which can be opened in Excel or any other spreadsheet software.\n      Ask your IT team to feed the data into your Practice Management System, or use this document to conduct your own calculations in accordance with the needs of the matter.`,\n      shortExplanation: `Client information (CSV format)`\n    }, {\n      document: \"Chronology\",\n      explanation: `The Settify chronology can be exported to a Word document, which you can use as the starting point for your matter.\n      It exports without styles, headers or footers, so that you can easily apply your firm's styles over the top.`,\n      shortExplanation: `Chronology (Excel format)`\n    }, {\n      document: \"FilePro\",\n      explanation: `The contact details for the client and their partner can be downloaded to your computer, and then be imported into FilePro as a new contact using the Settify Contact Import feature.`,\n      shortExplanation: `Filepro export`\n    }, {\n      document: \"XML\",\n      explanation: `Settify XML files are a computer-readable format, used for importing data directly into a practice management system or similar. You won't have a lot of fun trying to read this yourself.`\n    }, {\n      document: \"JSON\",\n      explanation: `Settify JSON files are a computer-readable format, used for importing data directly into a practice management system or similar. You won't have a lot of fun trying to read this yourself.`\n    }, {\n      document: \"Compare\",\n      explanation: `The client comparison brief, setting out the client’s instructions in a professionally formatted PDF document with changes highlighted.`,\n      shortExplanation: `Client comparison (PDF format)`\n    }, {\n      document: \"Uploaded Documents\",\n      explanation: `The documents that a client was requested to upload to Settify or they believed to be relevant to the matter. This only includes documents that have not expired.`,\n      shortExplanation: `Client uploads`\n    }],\n    // TEMP: hard code the template list for now\n    // automationTemplates: [\n    //   {\n    //     document: \"Test template\",\n    //     explanation: \"This is a very simple template that simply populates the client's first name and surname\",\n    //     filename: \"docxtemplater-test.docx\",\n    //     shortExplanation: \"Test template\",\n    //   },\n    // ],\n\n    reset() {\n      this._super(...arguments);\n      this.clearForcedEdits();\n      this.renderedMoreInfoStrings.reset();\n      this.set(\"showInvitationEmailHistory\", false);\n      this.set(\"showHowToReadSummary\", false);\n      this.set(\"showKeepMeNotified\", false);\n      this.set(\"showDownloadAllOptions\", false);\n      this.set(\"uploadedClientDocs\", []);\n      this.set(\"pageLoaded\", false);\n      this.resetAfterSendingOrDownloading();\n    },\n    afterModel(model) {\n      this._super(...arguments);\n      this.setMoreInfoStrings(model);\n      this.set(\"addAnotherAsset\", false);\n      this.set(\"addAnotherLiability\", false);\n      const documentsSelected = {\n        PDF: true\n      };\n      if (this.model?.practiceAreaSettings?.settings?.admin?.allowWordDownload) {\n        documentsSelected.Word = true;\n      }\n      // if (this.model?.practiceAreaSettings?.settings?.admin?.allowExcelDownload) {\n      //   documentsSelected.Excel = true;\n      // }\n      // if (this.model?.practiceAreaSettings?.settings?.admin?.allowFileProDownload) {\n      //   documentsSelected.FilePro = true;\n      // }\n      // TODO: Exports should check form.integrationObject exists before show as available\n      if (this.model?.practiceAreaSettings?.settings?.admin?.allowXMLDownload) {\n        documentsSelected.XML = true;\n      }\n      if (this.model?.practiceAreaSettings?.settings?.admin?.allowJSONDownload) {\n        documentsSelected.JSON = true;\n      }\n      if (this.opendownloads === \"true\") {\n        this.send(\"toggleDownloadAllOption\");\n      }\n      if (this.model?.practiceAreaSettings?.settings?.admin?.enableDocxTemplates && this.automationTemplates) {\n        this.set(\"fileTypeExplanation\", this.fileTypeExplanationRaw.concat(this.automationTemplates));\n        this.automationTemplates.forEach(t => documentsSelected[t.document] = true);\n      } else {\n        this.set(\"fileTypeExplanation\", this.fileTypeExplanationRaw);\n      }\n      this.store.findRecord(\"catalogue\", model.client.id).then(catalogue => {\n        if (catalogue?.documents && !this.isDestroyed && !this.isDestroying) {\n          const filteredDocuments = catalogue.documents.filter(document => {\n            // filter out any expired documents\n            const expiryTime = new Date(document.expiryDate).getTime();\n            return Date.now() < expiryTime;\n          });\n          if (filteredDocuments && filteredDocuments.length) {\n            this.set(\"uploadedClientDocs\", filteredDocuments);\n          }\n        }\n      });\n      (0, _runloop.next)(() => {\n        this.set(\"documentsSelected\", documentsSelected);\n      });\n\n      // test if any of the 'other priorities' have been set\n      const ps = this.model?.client?.otherPriorities;\n      this.set(\"hasOtherPriorities\", false);\n      for (const key in ps) {\n        if (Object.prototype.hasOwnProperty.call(ps, key)) {\n          if (ps[key]) {\n            this.set(\"hasOtherPriorities\", true);\n            break;\n          }\n        }\n      }\n\n      // Call function to retreive Separation Pathway from separationpathway-mixin\n      this.retrievePathwayHtml();\n\n      // test if this client has a wills link, and get the status of that\n      if (this.get(\"model.client.willsConnection\")) {\n        let connection = this.get(\"model.client.willsConnection\");\n        if (connection.firmID === this.get(\"firm.id\")) {\n          let payload = {\n            firmID: this.get(\"firm.id\"),\n            clientID: this.get(\"model.client.willsConnection.clientID\")\n          };\n          this.set(\"loadingWillsMetadata\", true);\n          this.lambda.invoke(this.get(\"lambda.getClientMetadataLambda\"), payload).then(this.lambda.processResponse).then(metadata => {\n            this.set(\"loadingWillsMetadata\", false);\n            this.set(\"willsConnectionMetadata\", metadata);\n          });\n        }\n      }\n    },\n    moreinfoObserver: (0, _object.observer)(\"model.client.isSaving\", function /* sender, key, value, rev */\n    () {\n      this.setMoreInfoStrings(this.model);\n    }),\n    setMoreInfoStrings(model) {\n      if (model && model.client && typeof model.client !== \"string\") {\n        const moreinfo = model.client.getNonEmptyMap(\"moreInfoStrings\");\n        this.set(\"assetKnowledgeInfo\", moreinfo[\"d-assetknowledge\"]);\n        this.set(\"assetListInfo\", moreinfo[\"d-assetlist\"]);\n        this.set(\"liabilityListInfo\", moreinfo[\"d-liabilitylist\"]);\n        this.set(\"assetQuantityInfo\", moreinfo[\"a-finance\"]);\n        this.set(\"clientInitialContributionsInfo\", moreinfo[\"d-initialcontributions\"]);\n        this.set(\"clientInitialLiabilitiesInfo\", moreinfo[\"d-initialliabilities\"]);\n        this.set(\"spouseInitialContributionsInfo\", moreinfo[\"d-initialspousecontributions\"]);\n        this.set(\"spouseInitialLiabilitiesInfo\", moreinfo[\"d-initialspouseliabilities\"]);\n        this.set(\"externalContributionsInfo\", moreinfo[\"d-contributionsexternal\"]);\n        this.set(\"disposalsInfo\", moreinfo[\"d-disposal\"]);\n        this.set(\"acquisitionsInfo\", moreinfo[\"d-contributionspost\"]);\n      }\n    },\n    clearForcedEdits() {\n      this.set(\"forceIndexAssets\", null);\n      this.set(\"forceEditAssets\", null);\n      this.set(\"forceIndexLiabilities\", null);\n      this.set(\"forceEditLiabilities\", null);\n    },\n    getDocumentCSS() {\n      let cssRules = \"\";\n      const sheets = document.styleSheets;\n      if (sheets) {\n        for (let i = 0; i < sheets.length; i++) {\n          if (sheets[i].href && sheets[i].href.match && sheets[i].href.match(/settify-mvp/)) {\n            const rules = sheets[i].cssRules ? sheets[i].cssRules : sheets[i].rules;\n            if (rules) {\n              for (let j = 0; j < rules.length; j++) {\n                // work around pesky IE bug that doesn't allow you to even access the rule text if it contains webkit keyframes\n                // https://connect.microsoft.com/IE/feedback/details/955703/accessing-csstext-of-a-keyframe-rule-that-contains-a-webkit-property-via-cssom-generates-exception\n                try {\n                  if (rules[j].cssText) {\n                    cssRules += `${rules[j].cssText}\\n`;\n                  }\n                } catch (e) {\n                  console.log(\"Unable to extract CSS text from the rule\");\n                }\n              }\n            }\n          }\n        }\n      }\n      return cssRules;\n    },\n    generateHTMLSummary(clientName, alternativeID = null, extraCss = \"\") {\n      return new _rsvp.Promise((resolve, reject) => {\n        (0, _runloop.next)(() => {\n          const isPDF = extraCss === EXTRA_PDF_CSS;\n          // eslint-disable-next-line ember/no-jquery\n          const $node = (0, _jquery.default)(`#${alternativeID || \"settify-summary-content\"}`); // jQuery object of node to be cloned\n          let hiddenEls;\n          if (isPDF) {\n            hiddenEls = $node.find(`:hidden:not(.pdf-only, .pdf-include)`);\n            // We also need to make sure any of the els parents don't have pdf-only or pdf-include\n            hiddenEls = hiddenEls.filter((_, el) => {\n              // eslint-disable-next-line ember/no-jquery\n              const parents = (0, _jquery.default)(el).parents(\".pdf-include, .pdf-only\");\n              return parents.length === 0;\n            });\n          } else {\n            hiddenEls = $node.find(`:hidden`);\n          }\n          hiddenEls.addClass(\"markedForRemoval\");\n          const el = $node.clone();\n          el.find(\".markedForRemoval\").remove();\n          // tidy up\n          $node.find(\".markedForRemoval\").removeClass(\"markedForRemoval\");\n          const css = this.getDocumentCSS();\n          if (el && css) {\n            let html = el.html();\n            // remove forced height information added by Liquid Fire\n            html = html.replace(/style=\"overflow: hidden; height: [0-9]+px;\"/g, 'style=\"overflow: hidden;\"');\n\n            // remove contracted summary tags\n            html = html.replace(/summary-contracted/g, \"\");\n            const specialCSS = `\n          body {\n            background: transparent;\n            -webkit-font-smoothing: none !important;\n          }\n          .fa-pencil {\n            display: none !important;\n          }\n          ins {\n            background-color: #e1e1f8 !important;\n            color: #4a6fb8 !important;\n            text-decoration: underline;\n            text-decoration-line: underline;\n            text-decoration-style: double;\n          }\n          ins:before {\n            background-color: #4a6fb8;\n            width: 2px;\n            height: 1em;\n            content: \" \";\n            display: inline-block;\n            position: absolute;\n            left: 0px;\n          }\n          del {\n            background-color: #fbe7e7 !important;\n            color: red !important;\n            text-decoration: line-through;\n          }\n          del:before {\n            background-color: red;\n            width: 2px;\n            height: 1em;\n            content: \" \";\n            display: inline-block;\n            position: absolute;\n            left: 4px;\n          }\n          body, table, p, li, tr {\n            font-weight: 300;\n          }\n          html, body, p, table, tr, td, th, div, b, li, .summary-appendix-content,\n          .summary-appendix-content div, .summary-appendix-content.div, label, input,\n          h1, h2, h3, h4, h5, h6 {\n            -webkit-font-smoothing: none !important;\n            font-size: 12px;\n            margin-bottom: 2px;\n            line-height: 14px;\n            font-family: 'Lato';\n          }\n          table {\n            border-spacing: 0px 0px;\n            border-collapse: collapse;\n          }\n          table, tr, td, th, tbody, thead, tfoot {\n            page-break-inside: auto !important;\n          }\n          .keep-together {\n            page-break-inside: avoid !important;\n          }\n          b, p b {\n            font-family: 'Lato';\n            font-weight: bold;\n          }\n          .contracted-clickarea {\n            display: none;\n          }\n          .condensed-summary h1 {\n            padding: 10px;\n          }\n          .banner-title {\n            padding: 10px !important;\n          }\n          .pdf-exclude {\n            display: none;\n          }\n          .pdf-include {\n            display: inline-block !important;\n          }\n          table.summary-question-container tr {\n            width: 100%;\n            border: none !important;\n            width: 100%;\n          }\n          .documents-required-feedback {\n            padding-bottom: 8px;\n          }\n          `;\n            const output = `\n          <html>\n          <head>\n          <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n          <link href='https://fonts.googleapis.com/css?family=Lato:300,400,900' rel='stylesheet' type='text/css'>\n          <!-- Font Awesome Icons -->\n          <script src=\"https://kit.fontawesome.com/ba16d22322.js\" crossorigin=\"anonymous\"></script>\n          <style>${css}${specialCSS}${extraCss}</style></head>\\n<body>\\n${html}<script type=\"text/javascript\">\n          //setting up headers and footers for html2pdf\n          let html2pdf = {\n          footer: {\n            height: \"5cm\",\n            contents: '<div style=\"height: 150px; border-top: 1px solid #CCCCCC; margin-top: 6px; padding-top: 3px; color: #666;\"><span style=\"float:left;\">Notes:</span><span style=\"float:right\">Client Record &mdash; ${clientName} &mdash; Page {{pageNumber}} of {{totalPages}}</span></div>'\n          }\n          };\n          </script>` + `</body></html>`;\n            const filename = `${(0, _uuid.v4)()}.html`;\n            resolve({\n              name: filename,\n              contents: output\n            });\n          } else {\n            this.eventLogging.logError(\"Unable to extract HTML for client file.\", null, {\n              css: !!css,\n              element: !!el\n            });\n            reject(\"Unable to extract HTML for client file.\");\n          }\n        });\n      });\n    },\n    savePDFToServer(/* filename, htmlSource */\n    ) {\n      this.eventLogging.logError(\"Deprecated: Unable to save PDF to server\");\n      return (0, _rsvp.reject)(\"Deprecated: Unable to save PDF to server\");\n    },\n    downloadViaBuffer(buffer, fileName) {\n      fileName = fileName.replace(/['\"]/g, \"\");\n      const blob = new Blob([buffer], {\n        type: \"application/text;charset=utf-8\"\n      });\n      saveAs(blob, fileName);\n    },\n    downloadViaURL(url, method, json) {\n      if (_bowser.default.osname === \"iOS\") {\n        // on iOS, we can't use the saveAs function, because it uses FileSaver, which doesn't work on iOS\n        // https://github.com/eligrey/FileSaver.js/issues/494\n        window.location.href = url;\n        return;\n      }\n\n      // we're not on iOS, so we can use saveAs\n      // This is handy for several reasons:\n      // - some of our download functions must be POSTed, so we can't just open them in a new window\n      // - doing it this way means we don't have to open a new window, so we don't get attacked by popup blockers\n      return new _rsvp.Promise((resolve, reject) => {\n        const xhr = new XMLHttpRequest();\n        // set the request type to post and the destination url\n        xhr.open(method, url);\n        xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n        xhr.setRequestHeader(\"Accept\", \"application/json\");\n        // set the reponse type to blob since that's what we're expecting back\n        xhr.responseType = \"blob\";\n        xhr.onreadystatechange = function () {\n          if (this.readyState === this.DONE) {\n            if (this.status === 200 && this.status < 300) {\n              let filename = \"Downloaded file\";\n              // Create a new Blob object using the response data of the onload object\n              const blob = new Blob([this.response], {\n                type: \"application/text;charset=utf-8\"\n              });\n              const disposition = xhr.getResponseHeader(\"Content-Disposition\");\n              if (disposition && disposition.indexOf(\"attachment\") !== -1) {\n                const filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\n                const matches = filenameRegex.exec(disposition);\n                if (matches != null && matches[1]) {\n                  filename = matches[1].replace(/['\"]/g, \"\");\n                }\n              }\n              saveAs(blob, filename);\n              resolve(this.response);\n            } else {\n              reject(new Error(`sendRequest: \\`${url}\\` failed with status: [${this.status}]`));\n            }\n          }\n        };\n        xhr.send(JSON.stringify(json));\n      });\n    },\n    htmlDataToJSON() {\n      const json = {\n        assets: [],\n        superannuation: [],\n        liabilities: []\n      };\n      const rows = document.getElementById(\"settify-summary-content\").querySelectorAll(\".asset-row, .super-row, .liability-row\");\n      for (let i = 0; i < rows.length; i++) {\n        let name = rows[i].children[0] ? rows[i].children[0].innerText.replace(/(\\r\\n|\\n|\\r)/gm, \" \") : undefined;\n        let owner = rows[i].children[1] ? rows[i].children[1].innerText.replace(/(\\r\\n|\\n|\\r)/gm, \" \") : undefined;\n        let value = rows[i].children[2] ? rows[i].children[2].innerText.replace(/[^0-9.-]+/g, \"\") : undefined;\n        let confidence = rows[i].getElementsByClassName(\"confidence-display\")[0] ? rows[i].getElementsByClassName(\"confidence-display\")[0].dataset.value : undefined;\n\n        // some row types don't have additional information that would be useful in a spreadsheet\n        if (rows[i].id === \"trust\" || rows[i].id === \"other-assets\") {\n          if (rows[i].id === \"other-assets\") {\n            // \"owner\" is just column 2, which here is a description of the 'other assets'\n            name += owner ? ` (${owner})` : \"\";\n          }\n          owner = undefined;\n          value = undefined;\n          confidence = undefined;\n        }\n\n        // some information is useful in a summary PDF, but not useful in a spreadsheet\n        if (owner === \"Not specified\" || owner === \"Unknown\") {\n          owner = \"\";\n        }\n        if (rows[i].classList.contains(\"asset-row\")) {\n          const asset = {\n            assetName: name ?? \"\",\n            assetOwner: owner ?? \"\",\n            assetValue: value ?? \"\",\n            assetConfidence: confidence ?? \"\"\n          };\n          json.assets.push(asset);\n        } else if (rows[i].classList.contains(\"super-row\")) {\n          const superannuation = {\n            superName: name ?? \"\",\n            superOwner: owner ?? \"\",\n            superValue: value ?? \"\",\n            superConfidence: confidence ?? \"\"\n          };\n          json.superannuation.push(superannuation);\n        } else {\n          const liabilities = {\n            liabilityName: name ?? \"\",\n            liabilityOwner: owner ?? \"\",\n            liabilityValue: value ?? \"\",\n            liabilityConfidence: confidence ?? \"\"\n          };\n          json.liabilities.push(liabilities);\n        }\n      }\n      const totalNonSuperannuationAssets = document.getElementById(\"total-non-superannuation-assets\") ? document.getElementById(\"total-non-superannuation-assets\").children[1].innerText.replace(/[^0-9.-]+/g, \"\") : undefined;\n      const totalSuperannuationAssets = document.getElementById(\"total-non-superannuation-assets\") ? document.getElementById(\"total-superannuation-assets\").children[1].innerText.replace(/[^0-9.-]+/g, \"\") : undefined;\n      const totalAssets = document.getElementById(\"total-non-superannuation-assets\") ? document.getElementById(\"total-assets\").children[1].innerText.replace(/[^0-9.-]+/g, \"\") : undefined;\n      const totalLiabilities = document.getElementById(\"total-liabilities\") ? document.getElementById(\"total-liabilities\").children[1].innerText.replace(/[^0-9.-]+/g, \"\") : undefined;\n      json.totalNonSuperannuationAssets = totalNonSuperannuationAssets ? Number(totalNonSuperannuationAssets) : undefined;\n      json.totalSuperannuationAssets = totalSuperannuationAssets ? Number(totalSuperannuationAssets) : undefined;\n      json.totalAssets = totalAssets ? Number(totalAssets) : undefined;\n      json.totalLiabilities = totalLiabilities ? Number(totalLiabilities) : undefined;\n      json.preformatted = true;\n      json.netNonSuperannuationAssets = typeof json.totalNonSuperannuationAssets !== \"undefined\" && typeof json.totalLiabilities !== \"undefined\" ? json.totalNonSuperannuationAssets - json.totalLiabilities : undefined;\n      json.netAssets = typeof json.totalAssets !== \"undefined\" && typeof json.totalLiabilities !== \"undefined\" ? json.totalAssets - json.totalLiabilities : undefined;\n      return json;\n    },\n    setNewLawyer(recipients) {\n      // Check for new lawyers, if there is someone new, set lawyerName and lawyerEmail appropriately so\n      // we can save them later in lawyerList\n      for (let i = 0; i < recipients.length; i++) {\n        if (!this.isLawyerAlreadyDefined(recipients[i])) {\n          this.setProperties({\n            lawyerName: recipients[i].lawyerName,\n            lawyerEmail: recipients[i].lawyerEmail\n          });\n        }\n      }\n    },\n    isLawyerAlreadyDefined(recipient) {\n      return this.lawyerList?.list?.any(lawyer => lawyer.email === recipient.lawyerEmail && lawyer.name === recipient.lawyerName);\n    },\n    resetAfterSendingOrDownloading() {\n      this.set(\"showDownloadStatus\", false);\n      this.set(\"downloadInProgress\", false);\n      this.set(\"showLoadingSpinner\", false);\n      this.set(\"showDownloadOptions\", {});\n      this.set(\"emailMessage\", null);\n      // this.set('recipients', []);\n      this.set(\"allowRemovalOfLawyerRecipients\", false);\n      this.set(\"lawyerName\", null);\n      this.set(\"lawyerEmail\", null);\n      this.set(\"buildingAppendices\", false);\n    },\n    prepareForSendingOrDownloading() {\n      this.set(\"recipients\", []);\n      this.set(\"showKeepMeNotified\", false);\n      this.set(\"showHowToReadSummary\", false);\n      const emptyRecipient = _object.default.create({\n        lawyerName: undefined,\n        lawyerEmail: this.preDeterminedRecipients ? this.model?.client?.email : undefined,\n        lawyerBCCs: undefined,\n        lawyerCCs: undefined,\n        lawyerBio: undefined,\n        lawyerReadMoreURL: undefined,\n        lawyerPhotoURL: undefined\n      });\n      this.recipients.pushObject(emptyRecipient);\n      this.checkNamesForPiracy();\n    },\n    augmentJSONPayloadForEmailing(json, emailMessage) {\n      this.setNewLawyer(this.recipients);\n\n      // If there are recipients with same email address filter them\n      const uniqRecipients = this.recipients.uniqBy(\"lawyerEmail\");\n\n      // Map recipients by email\n      const recipientsEmails = uniqRecipients.mapBy(\"lawyerEmail\");\n      const recipientsCCs = uniqRecipients.mapBy(\"lawyerCCs\");\n      const recipientsBCCs = uniqRecipients.mapBy(\"lawyerBCCs\");\n\n      // Concat CCs/BCCs and filter undefined or null values if exists and trim whitespace\n      json.ccs = [].concat(...recipientsCCs).filter(email => email).map(email => email.trim());\n      json.bccs = [].concat(...recipientsBCCs).filter(email => email).map(email => email.trim());\n\n      // Set email note and recipients to json payload which will be sento to emailserver app\n      json.emailMessage = emailMessage;\n      json.recipients = recipientsEmails.map(email => email.trim());\n\n      // Set sendFileViaEmail to know on emailserver that we want to send email and not directly download file\n      json.sendFileViaEmail = true;\n    },\n    invokeDocumentLambda(emailFile, downloadName, payload, lambdaName) {\n      return new _rsvp.Promise((resolve, reject) => {\n        this.lambda.invoke(this.get(`lambda.${lambdaName}`), payload).then(this.lambda.processResponse).then(data => {\n          if (data.status && data.status === 500) {\n            reject(\"Error generating document\");\n          } else if (!emailFile) {\n            resolve(this.downloadViaBuffer(data, decodeURIComponent(downloadName)));\n          } else {\n            resolve(data);\n          }\n        }).catch(err => {\n          reject(err);\n        });\n      });\n    },\n    downloadPDFFile(emailFile, filenameExtra, targetSection) {\n      const displayName = this.getDisplayName();\n      const downloadName = this.getDownloadName(displayName, filenameExtra, \"pdf\");\n      return this.generateHTMLSummary(displayName, targetSection, EXTRA_PDF_CSS).then(file => {\n        const payload = {\n          bucket: null,\n          key: null,\n          htmlContent: file.contents,\n          displayName: displayName,\n          clientID: this.model?.client?.clientID,\n          firmID: this.model?.client?.firmID\n        };\n        if (emailFile) {\n          payload.bucket = this.config?.settings?.Buckets?.clientdocuments;\n          if (this.session?.isAuthenticated && this.session?.data?.authenticated?.adminUser) {\n            const lawFirmPoolID = this.config?.settings?.adminIdentityPoolID;\n            payload.key = `tmp/${lawFirmPoolID}/${downloadName}`;\n          } else {\n            const clientPoolID = this.config?.settings?.UnauthIdentityPool;\n            const userIdentityID = this.awsService.getConfigCredentialsIdentity();\n            payload.key = `tmp/${clientPoolID}/${userIdentityID}/${downloadName}`;\n          }\n        }\n        return this.invokeDocumentLambda(emailFile, downloadName, payload, \"htmltopdfLambda\").then(() => ({\n          Bucket: payload.bucket,\n          Key: payload.key,\n          Filename: downloadName\n        }));\n      }).catch(error => {\n        // TODO: handle errors here\n        this.eventLogging.logError(\"Couldn't download PDF\", error);\n        alert(\"An error occurred, and we were unable to generate the PDF for you. Please try again, and if that fails, please contact Settify Support. We apologise for any inconvenience\");\n      });\n    },\n    downloadExcelOrCSV(emailFile, excel) {\n      // Create a JSON payload from HTML\n      const json = this.htmlDataToJSON();\n\n      // set firm name so it can be baked into the xlsx file\n      json.firmName = this.firm?.name;\n      json.userName = this.model?.client?.firstName;\n      json.userSurname = this.model?.client?.surname;\n      json.displayName = json.userSurname ? `${json.userSurname.toUpperCase()}, ${json.userName}` : json.userName;\n      json.spouseName = this.model?.client?.partnerFirstName;\n      json.spouseSurname = this.model?.client?.partnerSurname;\n      json.clientID = this.model?.client?.clientID;\n      json.firmID = this.model?.client?.firmID;\n      let downloadName = this.getDownloadName(json.displayName, \"- Property Pool Calculator\", \"xlsx\");\n      let functionName = \"createspreadsheetLambda\";\n      if (!excel) {\n        downloadName = this.getDownloadName(json.displayName, \"- Property Pool\", \"csv\");\n        functionName = \"createcsvLambda\";\n      }\n      if (emailFile) {\n        const lawFirmPoolID = this.config?.settings?.adminIdentityPoolID;\n        json.bucket = this.config?.settings?.Buckets?.clientdocuments;\n        json.key = `tmp/${lawFirmPoolID}/${downloadName}`;\n      }\n      return this.invokeDocumentLambda(emailFile, downloadName, json, functionName).then(() => ({\n        Bucket: json.bucket,\n        Key: json.key,\n        Filename: downloadName\n      }));\n    },\n    downloadWordFile(emailFile, summaryID = null) {\n      const displayName = this.getDisplayName();\n      const downloadName = this.getDownloadName(displayName, \"\", \"docx\");\n      return this.generateHTMLSummary(null, summaryID).then(json => {\n        const payload = {\n          bucket: null,\n          key: null,\n          htmlContent: json.contents,\n          displayName: displayName,\n          clientID: this.model?.client?.clientID,\n          firmID: this.model?.client?.firmID,\n          source: summaryID === \"condensed-blueprint-output\" ? \"formBlueprints\" : null\n        };\n        if (emailFile) {\n          const lawFirmPoolID = this.config?.settings?.adminIdentityPoolID;\n          payload.bucket = this.config?.settings?.Buckets?.clientdocuments;\n          payload.key = `tmp/${lawFirmPoolID}/${downloadName}`;\n        }\n        return this.invokeDocumentLambda(emailFile, downloadName, payload, \"htmltodocxLambda\").then(() => ({\n          Bucket: payload.bucket,\n          Key: payload.key,\n          Filename: downloadName\n        })).catch(error => {\n          // TODO: handle errors here\n          this.eventLogging.logError(`Couldn't ${payload.sendFileViaEmail ? \"email\" : \"download\"} document via AWS`, error);\n          alert(`An error occurred, and we were unable to generate the Word document for you. Please try again, and if that fails, please contact Settify Support. We apologise for any inconvenience`);\n        });\n      });\n    },\n    downloadFilePro(emailFile, filenameExtra) {\n      const displayName = this.getDisplayName();\n      const downloadName = this.getDownloadName(displayName, filenameExtra, \"json\");\n\n      // FilePro expect the output to contain an attributes field\n      const attributes = this.generateAttributesForExport();\n      const jsonAsStr = JSON.stringify({\n        id: attributes[\"client-id\"],\n        attributes: attributes,\n        type: \"clients\"\n      }, null, 2);\n      const blob = new Blob([jsonAsStr], {\n        type: \"application/json;charset=utf-8\"\n      });\n\n      // Are we emailing or downloading?\n      if (emailFile) {\n        // Upload json to S3 bucket\n        const bucketName = this.config?.settings?.Buckets?.clientdocuments;\n        const lawFirmPoolID = this.config?.settings?.adminIdentityPoolID;\n        const keyName = `tmp/${lawFirmPoolID}/${downloadName}`;\n        return this.uploadRawFileData(bucketName, keyName, blob, \"application/json\").then(() => {\n          // return the bucket information to send in an email\n          return {\n            Bucket: bucketName,\n            Key: keyName,\n            Filename: downloadName\n          };\n        }).catch(error => {\n          this.eventLogging.logError(\"Couldn't upload FilePro to AWS\", error);\n          alert(\"An error occurred, and we were unable to generate the FilePro document for you. Please try again, and if that fails, please contact Settify Support. We apologise for any inconvenience\");\n        });\n      }\n      saveAs(blob, downloadName);\n    },\n    downloadBalanceSheet(emailFile) {\n      const displayName = this.getDisplayName();\n      const downloadName = this.getDownloadName(displayName, \"- Balance Sheet\", \"xlsx\");\n\n      // Create a JSON payload from HTML\n      let json = this.htmlDataToJSON();\n      json.user = {\n        firstName: this.get(\"model.client.firstName\"),\n        surname: this.get(\"model.client.surname\")\n      };\n      json.spouse = {\n        firstName: this.get(\"model.client.partnerFirstName\"),\n        surname: this.get(\"model.client.partnerSurname\")\n      };\n      // json = {...json, user: {\n      //   firstName: this.get('model.client.firstName'),\n      //   surname: this.get('model.client.surname')\n      //   },\n      //   spouse: {\n      //     firstName: this.get('model.client.partnerFirstName'),\n      //     surname: this.get('model.client.partnerSurname')\n      //   }\n      // }\n\n      return this.exportBalanceSheetToExcel(json).then(datablob => {\n        // Are we emailing or downloading?\n        if (emailFile) {\n          // Upload json to S3 bucket\n          const bucketName = this.get(\"config.settings.Buckets.clientdocuments\");\n          const lawFirmPoolID = this.get(\"config.settings.adminIdentityPoolID\");\n          let keyName = `tmp/${lawFirmPoolID}/${downloadName}`;\n          return this.uploadRawFileData(bucketName, keyName, datablob, \"application/vnd.openxmlformats-officedocument.spreadsheetml.template\").then(() => {\n            // return the bucket information to send in an email\n            return {\n              Bucket: bucketName,\n              Key: keyName,\n              Filename: downloadName\n            };\n          }).catch(error => {\n            this.eventLogging.logError(\"Couldn't download upload FilePro to AWS\", error);\n            alert(\"An error occurred, and we were unable to generate the FilePro document for you. Please try again, and if that fails, please contact Settify support. We apologise for any inconvenience\");\n          });\n        }\n        saveAs(datablob, downloadName);\n      });\n    },\n    downloadClientUploads(emailFile, uploadObject) {\n      return new _rsvp.Promise(resolve => {\n        if (emailFile) {\n          // Just return the bucket information to send in an email\n          resolve({\n            Bucket: this.config?.settings?.Buckets?.clientdocuments,\n            Key: uploadObject.S3Key,\n            Filename: uploadObject.fileName\n          });\n        } else {\n          // Download file then mark as download in SQL table\n          this.downloadUserUpload(uploadObject);\n          resolve();\n        }\n      });\n    },\n    downloadAutomationFile(emailFile, template) {\n      const displayName = this.getDisplayName();\n      const downloadName = this.getDownloadName(displayName, template.document, \"docx\");\n      return this.lambda.invoke(this.lambda?.docxTemplaterLambda, {\n        firmID: this.firm.id,\n        clientID: this.model?.client?.clientID,\n        template: template.filename,\n        context: {\n          today: (0, _moment.default)().format(\"D MMMM YYYY\"),\n          firm: this.firm\n        }\n      }).then(this.lambda.processResponse).then(data => {\n        const blob = new Blob([data], {\n          type: \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"\n        });\n        if (emailFile) {\n          // Upload json to S3 bucket\n          const bucketName = this.config?.settings?.Buckets?.clientdocuments;\n          const lawFirmPoolID = this.config?.settings?.adminIdentityPoolID;\n          const keyName = `tmp/${lawFirmPoolID}/${downloadName}`;\n          return this.uploadRawFileData(bucketName, keyName, blob, \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\").then(() => {\n            // return the bucket information to send in an email\n            return {\n              Bucket: bucketName,\n              Key: keyName,\n              Filename: downloadName\n            };\n          }).catch(error => {\n            this.eventLogging.logError(`Couldn't upload ${template.document} to AWS`, error);\n            alert(`An error occurred, and we were unable to generate the ${template.document} document for you. Please try again, and if that fails, please contact Settify Support. We apologise for any inconvenience`);\n          });\n        }\n        saveAs(blob, downloadName);\n      });\n    },\n    wrapForXML(isXML, itemName, list, includeIt) {\n      if (!includeIt) {\n        list = [];\n      }\n      if (!isXML) {\n        return list;\n      } else if (!list || !list.length) {\n        return [];\n      }\n      const output = {};\n      output[itemName] = list;\n      return output;\n    },\n    async generateAttributesFromForm() {\n      const baseExport = this.generateAttributesForExport();\n      const formExport = await this.model.client.exportRecord();\n      // Append any form export attributes to the helpers attributes\n      baseExport.helpers = {\n        ...baseExport.helpers,\n        ...formExport\n      };\n      return baseExport;\n    },\n    generateAttributesForExport(/* xml */\n    ) {\n      const adapter = this.store.adapterFor(\"client\");\n      let src = adapter.getReferenceJSON(this.model?.client?.id);\n      src = JSON.parse(src);\n      src.attributes._source = \"Settify\";\n      src.attributes.helpers = {};\n      src.attributes.helpers.displayName = this.getDisplayName();\n      return src.attributes;\n    },\n    getDisplayName() {\n      const surname = this.model?.client?.surname ? `${this.model.client.surname.toUpperCase()},` : \"\";\n      return `${surname} ${this.model?.client?.firstName}`.trim();\n    },\n    getDownloadName(displayName, filenameExtra = \"\", fileType = \"docx\") {\n      const practiceArea = this.model?.client?.practiceArea;\n      return `${displayName} ${filenameExtra} (${practiceArea}).${fileType}`.replace(/\\s+/g, \" \").trim();\n    },\n    async downloadXML() {\n      const clientExport = await this.generateAttributesFromForm();\n      const clientRecord = {\n        _source: clientExport._source,\n        firmID: clientExport[\"firm-id\"],\n        practiceArea: clientExport[\"practice-area\"],\n        clientID: clientExport[\"client-id\"],\n        ...clientExport.helpers\n      };\n      const x2js = new X2JS();\n      const xmlAsStr = x2js.json2xml_str({\n        client: clientRecord\n      });\n      const blob = new Blob([xmlAsStr], {\n        type: \"application/xml;charset=utf-8\"\n      });\n      saveAs(blob, `${clientExport.helpers.displayName || this.model?.client?.surname} (${this.model?.client?.practiceArea}).xml`);\n    },\n    async downloadJSON(filenameExtra) {\n      const clientExport = await this.generateAttributesFromForm();\n      const clientRecord = {\n        _source: clientExport._source,\n        firmID: clientExport[\"firm-id\"],\n        practiceArea: clientExport[\"practice-area\"],\n        clientID: clientExport[\"client-id\"],\n        ...clientExport.helpers\n      };\n      const jsonAsStr = JSON.stringify(clientRecord, null, 2);\n      const blob = new Blob([jsonAsStr], {\n        type: \"application/json;charset=utf-8\"\n      });\n      saveAs(blob, `${clientExport.helpers.displayName || this.model?.client?.surname}${filenameExtra || \"\"} (${this.model?.client?.practiceArea}).json`);\n    },\n    downloadSelectedFiles(emailFile, emailMessage) {\n      const filesToDownload = this.documentsSelected;\n      if (Object.keys(filesToDownload).every(key => !filesToDownload[key])) {\n        if (emailFile) {\n          this.set(\"noDocumentSelected\", true);\n          return (0, _runloop.later)(() => {\n            this.set(\"noDocumentSelected\", false);\n          }, 5000);\n        }\n        return;\n      }\n      this.set(\"showDownloadStatus\", true);\n      this.set(\"downloadInProgress\", true);\n      this.set(\"showLoadingSpinner\", emailFile ? \"email\" : \"download\");\n      const promises = [];\n      const bucketLocations = [];\n      if (filesToDownload.PDF) {\n        promises.push(this.downloadPDFFile(emailFile));\n      }\n      if (filesToDownload.Word) {\n        promises.push(this.downloadWordFile(emailFile));\n      }\n      if (filesToDownload.Excel) {\n        promises.push(this.downloadExcelOrCSV(emailFile, true));\n      }\n      // if (filesToDownload['Balance Sheet']) {\n      //   promises.push(this.downloadBalanceSheet(emailFile));\n      // }\n      if (filesToDownload.CSV) {\n        promises.push(this.downloadExcelOrCSV(emailFile));\n      }\n      if (filesToDownload.XML) {\n        promises.push(this.downloadXML(emailFile));\n      }\n      if (filesToDownload.JSON) {\n        promises.push(this.downloadJSON(emailFile));\n      }\n      if (filesToDownload.FilePro) {\n        promises.push(this.downloadFilePro(emailFile, \" contact for FilePro import\"));\n      }\n      if (filesToDownload.Chronology) {\n        promises.push(this.downloadWordFile(emailFile, true));\n      }\n      if (filesToDownload.Pathway) {\n        promises.push(this.downloadPDFFile(emailFile, \" - Pathway\", \"settify-pathway-content\"));\n      }\n      if (this.automationTemplates) {\n        const automationFiles = this.automationTemplates;\n        for (let i = 0; i < automationFiles.length; i++) {\n          const a = automationFiles[i];\n          if (filesToDownload[a.document]) {\n            promises.push(this.downloadAutomationFile(emailFile, a));\n          }\n        }\n      }\n      if (filesToDownload.Compare) {\n        promises.push(this.downloadPDFFile(emailFile, \" - Changes\", \"settify-comparison-content\"));\n      }\n      if (filesToDownload.Review) {\n        promises.push(this.downloadPDFFile(emailFile, \" - Information Submitted Online\", \"settify-summary-content\"));\n      }\n      if (filesToDownload[\"Uploaded Documents\"]) {\n        this.uploadedClientDocs.forEach(u => {\n          promises.push(this.downloadClientUploads(emailFile, u));\n        });\n      }\n      promises.reduce((previousPromise, nextPromise) => {\n        return previousPromise.then(() => {\n          if (emailFile) {\n            return nextPromise.then(data => {\n              if (!data || !data.Bucket || !data.Key || !data.Filename) {\n                this.eventLogging.logError(\"No information found about bucket upload location while reducing promises\", null, data);\n              }\n              bucketLocations.unshift({\n                Bucket: data.Bucket,\n                Key: data.Key,\n                Filename: data.Filename\n              });\n            });\n          }\n          return nextPromise;\n        });\n      }, (0, _rsvp.resolve)()).then(() => {\n        // are we sending via email or downloading locally\n        if (emailFile) {\n          this.augmentJSONPayloadForEmailing(emailFile, emailMessage);\n          const fileExplanations = this.fileTypeExplanation.filter(explanationObject => !!filesToDownload[explanationObject.document]);\n          const displayName = this.getDisplayName();\n\n          // console.log(`Sending ${bucketLocations.length} documents via email`);\n          const payload = {\n            firmID: this.firm?.id,\n            clientID: this.model?.client?.id,\n            template: this.preDeterminedRecipients ? \"clientfiles/settifyinformationattached\" : \"clientfiles/settifydocsattached\",\n            to: emailFile.recipients,\n            cc: emailFile.ccs,\n            bcc: emailFile.bccs,\n            bucketLocations: bucketLocations,\n            clientName: displayName,\n            emailMessage: emailMessage,\n            fileExplanations: fileExplanations,\n            completedSimplePathway: this.model?.client?.helpWantedSimple || this.model?.client?.parentingOnly,\n            practiceArea: this.model?.client?.practiceArea\n          };\n          const allRecipients = [...emailFile.recipients, ...emailFile.ccs, ...emailFile.bccs].join(\", \");\n          this.eventLogging.adminLog(this.model?.client?.id, this.eventLogging.adminIDs.clientDocumentEmailed, Object.keys(filesToDownload).join(\", \"), allRecipients, this.model?.client?.practiceArea);\n          return this.lambda.invoke(this.lambda.emailSettifyDocuments, payload).then(() => {\n            if (this.lawyerName && this.lawyerEmail && !this.preDeterminedRecipients) {\n              this.lawyerList.save(this.lawyerName, this.lawyerEmail);\n            }\n            // Rather than setting sentEmailSuccessfully to true here, we do it after creating a snapshot\n            // this.set('sentEmailSuccessfully', true);\n            // run.later(() => {\n            //   this.set('sentEmailSuccessfully', false);\n            // }, 5000);\n            this.send(\"toggleDownloadAllOption\");\n          });\n        }\n        this.eventLogging.adminLog(this.model?.client?.id, this.eventLogging.adminIDs.clientDocumentDownloaded, Object.keys(filesToDownload).join(\", \"), null, this.model?.client?.practiceArea);\n        if (this.lawyerName && this.lawyerEmail) {\n          this.lawyerList.save(this.lawyerName, this.lawyerEmail);\n        }\n        this.send(\"toggleDownloadAllOption\");\n      }).then(() => {\n        // Now we create a snapshot of this record\n        if (this.preDeterminedRecipients) {\n          // No need to create a snapshot if a user is emailing themselves\n          return true;\n        }\n        return this.lambda.invoke(this.lambda.createSnapshotLambda, {\n          id: this.model?.client?.id,\n          firmID: this.firm.id,\n          snapshotReason: `${emailFile ? \"Emailed\" : \"Downloaded\"} Documents`\n        });\n      }).then(() => {\n        if (emailFile) {\n          this.set(\"sentEmailSuccessfully\", true);\n          (0, _runloop.later)(() => {\n            this.set(\"sentEmailSuccessfully\", false);\n          }, 5000);\n        }\n      }).catch(error => {\n        // Each file will alert to an error with the name of the file that failed\n        console.log(error);\n      }).finally(() => {\n        // Because some documents will download almost instantly, we resetAfterSendingOrDownloading after a small delay\n        (0, _runloop.later)(() => {\n          this.resetAfterSendingOrDownloading();\n        }, 200);\n      });\n    },\n    actions: {\n      editPageAssets(pages, index) {\n        if (index) {\n          this.setProperties({\n            forceIndexAssets: index,\n            forceEditAssets: pages\n          });\n        } else {\n          this.set(\"forceEditAssets\", pages);\n        }\n      },\n      editPageLiabilities(pages, index) {\n        if (index) {\n          this.setProperties({\n            forceIndexLiabilities: index,\n            forceEditLiabilities: pages\n          });\n        } else {\n          this.set(\"forceEditLiabilities\", pages);\n        }\n      },\n      toggleHowToReadSummary() {\n        this.toggleProperty(\"showHowToReadSummary\");\n        if (this.showHowToReadSummary) {\n          this.set(\"showKeepMeNotified\", false);\n          this.set(\"showDownloadOptions\", {});\n          this.set(\"recipients\", []);\n        }\n      },\n      toggleKeepMeNotified(saveoption) {\n        if (saveoption === \"savechanges\") {\n          this.set(\"model.client.readOnly\", false);\n          return this.model.client.save().then(() => this.set(\"model.client.readOnly\", true));\n        } else if (saveoption === \"discardchanges\") {\n          this.model.client.rollbackAttributes();\n          this.model.client.reload();\n        }\n        this.toggleProperty(\"showKeepMeNotified\");\n        if (this.showKeepMeNotified) {\n          this.send(\"toggleDownloadOption\");\n        }\n      },\n      toggleDownloadOption(fileType) {\n        this.set(\"allowRemovalOfLawyerRecipients\", false);\n        this.set(\"lawyerName\", null);\n        this.set(\"lawyerEmail\", null);\n        if (!fileType || this.get(`showDownloadOptions.${fileType}`)) {\n          this.set(\"recipients\", []);\n          this.set(\"showDownloadOptions\", {});\n        } else {\n          const opt = {};\n          opt[fileType] = true;\n          this.set(\"showDownloadOptions\", opt);\n          this.prepareForSendingOrDownloading();\n        }\n      },\n      toggleDownloadAllOption() {\n        this.set(\"allowRemovalOfLawyerRecipients\", false);\n        this.set(\"lawyerName\", null);\n        this.set(\"lawyerEmail\", null);\n        if (this.showDownloadAllOptions) {\n          this.set(\"showDownloadAllOptions\", false);\n        } else {\n          this.set(\"showDownloadAllOptions\", true);\n          this.prepareForSendingOrDownloading();\n        }\n      },\n      downloadSelectedFiles() {\n        this.downloadSelectedFiles();\n      },\n      emailSelectedFiles(emailFile, emailMessage) {\n        let clientEmail = this.get(\"model.client.email\");\n        if (this.emailToType === \"client\") {\n          if (!clientEmail || clientEmail === \"EMAIL\") {\n            // Client has no email, let's stop work, and display a message\n            console.log(\"NO EMAIL\");\n            let errMessage = clientEmail ? \"You need to view full information before emailing documents\" : \"This client does not have an email on their record\";\n            this.set(\"emailErrorMessage\", errMessage);\n            return;\n          }\n          // Ignore the current set recipients, and send it to the client\n          let surname = this.get(\"model.client.surname\") ? `${this.model.client.surname.toUpperCase()}, ` : \"\";\n          let displayName = surname + this.get(\"model.client.firstName\");\n          this.set(\"recipients\", [{\n            lawyerName: displayName,\n            lawyerEmail: this.get(\"model.client.email\")\n          }]);\n        }\n        this.set(\"emailErrorMessage\", null);\n        this.downloadSelectedFiles(emailFile, emailMessage);\n      },\n      removeLawyer(recipient) {\n        this.recipients.removeObject(recipient);\n        if (this.recipients.length > 1) {\n          this.set(\"allowRemovalOfLawyerRecipients\", true);\n        } else {\n          this.set(\"allowRemovalOfLawyerRecipients\", false);\n        }\n      },\n      addAdditionalRecipient() {\n        const emptyRecipient = _object.default.create({\n          lawyerName: undefined,\n          lawyerEmail: undefined,\n          lawyerBCCs: undefined,\n          lawyerCCs: undefined,\n          lawyerBio: undefined,\n          lawyerReadMoreURL: undefined,\n          lawyerPhotoURL: undefined\n        });\n        this.recipients.pushObject(emptyRecipient);\n        if (this.recipients.length > 1) {\n          this.set(\"allowRemovalOfLawyerRecipients\", true);\n        }\n      },\n      updateRecipients(index, compIndex) {\n        const lawyer = this.lawyerList.list[index];\n        if (lawyer.worksWith && lawyer.personType !== \"pa\") {\n          const PAs = lawyer.worksWith.map(pa => {\n            return this.lawyerList.byID[pa.personID].email;\n          });\n          lawyer.CCs = PAs;\n        }\n        const findRecipient = this.recipients[compIndex];\n        findRecipient.setProperties({\n          lawyerName: lawyer.name,\n          lawyerEmail: lawyer.email,\n          lawyerBCCs: lawyer.BCCs,\n          lawyerCCs: lawyer.CCs,\n          lawyerBio: lawyer.bio,\n          lawyerPhotoURL: lawyer.photoURL,\n          lawyerReadMoreURL: lawyer.readMoreURL\n        });\n      },\n      toggleInvitationEmailHistory() {\n        this.toggleProperty(\"showInvitationEmailHistory\");\n      },\n      scrollToChronology() {\n        document.getElementById(\"settify-chronology\").scrollIntoView({\n          behavior: \"smooth\"\n        });\n      },\n      scrollToDownloads() {\n        // Open downloads tab then scroll to the top of the page\n        this.send(\"toggleDownloadAllOption\");\n        document.getElementById(\"large-header\").scrollIntoView({\n          behavior: \"smooth\"\n        });\n      },\n      checkNamesForPiracy() {\n        return this.checkNamesForPiracy();\n      },\n      toggleRecordLock() {\n        this.set(\"model.client.readOnly\", false);\n        let logType = this.eventLogging.adminIDs.recordUnlocked;\n        this.toggleProperty(\"model.client.lockedByLawFirm\");\n        if (this.model?.client?.lockedByLawFirm) {\n          logType = this.eventLogging.adminIDs.recordLocked;\n        }\n        this.eventLogging.adminLog(this.model?.client?.id, logType, null, null, this.model?.client?.practiceArea);\n        return this.model.client.save().then(() => this.set(\"model.client.readOnly\", true));\n      },\n      downloadAsDocx(summaryID) {\n        this.set(\"showLoadingSpinner\", \"download\");\n        this.downloadWordFile(null, summaryID).finally(() => {\n          this.set(\"showLoadingSpinner\", null);\n        });\n      },\n      sendClientRecordToPMS({\n        lambdaFunction,\n        additionalInfo,\n        submitType,\n        productName\n      }, callback) {\n        const uploadToS3 = true;\n        const downloads = [_rsvp.Promise.resolve()];\n\n        // Only upload documents if we are creating a matter\n        if (submitType === \"matter\") {\n          downloads.push(this.downloadPDFFile(uploadToS3)); // client brief PDF\n          downloads.push(this.downloadWordFile(uploadToS3)); // client brief Word\n        }\n        (0, _runloop.next)(() => {\n          let allAttachments;\n          (0, _rsvp.all)(downloads).then(attachments => attachments.filter(obj => obj && obj.Bucket && obj.Key && obj.Filename).map(({\n            Bucket,\n            Key,\n            Filename\n          }) => ({\n            bucket: Bucket,\n            key: Key,\n            filename: Filename\n          }))).then(attachments => {\n            allAttachments = attachments;\n            return this.model.client.exportRecord();\n          }).then(record => {\n            const firmID = record[\"firm-id\"] || record.firmID;\n            // record = this.scrubAttributesBeforeSendToPms(record);\n\n            // special check for integrations that have been migrated to the new style\n            const newStyleIntegration = [\"leap\", \"smokeball\"].includes(productName) && submitType === \"matter\";\n            if (newStyleIntegration) {\n              const client = this.model?.client;\n              const induction = client.getInduction(client.inductions);\n              const integrationsData = {};\n              integrationsData[productName] = {\n                type: \"matter\",\n                matterData: additionalInfo\n              };\n              return this.lambda.invoke(this.lambda.sendNewClientRecordToIntegrations, {\n                record: {\n                  clientId: client.id,\n                  formId: induction.id,\n                  repeatToken: induction.repeatToken\n                },\n                attachments: allAttachments,\n                integrationsData\n              }).then(this.lambda.processResponse);\n            }\n\n            // TODO remove this when more integrations are migrated to the new style above\n            return this.lambda.invoke(lambdaFunction, {\n              firmID,\n              additionalInfo,\n              record,\n              attachments: allAttachments,\n              submitType,\n              productName\n            }).then(this.lambda.processResponse);\n          }).then(response => callback(null, response)).catch(err => callback(err));\n        });\n      },\n      onBriefLoaded() {\n        (0, _runloop.next)(() => {\n          this.set(\"pageLoaded\", true);\n          this.set(\"model.client.touch\", Date.now());\n        });\n      }\n    },\n    // scrubAttributesBeforeSendToPms(record) {\n    //   if (this.model.client.notSeparated) {\n    //     //This is set to now if the client has not separated -> We don't want to send that to our pms!\n    //     delete record.helpers.relationshipDates.separationDate;\n    //   }\n    //   return record;\n    // },\n\n    allChildrenList: (0, _object.computed)(\"model.client.children.length\", \"model.client.otherChildren.length\", \"model.client.{childrenCount,hasChildren,otherChildrenCount}\", function () {\n      let list = [];\n      // if the client wanted property help only, we still need to display their\n      // children in the summary (but nowhere else in the induction process).\n      if (this.model?.client?.hasChildren === \"propertyonly\") {\n        if (this.model?.client?.children?.length) {\n          list = list.concat(this.model.client.children);\n        }\n        if (this.model?.client?.otherChildren?.length) {\n          list = list.concat(this.model.client.otherChildren);\n        }\n        list = list.filter(x => !!x);\n      } else {\n        if (this.model?.client?.childrenCount) {\n          list = list.concat(this.model.client.children);\n        }\n        if (this.model?.client?.otherChildrenCount) {\n          list = list.concat(this.model.client.otherChildren);\n        }\n      }\n      return list;\n    }),\n    showParentsColumn: (0, _object.computed)(\"model.client.{hasChildren,otherChildren,otherChildrenCount}\", function () {\n      // if the client wanted property help only, we still need to display their\n      // children in the summary (but nowhere else in the induction process).\n      if (this.model?.client?.hasChildren === \"propertyonly\") {\n        const list = this.model?.client?.otherChildren;\n        if (!list || !list.filter) {\n          return false;\n        }\n        return list.filter(x => !!x).length !== 0;\n      }\n      return this.model?.client?.otherChildrenCount !== 0;\n    }),\n    showSpecialNeedsColumn: (0, _object.computed)(\"allChildrenList.[]\", function () {\n      const list = this.allChildrenList;\n      if (!list) {\n        return false;\n      }\n      for (let i_iterator = 0; i_iterator < list.length; i_iterator++) {\n        const c = list[i_iterator];\n        if (c.specialNeeds === \"yes\" || c.requiresSupport === \"yes\") {\n          return true;\n        }\n      }\n      return false;\n    }),\n    childrenColumnClass: (0, _object.computed)(\"showParentsColumn\", \"showSpecialNeedsColumn\", function () {\n      const columns = 3 + (this.showParentsColumn ? 1 : 0) + (this.showSpecialNeedsColumn ? 1 : 0);\n      if (columns === 3) {\n        return \"three-equal-columns\";\n      } else if (columns === 4) {\n        return \"four-equal-columns\";\n      } else if (columns === 5) {\n        return \"five-equal-columns\";\n      }\n      return \"\";\n    }),\n    invalidEmailMessage: (0, _object.computed)(\"emailMessage\", function () {\n      const message = this.emailMessage;\n      if (!message) {\n        return false;\n      }\n      return message.includes(\"<\") || message.includes(\">\");\n    }),\n    uploadedDocExtensions: (0, _object.computed)(\"uploadedClientDocs\", \"uploadedClientDocs.length\", function () {\n      if (this.uploadedClientDocs) {\n        const extensions = this.uploadedClientDocs.map(document => document.extension);\n        return [...new Set(extensions)];\n      }\n      return;\n    }),\n    uploadedDocFileSize: (0, _object.computed)(\"uploadedClientDocs\", \"uploadedClientDocs.length\", function () {\n      const totalBytes = this.uploadedClientDocs.map(document => document.fileSize).reduce((prev, next) => prev + next);\n      return totalBytes / 1024 / 1024;\n    }),\n    setEmailDocumentsBody: (0, _object.observer)(\"documentsSelected.{Excel,Chronology,Word,PDF,Pathway,CSV}\", \"emailToType\", \"balanceSheetForObservation\", function () {\n      let copy = ``;\n      if (this.emailToType === \"lawyer\") {\n        copy += `Hi [LAWYERNAME],\n\nPlease find attached a copy of all the information that [CLIENTNAME] provided on our systems, in the following documents:\n`;\n      } else {\n        copy += `Hi [CLIENTNAME],\n\nPlease find attached a copy of all the information that you provided on our systems, in the following documents:\n`;\n      }\n      let {\n        documentsSelected\n      } = this;\n      let documentKeys = Object.keys(documentsSelected);\n      for (let i = 0; i < documentKeys.length; i++) {\n        let key = documentKeys[i];\n        if (documentsSelected[key]) {\n          let shortDescription = this.fileTypeExplanation.find(ft => ft.document === key).shortExplanation;\n          copy += `    • ${shortDescription}\\n`;\n        }\n      }\n      copy += `\nKind regards,\n\nSettify Support\n    `;\n      this.set(\"emailMessage\", copy);\n    })\n  });\n});","define(\"settify-mvp/mixins/upload-download\", [\"exports\", \"rsvp\", \"@ember/service\", \"@ember/object/mixin\", \"settify-mvp/lib/identity\", \"settify-mvp/helpers/s3-debucket\"], function (_exports, _rsvp, _service, _mixin, _identity, _s3Debucket) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"rsvp\",0,\"@ember/service\",0,\"@ember/object/mixin\",0,\"settify-mvp/lib/identity\",0,\"settify-mvp/helpers/s3-debucket\"eaimeta@70e063a35619d71f\n  /* global saveAs */\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create({\n    isLoading: 0,\n    session: (0, _service.inject)(),\n    eventLogging: (0, _service.inject)(),\n    awsService: (0, _service.inject)(),\n    startLoading() {\n      this.incrementProperty(\"isLoading\");\n    },\n    finishedLoading() {\n      this.decrementProperty(\"isLoading\");\n      if (this.isLoading < 0) {\n        this.set(\"isLoading\", 0);\n      }\n    },\n    deleteFile(filename, callback) {\n      this.awsService.getS3ByType(\"clientdocuments\").then(s3Client => {\n        s3Client.deleteObject({\n          Key: filename\n        }, callback);\n      });\n    },\n    downloadFile(filename, callback, downloadedName) {\n      this.awsService.getS3ByType(\"clientdocuments\").then(s3Client => {\n        this.startLoading();\n        s3Client.getObject({\n          Key: filename\n        }, (err, data) => {\n          this.finishedLoading();\n          if (!err) {\n            const blob = new Blob([data.Body], {\n              type: data.ContentType\n            });\n            saveAs(blob, downloadedName || (0, _s3Debucket.s3Debucket)([filename]));\n          }\n          if (callback) {\n            callback(err, data);\n          }\n        });\n      });\n    },\n    downloadUserUpload(file) {\n      this.downloadFile(file.get(\"S3Key\"), () => this.markDocumentAsDownloaded(file), file.get(\"fileName\"));\n    },\n    markDocumentAsDownloaded(file) {\n      // mark this document as downloaded in mySQL\n      if (this.get(\"session.isAuthenticated\") && this.get(\"session.data.authenticated.adminUser\")) {\n        const payload = {\n          clientID: this.clientID ? this.clientID : this.model && this.get(\"model.client\") ? this.get(\"model.client.clientID\") : null,\n          firmID: this.get(\"firm.id\"),\n          formID: file.get(\"formID\"),\n          rowID: file.get(\"rowID\") || file.get(\"id\"),\n          details: {\n            firmDownloaded: true\n          }\n        };\n        return this.lambda.invoke(this.get(\"lambda.updateDocumentLambda\"), payload);\n      }\n    },\n    uploadFile(inputID, callback, filename, identityID) {\n      const fileChooser = document.getElementById(inputID);\n      const file = fileChooser.files[0];\n      const that = this;\n      if (file) {\n        that.startLoading();\n        that.set(\"s3result\", \"\");\n\n        // if no filename provided, use the actual file's name\n        if (!filename) {\n          filename = file.name;\n        }\n\n        // add a timestamp to avoid name collisions\n        filename = `${Date.now().toString()}-${filename}`;\n        if (!identityID) {\n          identityID = (0, _identity.getIdentityID)(this.session);\n        }\n        const params = {\n          Key: `${identityID}/${filename}`,\n          ContentType: file.type,\n          Body: file\n        };\n        this.awsService.getS3ByType(\"clientdocuments\").then(s3Client => {\n          s3Client.upload(params, function (err, data) {\n            that.finishedLoading();\n            if (err) {\n              that.set(\"s3result\", \"Nothing to upload.\");\n            }\n            if (callback) {\n              callback(err, data);\n            }\n          });\n        });\n      } else {\n        that.set(\"s3result\", \"Nothing to upload.\");\n      }\n    },\n    uploadRawFileData(bucketname, filename, contents, type) {\n      return this.awsService.getS3Client(bucketname).then(s3Client => {\n        return new _rsvp.Promise((resolve, reject) => {\n          s3Client.upload({\n            Key: filename,\n            ContentType: type,\n            Body: contents\n          }, (err, data) => {\n            if (err) {\n              const desc = `Couldn't upload file ${filename} to s3 bucket ${bucketname}`;\n              this.eventLogging.logError(desc, err);\n              reject(desc);\n            } else {\n              resolve(data.Location);\n            }\n          });\n        });\n      });\n    }\n  });\n});","define(\"settify-mvp/mixins/violence-order\", [\"exports\", \"@ember/object\", \"@ember/service\", \"@ember/object/mixin\", \"settify-mvp/lib/stateviolenceorders\"], function (_exports, _object, _service, _mixin, _stateviolenceorders) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/service\",0,\"@ember/object/mixin\",0,\"settify-mvp/lib/stateviolenceorders\"eaimeta@70e063a35619d71f\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create({\n    firm: (0, _service.inject)(),\n    stateViolenceOrder: (0, _object.computed)(\"firm.addresses\", \"firm.addresses.[]\", function () {\n      let addresses = this.get(\"firm.addresses\");\n      if (addresses && addresses.length && addresses[0].stateAbbreviation) {\n        return _stateviolenceorders.stateViolenceOrders[addresses[0].stateAbbreviation.toUpperCase()];\n      }\n      return _stateviolenceorders.stateViolenceOrders.default;\n    })\n  });\n});","define(\"settify-mvp/models/catalogue\", [\"exports\", \"@ember-data/model\", \"@ember/service\", \"settify-mvp/models/document\"], function (_exports, _model, _service, _document) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember-data/model\",0,\"@ember/service\",0,\"settify-mvp/models/document\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _model.default.extend({\n    store: (0, _service.inject)(),\n    save() {\n      throw new Error(\"Cannot save a document catalogue - only individual documents can be saved\");\n    },\n    documents: (0, _model.hasMany)(\"document\", {\n      async: false,\n      inverse: \"owner\"\n    }),\n    filterBy(formID, repeatToken, chapterID, pageID, questionID, answersLocation, objectID) {\n      const needle = (0, _document.generateFullContextID)(formID, repeatToken, chapterID, pageID, questionID, answersLocation, objectID);\n      return this.documents.filter(document => document.fullContextID === needle);\n    },\n    addDocument(formID, repeatToken, chapterID, pageID, questionID, answersLocation, objectID, documentInformation) {\n      const doc = this.store.createRecord(\"document\", {\n        clientID: this.id,\n        formID,\n        repeatToken,\n        chapterID,\n        pageID,\n        questionID,\n        answersLocation,\n        objectID,\n        S3Key: documentInformation.S3Key,\n        fileName: documentInformation.fileName,\n        fileSize: documentInformation.fileSize,\n        uploadDate: documentInformation.uploadDate,\n        expiryDate: documentInformation.expiryDate\n      });\n      doc.save();\n      this.documents.push(doc);\n    }\n  });\n});","define(\"settify-mvp/models/client\", [\"exports\", \"@ember/object/computed\", \"@ember/object\", \"@ember/utils\", \"@ember/runloop\", \"rsvp\", \"@ember/service\", \"@ember-data/model\", \"uuid\", \"settify-mvp/helpers/get-people-from-ids\", \"settify-mvp/helpers/get-answers-from\", \"settify-mvp/helpers/inverse-relationship\", \"settify-mvp/helpers/parse-text\", \"settify-mvp/mixins/master-form-mixin\", \"moment\", \"settify-mvp/lib/relationshipgender\", \"settify-mvp/utils/display-name-utils\"], function (_exports, _computed, _object, _utils, _runloop, _rsvp, _service, _model, _uuid, _getPeopleFromIds, _getAnswersFrom, _inverseRelationship, _parseText, _masterFormMixin, _moment, _relationshipgender, _displayNameUtils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object/computed\",0,\"@ember/object\",0,\"@ember/utils\",0,\"@ember/runloop\",0,\"rsvp\",0,\"@ember/service\",0,\"@ember-data/model\",0,\"uuid\",0,\"settify-mvp/helpers/get-people-from-ids\",0,\"settify-mvp/helpers/get-answers-from\",0,\"settify-mvp/helpers/inverse-relationship\",0,\"settify-mvp/helpers/parse-text\",0,\"settify-mvp/mixins/master-form-mixin\",0,\"moment\",0,\"settify-mvp/lib/relationshipgender\",0,\"settify-mvp/utils/display-name-utils\"eaimeta@70e063a35619d71f\n  // eslint-disable-next-line no-control-regex\n  const unprintableCharacters = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F]/gi; // Unprintable ASCII characters that will cause problems\n  var _default = _exports.default = _model.default.extend(_masterFormMixin.default, {\n    session: (0, _service.inject)(\"session\"),\n    cookies: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    recordpolling: (0, _service.inject)(),\n    eventLogging: (0, _service.inject)(),\n    questionnaireLogic: (0, _service.inject)(),\n    sendJSONtoAdapter() {\n      const adapter = this.store.adapterFor(this.constructor.modelName);\n      adapter.setReferenceJSON(this.id, JSON.stringify(this.serialize({\n        includeId: true\n      }).data));\n    },\n    hasChangesAtJSONLevel() {\n      const adapter = this.store.adapterFor(this.constructor.modelName);\n      return adapter.getReferenceJSON(this.id).replace(/\"touch\":\\s*\\d+,/, \"\") !== JSON.stringify(this.serialize({\n        includeId: true\n      }).data).replace(/\"touch\":\\s*\\d+,/, \"\");\n    },\n    forceSave() {\n      this.set(\"settify_forceSave\", true);\n      return this.save().then(result => {\n        this.set(\"settify_forceSave\", false);\n        return result;\n      });\n    },\n    save() {\n      this.stripEmptyStrings();\n      if (this.isSaving) {\n        // console.log(\"Queuing save request\");\n        this.set(\"queuedSaveRequest\", true);\n        return this.resolveWhenFinishedSaving();\n      }\n      return this._super(...arguments).then(() => {\n        if (this.queuedSaveRequest) {\n          // console.log(\"Processing queued save request - invoking save again\");\n          this.set(\"queuedSaveRequest\", false);\n          return this.save();\n        }\n        if (!this.hasDirtyAttributes) {\n          this.sendJSONtoAdapter();\n        }\n      });\n    },\n    resolveWhenFinishedSaving(resolve) {\n      if (resolve) {\n        if (!this.isSaving) {\n          // console.log(\"Finished saving - resolving promise\");\n          resolve();\n        } else {\n          (0, _runloop.later)(this, function () {\n            // console.log(\"Polled for save request - wasn't finished\");\n            this.resolveWhenFinishedSaving(resolve);\n          }, 100);\n        }\n      } else {\n        return new _rsvp.Promise(resolve => {\n          // console.log(\"Creating queued save request promise\");\n          this.resolveWhenFinishedSaving(resolve);\n        });\n      }\n    },\n    stripEmptyStrings() {\n      // DynamoDB cannot handle empty strings, so we search through the entire\n      // record and instead of empty strings, simply set it to null.\n      this.eachAttribute(function (name, meta) {\n        // console.log(name, meta);\n        if (name[0] === \"_\") {\n          // special ember / js attributes - nothing to do with us!\n          return;\n        }\n        if (meta.type === \"string\") {\n          // if empty string, set to null\n          if (this.get(name) === \"\") {\n            this.set(name, null);\n          } else if (!(0, _utils.isEmpty)(this.get(name))) {\n            // Exclude all whitespaces with trim function if string is not empty\n            const allPrintable = this.get(name).replace(unprintableCharacters, \"\");\n            const trimmed = allPrintable.trim();\n            this.set(name, trimmed);\n\n            // If we have \"\" string after trim function set it to null\n            if (this.get(name) === \"\") {\n              this.set(name, null);\n            }\n          }\n        } else if (!meta.type) {\n          // it's a Plain Old Javascript Object\n          let obj = this.get(name);\n          if (typeof obj === \"string\") {\n            // this is a string after all\n            obj = obj.replace(unprintableCharacters, \"\").trim();\n            if (obj.length === 0) {\n              obj = null;\n            }\n          } else if (typeof obj === \"object\") {\n            // console.log(\"Processing \" + name);\n            this.removeEmptyStringsFrom(obj, \"  \");\n          }\n          this.set(name, obj);\n        }\n      }, this);\n    },\n    removeEmptyStringsFrom(obj, indent) {\n      for (const key in obj) {\n        if (key[0] === \"_\") {\n          // special ember / js attributes - nothing to do with us!\n          continue;\n        }\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\n          let val = obj[key];\n          // console.log(indent + key + \" -> \" + obj[key] + \" (\" + typeof val + \")\");\n          if (typeof val === \"string\") {\n            //   console.log('--------');\n            //   console.log(key);\n            //   console.log(val);\n            val = val.replace(unprintableCharacters, \"\");\n            if (val.length === 0) {\n              // empty string - delete this entire attribute!\n              // console.log(\"Deleting empty string attribute!\");\n              // console.log(\"--> \" + key);\n              delete obj[key];\n            } else if (!(0, _utils.isEmpty)(val)) {\n              // Exclude all whitespaces with trim function if object key has whitespaces\n              const trimmed = val.trim();\n              (0, _object.set)(obj, key, trimmed);\n\n              // If we have length of string 0 after trim function delete key completely\n              if (obj[key].length === 0) {\n                delete obj[key];\n              }\n            }\n          } else if (typeof val === \"object\") {\n            this.removeEmptyStringsFrom(val, `${indent}  `);\n          }\n        }\n      }\n    },\n    safeNumber(val) {\n      if (isNaN(val)) {\n        return 0;\n      }\n      return val;\n    },\n    getNonEmptyMap(name) {\n      let val = this.get(name);\n      if (!val) {\n        val = {};\n        this.set(name, val);\n      }\n      return val;\n    },\n    getNonEmptyList(name) {\n      let val = this.get(name);\n      if (!val) {\n        val = [];\n        this.set(name, val);\n      }\n      return val;\n    },\n    // which firm is this client using?\n    firmID: (0, _model.attr)(\"string\"),\n    practiceArea: (0, _model.attr)(\"string\"),\n    // which lawyer from the firm is this client seeing?\n    invitationInformation: (0, _model.attr)(\"\"),\n    firmPartnerName: (0, _model.attr)(\"string\"),\n    firmAppointmentDate: (0, _model.attr)(\"string\"),\n    firmAppointmentTime: (0, _model.attr)(\"string\"),\n    preferredOffice: (0, _model.attr)(\"string\"),\n    preferredOfficeMoreInfo: (0, _model.attr)(\"string\"),\n    // custom information supplied by the law firm\n    firmPracticeManagement: (0, _model.attr)(\"\"),\n    customQueryParams: (0, _model.attr)(\"\"),\n    matterReferenceNumber: (0, _model.attr)(\"string\"),\n    // has this record been sent to the practice management system yet?\n    integrationComplete: (0, _model.attr)(\"boolean\"),\n    // a forms/uno based client record\n    isFormsRecord: (0, _model.attr)(\"boolean\", {\n      defaultValue: true\n    }),\n    // additional information we sent to the integration\n    // we store it here so that, if we want to re-send the client record, that information is saved\n    integrationInformation: (0, _model.attr)(\"\", {\n      defaultValue: () => {\n        return {};\n      }\n    }),\n    // a permanent record of the client ID (as opposed to the identity ID)\n    clientID: (0, _model.attr)(\"string\"),\n    // the organisation to which this record belongs\n    organisationID: (0, _model.attr)(\"string\"),\n    // who from the firm should be notified of updates? array of email addresses\n    notifyUpdates: (0, _model.attr)(\"\", {\n      defaultValue: () => {\n        return [];\n      }\n    }),\n    // this changes whenever data in the record changes\n    touch: (0, _model.attr)(\"number\", {\n      defaultValue: () => Date.now()\n    }),\n    // similar to touch, but only changes when the user navigates between pages\n    pageChangedTouch: (0, _model.attr)(\"number\", {\n      defaultValue: () => Date.now()\n    }),\n    // what is the most recent form page the client has seen?\n    mostRecentPage: (0, _model.attr)(\"string\", {\n      defaultValue: () => null\n    }),\n    // any other Settify accounts for this person for other practice areas?\n    settifyLinks: (0, _model.attr)(\"\", {\n      defaultValue: () => {\n        return [];\n      }\n    }),\n    // other progression metrics\n    creationTimestamp: (0, _model.attr)(\"number\"),\n    invitedByLawFirm: (0, _model.attr)(\"boolean\"),\n    hasReceivedResumeLinkEmail: (0, _model.attr)(\"boolean\"),\n    hasReceivedAppointmentEmail: (0, _model.attr)(\"boolean\"),\n    bookedAppointment: (0, _model.attr)(\"boolean\"),\n    detailedInductionComplete: (0, _model.attr)(\"boolean\"),\n    confirmedAnswers: (0, _model.attr)(\"boolean\"),\n    previousEnquiriesInfo: (0, _model.attr)(\"string\"),\n    furthestPage: (0, _model.attr)(\"string\"),\n    conflictCheck: (0, _model.attr)(\"string\"),\n    conflictCheckTimestamp: (0, _model.attr)(\"string\"),\n    conflictCheckExtraInfo: (0, _model.attr)(\"\", {\n      defaultValue: () => {\n        return [];\n      }\n    }),\n    relatedEntitiesForConflictCheck: (0, _model.attr)(\"string\"),\n    postInductionSurveyComplete: (0, _model.attr)(\"boolean\"),\n    lockedByLawFirm: (0, _model.attr)(\"boolean\"),\n    catalyticFeedbackAnswers: (0, _model.attr)(\"\", {\n      defaultValue: () => {\n        return {\n          client: {},\n          lawyer: {}\n        };\n      }\n    }),\n    postMeeting: (0, _model.attr)(\"boolean\"),\n    // have we had our first meeting, and thus, can we access the more detailed sections of this induction?\n\n    // user account\n    firstLogin: (0, _model.attr)(\"boolean\"),\n    passwordProtected: (0, _model.attr)(\"boolean\"),\n    creatingAccount: (0, _model.attr)(\"boolean\"),\n    // invited client information\n    firstName: (0, _model.attr)(\"string\"),\n    middleName: (0, _model.attr)(\"string\"),\n    surname: (0, _model.attr)(\"string\"),\n    email: (0, _model.attr)(\"string\"),\n    phone: (0, _model.attr)(\"string\"),\n    dobDay: (0, _model.attr)(\"number\"),\n    dobMonth: (0, _model.attr)(\"number\"),\n    dobYear: (0, _model.attr)(\"number\"),\n    postalAddress: (0, _model.attr)(\"\", {\n      defaultValue: () => ({})\n    }),\n    otherNames: (0, _model.attr)(\"string\"),\n    lawFirmHasWill: (0, _model.attr)(\"boolean-strict\"),\n    hasKeyContactDetails: (0, _computed.or)(\"firstName\", \"surname\", \"email\", \"phone\"),\n    hasPreferences: (0, _computed.or)(\"preferredOffice\", \"preferredLawyer\", \"firmPartnerName\"),\n    mostLikelyContactEmail: (0, _object.computed)(\"email\", \"touch\", \"conflictCheckExtraInfo\", \"conflictCheckExtraInfo.@each.content\", function () {\n      if (this.email) {\n        return this.email;\n      }\n      const logic = this.questionnaireLogic;\n      const conflictCheckExtraInfo = this.conflictCheckExtraInfo || [];\n      for (let i = 0; i < conflictCheckExtraInfo.length; i++) {\n        const element = conflictCheckExtraInfo[i];\n        if (element.content && element.content.match) {\n          const emailMatch = element.content.match(/([a-z]\\S*@\\S+[a-z])/i); // a very loose regex to find things that look like email addresses\n          if (emailMatch) {\n            // only match if this was marked as 'isContactDetails' in the definition\n            const definition = logic.getQuestionDefinition(...element.id.split(\".\").map(e => (e || \"\").replace(/#\\d+$/, \"\")), true);\n            if (definition.induction.isContactDetails || definition.chapter.isContactDetails || definition.page.isContactDetails || definition.question.isContactDetails) {\n              return emailMatch[0];\n            }\n          }\n        }\n      }\n      return \"\";\n    }),\n    // settify for everything information and answers\n    inductions: (0, _model.attr)(\"\", {\n      defaultValue: () => [\n        // {id: 'buysellbusiness', repeatToken: 1},\n      ]\n    }),\n    answers: (0, _model.attr)(\"\", {\n      defaultValue: () => ({})\n    }),\n    // documents we don't know the location of\n    unknownDocumentIDs: (0, _model.attr)(\"\", {\n      defaultValue: () => ({})\n    }),\n    displayNameVariables: (0, _model.attr)(\"\", {\n      defaultValue: () => {\n        return [];\n      }\n    }),\n    displayName: (0, _object.computed)(\"firstName\", \"surname\", \"partnerFirstName\", \"partnerSurname\", \"touch\", \"matterReferenceNumber\", \"displayNameVariables\", \"deceased.{firstName,surname}\", \"practiceArea\", function () {\n      const {\n        firstName,\n        surname,\n        partnerFirstName,\n        partnerSurname,\n        practiceArea,\n        deceased,\n        matterReferenceNumber\n      } = this;\n      return (0, _displayNameUtils.generateDisplayName)({\n        firstName,\n        surname,\n        partnerFirstName,\n        partnerSurname,\n        practiceArea,\n        deceased,\n        matterReferenceNumber\n      });\n    }),\n    helpTextIconLawyerName: (0, _object.computed)(\"firmPartnerName\", \"prefLawyer\", \"preferredLawyer\", function () {\n      return this.firmPartnerName || this.prefLawyer || \"\";\n    }),\n    knownEntities: (0, _model.attr)(\"\", {\n      defaultValue: () => []\n    }),\n    recursivelyAddFamily(outputList, person, selectedAs) {\n      if (typeof person === \"string\") {\n        if (outputList.find(p => p.id === person)) {\n          // Person already exists in the output list\n          return;\n        }\n        person = this.getKnownEntity(person, {\n          excludeFamily: true\n        });\n      }\n      if (person) {\n        if (!person.witnessRelationship) {\n          (0, _object.set)(person, \"witnessRelationship\", \"family\");\n        }\n        if (selectedAs) {\n          (0, _object.set)(person, \"selectedAs\", selectedAs);\n        }\n        outputList.push(person);\n        const isChild = selectedAs === \"child\" || selectedAs === \"stepchild\";\n        for (let j = 0; person.children && j < person.children.length; j++) {\n          const child = person.children[j];\n          this.recursivelyAddFamily(outputList, child, isChild ? \"grandchild\" : \"child\");\n        }\n        for (let j = 0; person.previousChildren && j < person.previousChildren.length; j++) {\n          const child = person.previousChildren[j];\n          this.recursivelyAddFamily(outputList, child, isChild ? \"grandchild\" : \"stepchild\");\n        }\n        for (let j = 0; person.spouses && j < person.spouses.length; j++) {\n          const spouse = person.spouses[j];\n          this.recursivelyAddFamily(outputList, spouse);\n        }\n      }\n    },\n    allFamilyMembers: (0, _object.computed)(\"deceased\", \"touch\", function () {\n      const list = [];\n      const {\n        deceased\n      } = this;\n      if (!deceased) {\n        return list;\n      }\n      if (deceased.parentOne) {\n        this.recursivelyAddFamily(list, deceased.parentOne, \"parentOne\");\n        // PROBATE HAD\n        // list.push(deceased.parentOne[0]);\n      }\n      if (deceased.parentTwo) {\n        this.recursivelyAddFamily(list, deceased.parentTwo, \"parentTwo\");\n        // PROBATE HAD\n        // list.push(deceased.parentTwo[0]);\n      }\n      for (let i = 0; deceased.spouses && i < deceased.spouses.length; i++) {\n        const spouse = deceased.spouses[i];\n        this.recursivelyAddFamily(list, spouse, \"partner\");\n      }\n      for (let i = 0; deceased.siblings && i < deceased.siblings.length; i++) {\n        const sibling = deceased.siblings[i];\n        this.recursivelyAddFamily(list, sibling, \"sibling\");\n      }\n      for (let i = 0; deceased.grandparents && i < deceased.grandparents.length; i++) {\n        const grandparent = deceased.grandparents[i];\n        this.recursivelyAddFamily(list, grandparent, \"grandparent\");\n      }\n      for (let i = 0; deceased.auntsAndUncles && i < deceased.auntsAndUncles.length; i++) {\n        const auntOrUncle = deceased.auntsAndUncles[i];\n        this.recursivelyAddFamily(list, auntOrUncle);\n      }\n      return list;\n    }),\n    knownEntitiesAndFamilyMembers: (0, _object.computed)(\"knownEntities\", \"allFamilyMembers\", \"pageChangedTouch\", function () {\n      return [...this.allFamilyMembers, ...this.knownEntities];\n    }),\n    specialVariables: (0, _object.computed)(\"practiceArea\", function () {\n      const specialVars = [\"knownEntities\", \"invitedByLawFirm\", \"hasReceivedResumeLinkEmail\", \"hasReceivedAppointmentEmail\", \"bookedAppointment\", \"detailedInductionComplete\", \"firmPartnerName\", \"firmAppointmentDate\", \"firmAppointmentTime\", \"preferredOffice\", \"matterReferenceNumber\", \"passwordProtected\", \"client.clientID\", \"client.firstName\", \"client.surname\", \"client.email\", \"client.phone\", \"confirmedAnswers\", \"conflictCheck\", \"postInductionSurveyComplete\", \"firm.name\", \"firm.blurb\", \"firm.phone\", \"firm.contactEmail\", \"firm.settifyURL\", \"primaryContactPersonID\"];\n      if (this.practiceArea === \"Probate\") {\n        specialVars.push(\"allDeceasedAdultChildren\", \"allLivingGrandChildren\", \"allLivingSpouses\", \"allLivingFormerSpouses\", \"allFamilyMembers\", \"allDeceasedAdultSiblings\", \"allDeceasedSiblings\", \"allChildrenOfDeceasedSiblings\", \"allDeceasedAuntsAndUncles\", \"allLivingExecutors\", \"allMinors\", \"knownEntitiesAndFamilyMembers\", \"deceasedYearOfDeath\", \"deceasedYearOfDeathMinusOne\", \"deceased.auntsAndUncles\", \"deceasedsPartnerAtTimeOfDeath\", \"postMeeting\", \"referrerProvidingFinancials\", \"emailedReferrerOnFinances\");\n      }\n      if (this.practiceArea === \"Estates\") {\n        specialVars.push(\n        // Information about the claimant\n        \"claimant\", \"claimantID\", \"claimantsRelationshipToDeceased\", \"claimantIsUser\", \"claimantOrUser\", \"claimantOrUser.relationship\", \"claimantOrUser.firstName\", \"claimant.significantExpenses\", \"claimant.selectedAs\",\n        // Information about the matter itself\n        \"isWillPrepared\", \"claimWindowDuration\", \"claimWindowExpiryDate\", \"parentSiblingEligibility\", \"siblingsQuestionRequired\", \"missedWindow\",\n        // Information about the user\n        \"incompleteUserEligibility\", \"userEligibility\", \"isUserExecutor\", \"instructor.selectedAs\", \"instructor\",\n        // Information about the deceased\n        \"lastPlaceOfResidence\", \"stateOfApplicationAbbreviated\",\n        // Arrays of individuals info objects\n        \"knownEntitiesWithoutInstructorOrDeceased\", \"allDependentGrandChildren\", \"eligiblePeople\", \"eligiblePeopleWithoutInstructor\", \"eligiblePeopleWithoutClaimantOrInstructor\", \"allSpouses\",\n        // Arrays of IDs\n        \"deceased.otherBeneficiaries\", \"deceased.parentOne\", \"deceased.parentTwo\", \"allGrandChildrenIDs\", \"allChildrenWithDeceasedIDs\", \"allChildrenWithOtherIDs\", \"allChildrenIDs\");\n      }\n      if ([\"Probate\", \"Estates\"].includes(this.practiceArea)) {\n        // Shared vars berween Probate and Estates\n        specialVars.push(\"relationshipToDeceased\", \"deceased\", \"lawFirmHasWill\", \"allChildren\", \"allLivingChildren\", \"allAdultChildren\", \"allGrandChildren\", \"allExecutors\", \"deceased.spouses\", \"deceased.siblings\");\n      }\n      return specialVars;\n    }),\n    primaryContactPersonID: (0, _model.attr)(\"string\"),\n    onPrimaryContactPersonIDChanged: (0, _object.observer)(\"primaryContactPersonID\", \"knownEntitiesAndFamilyMembers\", \"knownEntities.@each.{firstName,surname,email,phone,dobday,dobmonth,dobyear,address}\",\n    // Most people are added to the knownEntities array\n    \"allFamilyMembers.@each.{firstName,surname,email,phone,dobday,dobmonth,dobyear,address}\",\n    // Probate system can add to the allFamilyMembers array. So we observe this too.\n    function () {\n      if (this.isLoading || !this.primaryContactPersonID) {\n        return;\n      }\n      const allKnownEntities = this.knownEntitiesAndFamilyMembers || [];\n      const person = allKnownEntities.find(p => p.id === this.primaryContactPersonID);\n      if (!person) {\n        return;\n      }\n      // Set high-level data to be easily accessed\n      this.set(\"firstName\", person.firstName || \"\");\n      this.set(\"surname\", person.surname || \"\");\n      this.set(\"email\", person.email || \"\");\n      this.set(\"phone\", person.phone || \"\");\n      this.set(\"dobDay\", person.dobday || \"\");\n      this.set(\"dobMonth\", person.dobmonth || \"\");\n      this.set(\"dobYear\", person.dobyear || \"\");\n      this.set(\"postalAddress\", person.address || {});\n      if ([\"Family\", \"Wills\"].includes(this.practiceArea)) {\n        // This is solely to make the spouse's info appear in conflict checks\n        // TODO: This logic assumes there are only two known entities in a questionnaire.\n        //  When more are introduced (e.g., a helper for the Wills questionnaire), this will need to be revisited.\n        const spouse = allKnownEntities.find(p => p.id !== this.primaryContactPersonID);\n        if (spouse) {\n          this.set(\"partnerFirstName\", spouse.firstName || \"\");\n          this.set(\"partnerSurname\", spouse.surname || \"\");\n          this.set(\"partnerEmail\", spouse.email || \"\");\n          this.set(\"partnerPhone\", spouse.phone || \"\");\n          this.set(\"partnerDobDay\", spouse.dobday || \"\");\n          this.set(\"partnerDobMonth\", spouse.dobmonth || \"\");\n          this.set(\"partnerDobYear\", spouse.dobyear || \"\");\n          this.set(\"partnerPostalAddress\", spouse.address || {});\n        }\n      }\n    }),\n    /**\n     * START OF ANSWER FUNCTIONS\n     * Might be something we can move into a function or service of its own\n     */\n\n    getAnswersFor(induction, chapter, page, repeatToken, options = {}) {\n      let {\n        answers\n      } = this;\n      if (!answers) {\n        answers = {};\n        if (!options.create) {\n          return {};\n        }\n        this.set(\"answers\", answers);\n      }\n      if (!induction) {\n        return answers;\n      }\n      const inductionWithRepeatSuffix = repeatToken ? `${induction}#${repeatToken.toString().replace(/#/g, \"\")}` : induction;\n      if (!answers[inductionWithRepeatSuffix]) {\n        if (!options.create) {\n          return {};\n        }\n        (0, _object.set)(answers, inductionWithRepeatSuffix, {});\n      }\n      if (!chapter) {\n        return answers[inductionWithRepeatSuffix];\n      }\n      if (!answers[inductionWithRepeatSuffix][chapter]) {\n        if (!options.create) {\n          return {};\n        }\n        (0, _object.set)(answers[inductionWithRepeatSuffix], chapter, {});\n      }\n      if (!page) {\n        return answers[inductionWithRepeatSuffix][chapter];\n      }\n      if (!answers[inductionWithRepeatSuffix][chapter][page]) {\n        if (!options.create) {\n          return {};\n        }\n        (0, _object.set)(answers[inductionWithRepeatSuffix][chapter], page, {});\n      }\n      return answers[inductionWithRepeatSuffix][chapter][page];\n    },\n    clearAnswersFor(induction, chapter, page, repeatToken) {\n      const {\n        answers\n      } = this;\n      if (!answers) {\n        return;\n      }\n      if (!induction) {\n        return;\n      }\n      const inductionWithRepeatSuffix = repeatToken ? `${induction}#${repeatToken.toString().replace(/#/g, \"\")}` : induction;\n      if (!answers[inductionWithRepeatSuffix]) {\n        return;\n      }\n      if (!chapter) {\n        delete answers[inductionWithRepeatSuffix];\n        return;\n      }\n      if (!answers[inductionWithRepeatSuffix][chapter]) {\n        return;\n      }\n      if (!page) {\n        delete answers[inductionWithRepeatSuffix][chapter];\n        return;\n      }\n      if (!answers[inductionWithRepeatSuffix][chapter][page]) {\n        return;\n      }\n      delete answers[inductionWithRepeatSuffix][chapter][page];\n    },\n    getPreciseAnswer(induction, chapter, page, question, subquestion, repeat, params) {\n      const allAnswers = this.getAnswersFor(induction, chapter, page, repeat, params);\n      if (allAnswers) {\n        let answer = allAnswers[question];\n        if (answer) {\n          let remainingSubquestions = subquestion;\n          if (subquestion && !Array.isArray(subquestion)) {\n            remainingSubquestions = [subquestion];\n          }\n          const personOrPeopleFromIDs = (0, _getPeopleFromIds.getPeopleFromIds)([answer], {\n            clientRecord: this,\n            options: params,\n            remainingSubquestions\n          });\n          return personOrPeopleFromIDs;\n        }\n        // check if this variable is on a page that was 'not repeated'\n        // if so, we need to try to find the answer in the original page\n        const pageDefinition = this.questionnaireLogic.getPageDefinition(induction, chapter, page);\n        if (pageDefinition && pageDefinition.canBeRepeatedGlobalID) {\n          const previousCompletion = this.questionnaireLogic.hasBeenCompleted(this.answers, pageDefinition.canBeRepeatedGlobalID, `${induction}#${repeat}.${chapter}.${page}`);\n          if (previousCompletion) {\n            const targetSegements = previousCompletion.split(\".\");\n            const target = {\n              inductionID: targetSegements[0].replace(/#.*/, \"\"),\n              repeat: targetSegements[0].replace(/.*#/, \"\"),\n              chapterID: targetSegements[1],\n              pageID: targetSegements[2]\n            };\n            answer = this.getPreciseAnswer(target.inductionID, target.chapterID, target.pageID, question, null, target.repeat);\n          }\n        }\n        return answer;\n      }\n    },\n    setPreciseAnswer(induction, chapter, page, question, subquestion, repeat, answer) {\n      let allAnswers = this.getAnswersFor(induction, chapter, page, repeat, {\n        create: true\n      });\n      if (allAnswers) {\n        if (subquestion && typeof allAnswers[question] === \"string\") {\n          allAnswers = this.getKnownEntity(allAnswers[question]);\n          return (0, _object.set)(allAnswers, subquestion, answer);\n        }\n        if (subquestion && allAnswers[question] && typeof allAnswers[question] === \"object\") {\n          return (0, _object.set)(allAnswers, subquestion, answer);\n        }\n        (0, _object.set)(allAnswers, question, answer);\n      }\n    },\n    completeChapter(chapterID) {\n      const induction = this.getInduction(this.inductions);\n      const chapterAnswers = this.getAnswersFor(induction.id, chapterID, null, induction.repeatToken);\n      Object.keys(chapterAnswers).forEach(pageID => {\n        (0, _object.set)(chapterAnswers[pageID], \"visited\", true);\n        (0, _object.set)(chapterAnswers[pageID], \"completed\", true);\n      });\n    },\n    /** END OF ANSWER FUNCTIONS */\n\n    getSpecialVariable(varName) {\n      const getLength = /.length$/.test(varName);\n      varName = varName.replace(/.length$/, \"\"); // strip \".length\" from the end of the variable name\n      if (this.specialVariables.includes(varName)) {\n        // strip \"client.\" from the start of the variable name, so that we can actually retrieve the value\n        // (\"client.\" is prepended to avoid ambiguity in these commonly-referenced variables)\n        varName = varName.replace(/^client\\./, \"\");\n        return {\n          exists: true,\n          value: getLength ? this.get(`${varName}.length`) : this.get(varName)\n        };\n      }\n\n      // We separate the chronology from the regular pool of special variables so that we're only generating it\n      // once when it's required, rather than keeping it updated by observing the answers definition.\n      if (varName === \"chronology\") {\n        return {\n          exists: true,\n          value: this.generateChronology()\n        };\n      }\n      if (varName.match(/^(?:firm\\.)?settings\\./)) {\n        // Get and return the firm settings\n        const practiceAreaSettings = this.store.peekRecord(\"settings\", this.practiceArea);\n        if (practiceAreaSettings) {\n          const settingsPath = varName.replace(/^firm\\./, \"\");\n          return {\n            exists: true,\n            value: practiceAreaSettings.get(settingsPath)\n          };\n        }\n      }\n      return {\n        exists: false\n      };\n    },\n    getCustomVariableDefinitions() {\n      const induction = this.getInduction(this.inductions);\n      if (induction) {\n        const inductionDefinition = this.questionnaireLogic.peekInductionObject(induction.id);\n        if (inductionDefinition && inductionDefinition.customVariables) {\n          return inductionDefinition.customVariables;\n        }\n      }\n      return [];\n    },\n    getCustomVariableValue(variableName, context) {\n      const customVariables = this.getCustomVariableDefinitions();\n      const customVariable = customVariables.find(customVariable => customVariable.id === variableName);\n      if (!customVariable) {\n        return {\n          exists: false\n        };\n      }\n      let value, pt;\n      switch (customVariable.type) {\n        case undefined:\n          value = this.questionnaireLogic.computeDisplayIf(customVariable, this, context);\n          break;\n        case \"parseText\":\n          pt = _parseText.default.create();\n          // We run .toString() here since consumers don't expect a safeString, and if this variable is used in a parse text then that will wrap it in a safeString anyway\n          value = pt.compute([customVariable.parseTextCalculation], {\n            clientRecord: this,\n            context,\n            doNotWrap: true\n          }).toString();\n          break;\n        case \"constant\":\n          value = JSON.parse(customVariable.constantValue);\n          break;\n      }\n      if (value !== undefined) {\n        return {\n          value,\n          exists: true\n        };\n      }\n      return {\n        exists: false\n      };\n    },\n    getUniqueStandalonePageDetails(pageID) {\n      const induction = this.getInduction(this.inductions);\n      if (induction) {\n        const inductionDefinition = this.questionnaireLogic.peekInductionObject(induction.id);\n        if (inductionDefinition) {\n          const standaloneChapter = inductionDefinition.chapters.find(chapter => chapter.id === \"standalone\");\n          if (!standaloneChapter) {\n            return;\n          }\n          const pageDefinition = standaloneChapter.pages.find(page => page.id === pageID);\n          if (!pageDefinition || pageDefinition.deleted) {\n            return;\n          }\n          return {\n            page: pageDefinition,\n            model: (0, _getAnswersFrom.getAnswersFrom)([], {\n              induction: induction.id,\n              repeatToken: induction.repeatToken,\n              answersLocation: pageDefinition.answersLocation,\n              client: this\n            }),\n            context: {\n              inductionObject: induction,\n              repeat: induction.repeatToken\n            },\n            pageIndex: standaloneChapter.pages.findIndex(page => page.id === pageID),\n            loop: pageDefinition.answersLocationLoop ? 0 : undefined\n          };\n        }\n      }\n    },\n    exportRecord() {\n      // TODO: Have this work for multiple inductions\n      const induction = this.getInduction(this.inductions);\n      return this.questionnaireLogic.getInductionObject(induction.id).then(form => {\n        const record = this._generateRecordForExport(form.integrationObject || this._defaultIntegrationObject(form.practiceArea), induction);\n        return {\n          ...record,\n          firmID: this.firmID,\n          practiceArea: this.practiceArea\n        };\n      });\n    },\n    // TODO: Define a better default exports for per practice area?\n    _defaultIntegrationObject(/* practiceArea */\n    ) {\n      return {\n        user: \"primaryContactPersonID\"\n      };\n    },\n    _generateRecordForExport(integrationObject, induction) {\n      const formatedObject = {};\n      for (const key in integrationObject) {\n        if (Object.prototype.hasOwnProperty.call(integrationObject, key)) {\n          const value = integrationObject[key];\n          if (key.startsWith(\"__\")) continue;\n          if (value === undefined || value === null) {\n            formatedObject[key] = \"undefined\";\n          } else if (typeof value === \"string\") {\n            formatedObject[key] = (0, _getAnswersFrom.getAnswersFrom)([], {\n              induction: induction.id,\n              repeatToken: induction.repeatToken,\n              answersLocation: value,\n              client: this\n            }) || undefined;\n          } else if (Object.keys(value).length) {\n            formatedObject[key] = this._generateRecordForExport(integrationObject[key], induction);\n          }\n        }\n      }\n      return formatedObject;\n    },\n    generateChronology() {\n      const induction = this.getInduction(this.inductions);\n      let chronologyEvents = [];\n      if (induction) {\n        const events = this.questionnaireLogic.peekInductionObject(induction.id)?.chronologyEvents;\n        if (events) {\n          chronologyEvents = events;\n        }\n      }\n      const context = {\n        inductionObject: induction,\n        repeat: induction.repeatToken\n      };\n      const pt = _parseText.default.create();\n      const chronology = [];\n      for (const event of chronologyEvents) {\n        if (event.answerLocation && event.text) {\n          const parentLocation = (0, _getAnswersFrom.getAnswersFrom)([], {\n            induction: induction.id,\n            repeatToken: induction.repeatToken,\n            answersLocation: event.answerLocation,\n            client: this\n          });\n          if (Array.isArray(parentLocation) && parentLocation.length) {\n            for (const entity of parentLocation) {\n              if (this.questionnaireLogic.computeDisplayIf(event, this, context, entity)) {\n                chronology.push({\n                  date: this.constructDateObject(entity, event.answerKey),\n                  text: pt.compute([event.text], {\n                    clientRecord: this,\n                    context,\n                    model: entity,\n                    doNotWrap: true\n                  }).toString()\n                });\n              }\n            }\n          } else if (typeof parentLocation === \"object\" && parentLocation !== null && this.questionnaireLogic.computeDisplayIf(event, this, context, {})) {\n            chronology.push({\n              date: event.answerKey ? this.constructDateObject(parentLocation, event.answerKey) : parentLocation,\n              text: pt.compute([event.text], {\n                clientRecord: this,\n                context,\n                model: {},\n                doNotWrap: true\n              }).toString()\n            });\n          }\n        }\n      }\n      return chronology.filter(event => event?.date?.year).sort((event, otherEvent) => {\n        const {\n          date\n        } = event;\n        const otherDate = otherEvent.date;\n        if (date.year > otherDate.year) {\n          return 1;\n        }\n        if (date.year === otherDate.year) {\n          if (!date.month || date.month > otherDate.month) {\n            return 1;\n          }\n          if (date.month === otherDate.month) {\n            if (!date.day || date.day > otherDate.day) {\n              return 1;\n            }\n            if (date.day === otherDate.day) {\n              return 0;\n            }\n          }\n        }\n        return -1;\n      });\n    },\n    constructDateObject(answerLocation, dateQuestionID) {\n      const date = {\n        year: undefined,\n        month: undefined,\n        day: undefined\n      };\n      if (answerLocation && dateQuestionID) {\n        Object.keys(date).forEach(timePeriod => {\n          const dateSegmentValue = parseInt(answerLocation[dateQuestionID + timePeriod]);\n          if (!isNaN(dateSegmentValue)) {\n            date[timePeriod] = dateSegmentValue;\n          }\n        });\n      }\n      return date;\n    },\n    getKnownEntity(personID, options = {}) {\n      if (typeof personID === \"object\") {\n        personID = personID.id;\n      }\n      if (options.excludeFamily) {\n        return this.knownEntities.find(e => e.id === personID);\n      }\n      return this.knownEntitiesAndFamilyMembers.find(e => e.id === personID);\n    },\n    /**\n     * START OF INDUCTION FUNCTIONS\n     * Might be something that should be moved into the masterFormMixon\n     */\n\n    addInduction(induction, canBeDeleted = true, logEvent = true) {\n      if (!this.answers) {\n        throw new Error(\"Cannot add induction when answers not initialised\");\n      }\n      if (!this.inductions) {\n        throw new Error(\"Cannot add induction when inductions array not initialised\");\n      }\n      if (!induction || !induction.formID || typeof induction.formID !== \"string\") {\n        throw new Error(\"Cannot add induction - must supply a non-zero induction name\");\n      }\n      const existingDuplicates = this.inductions.filter(k => k.id === induction);\n      const repeatToken = existingDuplicates.length + 1;\n      const inductionOrder = induction.pinToStart ? 1 : induction.pinToEnd ? 3 : 2;\n      (0, _object.set)(this.answers, `${induction.formID}#${repeatToken}`, {});\n      this.inductions.pushObject({\n        id: induction.formID,\n        repeatToken,\n        canBeDeleted: canBeDeleted,\n        inductionOrder\n      });\n      this.set(\"inductions\", this.inductions.sort((a, b) => {\n        if (a.inductionOrder < b.inductionOrder) {\n          return -1;\n        }\n        if (a.inductionOrder > b.inductionOrder) {\n          return 1;\n        }\n        return 0;\n      }));\n      if (logEvent) {\n        this.eventLogging.logFormUsage(this.clientID, induction.formID, repeatToken, \"UserAdded\");\n      }\n      return repeatToken;\n    },\n    removeInduction(inductionID, repeatToken, logEvent = true) {\n      if (!this?.inductions) {\n        throw new Error(\"Cannot remove induction when inductions array not initialised\");\n      }\n      if (!inductionID || typeof inductionID !== \"string\") {\n        throw new Error(\"Cannot add induction - must supply a non-zero induction ID\");\n      }\n      const {\n        inductions\n      } = this;\n      for (let i = inductions.length - 1; i >= 0; i--) {\n        const element = inductions[i];\n        if (element.id === inductionID && (element.repeatToken === repeatToken || (0, _utils.isNone)(repeatToken))) {\n          const newList = inductions.slice(0, i).concat(inductions.slice(i + 1));\n          this.set(\"inductions\", newList);\n          this.clearAnswersFor(element.id, null, null, element.repeatToken);\n          if (logEvent) {\n            this.eventLogging.logFormUsage(this.clientID, element.id, element.repeatToken, \"UserDeleted\");\n          }\n          return;\n        }\n      }\n    },\n    updateInduction(oldID, newID) {\n      const oldInduction = this.inductions.find(induction => induction.id === oldID);\n      if (!oldInduction) {\n        throw new Error(`Induction with ID ${oldID} not found`);\n      }\n      this.set(\"inductions\", [{\n        ...oldInduction,\n        id: newID\n      }]);\n      const newIDAndRepeatToken = `${newID}#${oldInduction.repeatToken}`;\n      const oldIDAndRepeatToken = `${oldID}#${oldInduction.repeatToken}`;\n      this.answers[newIDAndRepeatToken] = this.answers[oldIDAndRepeatToken];\n      this.set(\"answers\", this.answers);\n    },\n    /** END OF INDUCTION FUNCTIONS */\n\n    /**\n     * SHARED attributes and CP\n     */\n    deceased: (0, _object.computed)(\"answers\", \"inductions\", \"practiceArea\", \"touch\", function () {\n      // Only used in Probate and Estates\n      if ([\"Probate\", \"Estates\"].includes(this.practiceArea)) {\n        const induction = this.getInduction(this.inductions);\n        if (induction) {\n          const person = this.getAnswerToQuestion(\"staticReferences.deceasedQuestion\", induction);\n          if (typeof person === \"string\") {\n            return this.getKnownEntity(person, {\n              excludeFamily: true\n            });\n          }\n          return person;\n        }\n      }\n      return null;\n    }),\n    instructor: (0, _object.computed)(\"answers\", \"induction\", \"inductions\", \"knownEntitiesAndFamilyMembers\", \"primaryContactPersonID\", \"touch\", function () {\n      if (this.primaryContactPersonID) {\n        return this.knownEntitiesAndFamilyMembers.find(p => p.id === this.primaryContactPersonID);\n      }\n      const induction = this.getInduction(this.inductions);\n      const instructor = this.getAnswerToQuestion(\"staticReferences.instructorQuestion\", induction);\n      if (typeof instructor === \"string\") {\n        return this.getKnownEntity(instructor);\n      }\n      return instructor;\n    }),\n    relationshipToDeceased: (0, _object.computed)(\"deceased\", \"instructor\", \"practiceArea\", \"touch\", function () {\n      const {\n        deceased,\n        instructor\n      } = this;\n      if (!deceased?.relationship || !instructor) {\n        return;\n      }\n      const gender = instructor.gender || instructor[\"firstName-gender\"];\n      const relationshipToDeceased = (0, _inverseRelationship.inverseRelationship)([deceased.relationship, gender]);\n      if (this.practiceArea === \"Estates\") {\n        this.addIDToRelationshipArray(deceased, instructor.id, relationshipToDeceased);\n      }\n      return relationshipToDeceased;\n    }),\n    allExecutors: (0, _object.computed)(\"inductions\", \"instructor\", \"knownEntities\", \"pageChangedTouch\", \"practiceArea\", function () {\n      if (this.practiceArea === \"Estates\") {\n        return this.knownEntities.filter(p => p.isExecutor);\n      }\n      const induction = this.getInduction(this.inductions);\n      const executors = this.getAnswerToQuestion(\"staticReferences.executorListQuestion\", induction) || [];\n      const allExecutors = [...executors];\n      const userIsExecutorAnswer = this.getAnswerToQuestion(\"staticReferences.isExecutorQuestion\", induction);\n      if (userIsExecutorAnswer === \"yes\" && this?.instructor) {\n        allExecutors.push(this.instructor);\n      }\n      return allExecutors;\n    }),\n    allSpouses: (0, _object.computed)(\"deceased\", \"deceased.spouses\", function () {\n      if (!this.deceased) {\n        return [];\n      }\n      const spouses = this.deceased.spouses || [];\n      return spouses.map(spouse => {\n        if (typeof spouse === \"string\") {\n          return this.getKnownEntity(spouse);\n        }\n        return spouse;\n      });\n    }),\n    allLivingSpouses: (0, _object.computed)(\"allSpouses\", function () {\n      return this.allSpouses.filter(spouse => !spouse.deceased);\n    }),\n    allChildren: (0, _object.computed)(\"deceased.spouses.length\", \"touch\", function () {\n      const list = [];\n      if (this.deceased) {\n        for (let i = 0; this.deceased.spouses && i < this.deceased.spouses.length; i++) {\n          const spouse = this.getKnownEntity(this.deceased.spouses[i]);\n          for (let j = 0; spouse.children && j < spouse.children.length; j++) {\n            const child = this.getKnownEntity(spouse.children[j]);\n            child.type = \"deceased\";\n            list.push(child);\n          }\n          for (let j = 0; spouse.previousChildren && j < spouse.previousChildren.length; j++) {\n            const child = this.getKnownEntity(spouse.previousChildren[j]);\n            child.type = \"other\";\n            list.push(child);\n          }\n        }\n      }\n      return list;\n    }),\n    allLivingChildren: (0, _object.computed)(\"allChildren\", function () {\n      return this.allChildren.filter(child => !child.deceased);\n    }),\n    allMinors: (0, _object.computed)(\"knownEntitiesAndFamilyMembers\", \"pageChangedTouch\", function () {\n      return this.knownEntitiesAndFamilyMembers.filter(person => person.age && person.age < 18);\n    }),\n    allAdultChildren: (0, _object.computed)(\"allChildren\", function () {\n      // We assume a child is an adult if no age is given\n      return this.allChildren.filter(child => child.age >= 18 || (0, _utils.isNone)(child.age));\n    }),\n    allDeceasedAdultChildren: (0, _object.computed)(\"allAdultChildren\", \"allChildren\", function () {\n      return this.allAdultChildren.filter(child => child.deceased);\n    }),\n    allGrandChildren: (0, _object.computed)(\"allChildren\", \"allChildren@each.children\", \"practiceArea\", function () {\n      const list = [];\n      const allChildren = this.allChildren || [];\n      for (let i = 0; i < allChildren.length; i++) {\n        const child = allChildren[i];\n\n        // Check if this child has any children of their own\n        for (let i = 0; child.children && i < child.children.length; i++) {\n          const grandchild = this.getKnownEntity(child.children[i]);\n          list.push(grandchild);\n        }\n\n        // ONLY FOR PROBATE DO WE NEED THIS\n        if (this.practiceArea === \"Probate\") {\n          // Check the childs spouse for any grandchildren\n          for (let i = 0; child.spouses && i < child.spouses.length; i++) {\n            const spouse = this.getKnownEntity(child.spouses[i]);\n\n            // Check if this spouse has any children\n            for (let j = 0; spouse.children && j < spouse.children.length; j++) {\n              const grandchild = this.getKnownEntity(spouse.children[j]);\n              list.push(grandchild);\n            }\n\n            // Check if this spouse has any previous children\n            for (let j = 0; spouse.previousChildren && j < spouse.previousChildren.length; j++) {\n              const grandchild = this.getKnownEntity(spouse.previousChildren[j]);\n              list.push(grandchild);\n            }\n          }\n        }\n      }\n      return list;\n    }),\n    allLivingGrandChildren: (0, _object.computed)(\"allGrandChildren\", function () {\n      return this.allGrandChildren.filter(grandChild => !grandChild.deceased);\n    }),\n    deceasedsPartnerAtTimeOfDeath: (0, _object.computed)(\"allLivingSpouses\", \"allLivingSpouses.@each.stillMarried\", \"allLivingSpouses.@each.whatHappened\", function () {\n      if (this.allLivingSpouses && this.allLivingSpouses.length) {\n        // There are two questions which can indicate a spouse at time of death, either stillMarried is yes, or whatHappened is untilDeceasedPassed.\n        return this.allLivingSpouses.find(spouse => spouse.stillMarried === \"yes\" || spouse.whatHappened === \"untilDeceasedPassed\");\n      }\n      return null;\n    }),\n    inFamilyTree(variable) {\n      if (!variable || ![\"object\", \"string\"].includes(typeof variable)) {\n        return false;\n      }\n      const variableID = typeof variable === \"object\" ? variable.id : variable;\n      return this.allFamilyMembers.filter(familyMember => familyMember.id === variableID).length;\n    },\n    unselectHiddenRelationshipDeceased: (0, _object.observer)(\"deceased\", \"touch\", function () {\n      if ([\"Probate\", \"Estates\"].includes(this.practiceArea) && !this.isLoading) {\n        this.unselectHiddenRelationship(this.deceased, \"staticReferences.deceasedQuestion\");\n      }\n    }),\n    unselectHiddenRelationship(personObject, question) {\n      if (!personObject || personObject[\"firstName-gender\"] || personObject.relationship) {\n        return;\n      }\n      if (!this.genderRelationshipMatch(personObject.relationship, personObject[\"firstName-gender\"])) {\n        // Unselect relationship\n        const induction = this.getInduction(this.inductions);\n        this.setPreciseAnswer(induction.id, this.get(`${question}.chapter`), this.get(`${question}.page`), this.get(`${question}.question`), \"relationship\", induction.repeatToken, null);\n      }\n    },\n    genderRelationshipMatch(relationship, gender) {\n      if (![..._relationshipgender.maleRelationships, ..._relationshipgender.femaleRelationships].includes(relationship)) {\n        return true;\n      }\n      return _relationshipgender.maleRelationships.includes(relationship) && gender === \"male\" || _relationshipgender.femaleRelationships.includes(relationship) && gender === \"female\" || gender === \"unsure\" || gender === \"notspecified\";\n    },\n    /**\n     * PROBATE SPECIFIC\n     */\n    referrerProvidingFinancials: (0, _model.attr)(\"string\"),\n    // referrer for financials (eg accounting firm)\n    emailedReferrerOnFinances: (0, _model.attr)(\"string\"),\n    deceasedYearOfDeath: (0, _object.computed)(\"deceased.dateOfDeathyear\", \"touch\", function () {\n      if (this.deceased) {\n        return this.deceased.dateOfDeathyear || new Date().getFullYear();\n      }\n      return null;\n    }),\n    deceasedYearOfDeathMinusOne: (0, _object.computed)(\"deceasedYearOfDeath\", function () {\n      return parseInt(this.deceasedYearOfDeath - 1);\n    }),\n    allLivingFormerSpouses: (0, _object.computed)(\"allLivingSpouses\", function () {\n      // A former spouse is a spouse who's relationship ended before the deceased passed\n      if (this.allLivingSpouses) {\n        return this.allLivingSpouses.filter(spouse => spouse.whatHappened === \"separated\" || spouse.stillMarried === \"no\");\n      }\n      return null;\n    }),\n    allDeceasedSiblings: (0, _object.computed)(\"deceased.siblings\", \"deceased.siblings.@each.deceased\", function () {\n      if (this.deceased && this.deceased.siblings) {\n        return this.deceased.siblings.filter(sibling => sibling && sibling.deceased);\n      }\n      return null;\n    }),\n    allChildrenOfDeceasedSiblings: (0, _object.computed)(\"allDeceasedSiblings\", function () {\n      if (this.allDeceasedSiblings) {\n        return this.allDeceasedSiblings.map(sibling => sibling.children).filter(child => child);\n      }\n      return null;\n    }),\n    allDeceasedAdultSiblings: (0, _object.computed)(\"allDeceasedSiblings\", function () {\n      if (this.allDeceasedSiblings) {\n        // We assume a sibling is an adult if no age is given\n        return this.allDeceasedSiblings.filter(sibling => sibling.age >= 18 || (0, _utils.isNone)(sibling.age));\n      }\n      return null;\n    }),\n    allLivingExecutors: (0, _object.computed)(\"allExecutors\", function () {\n      return this.allExecutors.filter(executor => executor && !executor.deceased);\n    }),\n    allDeceasedAuntsAndUncles: (0, _object.computed)(\"deceased.auntsAndUncles\", \"deceased.auntsAndUncles.@each.deceased\", function () {\n      if (this.deceased && this.deceased.auntsAndUncles) {\n        return this.deceased.auntsAndUncles.filter(auntOrUncle => auntOrUncle && auntOrUncle.deceased);\n      }\n      return null;\n    }),\n    onRelationshipToDeceasedChanged: (0, _object.observer)(\"primaryContactPersonID\", \"relationshipToDeceased\", function () {\n      if (this.practiceArea !== \"Probate\" || !this.isLoading) {\n        // Probate only observer or model still loading\n        return;\n      }\n      const personObject = this.knownEntitiesAndFamilyMembers.find(p => p.id === this.primaryContactPersonID);\n      if (personObject) {\n        (0, _object.set)(personObject, \"relationship\", this.relationshipToDeceased);\n      }\n    }),\n    addClientAsSpouse: (0, _object.observer)(\"deceased.relationship\", function () {\n      if (this.practiceArea !== \"Probate\" || !this.isLoading) {\n        // Probate only observer or model still loading\n        return;\n      }\n      const induction = this.getInduction(this.inductions);\n      if (!induction || !this.deceased) {\n        return;\n      }\n      let spouses = this.deceased.spouses || [];\n      if ([\"husband\", \"wife\", \"partner\"].includes(this.deceased.relationship)) {\n        if (spouses && spouses.some(s => s.id === this.primaryContactPersonID)) {\n          return;\n        }\n        const newID = (0, _uuid.v4)();\n        const firstName = this.getAnswerToQuestion(\"staticReferences.instructorQuestion\", induction);\n        const personToAdd = {\n          firstName,\n          id: newID,\n          relationship: this.deceased.relationship === \"partner\" ? \"partner\" : \"spouse\"\n        };\n        spouses.push(personToAdd);\n        this.set(\"primaryContactPersonID\", newID);\n      } else if (spouses) {\n        if (spouses && spouses.every(s => s.id !== this.primaryContactPersonID)) {\n          return;\n        }\n        spouses = spouses.filter(e => e.id !== this.primaryContactPersonID);\n        this.set(\"primaryContactPersonID\", null);\n      }\n      (0, _object.set)(this.deceased, \"spouses\", spouses);\n    }),\n    /**\n     * ESTATES SPECIFIC\n     */\n    unselectHiddenRelationshipClaimant: (0, _object.observer)(\"claimant\", \"touch\", function () {\n      if (this.practiceArea === \"Estates\" && !this.isLoading) {\n        this.unselectHiddenRelationship(this.claimant, \"staticReferences.claimantQuestion\");\n      }\n    }),\n    allChildrenIDs: (0, _object.computed)(\"allChildren\", function () {\n      return this.allChildren.map(child => child.id);\n    }),\n    allChildrenWithDeceasedIDs: (0, _object.computed)(\"allChildren\", function () {\n      return this.allChildren.filter(child => child.type === \"deceased\").map(child => child.id);\n    }),\n    allChildrenWithOtherIDs: (0, _object.computed)(\"allChildren\", function () {\n      return this.allChildren.filter(child => child.type === \"other\").map(child => child.id);\n    }),\n    allGrandChildrenIDs: (0, _object.computed)(\"allGrandChildren\", function () {\n      return this.allGrandChildren.map(grandChild => grandChild.id);\n    }),\n    allDependentGrandChildren: (0, _object.computed)(\"allLivingGrandChildren\", function () {\n      return this.allLivingGrandChildren.filter(grandChild => grandChild.financiallyDependent);\n    }),\n    parentSiblingEligibility: (0, _object.computed)(\"allLivingSpouses\", \"allLivingChildren\", \"allLivingGrandChildren\", function () {\n      const spouses = this.allLivingSpouses || [];\n      const children = this.allLivingChildren || [];\n      const grandChildren = this.allLivingGrandChildren || [];\n      const hasLivingSpouses = spouses.some(spouse => spouse.whatHappened !== \"separated\");\n      const allLivingSpousesAreFormer = spouses.length && spouses.every(spouse => spouse.whatHappened === \"separated\");\n      if (!hasLivingSpouses && !children.length && !grandChildren.length || allLivingSpousesAreFormer) {\n        return true;\n      }\n      return false;\n    }),\n    siblingsQuestionRequired: (0, _object.computed)(\"allLivingParents.length\", \"parentSiblingEligibility\", function () {\n      const hasParents = this.allLivingParents && this.allLivingParents.length;\n      return !hasParents && this.parentSiblingEligibility;\n    }),\n    claimant: (0, _object.computed)(\"answers\", \"inductions\", \"touch\", function () {\n      const induction = this.getInduction(this.inductions);\n      const claimant = this.getAnswerToQuestion(\"staticReferences.claimantQuestion\", induction);\n      if (!claimant) {\n        return;\n      }\n      if (typeof claimant === \"string\") {\n        return this.getKnownEntity(claimant);\n      }\n      return claimant;\n    }),\n    claimantID: (0, _object.computed)(\"claimant.id\", function () {\n      if (this.claimant) {\n        return this.claimant.id;\n      }\n      return null;\n    }),\n    claimantAndInstructor: (0, _object.computed)(\"claimant\", \"instructor\", \"claimantIsUser\", function () {\n      const result = [];\n      if (this.instructor) {\n        result.push(this.instructor);\n      }\n      if (!this.claimantIsUser && this.claimant) {\n        result.push(this.claimant);\n      }\n      return result;\n    }),\n    otherBeneficiaries: (0, _object.computed)(\"deceased\", \"deceased.otherBeneficiaries\", function () {\n      if (!this?.deceased?.otherBeneficiaries) {\n        return [];\n      }\n      return this.deceased.otherBeneficiaries;\n    }),\n    otherBeneficiariesIDs: (0, _object.computed)(\"otherBeneficiaries\", function () {\n      return this.otherBeneficiaries.map(beneficiary => beneficiary.id);\n    }),\n    claimantOrUserSignificantExpenses: (0, _object.computed)(\"claimantOrUser.significantExpenses\", function () {\n      if (this.claimantOrUser) {\n        return this.claimantOrUser.significantExpenses || [];\n      }\n      return [];\n    }),\n    allLivingCarers: (0, _object.computed)(\"knownEntities.length\", function () {\n      if (!this?.knownEntities?.length) {\n        return [];\n      }\n      return this.knownEntities.filter(person => person?.registeredCarer);\n    }),\n    allSiblings: (0, _object.computed)(\"deceased\", \"deceased.siblings\", function () {\n      if (!this?.deceased?.siblings) {\n        return [];\n      }\n      return this.deceased.siblings.map(siblingID => this.getKnownEntity(siblingID));\n    }),\n    allLivingSiblings: (0, _object.computed)(\"allSiblings\", function () {\n      return this.allSiblings.filter(p => !p.deceased);\n    }),\n    claimantsRelationshipToDeceased: (0, _object.computed)(\"claimant.{id,relationship}\", \"deceased\", function () {\n      if (!this?.claimant) {\n        return;\n      }\n      if (this?.deceased) {\n        this.addIDToRelationshipArray(this.deceased, this.claimant.id, this.claimant.relationship);\n      }\n      return this.claimant.relationship;\n    }),\n    getArrayKeyFromRelationship(relationship) {\n      let arrayKey;\n      if (_relationshipgender.parentRelationships.includes(relationship)) {\n        arrayKey = \"parent\";\n      } else if (_relationshipgender.siblingRelationships.includes(relationship)) {\n        arrayKey = \"siblings\";\n      } else if (_relationshipgender.partnerRelationships.includes(relationship)) {\n        arrayKey = \"spouses\";\n      } else if (!relationship || relationship === \"other\") {\n        arrayKey = \"otherBeneficiaries\";\n      }\n      return arrayKey;\n    },\n    getAnswerToQuestion(questionName, induction = this.getInduction(this.inductions)) {\n      return this.getPreciseAnswer(induction.id, this.get(`${questionName}.chapter`), this.get(`${questionName}.page`), this.get(`${questionName}.question`), null, induction.repeatToken);\n    },\n    allParents: (0, _object.computed)(\"deceased\", \"deceased.parentOne\", \"deceased.parentTwo\", function () {\n      if (!this?.deceased) {\n        return [];\n      }\n      const parents = [];\n      const {\n        deceased\n      } = this;\n      if (deceased?.parentOne) {\n        const parentOne = this.getKnownEntity(deceased.parentOne);\n        if (parentOne) {\n          parents.push(parentOne);\n        }\n      }\n      if (deceased?.parentTwo) {\n        const parentTwo = this.getKnownEntity(deceased.parentTwo);\n        if (parentTwo) {\n          parents.push(parentTwo);\n        }\n      }\n      return parents;\n    }),\n    allLivingParents: (0, _object.computed)(\"allParents\", function () {\n      return this.allParents.filter(parent => !parent.deceased);\n    }),\n    claimantIsUser: (0, _object.computed)(\"inductions\", \"touch\", function () {\n      const induction = this.getInduction(this.inductions);\n      const matterType = this.getAnswerToQuestion(\"staticReferences.matterTypeQuestion\", induction);\n      if (matterType === \"leftOut\" || matterType === \"inadequateProvisions\") {\n        return true;\n      }\n      if (matterType === \"provisionMatter\") {\n        return false;\n      }\n      return null;\n    }),\n    claimantOrUser: (0, _object.computed)(\"claimantIsUser\", \"claimant\", \"instructor\", function () {\n      const isUser = this.claimantIsUser;\n      if (isUser == null) {\n        return null;\n      }\n      if (isUser) {\n        return this.instructor;\n      }\n      return this.claimant;\n    }),\n    claimantOrUserHasChildren: (0, _computed.gt)(\"claimantOrUser.children.length\", 0),\n    eligiblePeople: (0, _object.computed)(\"allChildren\", \"allLivingCarers\", \"allLivingChildren\", \"allLivingGrandChildren\", \"allLivingParents\", \"allLivingSiblings\", \"allLivingSpouses\", \"allSpouses\", \"claimant\", \"claimantIsUser\", \"instructor\", \"isWillPrepared\", \"knownEntities.@each.receivesProvision\", \"parentSiblingEligibility\", function () {\n      if (this.isWillPrepared) {\n        return this.addClaimantIfNecessary(this.knownEntities.filter(p => p?.receivesProvision), this.claimant, this.instructor, this.claimantIsUser);\n      }\n      const eligiblePeople = [...this.allLivingSpouses, ...this.allLivingCarers];\n      this.allSpouses.forEach(spouse => {\n        const livingChildren = spouse.children ? spouse.children.map(p => this.getKnownEntity(p)).filter(child => !child.deceased) : [];\n        const livingPreviousChildren = spouse.previousChildren ? spouse.previousChildren.map(p => this.getKnownEntity(p)).filter(child => !child.deceased) : [];\n        if (spouse.deceased) {\n          eligiblePeople.push(...livingChildren, ...livingPreviousChildren);\n        } else {\n          eligiblePeople.push(...[...livingChildren, ...livingPreviousChildren].filter(child => child.age >= 18));\n        }\n      });\n      this.allChildren.forEach(child => {\n        const livingGrandChildren = child.children ? child.children.map(grandchild => this.getKnownEntity(grandchild)).filter(grandchild => !grandchild.deceased) : [];\n        if (child.deceased) {\n          eligiblePeople.push(...livingGrandChildren);\n        } else {\n          eligiblePeople.push(...livingGrandChildren.filter(grandchild => grandchild.age >= 18));\n        }\n      });\n      if (this.parentSiblingEligibility) {\n        eligiblePeople.push(...this.allLivingParents, ...this.allLivingSiblings);\n      }\n      return this.addClaimantIfNecessary(eligiblePeople, this.claimant, this.instructor, this.claimantIsUser);\n    }),\n    addClaimantIfNecessary(eligiblePeople, claimant, instructor, claimantIsUser) {\n      if (!eligiblePeople) {\n        return [];\n      }\n      if (claimantIsUser && instructor && !eligiblePeople.find(p => p.id === instructor.id)) {\n        eligiblePeople.push(instructor);\n      }\n      if (!claimantIsUser && claimant && !eligiblePeople.find(p => p.id === claimant.id)) {\n        eligiblePeople.push(claimant);\n      }\n      return eligiblePeople;\n    },\n    userEligibility: (0, _object.computed)(\"eligiblePeople.length\", \"instructor.id\", function () {\n      if (!this?.eligiblePeople?.length) {\n        return false;\n      }\n      return this.eligiblePeople.some(person => person.id === this.instructor?.id);\n    }),\n    eligiblePeopleWithoutClaimant: (0, _object.computed)(\"claimantOrUser.id\", \"eligiblePeople.length\", function () {\n      if (!this?.eligiblePeople?.length) {\n        return [];\n      }\n      if (!this?.claimantOrUser) {\n        return this.eligiblePeople;\n      }\n      return this.eligiblePeople.filter(p => p.id !== this.claimantOrUser.id);\n    }),\n    eligiblePeopleWithoutInstructor: (0, _object.computed)(\"eligiblePeople.length\", \"instructor.id\", function () {\n      if (!this?.eligiblePeople?.length) {\n        return [];\n      }\n      if (!this?.instructor) {\n        return this.eligiblePeople;\n      }\n      return this.eligiblePeople.filter(person => person.id !== this.instructor.id);\n    }),\n    eligiblePeopleWithoutClaimantOrInstructor: (0, _object.computed)(\"claimant.id\", \"eligiblePeople.length\", \"instructor.id\", function () {\n      if (!this?.eligiblePeople?.length) {\n        return [];\n      }\n      let eligiblePeopleList = this.eligiblePeople;\n      if (this?.instructor?.id) {\n        eligiblePeopleList = eligiblePeopleList.filter(person => person.id !== this.instructor.id);\n      }\n      if (this?.claimant?.id) {\n        eligiblePeopleList = eligiblePeopleList.filter(person => person.id !== this.claimant.id);\n      }\n      return eligiblePeopleList;\n    }),\n    claimWindowDuration: (0, _object.computed)(\"stateOfApplicationAbbreviated\", function () {\n      const state = this.stateOfApplicationAbbreviated;\n      // These are in months\n      switch (state) {\n        case \"TAS\":\n          return 3;\n        case \"VIC\":\n        case \"SA\":\n        case \"WA\":\n        case \"ACT\":\n        case \"QLD\":\n        case \"other\":\n        case \"notsure\":\n          return 6;\n        case \"NSW\":\n        case \"NT\":\n          return 12;\n      }\n      return null;\n    }),\n    missedWindow: (0, _object.computed)(\"claimWindowExpiryDate\", function () {\n      const expiry = this.claimWindowExpiryDate;\n      if (!expiry) {\n        return;\n      }\n      const now = new Date();\n      const expiryDate = new Date(expiry.year, expiry.month - 1, expiry.day);\n      return now > expiryDate;\n    }),\n    dateOfProbate: (0, _object.computed)(\"answers\", \"induction\", \"inductions\", \"practiceArea\", \"staticReferences.{dateOfProbateQuestion,dateOfProbateQuestion2}\", \"touch\", function () {\n      if ([\"Estates\"].includes(this.practiceArea)) {\n        const induction = this.getInduction(this.inductions);\n        const firstChapterDate = this.getDate(induction, this.staticReferences.dateOfProbateQuestion);\n        const willChapterDate = this.getDate(induction, this.staticReferences.dateOfProbateQuestion2);\n        if (!firstChapterDate.day && !firstChapterDate.month && !firstChapterDate.year) {\n          return willChapterDate;\n        }\n        return firstChapterDate;\n      }\n      return null;\n    }),\n    dateOfDeath: (0, _object.computed)(\"answers\", \"induction\", \"inductions\", \"practiceArea\", \"staticReferences.{dateOfDeathQuestion,secondDateOfDeathQuestion}\", \"touch\", function () {\n      if ([\"Estates\"].includes(this.practiceArea)) {\n        const induction = this.getInduction(this.inductions);\n        const date1 = this.getDate(induction, this.staticReferences.dateOfDeathQuestion);\n        const date2 = this.getDate(induction, this.staticReferences.secondDateOfDeathQuestion);\n        if (!date1.day && !date1.month && !date1.year) {\n          return date2;\n        }\n        return date1;\n      }\n      return null;\n    }),\n    getDate(induction, questionLocation) {\n      if (!induction || !questionLocation) {\n        return;\n      }\n      return {\n        year: this.getPreciseAnswer(induction.id, questionLocation.chapter, questionLocation.page, `${questionLocation.question}year`, null, induction.repeatToken),\n        month: this.getPreciseAnswer(induction.id, questionLocation.chapter, questionLocation.page, `${questionLocation.question}month`, null, induction.repeatToken),\n        day: this.getPreciseAnswer(induction.id, questionLocation.chapter, questionLocation.page, `${questionLocation.question}day`, null, induction.repeatToken)\n      };\n    },\n    claimWindowExpiryDate: (0, _object.computed)(\"claimWindowDuration\", \"dateOfProbate\", \"dateOfDeath\", \"stateOfApplicationAbbreviated\", function () {\n      const duration = this.claimWindowDuration || 0;\n      const state = this.stateOfApplicationAbbreviated;\n      let date;\n      if ([\"TAS\", \"VIC\", \"SA\", \"WA\", \"ACT\", \"NT\"].includes(state)) {\n        date = this.dateOfProbate;\n      } else if ([\"NSW\", \"QLD\", \"outsideAustraliaOther\", \"notsure\"].includes(state)) {\n        date = this.dateOfDeath;\n      }\n\n      // We don't want to give an inaccurate expiry date ever, so if we're missing some information it's better to let the lawyer figure it out.\n      if (!date || !date.year || !date.month || !date.day) {\n        return;\n      }\n      const dateOfExpiry = (0, _moment.default)(`${date.day}/${date.month}/${date.year}`, \"D/M/YYYY\", true).add(duration, \"months\");\n      return {\n        year: dateOfExpiry.year(),\n        month: dateOfExpiry.month() + 1,\n        day: dateOfExpiry.date()\n      };\n    }),\n    stateOfApplicationAbbreviated: (0, _object.computed)(\"answers\", \"grantOfProbateState\", \"induction\", \"lastPlaceOfResidenceState\", \"touch\", function () {\n      return this.grantOfProbateState ? this.grantOfProbateState : this.lastPlaceOfResidenceState;\n    }),\n    lastPlaceOfResidenceState: (0, _object.computed)(\"answers\", \"induction\", \"touch\", function () {\n      return this.getAnswerToQuestion(\"staticReferences.lastPlaceOfResidenceQuestion\");\n    }),\n    grantOfProbateState: (0, _object.computed)(\"answers\", \"induction\", \"touch\", function () {\n      return this.getAnswerToQuestion(\"staticReferences.probateGrantedStateQuestion\");\n    }),\n    // This is named badly. It should just be stateOfApplication.\n    lastPlaceOfResidence: (0, _object.computed)(\"stateOfApplicationAbbreviated\", function () {\n      return this.prettyState(this.stateOfApplicationAbbreviated);\n    }),\n    prettyState(abbr) {\n      const map = {\n        VIC: \"Victoria\",\n        ACT: \"the Australian Capital Territory\",\n        NT: \"the Northern Territory\",\n        QLD: \"Queensland\",\n        NSW: \"New South Wales\",\n        WA: \"Western Australia\",\n        TAS: \"Tasmania\",\n        SA: \"South Australia\"\n      };\n      return map[abbr] || \"[state]\";\n    },\n    // This is vague, because it's used to give the user some information before\n    // we know enough information to tell them they're certainly eligible or not\n    incompleteUserEligibility: (0, _object.computed)(\"stateOfApplicationAbbreviated\", \"relationshipToDeceased\", function () {\n      if (!this.stateOfApplicationAbbreviated || !this.relationshipToDeceased) {\n        return;\n      }\n      const formerpartner = [\"formerpartner\"];\n      const carer = [\"carer\"];\n      const stepchild = _relationshipgender.stepChildRelationships;\n      const grandchild = _relationshipgender.grandChildRelationships;\n      const parent = [..._relationshipgender.parentRelationships, ..._relationshipgender.stepParentRelationships];\n      const universal = [..._relationshipgender.partnerRelationships, ..._relationshipgender.childRelationships];\n      const map = {\n        VIC: {\n          certain: [...universal, ...formerpartner, ...carer, ...stepchild],\n          maybe: grandchild\n        },\n        NSW: {\n          certain: [...universal, ...formerpartner, ...stepchild],\n          maybe: grandchild\n        },\n        notsure: {\n          certain: [...universal, ...formerpartner, ...stepchild],\n          maybe: grandchild\n        },\n        outsideAustraliaOther: {\n          certain: [...universal, ...formerpartner, ...stepchild],\n          maybe: grandchild\n        },\n        QLD: {\n          certain: [...universal, ...stepchild, ...grandchild],\n          maybe: [...formerpartner, ...parent]\n        },\n        SA: {\n          certain: [...universal, ...formerpartner, ...grandchild],\n          maybe: [...stepchild, ...parent, ..._relationshipgender.siblingRelationships]\n        },\n        WA: {\n          certain: [...universal],\n          maybe: [...formerpartner, ...stepchild, ...grandchild]\n        },\n        NT: {\n          certain: [...universal],\n          maybe: [...formerpartner, ...stepchild, ...grandchild, ...parent]\n        },\n        TAS: {\n          certain: [...universal, ...carer, ..._relationshipgender.childRelationships, ...stepchild, ...parent],\n          maybe: [...formerpartner]\n        },\n        ACT: {\n          certain: [...universal],\n          maybe: [...formerpartner, ...stepchild, ...grandchild, ...parent]\n        }\n      };\n      const {\n        certain,\n        maybe\n      } = map[this.stateOfApplicationAbbreviated];\n      if (certain.includes(this.relationshipToDeceased)) {\n        return \"eligible\";\n      }\n      if (maybe.includes(this.relationshipToDeceased)) {\n        return \"maybe\";\n      }\n      return \"ineligible\";\n    }),\n    isWillPrepared: (0, _object.computed)(\"answers\", \"inductions\", \"lawFirmHasWill\", \"touch\", function () {\n      const induction = this.getInduction(this.inductions);\n      const willPrepared = this.getAnswerToQuestion(\"staticReferences.didPrepareWillQuestion\", induction);\n      const notSureReason = this.getAnswerToQuestion(\"staticReferences.notSureAboutWillQuestion\", induction);\n      if (willPrepared === \"yes\" || willPrepared === \"notsure\" && notSureReason === \"notSeenWill\" || this.lawFirmHasWill) {\n        return true;\n      }\n      return false;\n    }),\n    knownEntitiesWithoutInstructorOrDeceased: (0, _object.computed)(\"deceased.id\", \"knownEntities\", \"primaryContactPersonID\", function () {\n      if (!this?.knownEntities) {\n        return [];\n      }\n      let {\n        knownEntities\n      } = this;\n      knownEntities = this?.deceased ? knownEntities.filter(p => p.id !== this.deceased.id) : knownEntities;\n      knownEntities = this?.primaryContactPersonID ? knownEntities.filter(p => p.id !== this.primaryContactPersonID) : knownEntities;\n      return knownEntities;\n    }),\n    addIDToRelationshipArray(object, id, relationshipToDeceased) {\n      const arrayKey = this.getArrayKeyFromRelationship(relationshipToDeceased);\n      if (!arrayKey) {\n        return;\n      }\n      if (arrayKey === \"parent\" && object.parentOne !== id && object.parentTwo !== id) {\n        if (!object.parentOne) {\n          (0, _object.set)(object, \"parentOne\", id);\n        } else if (!object.parentTwo) {\n          (0, _object.set)(object, \"parentTwo\", id);\n        }\n      } else {\n        const previousArray = object[arrayKey];\n        if (!previousArray) {\n          (0, _object.set)(object, arrayKey, [id]);\n        } else if (!previousArray.some(memberID => memberID === id)) {\n          (0, _object.set)(object, arrayKey, [...previousArray, id]);\n        }\n      }\n    },\n    /**\n     * FAMILY SPECIFIC\n     */\n    // spouse information for conflict check\n    partnerFirstName: (0, _model.attr)(\"string\"),\n    partnerMiddleName: (0, _model.attr)(\"string\"),\n    partnerSurname: (0, _model.attr)(\"string\"),\n    partnerEmail: (0, _model.attr)(\"string\"),\n    partnerPhone: (0, _model.attr)(\"string\"),\n    partnerDobDay: (0, _model.attr)(\"number\"),\n    partnerDobMonth: (0, _model.attr)(\"number\"),\n    partnerDobYear: (0, _model.attr)(\"number\"),\n    partnerPostalAddress: (0, _model.attr)(\"\", {\n      defaultValue: () => ({})\n    }),\n    partnerOtherNames: (0, _model.attr)(\"string\"),\n    /**\n     * Returns resume link URL based on the client's ID.\n     *\n     * @returns {string} The resume link URL.\n     */\n    resumeLink() {\n      // TODO: Update URL when V2 UI becomes the default\n      return `${this.firm.settifyURL}/?clientID=${this.id}`;\n    },\n    /**\n     * Checks if the client has started the induction process.\n     * Induction is considered started if either the furthest reached page\n     * or the most recently viewed page is set.\n     * @returns {boolean} True if induction has started, false otherwise.\n     */\n    startedInduction() {\n      return Boolean(this.furthestPage || this.mostRecentPage);\n    }\n  });\n});","define(\"settify-mvp/models/conversion-type\", [\"exports\", \"@ember-data/model\"], function (_exports, _model) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11;\n  0; //eaimeta@70e063a35619d71f0,\"@ember-data/model\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let ConversionTypeModel = _exports.default = (_dec = (0, _model.attr)(\"string\"), _dec2 = (0, _model.attr)(\"string\"), _dec3 = (0, _model.attr)(\"string\"), _dec4 = (0, _model.attr)(\"string\"), _dec5 = (0, _model.attr)(\"string\"), _dec6 = (0, _model.attr)(\"string\"), _dec7 = (0, _model.attr)(\"string\"), _dec8 = (0, _model.attr)(\"string\"), _dec9 = (0, _model.attr)(\"number\"), _dec10 = (0, _model.attr)(\"boolean\"), _dec11 = (0, _model.attr)(\"boolean\"), _class = class ConversionTypeModel extends _model.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"groupName\", _descriptor, this);\n      _initializerDefineProperty(this, \"shortName\", _descriptor2, this);\n      _initializerDefineProperty(this, \"longName\", _descriptor3, this);\n      _initializerDefineProperty(this, \"description\", _descriptor4, this);\n      _initializerDefineProperty(this, \"invoiceNarration\", _descriptor5, this);\n      _initializerDefineProperty(this, \"allowedPracticeArea\", _descriptor6, this);\n      _initializerDefineProperty(this, \"requiredBillingFlags\", _descriptor7, this);\n      _initializerDefineProperty(this, \"fontawesome\", _descriptor8, this);\n      _initializerDefineProperty(this, \"invoiceAmountCents\", _descriptor9, this);\n      _initializerDefineProperty(this, \"allowedForInvites\", _descriptor10, this);\n      _initializerDefineProperty(this, \"allowedForWebsites\", _descriptor11, this);\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"groupName\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"shortName\", [_dec2], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"longName\", [_dec3], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"description\", [_dec4], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"invoiceNarration\", [_dec5], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"allowedPracticeArea\", [_dec6], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"requiredBillingFlags\", [_dec7], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"fontawesome\", [_dec8], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor9 = _applyDecoratedDescriptor(_class.prototype, \"invoiceAmountCents\", [_dec9], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor10 = _applyDecoratedDescriptor(_class.prototype, \"allowedForInvites\", [_dec10], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor11 = _applyDecoratedDescriptor(_class.prototype, \"allowedForWebsites\", [_dec11], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/models/document\", [\"exports\", \"@ember/object\", \"@ember-data/model\"], function (_exports, _object, _model) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.generateFullContextID = generateFullContextID;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember-data/model\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _model.default.extend({\n    owner: (0, _model.belongsTo)(\"catalogue\", {\n      async: true,\n      inverse: \"documents\"\n    }),\n    clientID: (0, _model.attr)(\"string\"),\n    formID: (0, _model.attr)(\"string\"),\n    repeatToken: (0, _model.attr)(\"string\"),\n    chapterID: (0, _model.attr)(\"string\"),\n    pageID: (0, _model.attr)(\"string\"),\n    questionID: (0, _model.attr)(\"string\"),\n    answersLocation: (0, _model.attr)(\"string\"),\n    objectID: (0, _model.attr)(\"string\"),\n    fullContextID: (0, _object.computed)(\"formID\", \"repeatToken\", \"chapterID\", \"pageID\", \"questionID\", \"answersLocation\", \"objectID\", function () {\n      return generateFullContextID(this.formID, this.repeatToken, this.chapterID, this.pageID, this.questionID, this.answersLocation, this.objectID);\n    }),\n    S3Key: (0, _model.attr)(\"string\"),\n    fileName: (0, _model.attr)(\"string\"),\n    fileSize: (0, _model.attr)(\"number\"),\n    uploadDate: (0, _model.attr)(\"date\"),\n    expiryDate: (0, _model.attr)(\"date\"),\n    extension: (0, _object.computed)(\"fileName\", function () {\n      const matches = (this.fileName || \"\").match(/\\.\\w+$/i);\n      if (matches) {\n        return matches[0].toLowerCase().substr(1); // strip leading period\n      }\n      return \"\";\n    }),\n    /**\n     * @returns {boolean} Flag indicating whether the document has expired or not.\n     */\n    expired: (0, _object.computed)(\"expiryDate\", function () {\n      const expiryTimestamp = new Date(this.expiryDate).getTime();\n      return expiryTimestamp < Date.now();\n    })\n  });\n  function generateFullContextID(formID, repeatToken, chapterID, pageID, questionID, answersLocation, objectID) {\n    if (objectID) {\n      return `${objectID}.${questionID}`;\n    }\n    if (answersLocation) {\n      const elements = answersLocation.split(\".\");\n      if (elements.length >= 3) {\n        chapterID = elements[0];\n        pageID = elements[1];\n        questionID = elements[2];\n      } else if (elements.length === 2) {\n        chapterID = elements[0];\n        pageID = elements[1];\n      } else if (elements.length === 1) {\n        pageID = elements[0];\n      }\n    }\n    return `${formID}#${repeatToken}.${chapterID}.${pageID}.${questionID}`;\n  }\n});","define(\"settify-mvp/models/invoice\", [\"exports\", \"@ember-data/model\"], function (_exports, _model) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _dec25, _dec26, _dec27, _dec28, _dec29, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19, _descriptor20, _descriptor21, _descriptor22, _descriptor23, _descriptor24, _descriptor25, _descriptor26, _descriptor27, _descriptor28, _descriptor29;\n  0; //eaimeta@70e063a35619d71f0,\"@ember-data/model\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let InvoiceModel = _exports.default = (_dec = (0, _model.attr)(\"string\"), _dec2 = (0, _model.attr)(\"string\"), _dec3 = (0, _model.attr)(\"string\"), _dec4 = (0, _model.attr)(\"string\"), _dec5 = (0, _model.attr)(\"string\"), _dec6 = (0, _model.attr)(\"string\"), _dec7 = (0, _model.attr)(\"string\"), _dec8 = (0, _model.attr)(\"string\"), _dec9 = (0, _model.attr)(\"string\"), _dec10 = (0, _model.attr)(\"string\"), _dec11 = (0, _model.attr)(\"string\"), _dec12 = (0, _model.attr)(\"string\"), _dec13 = (0, _model.attr)(\"string\"), _dec14 = (0, _model.attr)(\"number\"), _dec15 = (0, _model.attr)(\"number\"), _dec16 = (0, _model.attr)(\"number\"), _dec17 = (0, _model.attr)(\"number\"), _dec18 = (0, _model.attr)(\"string\"), _dec19 = (0, _model.attr)(\"string\"), _dec20 = (0, _model.attr)(\"string\"), _dec21 = (0, _model.attr)(), _dec22 = (0, _model.attr)(), _dec23 = (0, _model.attr)(\"number\"), _dec24 = (0, _model.attr)(\"number\"), _dec25 = (0, _model.attr)(\"string\"), _dec26 = (0, _model.attr)(\"string\"), _dec27 = (0, _model.attr)(\"date\"), _dec28 = (0, _model.attr)(\"date\"), _dec29 = (0, _model.attr)(\"date\"), _class = class InvoiceModel extends _model.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"customer\", _descriptor, this);\n      // Customer identifier associated with the invoice\n      _initializerDefineProperty(this, \"firmID\", _descriptor2, this);\n      // Firm id of the invoice\n      _initializerDefineProperty(this, \"invoiceNumber\", _descriptor3, this);\n      // Invoice number\n      _initializerDefineProperty(this, \"invoiceUUID\", _descriptor4, this);\n      // Universally unique identifier for the invoice\n      _initializerDefineProperty(this, \"number\", _descriptor5, this);\n      // Invoice number\n      _initializerDefineProperty(this, \"practiceArea\", _descriptor6, this);\n      // Practice area associated with the invoice\n      _initializerDefineProperty(this, \"requestType\", _descriptor7, this);\n      // Type of request associated with the invoice\n      _initializerDefineProperty(this, \"status\", _descriptor8, this);\n      // Status of the invoice (e.g., open, overdue, paid)\n      _initializerDefineProperty(this, \"unsubscribed\", _descriptor9, this);\n      // Indicates if the customer is unsubscribed\n      // URLs\n      _initializerDefineProperty(this, \"hostedInvoiceUrl\", _descriptor10, this);\n      // URL to the hosted invoice\n      _initializerDefineProperty(this, \"invoicePdf\", _descriptor11, this);\n      // URL to the invoice PDF\n      _initializerDefineProperty(this, \"invoicePdfUrl\", _descriptor12, this);\n      // URL to the invoice PDF\n      _initializerDefineProperty(this, \"paymentUrl\", _descriptor13, this);\n      // URL for payment associated with the invoice\n      // Amounts\n      _initializerDefineProperty(this, \"amountDue\", _descriptor14, this);\n      // Amount due for the invoice (in cents)\n      _initializerDefineProperty(this, \"amountPaid\", _descriptor15, this);\n      // Amount paid for the invoice (in cents)\n      _initializerDefineProperty(this, \"amountRemaining\", _descriptor16, this);\n      // Remaining amount to be paid for the invoice (in cents)\n      _initializerDefineProperty(this, \"total\", _descriptor17, this);\n      // Total amount of the invoice (in cents)\n      // Stripe\n      _initializerDefineProperty(this, \"stripeInvoiceNumber\", _descriptor18, this);\n      // Stripe invoice number\n      _initializerDefineProperty(this, \"stripePaymentUrl\", _descriptor19, this);\n      // URL for Stripe payment\n      // Xero\n      _initializerDefineProperty(this, \"sentToXero\", _descriptor20, this);\n      // Indicates if the invoice was sent to Xero\n      _initializerDefineProperty(this, \"xeroInvoiceNumber\", _descriptor21, this);\n      // Xero invoice number\n      _initializerDefineProperty(this, \"xeroInvoiceUUID\", _descriptor22, this);\n      // Xero invoice UUID\n      // Dates\n      _initializerDefineProperty(this, \"created\", _descriptor23, this);\n      // UNIX timestamp for the invoice creation\n      _initializerDefineProperty(this, \"dueDate\", _descriptor24, this);\n      // UNIX timestamp for the due date of the invoice\n      _initializerDefineProperty(this, \"endDate\", _descriptor25, this);\n      // ISO 8601 date for the end date of the invoice\n      _initializerDefineProperty(this, \"startDate\", _descriptor26, this);\n      // ISO 8601 date for the start date of the invoice\n      _initializerDefineProperty(this, \"invoiceCreated\", _descriptor27, this);\n      // ISO 8601 date and time for when the invoice was created\n      _initializerDefineProperty(this, \"requestSent\", _descriptor28, this);\n      // ISO 8601 date and time for when the request was sent\n      _initializerDefineProperty(this, \"requestCompleted\", _descriptor29, this);\n    } // ISO 8601 date and time for when the request was completed\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"customer\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"firmID\", [_dec2], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"invoiceNumber\", [_dec3], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"invoiceUUID\", [_dec4], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"number\", [_dec5], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"practiceArea\", [_dec6], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"requestType\", [_dec7], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"status\", [_dec8], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor9 = _applyDecoratedDescriptor(_class.prototype, \"unsubscribed\", [_dec9], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor10 = _applyDecoratedDescriptor(_class.prototype, \"hostedInvoiceUrl\", [_dec10], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor11 = _applyDecoratedDescriptor(_class.prototype, \"invoicePdf\", [_dec11], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor12 = _applyDecoratedDescriptor(_class.prototype, \"invoicePdfUrl\", [_dec12], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor13 = _applyDecoratedDescriptor(_class.prototype, \"paymentUrl\", [_dec13], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor14 = _applyDecoratedDescriptor(_class.prototype, \"amountDue\", [_dec14], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor15 = _applyDecoratedDescriptor(_class.prototype, \"amountPaid\", [_dec15], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor16 = _applyDecoratedDescriptor(_class.prototype, \"amountRemaining\", [_dec16], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor17 = _applyDecoratedDescriptor(_class.prototype, \"total\", [_dec17], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor18 = _applyDecoratedDescriptor(_class.prototype, \"stripeInvoiceNumber\", [_dec18], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor19 = _applyDecoratedDescriptor(_class.prototype, \"stripePaymentUrl\", [_dec19], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor20 = _applyDecoratedDescriptor(_class.prototype, \"sentToXero\", [_dec20], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor21 = _applyDecoratedDescriptor(_class.prototype, \"xeroInvoiceNumber\", [_dec21], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor22 = _applyDecoratedDescriptor(_class.prototype, \"xeroInvoiceUUID\", [_dec22], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor23 = _applyDecoratedDescriptor(_class.prototype, \"created\", [_dec23], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor24 = _applyDecoratedDescriptor(_class.prototype, \"dueDate\", [_dec24], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor25 = _applyDecoratedDescriptor(_class.prototype, \"endDate\", [_dec25], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor26 = _applyDecoratedDescriptor(_class.prototype, \"startDate\", [_dec26], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor27 = _applyDecoratedDescriptor(_class.prototype, \"invoiceCreated\", [_dec27], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor28 = _applyDecoratedDescriptor(_class.prototype, \"requestSent\", [_dec28], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor29 = _applyDecoratedDescriptor(_class.prototype, \"requestCompleted\", [_dec29], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/models/lead\", [\"exports\", \"@ember-data/model\", \"@ember/template\"], function (_exports, _model, _template) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19;\n  0; //eaimeta@70e063a35619d71f0,\"@ember-data/model\",0,\"@ember/template\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let LeadModel = _exports.default = (_dec = (0, _model.attr)(\"string\"), _dec2 = (0, _model.attr)(\"string\"), _dec3 = (0, _model.attr)(\"string\"), _dec4 = (0, _model.attr)(\"string\"), _dec5 = (0, _model.attr)(\"string\"), _dec6 = (0, _model.attr)(\"string\"), _dec7 = (0, _model.attr)(\"string\"), _dec8 = (0, _model.attr)(\"boolean\"), _dec9 = (0, _model.attr)(\"boolean\"), _dec10 = (0, _model.attr)(\"date\"), _dec11 = (0, _model.attr)(\"date\"), _dec12 = (0, _model.attr)(\"date\"), _dec13 = (0, _model.attr)(\"date\"), _dec14 = (0, _model.attr)(\"date\"), _dec15 = (0, _model.attr)(\"date\"), _dec16 = (0, _model.attr)(\"date\"), _dec17 = (0, _model.attr)(\"date\"), _dec18 = (0, _model.attr)(\"date\"), _dec19 = (0, _model.attr)(\"string\"), _class = class LeadModel extends _model.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"name\", _descriptor, this);\n      _initializerDefineProperty(this, \"practiceArea\", _descriptor2, this);\n      _initializerDefineProperty(this, \"firmNotes\", _descriptor3, this);\n      _initializerDefineProperty(this, \"preferredOffice\", _descriptor4, this);\n      _initializerDefineProperty(this, \"referral\", _descriptor5, this);\n      _initializerDefineProperty(this, \"invoiceType\", _descriptor6, this);\n      _initializerDefineProperty(this, \"pageReached\", _descriptor7, this);\n      _initializerDefineProperty(this, \"hasConflict\", _descriptor8, this);\n      _initializerDefineProperty(this, \"hasLinkedRecord\", _descriptor9, this);\n      // Dates\n      _initializerDefineProperty(this, \"becameLead\", _descriptor10, this);\n      _initializerDefineProperty(this, \"billingLocked\", _descriptor11, this);\n      _initializerDefineProperty(this, \"completedDetailedInduction\", _descriptor12, this);\n      _initializerDefineProperty(this, \"commencedSimpleInduction\", _descriptor13, this);\n      _initializerDefineProperty(this, \"conflictCheckCompleted\", _descriptor14, this);\n      _initializerDefineProperty(this, \"lastFirmAccess\", _descriptor15, this);\n      _initializerDefineProperty(this, \"lastUserSave\", _descriptor16, this);\n      _initializerDefineProperty(this, \"lastUpdated\", _descriptor17, this);\n      _initializerDefineProperty(this, \"referredToFirm\", _descriptor18, this);\n      // Is duplicated with ID\n      _initializerDefineProperty(this, \"clientID\", _descriptor19, this);\n    }\n    // Helpers\n    get settifySensitiveName() {\n      return (0, _template.htmlSafe)(`<span class=\"settify-sensitive\">${this.name}</span>`);\n    }\n    get canResetConflict() {\n      const twoDayinMS = 1000 * 60 * 60 * 24 * 2;\n      const currentDate = new Date();\n      const conflictCheckCompletedDate = new Date(this.conflictCheckCompleted);\n      const timeDiff = currentDate - conflictCheckCompletedDate;\n      return timeDiff < twoDayinMS;\n    }\n\n    /**\n     * The `pageReached` attribute helps distinguish between records from the legacy system and those from the newer forms-based system.\n     *\n     * - **Forms System**:\n     *   Records from the forms system use a format like `\"chapter.page\"`, where both the chapter and page can contain\n     *   alphanumeric characters (e.g., `\"contactDetails.client\"` or `\"chapter1.page2\"`).\n     *\n     * - **Legacy System**:\n     *   Legacy records follow different formats, for example:\n     *   - `\"landing: bfa\"` refers to a landing page with a variant `\"bfa\"`.\n     *   - `\"d-contact\"` refers to the page template name and the page ID for the induction route.\n     *\n     * **Important**:\n     * It is critical that the legacy system never generates `pageReached` values in a format resembling the\n     * forms system (i.e., with a dot separating alphanumeric components), to avoid misinformation for firms that are migrating from the legacy to the forms-based system.\n     *\n     * The `isFormsRecord` getter uses a regular expression to check if `pageReached` matches\n     * the `\"alphanumeric dot alphanumeric\"` pattern, which indicates the record comes from the forms-based system.\n     *\n     * @returns {boolean} True if the `pageReached` value matches the forms system pattern, otherwise false.\n     */\n    get isFormsRecord() {\n      return /[a-zA-Z0-9]+\\.[a-zA-Z0-9]+$/.test(this.pageReached);\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"name\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"practiceArea\", [_dec2], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"firmNotes\", [_dec3], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"preferredOffice\", [_dec4], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"referral\", [_dec5], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"invoiceType\", [_dec6], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"pageReached\", [_dec7], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"hasConflict\", [_dec8], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor9 = _applyDecoratedDescriptor(_class.prototype, \"hasLinkedRecord\", [_dec9], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor10 = _applyDecoratedDescriptor(_class.prototype, \"becameLead\", [_dec10], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor11 = _applyDecoratedDescriptor(_class.prototype, \"billingLocked\", [_dec11], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor12 = _applyDecoratedDescriptor(_class.prototype, \"completedDetailedInduction\", [_dec12], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor13 = _applyDecoratedDescriptor(_class.prototype, \"commencedSimpleInduction\", [_dec13], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor14 = _applyDecoratedDescriptor(_class.prototype, \"conflictCheckCompleted\", [_dec14], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor15 = _applyDecoratedDescriptor(_class.prototype, \"lastFirmAccess\", [_dec15], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor16 = _applyDecoratedDescriptor(_class.prototype, \"lastUserSave\", [_dec16], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor17 = _applyDecoratedDescriptor(_class.prototype, \"lastUpdated\", [_dec17], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor18 = _applyDecoratedDescriptor(_class.prototype, \"referredToFirm\", [_dec18], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor19 = _applyDecoratedDescriptor(_class.prototype, \"clientID\", [_dec19], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/models/metadata\", [\"exports\", \"@ember-data/model\"], function (_exports, _model) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14;\n  0; //eaimeta@70e063a35619d71f0,\"@ember-data/model\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let MetadataModel = _exports.default = (_dec = (0, _model.attr)(\"string\"), _dec2 = (0, _model.attr)(\"string\"), _dec3 = (0, _model.attr)(\"string\"), _dec4 = (0, _model.attr)(\"date\"), _dec5 = (0, _model.attr)(\"string\"), _dec6 = (0, _model.attr)(\"string\"), _dec7 = (0, _model.attr)(\"date\"), _dec8 = (0, _model.attr)(\"string\"), _dec9 = (0, _model.attr)(\"string\"), _dec10 = (0, _model.attr)(\"date\"), _dec11 = (0, _model.attr)(\"date\"), _dec12 = (0, _model.attr)(\"date\"), _dec13 = (0, _model.attr)(\"\", {\n    defaultValue() {\n      return [];\n    }\n  }), _dec14 = (0, _model.attr)(\"\", {\n    defaultValue() {\n      return [];\n    }\n  }), _class = class MetadataModel extends _model.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firmID\", _descriptor, this);\n      _initializerDefineProperty(this, \"clientID\", _descriptor2, this);\n      _initializerDefineProperty(this, \"invoiceType\", _descriptor3, this);\n      _initializerDefineProperty(this, \"becameLead\", _descriptor4, this);\n      _initializerDefineProperty(this, \"unsubscribed\", _descriptor5, this);\n      _initializerDefineProperty(this, \"origin\", _descriptor6, this);\n      _initializerDefineProperty(this, \"referredToFirm\", _descriptor7, this);\n      _initializerDefineProperty(this, \"referral\", _descriptor8, this);\n      _initializerDefineProperty(this, \"timezone\", _descriptor9, this);\n      _initializerDefineProperty(this, \"referredToFirmDate\", _descriptor10, this);\n      _initializerDefineProperty(this, \"becameLeadDate\", _descriptor11, this);\n      _initializerDefineProperty(this, \"commencedSimpleInduction\", _descriptor12, this);\n      _initializerDefineProperty(this, \"invitationEmails\", _descriptor13, this);\n      _initializerDefineProperty(this, \"reminderEmails\", _descriptor14, this);\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firmID\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"clientID\", [_dec2], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"invoiceType\", [_dec3], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"becameLead\", [_dec4], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"unsubscribed\", [_dec5], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"origin\", [_dec6], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"referredToFirm\", [_dec7], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"referral\", [_dec8], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor9 = _applyDecoratedDescriptor(_class.prototype, \"timezone\", [_dec9], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor10 = _applyDecoratedDescriptor(_class.prototype, \"referredToFirmDate\", [_dec10], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor11 = _applyDecoratedDescriptor(_class.prototype, \"becameLeadDate\", [_dec11], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor12 = _applyDecoratedDescriptor(_class.prototype, \"commencedSimpleInduction\", [_dec12], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor13 = _applyDecoratedDescriptor(_class.prototype, \"invitationEmails\", [_dec13], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor14 = _applyDecoratedDescriptor(_class.prototype, \"reminderEmails\", [_dec14], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/models/questionnaire-summary\", [\"exports\", \"@ember-data/model\"], function (_exports, _model) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14;\n  0; //eaimeta@70e063a35619d71f0,\"@ember-data/model\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let QuestionnaireSummaryModel = _exports.default = (_dec = (0, _model.attr)(\"number\"), _dec2 = (0, _model.attr)(\"string\"), _dec3 = (0, _model.attr)(\"number\"), _dec4 = (0, _model.attr)(\"string\"), _dec5 = (0, _model.attr)(\"string\"), _dec6 = (0, _model.attr)(\"string\"), _dec7 = (0, _model.attr)(\"string\"), _dec8 = (0, _model.attr)(\"number\"), _dec9 = (0, _model.attr)(\"number\"), _dec10 = (0, _model.attr)(\"number\"), _dec11 = (0, _model.attr)(\"string\"), _dec12 = (0, _model.attr)(\"string\"), _dec13 = (0, _model.attr)(\"string\"), _dec14 = (0, _model.attr)(\"number\"), _class = class QuestionnaireSummaryModel extends _model.default {\n    constructor(...args) {\n      super(...args);\n      // This is the questionnaire data pulled from the database\n      _initializerDefineProperty(this, \"alwaysSelected\", _descriptor, this);\n      // If this questionnaire should always be shown to client\n      _initializerDefineProperty(this, \"blurb\", _descriptor2, this);\n      // A description of the questionnaire\n      _initializerDefineProperty(this, \"canBeRepeated\", _descriptor3, this);\n      // If questionnaire can be repeated\n      _initializerDefineProperty(this, \"displayTitle\", _descriptor4, this);\n      // Title shown to client combining title and regionTitle\n      _initializerDefineProperty(this, \"firmID\", _descriptor5, this);\n      // ID of the firm using this questionnaire\n      _initializerDefineProperty(this, \"formID\", _descriptor6, this);\n      // UUID of the questionnaire\n      _initializerDefineProperty(this, \"icon\", _descriptor7, this);\n      // A path to the icon used for the questionnaire\n      _initializerDefineProperty(this, \"invitationDefault\", _descriptor8, this);\n      // Whether this questionnaire is selected by default or invites\n      _initializerDefineProperty(this, \"pinToEnd\", _descriptor9, this);\n      // Have this questionnaire be the last in the list, if multiple questionnaires are selected\n      _initializerDefineProperty(this, \"pinToStart\", _descriptor10, this);\n      // Have this questionnaire be the first in the list, if multiple questionnaires are selected\n      _initializerDefineProperty(this, \"practiceArea\", _descriptor11, this);\n      // Practice area of the questionnaire\n      _initializerDefineProperty(this, \"regionTitle\", _descriptor12, this);\n      // Subtitle of the questionnaire for different regions\n      _initializerDefineProperty(this, \"title\", _descriptor13, this);\n      // Title of the questionnaire\n      _initializerDefineProperty(this, \"enabled\", _descriptor14, this);\n    } // If questionnaire isenabled or not\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"alwaysSelected\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"blurb\", [_dec2], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"canBeRepeated\", [_dec3], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"displayTitle\", [_dec4], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"firmID\", [_dec5], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"formID\", [_dec6], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"icon\", [_dec7], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"invitationDefault\", [_dec8], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor9 = _applyDecoratedDescriptor(_class.prototype, \"pinToEnd\", [_dec9], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor10 = _applyDecoratedDescriptor(_class.prototype, \"pinToStart\", [_dec10], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor11 = _applyDecoratedDescriptor(_class.prototype, \"practiceArea\", [_dec11], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor12 = _applyDecoratedDescriptor(_class.prototype, \"regionTitle\", [_dec12], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor13 = _applyDecoratedDescriptor(_class.prototype, \"title\", [_dec13], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor14 = _applyDecoratedDescriptor(_class.prototype, \"enabled\", [_dec14], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/models/questionnaire\", [\"exports\", \"@ember-data/model\"], function (_exports, _model) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16;\n  0; //eaimeta@70e063a35619d71f0,\"@ember-data/model\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let QuestionnaireModel = _exports.default = (_dec = (0, _model.attr)(), _dec2 = (0, _model.attr)(), _dec3 = (0, _model.attr)(), _dec4 = (0, _model.attr)(), _dec5 = (0, _model.attr)(), _dec6 = (0, _model.attr)(\"string\"), _dec7 = (0, _model.attr)(\"string\"), _dec8 = (0, _model.attr)(\"number\"), _dec9 = (0, _model.attr)(\"boolean\"), _dec10 = (0, _model.attr)(\"boolean\"), _dec11 = (0, _model.attr)(), _dec12 = (0, _model.attr)(\"string\"), _dec13 = (0, _model.attr)(\"number\"), _dec14 = (0, _model.attr)(\"number\"), _dec15 = (0, _model.attr)(\"boolean\"), _dec16 = (0, _model.attr)(), _class = class QuestionnaireModel extends _model.default {\n    constructor(...args) {\n      super(...args);\n      // This is the questionnaire definition pulled from S3\n      // Questionnaire\n      _initializerDefineProperty(this, \"chapters\", _descriptor, this);\n      // Chapters of the questionnaire\n      _initializerDefineProperty(this, \"chronologyEvents\", _descriptor2, this);\n      // Events displayed in the chronology section of client brief\n      _initializerDefineProperty(this, \"customVariables\", _descriptor3, this);\n      // Variables stored in the questionnaire definition\n      _initializerDefineProperty(this, \"firmSummary\", _descriptor4, this);\n      // Client brief\n      _initializerDefineProperty(this, \"integrationObject\", _descriptor5, this);\n      // Transformed data for Uno integrations\n      _initializerDefineProperty(this, \"regionTitle\", _descriptor6, this);\n      // Subtitle for different regions\n      _initializerDefineProperty(this, \"title\", _descriptor7, this);\n      // Title of the questionnaire\n      // Questionnaire metadata\n      _initializerDefineProperty(this, \"created\", _descriptor8, this);\n      // UNIX timestamp for the questionnaire creation\n      _initializerDefineProperty(this, \"enableChronology\", _descriptor9, this);\n      // If chronology is enabled on client brief\n      _initializerDefineProperty(this, \"enabled\", _descriptor10, this);\n      // If questionnaire is enabled for clients\n      _initializerDefineProperty(this, \"metadata\", _descriptor11, this);\n      // Metadata for the questionnaire\n      _initializerDefineProperty(this, \"practiceArea\", _descriptor12, this);\n      // Practice area of the questionnaire\n      _initializerDefineProperty(this, \"repeatToken\", _descriptor13, this);\n      // An index/identifier for a repeated questionnaire in a list. Used to distinguish between multiple completions of the same questionnaire\n      _initializerDefineProperty(this, \"uniqueNumber\", _descriptor14, this);\n      // Incrementing number for unique id when adding to the questionnaire definition\n      _initializerDefineProperty(this, \"useCustomDefinition\", _descriptor15, this);\n      // If we should use the custom brief definition\n      _initializerDefineProperty(this, \"_diffs\", _descriptor16, this);\n    } // Changes to this questionnaire compared to parent questionnaire\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"chapters\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"chronologyEvents\", [_dec2], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"customVariables\", [_dec3], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"firmSummary\", [_dec4], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"integrationObject\", [_dec5], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"regionTitle\", [_dec6], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"title\", [_dec7], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"created\", [_dec8], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor9 = _applyDecoratedDescriptor(_class.prototype, \"enableChronology\", [_dec9], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor10 = _applyDecoratedDescriptor(_class.prototype, \"enabled\", [_dec10], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor11 = _applyDecoratedDescriptor(_class.prototype, \"metadata\", [_dec11], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor12 = _applyDecoratedDescriptor(_class.prototype, \"practiceArea\", [_dec12], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor13 = _applyDecoratedDescriptor(_class.prototype, \"repeatToken\", [_dec13], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor14 = _applyDecoratedDescriptor(_class.prototype, \"uniqueNumber\", [_dec14], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor15 = _applyDecoratedDescriptor(_class.prototype, \"useCustomDefinition\", [_dec15], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor16 = _applyDecoratedDescriptor(_class.prototype, \"_diffs\", [_dec16], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/models/settings\", [\"exports\", \"@ember-data/model\"], function (_exports, _model) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _dec2, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19, _descriptor20, _descriptor21, _descriptor22, _descriptor23, _descriptor24, _descriptor25, _descriptor26, _descriptor27, _descriptor28, _descriptor29, _descriptor30, _descriptor31, _descriptor32, _descriptor33, _descriptor34;\n  0; //eaimeta@70e063a35619d71f0,\"@ember-data/model\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let SettingsModel = _exports.default = (_dec = (0, _model.attr)(\"string\"), _dec2 = (0, _model.attr)(\"string\"), _class = class SettingsModel extends _model.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firmID\", _descriptor, this);\n      _initializerDefineProperty(this, \"practiceArea\", _descriptor2, this);\n      _initializerDefineProperty(this, \"settings\", _descriptor3, this);\n      _initializerDefineProperty(this, \"abn\", _descriptor4, this);\n      _initializerDefineProperty(this, \"addresses\", _descriptor5, this);\n      _initializerDefineProperty(this, \"bookingNotificationCCs\", _descriptor6, this);\n      _initializerDefineProperty(this, \"contactEmail\", _descriptor7, this);\n      _initializerDefineProperty(this, \"contactEmailCCs\", _descriptor8, this);\n      _initializerDefineProperty(this, \"disbursesFees\", _descriptor9, this);\n      _initializerDefineProperty(this, \"discourageClientRecordViews\", _descriptor10, this);\n      _initializerDefineProperty(this, \"gracePeriod\", _descriptor11, this);\n      _initializerDefineProperty(this, \"gstCode\", _descriptor12, this);\n      _initializerDefineProperty(this, \"isLive\", _descriptor13, this);\n      _initializerDefineProperty(this, \"logoURL\", _descriptor14, this);\n      _initializerDefineProperty(this, \"skyBGURL\", _descriptor15, this);\n      _initializerDefineProperty(this, \"longName\", _descriptor16, this);\n      _initializerDefineProperty(this, \"name\", _descriptor17, this);\n      _initializerDefineProperty(this, \"otherSettifyStates\", _descriptor18, this);\n      _initializerDefineProperty(this, \"otherSettifyURLs\", _descriptor19, this);\n      _initializerDefineProperty(this, \"permittedEmailDomains\", _descriptor20, this);\n      _initializerDefineProperty(this, \"phone\", _descriptor21, this);\n      _initializerDefineProperty(this, \"phoneURL\", _descriptor22, this);\n      _initializerDefineProperty(this, \"relationshipManagementContacts\", _descriptor23, this);\n      _initializerDefineProperty(this, \"settifyURL\", _descriptor24, this);\n      _initializerDefineProperty(this, \"state\", _descriptor25, this);\n      _initializerDefineProperty(this, \"stripeID\", _descriptor26, this);\n      _initializerDefineProperty(this, \"supportEmail\", _descriptor27, this);\n      _initializerDefineProperty(this, \"terminatedContract\", _descriptor28, this);\n      _initializerDefineProperty(this, \"timezone\", _descriptor29, this);\n      _initializerDefineProperty(this, \"websitePretty\", _descriptor30, this);\n      _initializerDefineProperty(this, \"websiteURL\", _descriptor31, this);\n      _initializerDefineProperty(this, \"explainerVideoURL\", _descriptor32, this);\n      _initializerDefineProperty(this, \"theme\", _descriptor33, this);\n      _initializerDefineProperty(this, \"webapp\", _descriptor34, this);\n    }\n    get isOfficeClosed() {\n      const closure = this.settings?.admin?.officeClosure;\n      if (!closure?.lastDecemberDay || !closure?.firstJanuaryDay) return false;\n      const date = new Date().getDate();\n      const month = new Date().getMonth() + 1;\n      return month === 12 && date > closure.lastDecemberDay || month === 1 && date < closure.firstJanuaryDay;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firmID\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"practiceArea\", [_dec2], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"settings\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"abn\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"addresses\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"bookingNotificationCCs\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"contactEmail\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"contactEmailCCs\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor9 = _applyDecoratedDescriptor(_class.prototype, \"disbursesFees\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor10 = _applyDecoratedDescriptor(_class.prototype, \"discourageClientRecordViews\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor11 = _applyDecoratedDescriptor(_class.prototype, \"gracePeriod\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor12 = _applyDecoratedDescriptor(_class.prototype, \"gstCode\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor13 = _applyDecoratedDescriptor(_class.prototype, \"isLive\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor14 = _applyDecoratedDescriptor(_class.prototype, \"logoURL\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor15 = _applyDecoratedDescriptor(_class.prototype, \"skyBGURL\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor16 = _applyDecoratedDescriptor(_class.prototype, \"longName\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor17 = _applyDecoratedDescriptor(_class.prototype, \"name\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor18 = _applyDecoratedDescriptor(_class.prototype, \"otherSettifyStates\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor19 = _applyDecoratedDescriptor(_class.prototype, \"otherSettifyURLs\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor20 = _applyDecoratedDescriptor(_class.prototype, \"permittedEmailDomains\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor21 = _applyDecoratedDescriptor(_class.prototype, \"phone\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor22 = _applyDecoratedDescriptor(_class.prototype, \"phoneURL\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor23 = _applyDecoratedDescriptor(_class.prototype, \"relationshipManagementContacts\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor24 = _applyDecoratedDescriptor(_class.prototype, \"settifyURL\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor25 = _applyDecoratedDescriptor(_class.prototype, \"state\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor26 = _applyDecoratedDescriptor(_class.prototype, \"stripeID\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor27 = _applyDecoratedDescriptor(_class.prototype, \"supportEmail\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor28 = _applyDecoratedDescriptor(_class.prototype, \"terminatedContract\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor29 = _applyDecoratedDescriptor(_class.prototype, \"timezone\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor30 = _applyDecoratedDescriptor(_class.prototype, \"websitePretty\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor31 = _applyDecoratedDescriptor(_class.prototype, \"websiteURL\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor32 = _applyDecoratedDescriptor(_class.prototype, \"explainerVideoURL\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor33 = _applyDecoratedDescriptor(_class.prototype, \"theme\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor34 = _applyDecoratedDescriptor(_class.prototype, \"webapp\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/models/staff\", [\"exports\", \"@ember-data/model\"], function (_exports, _model) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19, _descriptor20, _descriptor21, _descriptor22;\n  0; //eaimeta@70e063a35619d71f0,\"@ember-data/model\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let StaffModel = _exports.default = (_dec = (0, _model.attr)(\"string\"), _dec2 = (0, _model.attr)(\"string\"), _dec3 = (0, _model.attr)(\"string\"), _dec4 = (0, _model.attr)(\"string\"), _dec5 = (0, _model.attr)(\"string\"), _dec6 = (0, _model.attr)(\"string\"), _dec7 = (0, _model.attr)(\"string\"), _dec8 = (0, _model.attr)(\"string\"), _dec9 = (0, _model.attr)(\"string\"), _dec10 = (0, _model.attr)(\"string\"), _dec11 = (0, _model.attr)(\"string\"), _dec12 = (0, _model.attr)(\"string\"), _dec13 = (0, _model.attr)(\"string\"), _dec14 = (0, _model.attr)(\"string\"), _dec15 = (0, _model.attr)(\"boolean\"), _dec16 = (0, _model.attr)(\"boolean\"), _dec17 = (0, _model.attr)(\"string\"), _class = class StaffModel extends _model.default {\n    constructor(...args) {\n      super(...args);\n      /* Personal Information */\n      _initializerDefineProperty(this, \"name\", _descriptor, this);\n      // Full name of staff member.\n      _initializerDefineProperty(this, \"email\", _descriptor2, this);\n      // Email address of the staff member.\n      _initializerDefineProperty(this, \"phone\", _descriptor3, this);\n      // Phone number of the staff member.\n      _initializerDefineProperty(this, \"title\", _descriptor4, this);\n      // Job title of the staff member.\n      _initializerDefineProperty(this, \"pronoun\", _descriptor5, this);\n      // Pronoun of the staff member.\n      _initializerDefineProperty(this, \"clientFacingName\", _descriptor6, this);\n      // Name to use for anything client facing.\n      _initializerDefineProperty(this, \"alternativePhone\", _descriptor7, this);\n      // Alternative phone number of the staff member.\n      _initializerDefineProperty(this, \"fax\", _descriptor8, this);\n      // Fax number of the staff member.\n      _initializerDefineProperty(this, \"practiceAreas\", _descriptor9, this);\n      // An object representing the practice areas of the staff member with boolean values ({ \"Family\": true, \"Wills\": false })\n      /* Role and Bio */\n      _initializerDefineProperty(this, \"personType\", _descriptor10, this);\n      // The type of staff member, either \"lawyer\" or \"pa\".\n      _initializerDefineProperty(this, \"bio\", _descriptor11, this);\n      // One or two paragraphs of client-facing biography. Gets included in the invitation emails.\n      _initializerDefineProperty(this, \"photoURL\", _descriptor12, this);\n      // The URL of the headshot photo that has been uploaded for this lawyer.\n      _initializerDefineProperty(this, \"readMoreURL\", _descriptor13, this);\n      // A link to the profile page on the firm's website for this staff member.\n      /* Financial Information (Applies only to lawyers) */\n      _initializerDefineProperty(this, \"chargeOutRate\", _descriptor14, this);\n      // The charge-out rate of this staff member.\n      _initializerDefineProperty(this, \"initialConsultationFee\", _descriptor15, this);\n      // The fee for the lawyer's initial consultation.\n      /* Flags */\n      _initializerDefineProperty(this, \"disabled\", _descriptor16, this);\n      // A boolean indicating whether the staff member is disabled.\n      _initializerDefineProperty(this, \"doNotBCC\", _descriptor17, this);\n      // A boolean indicating whether the staff member should or should not be BCC'd into emails.\n      /* Collaboration */\n      _initializerDefineProperty(this, \"worksWith\", _descriptor18, this);\n      // An array of staff members this staff member works with, along with their personID and BCC status.\n      _initializerDefineProperty(this, \"CCs\", _descriptor19, this);\n      // An array of email addresses that will be CC'd into emails from this staff member.\n      _initializerDefineProperty(this, \"BCCs\", _descriptor20, this);\n      // An array of email addresses that will be BCC'd into emails from this staff member.\n      _initializerDefineProperty(this, \"sendFrom\", _descriptor21, this);\n      // The staff member object from whom invitations should be sent. Falsey to send the email from the staff member directly.\n      _initializerDefineProperty(this, \"personID\", _descriptor22, this);\n    }\n    // ID used to identify the staff member\n\n    /**\n     * Returns the initials of the staff member's name.\n     * Combines the first letter of the first and last words in the name, or just the first letter if the name is a single word.\n     * Returns an empty string if the name is missing.\n     *\n     * @returns {string} Capitalized initials, or an empty string if no name.\n     */\n    get nameInitials() {\n      if (!this.name) return \"\";\n      const nameParts = this.name.trim().split(/\\s+/);\n\n      // Handle single word case\n      if (nameParts.length === 1) return nameParts[0].charAt(0).toUpperCase();\n\n      // Return initials for first and last names\n      return [nameParts[0], nameParts[nameParts.length - 1]].map(word => word.charAt(0).toUpperCase()).join(\"\");\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"name\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"email\", [_dec2], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"phone\", [_dec3], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"title\", [_dec4], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"pronoun\", [_dec5], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"clientFacingName\", [_dec6], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"alternativePhone\", [_dec7], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"fax\", [_dec8], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor9 = _applyDecoratedDescriptor(_class.prototype, \"practiceAreas\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor10 = _applyDecoratedDescriptor(_class.prototype, \"personType\", [_dec9], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor11 = _applyDecoratedDescriptor(_class.prototype, \"bio\", [_dec10], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor12 = _applyDecoratedDescriptor(_class.prototype, \"photoURL\", [_dec11], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor13 = _applyDecoratedDescriptor(_class.prototype, \"readMoreURL\", [_dec12], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor14 = _applyDecoratedDescriptor(_class.prototype, \"chargeOutRate\", [_dec13], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor15 = _applyDecoratedDescriptor(_class.prototype, \"initialConsultationFee\", [_dec14], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor16 = _applyDecoratedDescriptor(_class.prototype, \"disabled\", [_dec15], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor17 = _applyDecoratedDescriptor(_class.prototype, \"doNotBCC\", [_dec16], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor18 = _applyDecoratedDescriptor(_class.prototype, \"worksWith\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor19 = _applyDecoratedDescriptor(_class.prototype, \"CCs\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor20 = _applyDecoratedDescriptor(_class.prototype, \"BCCs\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor21 = _applyDecoratedDescriptor(_class.prototype, \"sendFrom\", [_model.attr], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor22 = _applyDecoratedDescriptor(_class.prototype, \"personID\", [_dec17], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/modifiers/create-ref\", [\"exports\", \"ember-ref-bucket/modifiers/create-ref\"], function (_exports, _createRef) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _createRef.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-ref-bucket/modifiers/create-ref\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/modifiers/did-insert\", [\"exports\", \"@ember/render-modifiers/modifiers/did-insert\"], function (_exports, _didInsert) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _didInsert.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"@ember/render-modifiers/modifiers/did-insert\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/modifiers/did-update\", [\"exports\", \"@ember/render-modifiers/modifiers/did-update\"], function (_exports, _didUpdate) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _didUpdate.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"@ember/render-modifiers/modifiers/did-update\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/modifiers/focus-trap\", [\"exports\", \"ember-focus-trap/modifiers/focus-trap\"], function (_exports, _focusTrap) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _focusTrap.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-focus-trap/modifiers/focus-trap\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/modifiers/on-click-outside\", [\"exports\", \"ember-modifier\"], function (_exports, _emberModifier) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-modifier\"eaimeta@70e063a35619d71f\n  /**\n   * Ember 3, 4 & 5 uses modifiers to handle dom events, for things like clicking outside the component.\n   * See here https://guides.emberjs.com/v5.5.0/components/template-lifecycle-dom-and-modifiers/#toc_out-of-component-modifications\n   *\n   * Example Usage: <component {{on-click-outside this.componentAction}}}>...</component>\n   */\n  var _default = _exports.default = (0, _emberModifier.modifier)((element, [callback]) => {\n    function handleClick(event) {\n      if (!element.contains(event.target)) {\n        if (typeof callback === \"function\") {\n          callback();\n        } else {\n          // TODO: decide if we care about this warning\n          console.warn(\"callback not a function (on-click-outside)\", \"source:\", element);\n        }\n      }\n    }\n    document.addEventListener(\"click\", handleClick);\n    return () => {\n      document.removeEventListener(\"click\", handleClick);\n    };\n  });\n});","define(\"settify-mvp/modifiers/popper-tooltip\", [\"exports\", \"ember-popper-modifier/modifiers/popper-tooltip\"], function (_exports, _popperTooltip) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _popperTooltip.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-popper-modifier/modifiers/popper-tooltip\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/modifiers/popper\", [\"exports\", \"ember-popper-modifier/modifiers/popper\"], function (_exports, _popper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _popper.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-popper-modifier/modifiers/popper\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/modifiers/style\", [\"exports\", \"ember-style-modifier/modifiers/style\"], function (_exports, _style) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _style.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-style-modifier/modifiers/style\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/modifiers/will-destroy\", [\"exports\", \"@ember/render-modifiers/modifiers/will-destroy\"], function (_exports, _willDestroy) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _willDestroy.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"@ember/render-modifiers/modifiers/will-destroy\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/router\", [\"exports\", \"@ember/routing/router\", \"settify-mvp/config/environment\"], function (_exports, _router, _environment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/router\",0,\"settify-mvp/config/environment\"eaimeta@70e063a35619d71f\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  class Router extends _router.default {\n    constructor(...args) {\n      super(...args);\n      _defineProperty(this, \"location\", _environment.default.locationType);\n      _defineProperty(this, \"rootURL\", _environment.default.rootURL);\n    }\n  }\n  _exports.default = Router;\n  Router.map(function () {\n    this.route(\"v2\", function () {\n      // handle login for settify admins\n      this.route(\"auth\", function () {\n        this.route(\"login\");\n        this.route(\"logout\");\n        this.route(\"forgot-password\");\n        this.route(\"password\");\n        this.route(\"verify\");\n        this.route(\"first-login\");\n        this.route(\"mfa\");\n      });\n\n      // self signup via leap flow\n      this.route(\"signup\", function () {\n        this.route(\"index\", {\n          path: \"/\"\n        });\n        this.route(\"validate\");\n        this.route(\"complete\");\n      });\n      this.route(\"dashboard\");\n\n      // new firm admin routes got under here\n      this.route(\"firms\", function () {\n        this.route(\"firm\", {\n          path: \":firm_id\"\n        });\n\n        // TODO work out why if this is put under the firm route then things stop working\n        this.route(\"clients\", {\n          path: \":firm_id/clients\"\n        }, function () {\n          this.route(\"client\", {\n            path: \":client_id\"\n          });\n        });\n      });\n\n      // management console for internal development and testing\n      this.route(\"console\", function () {\n        // Single-page app - all functionality on index and components\n      });\n\n      // redirecting old /v2/admin(/xxx) or /v2/client(/yyy) to /v2/firms (see admin.js/client.js routes)\n      this.route(\"admin\", function () {\n        this.route(\"admin-paths\", {\n          path: \"/*path\"\n        });\n      });\n      this.route(\"client\", function () {\n        this.route(\"client-paths\", {\n          path: \"/*path\"\n        });\n      });\n      this.route(\"page-not-found\", {\n        path: \"/*path\"\n      });\n\n      // Uno Admin should not have any \"client\" or \"firm\" routes; so commenting them out for now\n      // TODO: Fully remove these v2 routes and associated controller/route/template files\n      //\n      // this.route(\"client\", function () {\n      //   this.route(\"landing\", { path: \"/:practice_area\" });\n      //   this.route(\"your-data\");\n      //   this.route(\"induction\", { path: \"/induction/:induction/:chapter/:page\" });\n      //   this.route(\"roadmap\");\n      //   this.route(\"documents\");\n      //   this.route(\"review\");\n      //   this.route(\"request-appointment\");\n      //   this.route(\"error\", { path: \"/:id/:error\" });\n      //   this.route(\"legacy-record\");\n      //   this.route(\"page-not-found\", { path: \"/*path\" });\n      // });\n      // this.route(\"admin\", function () {\n      //   this.route(\"clients\", { path: \"/clients/:id\" });\n      //   this.route(\"team\", function () {\n      //     this.route(\"edit\", { path: \"/:id/edit\" });\n      //   });\n      //   this.route(\"offices\", function () {\n      //     this.route(\"edit\", { path: \"/:id/edit\" });\n      //   });\n      //   this.route(\"billing\", function () {\n      //     this.route(\"invoice\", { path: \"/invoice/:id\" });\n      //     this.route(\"review\");\n      //   });\n      //   this.route(\"integrations\", function () {\n      //     // Index route for the marketplace\n      //     this.route(\"index\", { path: \"/\" });\n      //\n      //     // Dynamic segment for individual integration. Redirected here if the firm has an integration already\n      //     this.route(\"integration\", { path: \"/:integration_name\" });\n      //   });\n      //   this.route(\"settings\", function () {\n      //     this.route(\"settify\");\n      //     this.route(\"setting\", { path: \"/:practice_area\" }, function () {\n      //       this.route(\"client-facing\");\n      //       this.route(\"firm-facing\");\n      //       this.route(\"invitations\");\n      //       this.route(\"billing\");\n      //       this.route(\"users\");\n      //     });\n      //   });\n      //   this.route(\"page-not-found\", { path: \"/*path\" });\n      // });\n      // this.route(\"welcome\");\n      // this.route(\"unsubscribe\");\n      // this.route(\"serverdown\");\n\n      // company-related reports\n      this.route(\"reports\", function () {\n        // Single-page app - all functionality on index and components\n      });\n    });\n\n    // Uno Admin should not have any \"client\" or \"firm\" routes; so commenting them out for now\n    // TODO: Fully remove these routes and associated controller/route/template files\n    // this.route(\"detailedinduction\", { path: \"/q/:induction/:chapter/:page\" });\n    // this.route(\"summary\");\n    // this.route(\"review\");\n    // this.route(\"gettingstarted\");\n    // this.route(\"records\");\n    // MVPTODO: Add a document upload facility, with the list of documents required\n    // this.route('team');\n    // this.route(\"induction-roadmap\");\n    // this.route(\"security\");\n    this.route(\"login\");\n    // this.route(\"validate\");\n    // this.route(\"loading\");\n    // this.route(\"addpassword\");\n    // this.route(\"givefeedback\");\n    // this.route('documents', function() {\n    //   this.route('start');\n    //   this.route('duty');\n    //   this.route('provided');\n    // });\n    // this.route(\"inductionquestionnaires\");\n    // this.route(\"landing\");\n    // this.route(\"family\"); // Transitions to the 'landing' route with a practiceArea=\"Family\" qparam\n    // this.route(\"wills\"); // Transitions to the 'landing' route with a practiceArea=\"Wills\" qparam\n    // this.route(\"probate\"); // Transitions to the 'landing' route with a practiceArea=\"Probate\" qparam\n    // this.route(\"estates\"); // Transitions to the 'landing' route with a practiceArea=\"Estates\" qparam\n    // this.route(\"validationcode\");\n    // this.route(\"requestappointment\");\n\n    // All of these routes should be removed (if not used comment them out) or refactored into v2 above\n    // TODO: Either refactor routes into new v2 path and ember style or remove them\n    this.route(\"admin\", function () {\n      this.route(\"reportconflict\");\n      this.route(\"resetconflict\");\n      this.route(\"clients\", {\n        path: \"/clients/:id\"\n      });\n      this.route(\"compare\", {\n        path: \"/compare/:id\"\n      });\n      this.route(\"invite\");\n      this.route(\"welcomeemail\");\n      this.route(\"displayemailtemplate\");\n      this.route(\"whatsnew\");\n      this.route(\"editablesummary\", {\n        path: \"/editablesummary/:id\"\n      });\n      this.route(\"search\");\n      this.route(\"frozen-record\");\n      this.route(\"reviewinvoice\");\n      this.route(\"firms\");\n      this.route(\"users\");\n      this.route(\"history\");\n      this.route(\"newfirm\");\n      this.route(\"undoinvoice\");\n      this.route(\"config\", function () {\n        this.route(\"team\");\n        this.route(\"editteam\", {\n          path: \"/editteam/:id\"\n        });\n        this.route(\"forms\");\n        this.route(\"editform\", {\n          path: \"/editform/:id\"\n        });\n        this.route(\"offices\");\n        this.route(\"accounts\", function () {\n          this.route(\"invoice\", {\n            path: \"/invoice/:id\"\n          });\n          this.route(\"settings\");\n        });\n        this.route(\"induction\");\n        this.route(\"dashboard\");\n        this.route(\"invitations\");\n        this.route(\"links\");\n        this.route(\"emergency\");\n        this.route(\"integrations\");\n        this.route(\"invoices\");\n        this.route(\"integrationmanager\");\n        this.route(\"skinning\");\n        this.route(\"customisations\");\n        this.route(\"practiceclient\");\n        this.route(\"lineitems\");\n      });\n      this.route(\"files\", function () {\n        this.route(\"invite\");\n        this.route(\"download\", {\n          path: \"/download/:id\"\n        });\n      });\n    });\n    this.route(\"unauthorised\");\n    this.route(\"changepassword\");\n    this.route(\"terms\");\n    this.route(\"mfa\");\n    this.route(\"resetpassword\");\n    this.route(\"yourinformation\");\n    this.route(\"help\", function () {\n      this.route(\"frozenrecord\");\n      this.route(\"gone\");\n      this.route(\"legacyrecord\");\n    });\n    this.route(\"questionnaire\");\n    this.route(\"surveysweep\");\n    this.route(\"files\");\n    this.route(\"feedback\");\n    this.route(\"portal\", function () {\n      this.route(\"invite\");\n    });\n    this.route(\"disabled\");\n    this.route(\"lockedrecord\");\n    this.route(\"config-error\");\n    this.route(\"download\");\n    this.route(\"notfound\", {\n      path: \"/*path\"\n    });\n  });\n});","define(\"settify-mvp/routes/admin/accountmaintenance\", [\"exports\", \"rsvp\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _rsvp, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"rsvp\",0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    model(params) {\n      if (params.clientID) {\n        return this.getClientRecordAsAdmin(params.clientID);\n      }\n      return (0, _rsvp.resolve)();\n    },\n    queryParams: {\n      clientID: {\n        refreshModel: true\n      }\n    }\n  });\n});","define(\"settify-mvp/routes/admin/admin-base\", [\"exports\", \"@ember/service\", \"@ember/runloop\", \"rsvp\", \"settify-mvp/routes/base\"], function (_exports, _service, _runloop, _rsvp, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@ember/runloop\",0,\"rsvp\",0,\"settify-mvp/routes/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    doNotLoadClientRecord: true,\n    router: (0, _service.inject)(),\n    getPmsLeads() {\n      return this.lambda.invoke(this.lambda.getLeadsAndClients, {\n        firmID: this.firm.id,\n        practiceArea: this.firm.practiceArea,\n        productName: this.firm?.settings?.admin?.integrations?.pmsID\n      }).then(this.lambda.processResponse);\n    },\n    getPmsMetadata(client) {\n      return this.lambda.invoke(this.lambda.getSendToPmsMetadata, {\n        firmID: this.firm.id,\n        practiceArea: client.practiceArea,\n        integrationInformation: client?.integrationInformation || null\n      }).then(this.lambda.processResponse);\n    },\n    getPmsMetadataWithClientData(id) {\n      return this.getClientRecordAsAdmin(id).then(client => {\n        if (client && !Array.isArray(client) && typeof client === \"object\") {\n          return this.getPmsMetadata(client);\n        }\n      });\n    },\n    getClientRecordAsAdmin(id, retrieveFullRecordPassword) {\n      // Note: not using promise chaining because we don't need the events to process in order\n      this.set(\"attemptedClientIDToGet\", id);\n      this.eventLogging.log(id, this.eventLogging.IDs.FirmAccessed);\n      this.eventLogging.adminLog(id, this.eventLogging.adminIDs.clientAccessed);\n      return this.clientRecords.getClientByID(id, retrieveFullRecordPassword).then(client => {\n        // console.log(\"Setting tracked client\");\n        if (!client) {\n          throw new Error(\"Couldn't load client record, even as admin\");\n        }\n        this.eventLogging.log(client.clientID, this.eventLogging.IDs.FirmAccessed, null, client.practiceArea);\n        this.eventLogging.adminLog(client.clientID, this.eventLogging.adminIDs.clientAccessed, null, null, client.practiceArea);\n        if (client?.clientID === id) {\n          // record loaded successfully\n          this.recordpolling.setTrackedClient(client);\n\n          // Admin views should only count if it's a Settify admin viewing a Settify record\n          if (client.firmID === \"999999999-SETTIFY\") {\n            this.eventLogging.log(id, this.eventLogging.IDs.FirmAccessed);\n          }\n          client.set(\"readOnly\", true);\n        }\n        return client;\n      });\n    },\n    beforeModel(transition) {\n      this._super(...arguments);\n\n      // only allow admins\n      if (!this.session.requireAuthentication(transition, \"v2.auth.login\")) {\n        return;\n      }\n      if (this.session?.isAuthenticated && !this.session?.data?.authenticated?.adminUser) {\n        this.router.transitionTo(\"index\");\n      }\n\n      // some admin pages are limited to Settify staff (not external contractors)\n      if (!this.allowContractorAccess && !this.session?.data?.authenticated?.username.match(/@settify\\.(com\\.au|co\\.uk|com)$/)) {\n        // this is not a Settify staff member\n        console.log(\"Transitioning to Index\");\n        this.router.transitionTo(\"index\");\n      }\n      if (!this.session.data?.authenticated?.mfaEnabled && !this.session?.totpCreated) {\n        // this user didn't log in with TOTP (and hasn't just created a TOTP) - let's see if they should have\n        return new _rsvp.Promise(resolve => {\n          waitForSettings(this);\n          function waitForSettings(that) {\n            if (!that) {\n              that = this;\n            }\n            if (that.firm?.loading) {\n              // wait for firm settings to load\n              (0, _runloop.later)(that, waitForSettings, 50);\n            } else {\n              if (that.firm?.settings?.requireMFA) {\n                that.router.transitionTo(\"mfa\");\n                resolve();\n              } else {\n                resolve();\n              }\n            }\n          }\n        });\n      }\n    },\n    checkForAccessDenied(model, transition) {\n      if (model === \"401\" || model && model.client && model.client === \"401\") {\n        // redirect to conflict check page, just in case all that's required is a conflict check\n        // but note that we set 'redirect' to 'no' so that we don't have an endless cycle from here to reportconflict and back\n        return this.router.transitionTo(\"admin.reportconflict\", {\n          queryParams: {\n            clientID: this.savedID,\n            conflict: \"check\",\n            redirect: \"no\"\n          }\n        });\n      }\n      if (model && model.client && this.checkIfFirmAllowedToSeeClient(model.client, transition)) {\n        const emails = model.client?.notifyUpdates;\n        if (!emails) {\n          model.client.set(\"notifyUpdates\", [{\n            email: this.firm?.contactEmail\n          }]);\n        }\n      }\n    },\n    setupController(controller /* , model */) {\n      this._super(...arguments);\n      controller.set(\"firm\", this.firm);\n      controller.set(\"adminMode\", true);\n      controller.set(\"session\", this.session);\n    },\n    checkIfFirmAllowedToSeeClient(client /* , transition */) {\n      if (!client || !client.get) {\n        return false;\n      }\n      // On the Settify admin page (only), we can access all client records.\n      // if (model.client.get('firmID') !== this.get('firm.id')) {\n      //   this.transitionTo('unauthorised');\n      // }\n      // else\n      if (!client.conflictCheckTimestamp && client.firmID === this.firm.id) {\n        // this.get('eventLogging').logError('Admin attempted to access record without performing conflict check: ' + client.get('clientID'));\n        this.router.transitionTo(\"admin.reportconflict\", {\n          queryParams: {\n            clientID: this.savedID,\n            conflict: \"check\"\n          }\n        });\n        return false;\n      }\n      // On the Settify admin page (only), we can access all client records.\n      // else if (client.get(\"conflictCheck\") === \"conflict\") {\n      //   this.transitionTo('unauthorised');\n      //   return false;\n      // }\n      // else {\n      // we're allowed to view this record\n      if (client?.firmID !== this.firm.id) {\n        client.set(\"readOnly\", true);\n      }\n      return true;\n      // }\n    },\n    actions: {\n      willTransition: function (transition) {\n        // console.log(\"Clearing tracked client\");\n        this.recordpolling.setTrackedClient(null);\n        this._super(transition);\n      }\n    }\n  });\n});","define(\"settify-mvp/routes/admin/clients\", [\"exports\", \"rsvp\", \"@ember/service\", \"@ember/object\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _rsvp, _service, _object, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"rsvp\",0,\"@ember/service\",0,\"@ember/object\",0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    store: (0, _service.inject)(),\n    lambda: (0, _service.inject)(),\n    questionnaireLogic: (0, _service.inject)(),\n    retrieveFullRecordPassword: null,\n    savedID: null,\n    model(params) {\n      this.set(\"savedID\", params.id);\n      return this.getClientRecordAsAdmin(params.id).then(async client => {\n        if (typeof client === \"string\") {\n          // This can happen if the client record has an error or is frozen. See clientRecords.getClientByID()\n          return client;\n        }\n        // FOR TESTING - update the client record to 'now' so that we can access the latest version of the summary\n        // client.set('creationTimestamp', Date.now()); let testingOnly;\n\n        const practiceAreaSettings = this.store.peekRecord(\"settings\", client.practiceArea);\n        const pmsMetadata = practiceAreaSettings?.settings?.admin?.integrations?.pmsID ? await this.getPmsMetadataWithClientData(client.id) : null;\n        const pmsDefaults = pmsMetadata && pmsMetadata?.defaultSettingsPath ? (0, _object.get)(practiceAreaSettings, pmsMetadata.defaultSettingsPath) : {};\n        return (0, _rsvp.hash)({\n          client,\n          pmsMetadata,\n          pmsDefaults\n        });\n      });\n    },\n    afterModel(model, transition) {\n      this.set(\"retrieveFullRecordPassword\", null);\n      this._super(...arguments);\n      this.checkForAccessDenied(model, transition);\n    },\n    actions: {\n      retrieveFullRecord(password) {\n        if (!password) {\n          return;\n        }\n        this.set(\"retrieveFullRecordPassword\", password);\n        this.refresh();\n      }\n    }\n  });\n});","define(\"settify-mvp/routes/admin/compare\", [\"exports\", \"rsvp\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _rsvp, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"rsvp\",0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    beforeModel(transition) {\n      // This route should not be used on Uno because the compare doesn't work\n      // We send an email that informs firm a client has updated their record and links to this route\n      // Reroute user back to the v2 client brief that has been updated\n      this.router.transitionTo(\"v2.admin.clients\", transition.to?.params.id);\n    },\n    model(params) {\n      this.set(\"savedID\", params.id);\n      return (0, _rsvp.hash)({\n        client: this.getClientRecordAsAdmin(params.id)\n      });\n    },\n    afterModel(model, transition) {\n      this._super(...arguments);\n      this.checkForAccessDenied(model, transition);\n    }\n  });\n});","define(\"settify-mvp/routes/admin/config/accounts/index\", [\"exports\", \"@ember/service\", \"rsvp\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _service, _rsvp, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"rsvp\",0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    allowContractorAccess: true,\n    lambda: (0, _service.inject)(),\n    queryParams: {\n      firmID: {\n        refreshModel: true\n      }\n    },\n    model(params) {\n      return (0, _rsvp.hash)({\n        invoiceRequests: this.lambda.invoke(this.lambda.getInvoiceRequestsLambda, {\n          firmID: params.firmID\n        }).then(this.lambda.processResponse),\n        firmSettings: this.lambda.invoke(this.lambda.getFirmSettingsLambda, {\n          firmID: params.firmID,\n          practiceArea: \"global\"\n        }).then(this.lambda.processResponse)\n      });\n    }\n  });\n});","define(\"settify-mvp/routes/admin/config/accounts/invoice\", [\"exports\", \"@ember/service\", \"settify-mvp/routes/admin/admin-base\", \"moment\"], function (_exports, _service, _adminBase, _moment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"settify-mvp/routes/admin/admin-base\",0,\"moment\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    lambda: (0, _service.inject)(),\n    queryParams: {\n      startDate: {\n        refreshModel: true\n      },\n      endDate: {\n        refreshModel: true\n      },\n      firmID: {\n        refreshModel: true\n      }\n    },\n    model(params) {\n      return this.lambda.invoke(this.lambda.getClientsForInvoiceReviewLambda, {\n        firmID: params.firmID,\n        invoiceID: params.id,\n        startDate: params.startDate,\n        endDate: params.endDate\n      }).then(this.lambda.processResponse).then(data => {\n        const {\n          unbilledLeads,\n          billedLeads,\n          allLeads\n        } = this.processLeads(data.leads);\n        data.invoiceRequest.id = params.id || null;\n        return {\n          allLeads: allLeads,\n          leadsByPracticeArea: this.groupLeadsByPracticeArea(billedLeads),\n          firm: this.reorderFirmSettingsByPracticeArea(data.firms),\n          invoiceRequest: data.invoiceRequest,\n          conversionTypes: data.conversionTypes,\n          unbilledLeads\n        };\n      });\n    },\n    reorderFirmSettingsByPracticeArea(array) {\n      const retval = {};\n      let totalAdded = 0;\n      if (array && array.forEach) {\n        array.forEach(e => {\n          if (e.practiceArea) {\n            retval[e.practiceArea] = e;\n            totalAdded++;\n          }\n        });\n      }\n      if (!totalAdded) {\n        // didn't add anything - dealing with a legacy interface!\n        if (array.length) {\n          retval[this.firm.practiceArea] = array[0];\n          retval.global = array[0];\n        }\n      }\n      return retval;\n    },\n    processLeads(leads = []) {\n      // Filter to only show locked leads\n      leads = leads.filter(lead => lead.billingLockedDate);\n\n      // Sort leads alphabetically by practice area\n      leads.sort((a, b) => a.practiceArea.localeCompare(b.practiceArea));\n\n      // Update dates\n      const unbilledLeads = [];\n      const billedLeads = [];\n      leads.forEach(lead => {\n        lead.formattedReferralDate = (0, _moment.default)(lead.referredToFirmDate).format(\"D MMM YYYY\");\n        lead.timeSinceReferralDate = (0, _moment.default)(lead.referredToFirmDate).from(Date.now());\n        if (lead.invoicedAmount) {\n          // The client has a invoiced amount for this invoice\n          billedLeads.push(lead);\n        } else {\n          unbilledLeads.push(lead);\n        }\n      });\n      return {\n        unbilledLeads,\n        billedLeads,\n        allLeads: leads\n      };\n    },\n    groupLeadsByPracticeArea(leads = []) {\n      const retval = {};\n      leads.forEach(lead => {\n        if (!retval[lead.practiceArea]) {\n          retval[lead.practiceArea] = [];\n        }\n        retval[lead.practiceArea].push(lead);\n      });\n      return retval;\n    }\n  });\n});","define(\"settify-mvp/routes/admin/config/accounts/settings\", [\"exports\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({});\n});","define(\"settify-mvp/routes/admin/config/customisations\", [\"exports\", \"settify-mvp/routes/admin/admin-base\", \"@ember/service\", \"rsvp\"], function (_exports, _adminBase, _service, _rsvp) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _AdminCustomisationsRoute_brand;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/admin/admin-base\",0,\"@ember/service\",0,\"rsvp\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }\n  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminCustomisationsRoute = _exports.default = (_class = (_AdminCustomisationsRoute_brand = /*#__PURE__*/new WeakSet(), class AdminCustomisationsRoute extends _adminBase.default {\n    constructor(...args) {\n      super(...args);\n      /**\n       * Loads settings for all practice areas in the selected firm.\n       *\n       * @private\n       * @param {string[]} keys - An array of practice area keys.\n       * @returns {Promise<Object>} A promise that resolves to an object where keys are practice area names\n       * and values are the corresponding practice area settings.\n       */\n      _classPrivateMethodInitSpec(this, _AdminCustomisationsRoute_brand);\n      _initializerDefineProperty(this, \"firmSettings\", _descriptor, this);\n      _initializerDefineProperty(this, \"lambda\", _descriptor2, this);\n      _initializerDefineProperty(this, \"cache\", _descriptor3, this);\n    }\n    async beforeModel() {\n      const selectedFirmID = this.cache.read({\n        namespace: \"current\",\n        key: \"firmId\"\n      });\n      await this.firmSettings.load(true, selectedFirmID);\n    }\n\n    /**\n     * Load all practice area settings for the selected firm in the model hook.\n     *\n     * @returns {Promise<Object>} A promise that resolves to an object where keys are practice area names\n     * and values are the corresponding practice area settings. Returns an empty\n     * object if there are no practice areas.\n     */\n    async model() {\n      const practiceAreaKeys = this.firmSettings?.settings?.otherSettifyURLs ? Object.keys(this.firmSettings?.settings?.otherSettifyURLs) : [];\n      if (!practiceAreaKeys.length) {\n        return {};\n      }\n      return (0, _rsvp.hash)({\n        settings: _assertClassBrand(_AdminCustomisationsRoute_brand, this, _loadAllPracticeAreaSettings).call(this, practiceAreaKeys)\n      });\n    }\n    resetController(controller, isExiting) {\n      if (isExiting) controller._reset();\n    }\n  }), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firmSettings\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"cache\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n  async function _loadAllPracticeAreaSettings(keys) {\n    const promises = keys.map(pa => _assertClassBrand(_AdminCustomisationsRoute_brand, this, _getPracticeAreaSettings).call(this, pa));\n    const settings = await Promise.all(promises);\n    return settings.reduce((settings, current) => {\n      settings[current.practiceArea] = current;\n      return settings;\n    }, {});\n  }\n  /**\n   * Retrieves the settings for a specific practice area.\n   *\n   * @private\n   * @param {string} practiceArea - The name of the practice area.\n   * @returns {Promise<Object>} A promise that resolves to the settings object for the specified practice area.\n   * Returns an empty object if the practice area is not provided.\n   */\n  async function _getPracticeAreaSettings(practiceArea) {\n    if (!practiceArea) return {};\n    const payload = {\n      firmID: this.cache.read({\n        namespace: \"current\",\n        key: \"firmId\"\n      }),\n      practiceArea: practiceArea\n    };\n    const result = await this.lambda.invoke(this.lambda.getFirmSettingsLambda, payload);\n    return this.lambda.processResponse(result);\n  }\n});","define(\"settify-mvp/routes/admin/config/dashboard\", [\"exports\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    queryParams: {\n      firmID: {\n        refreshModel: true\n      },\n      practiceArea: {\n        refreshModel: true\n      }\n    },\n    allowContractorAccess: true\n  });\n});","define(\"settify-mvp/routes/admin/config/editform\", [\"exports\", \"@ember/object\", \"@ember/service\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _object, _service, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/service\",0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    questionnaireLogic: (0, _service.inject)(),\n    lambda: (0, _service.inject)(),\n    queryParams: {\n      firmID: {\n        refreshModel: true\n      }\n    },\n    model(params) {\n      this.set(\"liveModel\", undefined);\n      this.set(\"draftModel\", undefined);\n      if (params.id === \"create\") {\n        return {\n          creatingNewInduction: true,\n          chapters: [],\n          useCustomDefinition: false,\n          practiceArea: this.get(\"firm.practiceArea\")\n        };\n      }\n      return this.questionnaireLogic.getInductionObject(params.id, true, {\n        firmID: params.firmID\n      });\n    },\n    afterModel(model) {\n      this._super(...arguments);\n      if (!model.repeatToken) {\n        (0, _object.set)(model, \"repeatToken\", 1);\n      }\n    },\n    setupController(controller, model) {\n      this._super(...arguments);\n      controller.set(\"draftFromS3\", false);\n      controller.set(\"liveModel\", model);\n      controller.set(\"draftModel\", JSON.parse(JSON.stringify(model)));\n\n      // If we are creating a new form don't try to get draft from s3\n      if (!model.creatingNewInduction) {\n        this.lambda.invoke(this.lambda.getFormLambda, {\n          firmID: controller.firmID,\n          formID: model.id,\n          getDraftForm: true\n        }).then(this.lambda.processResponse).then(form => {\n          if (form.error) {\n            console.log(form.error);\n          } else if (form) {\n            controller.set(\"draftModel\", JSON.parse(JSON.stringify(form)));\n            controller.set(\"draftFromS3\", true);\n          }\n        }).catch(err => {\n          console.log(err);\n        });\n      }\n    },\n    actions: {\n      willTransition() {\n        this.controller.onWillTransition();\n      }\n    }\n  });\n});","define(\"settify-mvp/routes/admin/config/editteam\", [\"exports\", \"@ember/service\", \"uuid\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _service, _uuid, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"uuid\",0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  const createParamsMap = {\n    createlawyer: \"lawyer\",\n    createpa: \"pa\"\n  };\n  var _default = _exports.default = _adminBase.default.extend({\n    lawyerList: (0, _service.inject)(),\n    allowContractorAccess: true,\n    queryParams: {\n      firmID: {\n        refreshModel: true\n      }\n    },\n    async model(params) {\n      if (Object.keys(createParamsMap).includes(params.id)) {\n        return {\n          personID: (0, _uuid.v4)(),\n          creating: true,\n          personType: createParamsMap[params.id]\n        };\n      }\n      // Load full list first as the staff member might have some `worksWith` staff members we need to map to\n      await this.lawyerList.load(false, params.firmID);\n      return this.lawyerList.getStaffByID(params.id);\n    }\n  });\n});","define(\"settify-mvp/routes/admin/config/emergency\", [\"exports\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    queryParams: {\n      firmID: {\n        refreshModel: true\n      },\n      practiceArea: {\n        refreshModel: true\n      }\n    },\n    allowContractorAccess: true\n  });\n});","define(\"settify-mvp/routes/admin/config/forms\", [\"exports\", \"@ember/service\", \"rsvp\", \"settify-mvp/routes/admin/admin-base\", \"settify-mvp/mixins/master-form-mixin\"], function (_exports, _service, _rsvp, _adminBase, _masterFormMixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"rsvp\",0,\"settify-mvp/routes/admin/admin-base\",0,\"settify-mvp/mixins/master-form-mixin\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend(_masterFormMixin.default, {\n    config: (0, _service.inject)(\"dynamic-config\"),\n    questionnaireLogic: (0, _service.inject)(),\n    lambda: (0, _service.inject)(),\n    queryParams: {\n      firmID: {\n        refreshModel: true\n      }\n    },\n    model(params) {\n      // TODO: Moving all master forms to 999999999-SETTIFY for now; at least until we can put them into source control\n      const masterFirmID = \"999999999-SETTIFY\";\n      return (0, _rsvp.hash)({\n        forms: this.questionnaireLogic.load(true, {\n          firmID: params.firmID\n        }),\n        masterForms: this.questionnaireLogic.load(true, {\n          firmID: masterFirmID\n        }),\n        masterFirmID: masterFirmID,\n        firmDetails: this.lambda.invoke(this.lambda.getFirmDetailsLambda, {\n          firmID: params.firmID\n        }).then(this.lambda.processResponse)\n      });\n    }\n  });\n});","define(\"settify-mvp/routes/admin/config/index\", [\"exports\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    allowContractorAccess: true,\n    actions: {\n      triggerSentryError() {\n        throw new Error(\"Sentry Test: Trigger Sentry Error\");\n      }\n    }\n  });\n});","define(\"settify-mvp/routes/admin/config/induction\", [\"exports\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    queryParams: {\n      firmID: {\n        refreshModel: true\n      },\n      practiceArea: {\n        refreshModel: true\n      }\n    },\n    allowContractorAccess: true\n  });\n});","define(\"settify-mvp/routes/admin/config/integrationmanager\", [\"exports\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({});\n});","define(\"settify-mvp/routes/admin/config/integrations\", [\"exports\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    // Forget the authCode queryparam, so we don't try to authenticate with it again\n    resetController(controller, isExiting) {\n      if (isExiting) {\n        // isExiting would be false if only the route's model was changing\n        controller.set(\"authCode\", undefined);\n      }\n    }\n  });\n});","define(\"settify-mvp/routes/admin/config/invitations\", [\"exports\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    queryParams: {\n      firmID: {\n        refreshModel: true\n      },\n      practiceArea: {\n        refreshModel: true\n      }\n    },\n    allowContractorAccess: true\n  });\n});","define(\"settify-mvp/routes/admin/config/invoices\", [\"exports\", \"@ember/runloop\", \"@ember/object\", \"rsvp\", \"@ember/service\", \"settify-mvp/routes/admin/admin-base\", \"settify-mvp/helpers/s3-debucket\"], function (_exports, _runloop, _object, _rsvp, _service, _adminBase, _s3Debucket) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/object\",0,\"rsvp\",0,\"@ember/service\",0,\"settify-mvp/routes/admin/admin-base\",0,\"settify-mvp/helpers/s3-debucket\"eaimeta@70e063a35619d71f\n  /* global saveAs */\n  var _default = _exports.default = _adminBase.default.extend({\n    lambda: (0, _service.inject)(),\n    awsService: (0, _service.inject)(),\n    queryParams: {\n      firmID: {\n        refreshModel: true\n      }\n    },\n    init() {\n      this._super(...arguments);\n      this.loadedFirm = {};\n    },\n    model(params) {\n      return (0, _rsvp.hash)({\n        requests: this.lambda.invoke(this.get(\"lambda.getInvoiceRequestsLambda\"), {\n          firmID: params.firmID\n        }).then(this.lambda.processResponse).then(result => {\n          if (result.error) {\n            throw result.error;\n          }\n          console.log(\"Invoices loaded from server\");\n          return result;\n        }),\n        firmDetails: this.lambda.invoke(this.get(\"lambda.getFirmDetailsLambda\"), {\n          firmID: params.firmID\n        }).then(this.lambda.processResponse),\n        firmSettings: this.lambda.invoke(this.get(\"lambda.getFirmSettingsLambda\"), {\n          firmID: params.firmID,\n          practiceArea: \"global\"\n        }).then(this.lambda.processResponse)\n      });\n    },\n    loadInvoicesPromise(firmIdentityPoolID) {\n      return new _rsvp.Promise((res, rej) => {\n        this.awsService.getS3ByType(\"billing\").then(s3Client => {\n          const params = {\n            Prefix: `invoices/${firmIdentityPoolID}`\n          };\n\n          // TODO: Support paging\n          // listObjects will only ever return 1000 objects in one call.\n          // I'm not going to over engineer a solution now, but if we're ever getting close to 1000 invoices for a firm\n          // this will need fixing - that's an 80 years in the future Settify problem....\n          s3Client.listObjects(params, (err, data) => {\n            if (err || !data || !data.Contents) {\n              rej(err);\n            } else {\n              const result = this.parseS3Result(data.Contents);\n              res(result);\n            }\n          });\n        });\n      });\n    },\n    parseS3Result(contents) {\n      return contents.map(obj => {\n        return {\n          ...obj,\n          // strip the \".pdf\" from the end of the filename\n          fileName: (0, _s3Debucket.s3Debucket)([obj.Key]).replace(/\\.[A-Z]+$/i, \"\")\n        };\n      });\n    },\n    afterModel(model, transition) {\n      let collection = new Set();\n      collection.add(model.firmDetails.practiceAreas.filter(e => e.practiceArea === \"global\")[0].generalContactEmails);\n      collection.add(model.firmDetails.practiceAreas.filter(e => e.practiceArea === \"global\")[0].accountsPayableEmails);\n      const {\n        name\n      } = model.firmDetails.practiceAreas.filter(e => e.practiceArea === \"global\")[0];\n      const {\n        firmID\n      } = transition.to.queryParams;\n      const {\n        generalContactNames\n      } = model.firmDetails.practiceAreas.filter(e => e.practiceArea === \"global\")[0];\n      this.set(\"loadedFirm\", {\n        emails: Array.from(collection).join(\",\"),\n        name: name,\n        firmID: firmID,\n        generalContactNames: generalContactNames\n      });\n      this.loadInvoicesPromise(model.firmSettings.adminIdentityPoolID).then(invoicePDFs => {\n        (0, _object.set)(model, \"invoicePDFs\", invoicePDFs.reverse());\n      });\n    },\n    setupController(controller, model) {\n      this._super(...arguments);\n      controller.set(\"model\", model);\n      controller.set(\"emails\", this.get(\"loadedFirm.emails\"));\n      controller.set(\"firmName\", this.get(\"loadedFirm.name\"));\n      controller.set(\"firmID\", this.get(\"loadedFirm.firmID\"));\n      controller.set(\"generalContactNames\", this.get(\"loadedFirm.generalContactNames\"));\n      let that = this;\n      controller.set(\"actions\", {\n        refreshModel() {\n          that.refresh();\n        }\n      });\n    },\n    actions: {\n      downloadFile(invoice) {\n        (0, _object.set)(invoice, \"downloading\", true);\n        (0, _object.set)(invoice, \"downloadingError\", false);\n        (0, _object.set)(invoice, \"downloadingSuccess\", false);\n        this.awsService.getS3ByType(\"billing\").then(s3Client => {\n          const params = {\n            Key: invoice.Key\n          };\n          s3Client.getObject(params, (err, data) => {\n            (0, _runloop.later)(() => (0, _object.set)(invoice, \"downloading\", false), 500);\n            if (!err) {\n              // don't set downloadingSuccess to true - the PDF appearing in your downloads\n              // is a sufficient indicator\n              // Ember.set(invoice, \"downloadingSuccess\", true);\n              const blob = new Blob([data.Body], {\n                type: data.ContentType\n              });\n              saveAs(blob, invoice.fileName);\n            } else {\n              (0, _object.set)(invoice, \"downloadingError\", true);\n            }\n          });\n        });\n      }\n    }\n  });\n});","define(\"settify-mvp/routes/admin/config/lineitems\", [\"exports\", \"rsvp\", \"@ember/service\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _rsvp, _service, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"rsvp\",0,\"@ember/service\",0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    lambda: (0, _service.inject)(),\n    queryParams: {\n      firmID: {\n        refreshModel: true\n      }\n    },\n    model(params) {\n      return (0, _rsvp.hash)({\n        lineitems: this.lambda.invoke(this.get(\"lambda.getUnbilledLineItemsLambda\"), {\n          firmID: params.firmID\n        }).then(this.lambda.processResponse).then(result => {\n          if (result.error) {\n            throw result.error;\n          }\n          return result;\n        }),\n        firmdetails: this.lambda.invoke(this.get(\"lambda.getFirmDetailsLambda\"), {\n          firmID: params.firmID\n        }).then(this.lambda.processResponse)\n      });\n    },\n    setupController(controller, model) {\n      this._super(...arguments);\n      let {\n        currency\n      } = model.firmdetails.practiceAreas.filter(e => e.practiceArea === \"global\")[0];\n      controller.set(\"lineitems\", model.lineitems);\n      controller.set(\"currency\", currency);\n    },\n    actions: {\n      refreshModel() {\n        this.refresh();\n      }\n    }\n  });\n});","define(\"settify-mvp/routes/admin/config/links\", [\"exports\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    allowContractorAccess: true,\n    queryParams: {\n      firmID: {\n        refreshModel: true\n      }\n    },\n    resetController(controller, isExiting) {\n      if (isExiting) {\n        controller.practiceArea = null;\n        controller.type = null;\n        controller.isPersonalised = false;\n        controller.lawyerName = \"\";\n        controller.trackPhrase = null;\n        controller.hasAppointment = false;\n        controller.conflictChecked = false;\n      }\n    }\n  });\n});","define(\"settify-mvp/routes/admin/config/offices\", [\"exports\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    allowContractorAccess: true,\n    queryParams: {\n      firmID: {\n        refreshModel: true\n      }\n    }\n  });\n});","define(\"settify-mvp/routes/admin/config/practiceclient\", [\"exports\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({});\n});","define(\"settify-mvp/routes/admin/config/skinning\", [\"exports\", \"settify-mvp/routes/admin/admin-base\", \"@ember/service\"], function (_exports, _adminBase, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/admin/admin-base\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminSkinningRoute = _exports.default = (_class = class AdminSkinningRoute extends _adminBase.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firmSettings\", _descriptor, this);\n      _initializerDefineProperty(this, \"awsService\", _descriptor2, this);\n      _initializerDefineProperty(this, \"router\", _descriptor3, this);\n    }\n    async beforeModel(transition) {\n      super.beforeModel(...arguments);\n      const selectedFirmID = transition?.to?.queryParams?.firmID;\n      if (!selectedFirmID) this.router.transitionTo(\"admin.firms\");\n      await this.firmSettings.load(false, selectedFirmID);\n    }\n    async model(params) {\n      try {\n        const s3Client = await this.awsService.getS3ByType(\"assets\");\n        const getParams = {\n          ...s3Client.config.params,\n          ...{\n            Key: `firms/${params.firmID}/styles.json`\n          }\n        };\n        const {\n          Body\n        } = await s3Client.getObject(getParams).promise();\n        return JSON.parse(Body);\n      } catch (err) {\n        return {};\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firmSettings\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"awsService\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/admin/config/team\", [\"exports\", \"@ember/service\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _service, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    router: (0, _service.inject)(\"router\"),\n    lawyerList: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    lambda: (0, _service.inject)(),\n    allowContractorAccess: true,\n    queryParams: {\n      firmID: {\n        refreshModel: true\n      }\n    },\n    async model(params) {\n      if (!params.firmID) {\n        console.log(\"no firmID found in params. Rerouting to firm: \", this.get(\"firm.id\"));\n        this.router.transitionTo({\n          queryParams: {\n            firmID: this.get(\"firm.id\")\n          }\n        });\n        return;\n      }\n      const staffList = await this.lawyerList.load(true, params.firmID);\n      try {\n        const augmentedStaffList = await this.augmentStaffListWithLoginInfo(staffList, params.firmID);\n        return {\n          staffList: augmentedStaffList.sortBy(\"name\")\n        };\n      } catch (error) {\n        return {\n          staffList: staffList.sortBy(\"name\")\n        };\n      }\n    },\n    async augmentStaffListWithLoginInfo(staffList, firmID) {\n      const augmentedStaffList = staffList;\n      const params = {\n        firmID\n      };\n      const {\n        Users: cognitoUserList\n      } = await this.lambda.invoke(this.lambda.getFirmUsersLambda, params).then(this.lambda.processResponse);\n      for (const user of cognitoUserList) {\n        const matchingLawyer = augmentedStaffList.find(l => l.email === user.Username);\n        if (matchingLawyer) {\n          // It is a lawyers login\n          matchingLawyer.loginEnabled = user.Enabled;\n          matchingLawyer.hasLogin = true;\n          continue;\n        }\n        // It is an \"other\" type login\n        user.personType = \"other\";\n        user.loginEnabled = user.Enabled;\n        user.hasLogin = true;\n        user.email = user.Username;\n        augmentedStaffList.push(user);\n      }\n      return augmentedStaffList;\n    }\n  });\n});","define(\"settify-mvp/routes/admin/displayemailtemplate\", [\"exports\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({});\n});","define(\"settify-mvp/routes/admin/editablesummary\", [\"exports\", \"@ember/service\", \"rsvp\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _service, _rsvp, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"rsvp\",0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    router: (0, _service.inject)(),\n    model(params) {\n      return (0, _rsvp.hash)({\n        client: this.getClientRecordAsAdmin(params.id),\n        expandAll: false,\n        contractAll: false\n      });\n    },\n    afterModel(model, transition) {\n      this._super(...arguments);\n      if (model && model.client && model.client.get) {\n        if (model.client.get(\"firmID\") !== this.get(\"firm.id\")) {\n          this.router.transitionTo(\"unauthorised\");\n        } else if (!model.client.get(\"conflictCheckTimestamp\")) {\n          this.eventLogging.logError(`Admin attempted to access record without performing conflict check: ${model.client.get(\"clientID\")}`);\n          this.router.transitionTo(\"admin.reportconflict\", {\n            queryParams: {\n              clientID: transition.to.params.id,\n              conflict: \"no\"\n            }\n          });\n        } else {\n          // we're allowed to view this record\n          const emails = model.client.get(\"notifyUpdates\");\n          if (!emails) {\n            model.client.set(\"notifyUpdates\", [{\n              email: this.get(\"firm.contactEmail\")\n            }]);\n          }\n        }\n      }\n    },\n    setupController(controller, model) {\n      this._super(...arguments);\n      controller.afterModel(model);\n    },\n    actions: {\n      willTransition: function (transition) {\n        // console.log(\"Clearing tracked client\");\n        this.recordpolling.setTrackedClient(null);\n        this._super(transition);\n      }\n    }\n  });\n});","define(\"settify-mvp/routes/admin/files/download\", [\"exports\", \"@ember/service\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _service, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    allowAdminAccess: true,\n    doNotLoadClientRecord: true,\n    lambda: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    model(params) {\n      return this.lambda.invoke(this.get(\"lambda.fileGetSendInfoLambda\"), {\n        sendID: params.id,\n        firmID: this.get(\"firm.id\")\n      }).then(this.lambda.processResponse).then(data => {\n        data.sendID = params.id;\n        return data;\n      });\n    }\n  });\n});","define(\"settify-mvp/routes/admin/files/invite\", [\"exports\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  // import Ember from 'ember';\n  var _default = _exports.default = _adminBase.default.extend({});\n});","define(\"settify-mvp/routes/admin/firms\", [\"exports\", \"@ember/service\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _service, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    lambda: (0, _service.inject)(),\n    allowContractorAccess: true,\n    model() {\n      return this.lambda.invoke(this.get(\"lambda.getFirmsLambda\"), {}).then(this.lambda.processResponse).then(firms => {\n        return firms;\n      });\n    }\n  });\n});","define(\"settify-mvp/routes/admin/frozen-record\", [\"exports\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    doNotLoadClientRecord: true,\n    queryParams: {\n      totp: {\n        refreshModel: false\n      }\n    },\n    // beforeModel(transition) {\n    //   // There are no links directly to this page, we only get here from the \"Unfreeze\" email for the law firm.\n    //   // Let's redirect to the new UI (there is no reason to use the old UI).\n    //   this.router.replaceWith(\"v2.admin.client-unfreeze\", transition.to?.queryParams.clientID, { queryParams: { totp: transition.to?.queryParams.totp } });\n    // },\n\n    setupController(controller) {\n      this._super(...arguments);\n      controller.unfreezeClient();\n    }\n  });\n});","define(\"settify-mvp/routes/admin/history\", [\"exports\", \"@ember/service\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _service, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    queryParams: {\n      firmID: {\n        refreshModel: true\n      },\n      practiceArea: {\n        refreshModel: true\n      }\n    },\n    lambda: (0, _service.inject)(),\n    model(params) {\n      if (!params.firmID) {\n        return;\n      }\n      return this.lambda.invoke(this.get(\"lambda.getFirmUsageHistoryLambda\"), {\n        firmID: params.firmID,\n        practiceArea: params.practiceArea || \"global\"\n      }).then(this.get(\"lambda.processResponse\")).then(usage => {\n        return this.lambda.invoke(this.get(\"lambda.getFirmDetailsLambda\"), {\n          firmID: params.firmID\n        }).then(this.lambda.processResponse).then(details => {\n          usage.firmPracticeAreas = details.practiceAreas.filter(e => e.practiceArea !== \"global\").map(p => p.practiceArea);\n          return usage;\n        });\n      });\n    }\n  });\n});","define(\"settify-mvp/routes/admin/index\", [\"exports\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    allowContractorAccess: true\n  });\n});","define(\"settify-mvp/routes/admin/invite\", [\"exports\", \"rsvp\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _rsvp, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"rsvp\",0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    queryParams: {\n      clientID: {\n        refreshModel: true\n      },\n      mode: {\n        refreshModel: false\n      }\n    },\n    model(params) {\n      return (0, _rsvp.hash)({\n        client: params.clientID && params.clientID !== \"undefined\" ? this.getClientRecordAsAdmin(params.clientID) : null\n      });\n    },\n    resetController(controller, isExiting /* , transition */) {\n      if (isExiting) {\n        // isExiting would be false if only the route's model was changing\n        controller.set(\"clientID\", undefined);\n        controller.set(\"emailSearchQuery\", null);\n        controller.set(\"nameSearchQuery\", null);\n        controller.set(\"emailSearchResults\", null);\n        controller.set(\"nameSearchResults\", null);\n      }\n    }\n  });\n});","define(\"settify-mvp/routes/admin/newfirm\", [\"exports\", \"@ember/service\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _service, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    lambda: (0, _service.inject)(),\n    allowContractorAccess: true,\n    queryParams: {\n      payload: {\n        refreshModel: true\n      }\n    },\n    model() {\n      return this.lambda.invoke(this.lambda.getFirmsLambda, {}).then(this.lambda.processResponse).then(firms => {\n        return firms;\n      });\n    }\n  });\n});","define(\"settify-mvp/routes/admin/reportconflict\", [\"exports\", \"rsvp\", \"@ember/service\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _rsvp, _service, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"rsvp\",0,\"@ember/service\",0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    lambda: (0, _service.inject)(),\n    router: (0, _service.inject)(),\n    queryParams: {\n      clientID: {\n        refreshModel: true\n      },\n      conflict: {\n        refreshModel: true\n      },\n      redirect: {\n        refreshModel: true\n      }\n    },\n    // beforeModel(transition) {\n    //   // If the user navigates directly to this route (e.g. from a link in an email), redirect to the new UI (there is no reason to use the old UI).\n    //   // Allow access only if the transition is from the admin index route (a user explicitly clicked it).\n    //   if (transition.from?.name !== \"admin.index\") {\n    //     this.router.replaceWith(\"v2.admin.conflict\", transition.to?.queryParams.clientID, { queryParams: { clientID: null } });\n    //   }\n    // },\n\n    model(/* params */\n    ) {\n      const qparams = this.paramsFor(\"admin.reportconflict\");\n      if (!qparams || !qparams.clientID || !(qparams.conflict === \"check\" || qparams.conflict === \"yes\" || qparams.conflict === \"no\")) {\n        return new _rsvp.Promise((resolve /* , reject */) => {\n          this.eventLogging.logError(\"Invalid query params supplied to report conflict\", null, {\n            qparams\n          });\n          resolve({\n            errorMessage: \"Invalid query parameters supplied\"\n          });\n        });\n      }\n      const conflictCheckSettings = this.get(\"firm.settings.admin.conflictCheck\") || {};\n      const payload = {\n        clientID: qparams.clientID,\n        firmID: this.get(\"firm.id\"),\n        showBusinesses: conflictCheckSettings.showBusinesses,\n        showTrusts: conflictCheckSettings.showTrusts,\n        showInvestments: conflictCheckSettings.showInvestments,\n        showSMSFs: conflictCheckSettings.showSMSFs\n      };\n      return this.lambda.invoke(this.get(\"lambda.getInformationForConflictCheckLambda\"), payload, this.session).then(this.lambda.processResponse).then(response => {\n        // console.log(\"Response data: \", response);\n        if (response.message && response.message.match && response.message.match(/Conflict check already performed/)) {\n          const qparams = this.paramsFor(\"admin.reportconflict\");\n          if (qparams) {\n            if (qparams.redirect === \"no\") {\n              this.router.transitionTo(\"unauthorised\");\n            } else {\n              this.router.transitionTo(\"admin.clients\", qparams.clientID);\n            }\n            return;\n          }\n        } else if (response.error && response.error.message === \"423\") {\n          // 'frozen' record\n          // transitioning to frozenrecord page\n          this.router.transitionTo(\"help.frozenrecord\", {\n            queryParams: {\n              clientID: qparams.clientID\n            }\n          });\n        } else if (response.error && response.error.message === \"410\") {\n          // Gone - client data removed\n          this.router.transitionTo(\"help.gone\");\n        } else {\n          response.client.id = qparams.clientID;\n          return response;\n        }\n      }, error => {\n        console.log(\"Couldn't get minimal information for conflict check\", error);\n        if (error.message && error.message.match(/access denied/i)) {\n          this.router.transitionTo(\"unauthorised\");\n        } else {\n          throw error;\n        }\n      });\n    },\n    setupController(controller /* , model */) {\n      this._super(...arguments);\n      const qparams = this.paramsFor(\"admin.reportconflict\");\n      if (qparams) {\n        controller.set(\"conflictType\", qparams.conflict);\n      }\n    }\n  });\n});","define(\"settify-mvp/routes/admin/resetconflict\", [\"exports\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  // import Ember from 'ember';\n  var _default = _exports.default = _adminBase.default.extend({});\n});","define(\"settify-mvp/routes/admin/reviewinvoice\", [\"exports\", \"@ember/service\", \"settify-mvp/routes/admin/admin-base\", \"moment\"], function (_exports, _service, _adminBase, _moment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"settify-mvp/routes/admin/admin-base\",0,\"moment\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    lambda: (0, _service.inject)(),\n    queryParams: {\n      startDate: {\n        refreshModel: true\n      },\n      endDate: {\n        refreshModel: true\n      },\n      historical: {\n        refreshModel: true\n      },\n      practiceArea: {\n        refreshModel: true\n      },\n      firmID: {\n        refreshModel: true\n      }\n    },\n    model(params) {\n      // invoke lambda to get billing information for these firms\n      const sweep = params.historical === \"true\";\n      if (!sweep && (!params.startDate || !params.endDate)) {\n        return \"noDates\";\n      }\n      return this.lambda.invoke(this.lambda.getClientsForInvoiceReviewLambda, {\n        firmID: params.firmID,\n        sweep,\n        startDate: params.startDate,\n        endDate: params.endDate,\n        practiceArea: params.practiceArea\n      }).then(this.lambda.processResponse).then(data => {\n        this.processLeads(data.leads);\n        return {\n          sweep: sweep,\n          allLeads: data.leads,\n          leadsByPracticeArea: this.groupLeadsByPracticeArea(data.leads),\n          firm: this.reorderFirmSettingsByPracticeArea(data.firms),\n          conversionTypes: data.conversionTypes,\n          lineItems: data.lineItems,\n          invoiceRequests: data.invoiceRequests,\n          informationRequiredForInvoice: this.areAnyConversionTypesPayable(data.conversionTypes),\n          prettyStartDate: (0, _moment.default)(params.startDate).format(\"dddd, D MMM YYYY\"),\n          prettyEndDate: (0, _moment.default)(params.endDate).format(\"dddd, D MMM YYYY\")\n        };\n      });\n    },\n    reorderFirmSettingsByPracticeArea(array) {\n      const retval = {};\n      let totalAdded = 0;\n      if (array && array.forEach) {\n        array.forEach(e => {\n          if (e.practiceArea) {\n            retval[e.practiceArea] = e;\n            totalAdded++;\n          }\n        });\n      }\n      if (!totalAdded) {\n        // didn't add anything - dealing with a legacy interface!\n        if (array.length) {\n          retval[this.firm.practiceArea] = array[0];\n          retval.global = array[0];\n        }\n      }\n      return retval;\n    },\n    processLeads(leads) {\n      if (!leads || !leads.length) {\n        return;\n      }\n\n      // Sort leads alphabetically by practice area\n      leads.sort((a, b) => a.practiceArea.localeCompare(b.practiceArea));\n\n      // Update dates\n      leads.forEach(lead => {\n        lead.formattedReferralDate = (0, _moment.default)(lead.referredToFirmDate).format(\"D MMM YYYY\");\n        lead.timeSinceReferralDate = (0, _moment.default)(lead.referredToFirmDate).from(Date.now());\n        const leadAgeInDays = (0, _moment.default)().diff(lead.referredToFirmDate, \"days\");\n        if (leadAgeInDays > 62) {\n          lead.reallyOld = true;\n        } else if (leadAgeInDays > 45) {\n          lead.old = true;\n        }\n      });\n    },\n    groupLeadsByPracticeArea(leads) {\n      const retval = {};\n      leads.forEach(lead => {\n        if (!retval[lead.practiceArea]) {\n          retval[lead.practiceArea] = [];\n        }\n        retval[lead.practiceArea].push(lead);\n      });\n      return retval;\n    },\n    areAnyConversionTypesPayable(types) {\n      if (!types || !types.length) {\n        return false;\n      }\n      for (let i = 0; i < types.length; i++) {\n        const type = types[i];\n        if (type.invoiceAmountCents > 0) {\n          return true;\n        }\n      }\n      return false;\n    }\n  });\n});","define(\"settify-mvp/routes/admin/search\", [\"exports\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({});\n});","define(\"settify-mvp/routes/admin/undoinvoice\", [\"exports\", \"@ember/service\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _service, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    queryParams: {\n      invoiceNumber: {\n        refreshModel: true\n      },\n      invoiceDate: {\n        refreshModel: true\n      },\n      sweep: {\n        refreshModel: true\n      },\n      startDate: {\n        refreshModel: true\n      }\n    },\n    lambda: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    afterModel() {\n      return this.lambda.invoke(this.get(\"lambda.getFirmDetailsLambda\"), {\n        firmID: this.get(\"firm.id\")\n      }).then(this.lambda.processResponse).then(details => {\n        const namesCollection = new Set();\n        const emailsCollection = new Set();\n        namesCollection.add(details.practiceAreas.filter(e => e.practiceArea === \"global\")[0].generalContactNames);\n        namesCollection.add(details.practiceAreas.filter(e => e.practiceArea === \"global\")[0].accountsPayableNames);\n        emailsCollection.add(details.practiceAreas.filter(e => e.practiceArea === \"global\")[0].generalContactEmails);\n        emailsCollection.add(details.practiceAreas.filter(e => e.practiceArea === \"global\")[0].accountsPayableEmails);\n        emailsCollection.add(this.get(\"session.data.authenticated.username\"));\n        this.set(\"loadedFirm\", {\n          names: Array.from(namesCollection).join(\",\"),\n          emails: Array.from(emailsCollection).join(\",\")\n        });\n      });\n    },\n    setupController(controller) {\n      this._super(...arguments);\n      controller.set(\"names\", this.get(\"loadedFirm.names\"));\n      controller.set(\"emails\", this.get(\"loadedFirm.emails\"));\n    }\n  });\n});","define(\"settify-mvp/routes/admin/users\", [\"exports\", \"@ember/service\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _service, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    lambda: (0, _service.inject)(),\n    model() {\n      return this.lambda.invoke(this.get(\"lambda.getFirmsLambda\"), {}).then(this.lambda.processResponse).then(firms => {\n        return firms;\n      });\n    }\n  });\n});","define(\"settify-mvp/routes/admin/welcomeemail\", [\"exports\", \"@ember/service\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _service, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({\n    lambda: (0, _service.inject)(),\n    model() {\n      return this.lambda.invoke(this.get(\"lambda.getFirmsLambda\"), {}).then(this.lambda.processResponse).then(firms => {\n        return firms;\n      });\n    }\n  });\n});","define(\"settify-mvp/routes/admin/whatsnew\", [\"exports\", \"settify-mvp/routes/admin/admin-base\"], function (_exports, _adminBase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/admin/admin-base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _adminBase.default.extend({});\n});","define(\"settify-mvp/routes/application\", [\"exports\", \"@ember/routing/route\", \"@ember/service\", \"@ember/object\", \"settify-mvp/config/environment\", \"settify-mvp/lib/identity\", \"settify-mvp/errors/client-errors\"], function (_exports, _route, _service, _object, _environment, _identity, _clientErrors) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\",0,\"@ember/object\",0,\"settify-mvp/config/environment\",0,\"settify-mvp/lib/identity\",0,\"settify-mvp/errors/client-errors\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let ApplicationRoute = _exports.default = (_dec = (0, _service.service)(\"dynamic-config\"), _class = class ApplicationRoute extends _route.default {\n    constructor() {\n      super(...arguments);\n      _initializerDefineProperty(this, \"cookies\", _descriptor, this);\n      _initializerDefineProperty(this, \"session\", _descriptor2, this);\n      _initializerDefineProperty(this, \"store\", _descriptor3, this);\n      _initializerDefineProperty(this, \"router\", _descriptor4, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor5, this);\n      _initializerDefineProperty(this, \"awsService\", _descriptor6, this);\n      _initializerDefineProperty(this, \"config\", _descriptor7, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor8, this);\n      _initializerDefineProperty(this, \"cache\", _descriptor9, this);\n      if (!_environment.default.testing) {\n        this.setupCloseWindowMessage();\n        // Attach the scroll to top behavior when the route is instantiated\n        this.router.on(\"routeWillChange\", () => window.scrollTo(0, 0));\n      }\n    }\n    setupCloseWindowMessage() {\n      window.addEventListener(\"beforeunload\", event => this.handleBeforeUnload(event));\n    }\n    async beforeModel(transition) {\n      super.beforeModel(...arguments);\n      try {\n        // detects selected firm id (uno admin) across legacy (queryParams) on page load\n        const detectedFirm = transition?.to?.queryParams?.firmID ?? transition?.to?.queryParams?.selectedFirmID;\n        if (detectedFirm) {\n          console.log(`Detected firmID query param: ${detectedFirm}`);\n          this.cache.write({\n            namespace: \"current\",\n            key: \"firmId\",\n            value: detectedFirm\n          });\n        }\n        await this.config.resolve(); // Loading all dynamic config settings\n        await this.session.setup(); // Set up simple auth and session service\n        return this.firm.initialise(); // Get firm details + settings and initialise\n      } catch (err) {\n        // failed to load site config, just redirect to config error page (no error logging)\n        this.router.transitionTo(\"config-error\");\n      }\n    }\n    handleBeforeUnload(event) {\n      // It's impossible to display a useful message to the user, because browsers replace it with a generic message about\n      // unsaved data that is irrelevant to our purposes. Furthermore, it's impossible to know if you're just reloading the page.\n      // So instead, we'll send the user to a page that explains it all\n      if (this.shouldSkipWarning()) return;\n      if (this.session.isAuthenticated) return; // Allow authenticated users to close the window without warning\n\n      // User is not logged in with username and password\n      const clientID = this.cookies.read(\"clientID\");\n      if (!clientID) return;\n      const clientModel = this.store.peekRecord(\"client\", clientID);\n      if (!clientModel || clientModel.hasReceivedResumeLinkEmail || !clientModel.seenPathway) return;\n      this.router.transitionTo(\"saveprogress\");\n      event.returnValue = \"You have unsaved changes. If you want to save your changes, please return to the website.\";\n      return event.returnValue;\n    }\n    shouldSkipWarning() {\n      // On these pages, user is allowed to close window without receiving a warning\n      const allowedRoutes = [\"saveprogress\", \"validationcode\", \"unauthorised\", \"validate\", \"resetpassword\"];\n      return allowedRoutes.includes(this.router.currentRouteName);\n    }\n    nullAction() {\n      // do nothing - this allows us to conditionally enable or disable actions\n    }\n\n    // Handles errors for both the client and law firms on the old UI and directs them to the appropriate handlers.\n    // For the new UI, error handling should be managed in the base route, e.g. routes/v2/admin.js for admin-specific errors and routes/v2/client.js for client-specific errors\n    error(error, transition) {\n      if (error instanceof _clientErrors.ClientFrozenError) {\n        this.handleFrozenClientRedirect(transition);\n        return;\n      }\n      if (error instanceof _clientErrors.ClientUnauthorisedError) {\n        this.handleAccessDeniedRedirect(transition);\n        return;\n      }\n      if (error instanceof _clientErrors.ClientDeletedError) {\n        this.router.transitionTo(\"help.gone\"); // This route handles Client and Law firms\n        return;\n      }\n      this.eventLogging.logError(\"Uncaught webapp error\", error);\n      // Let the route above this handle the error.\n      return true;\n    }\n    handleFrozenClientRedirect(transition) {\n      const clientID = (0, _identity.getClientID)(this.cookies, this.session) || transition.to?.queryParams?.clientID || transition.to?.params?.id; // Extract clientID from queryParams or route params\n      // This route handles Client and Law firm\n      this.router.transitionTo(\"help.frozenrecord\", {\n        queryParams: {\n          clientID\n        }\n      });\n    }\n    handleAccessDeniedRedirect(transition) {\n      const clientID = (0, _identity.getClientID)(this.cookies, this.session) || transition.to?.queryParams?.clientID || transition.to?.params?.id; // Extract clientID from queryParams or route params\n      if (this.session.isAuthenticated) {\n        // Even with authentication, they weren't able to access it.\n        this.eventLogging.logError(\"Authenticated session attempted unauthorised access\", null, {\n          clientID,\n          identityID: this.session.data.authenticated.identityID,\n          username: this.session.data.authenticated.username,\n          AWSParams: this.awsService.getConfigCredentialsStringify(\"params\"),\n          AWSData: this.awsService.getConfigCredentialsStringify(\"data\")\n        });\n        this.router.transitionTo(\"unauthorised\");\n        return;\n      }\n      // They're not logged in yet - maybe if they log in, they'll have access!\n      this.session.attemptedTransition = transition;\n      this.router.transitionTo(\"login\", {\n        queryParams: {\n          clientID: \"\",\n          email: \"\"\n        }\n      });\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"cookies\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"store\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"awsService\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"config\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor9 = _applyDecoratedDescriptor(_class.prototype, \"cache\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"nullAction\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"nullAction\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"error\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"error\"), _class.prototype), _class);\n});","define(\"settify-mvp/routes/base\", [\"exports\", \"@ember/runloop\", \"@ember/service\", \"@ember/object\", \"@ember/routing/route\", \"settify-mvp/mixins/master-form-mixin\", \"settify-mvp/utils/email-utils\"], function (_exports, _runloop, _service, _object, _route, _masterFormMixin, _emailUtils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/service\",0,\"@ember/object\",0,\"@ember/routing/route\",0,\"settify-mvp/mixins/master-form-mixin\",0,\"settify-mvp/utils/email-utils\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _route.default.extend(_masterFormMixin.default, {\n    cookies: (0, _service.inject)(),\n    session: (0, _service.inject)(),\n    router: (0, _service.inject)(),\n    recordpolling: (0, _service.inject)(),\n    clientRecords: (0, _service.inject)(),\n    eventLogging: (0, _service.inject)(),\n    catalyticEvents: (0, _service.inject)(),\n    awsService: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    config: (0, _service.inject)(\"dynamic-config\"),\n    store: (0, _service.inject)(),\n    queryParams: {\n      clientID: {\n        refreshModel: true\n      }\n    },\n    activate() {\n      this._super();\n      window.scrollTo(0, 0);\n    },\n    getClientPromise(qparams) {\n      if (qparams && qparams.clientID) {\n        this.set(\"attemptedClientIDToGet\", qparams.clientID);\n      }\n      return this.clientRecords.getClient(qparams).then(client => {\n        if (!client) {\n          throw new Error(\"Couldn't load client record\");\n        }\n        this.recordpolling.setTrackedClient(client);\n        return client;\n      });\n    },\n    beforeModel() {\n      this._super(...arguments);\n\n      // Force admins to stay in the admin area\n      if (this.routeName.match(/^admin.*/)) return; // okay - admin user is accessing an admin route\n      if (this.allowAdminAccess) return; // okay - this route specifically allows admins to access it\n\n      this.router.transitionTo(\"admin\");\n    },\n    afterModel(model) {\n      this._super(...arguments);\n      this.addPracticeAreaSettingsToModel(model);\n    },\n    redirect(model, transition) {\n      if (model) {\n        let client = model;\n        if (model.client) {\n          ({\n            client\n          } = model);\n        }\n        if (client?.getAnswersFor) {\n          // 'client' is a valid client record (as it has a function called getAnswersFor)\n          if (this.session.isAuthenticated && this.session.data.authenticated.adminUser) {\n            // user is an admin\n            return;\n          }\n\n          // user is a regular joe\n          if (!client.isFormsRecord) {\n            // This is not a forms record, they should be using the legacy system and not the uno system.\n            client.readOnly = true; // Prevent changes from being made to this record.\n            this.router.transitionTo(\"help.legacyrecord\", {\n              queryParams: {\n                clientID: client.clientID\n              }\n            });\n            return;\n          }\n          if (client.get(\"creatingAccount\") && !this.get(\"session.isAuthenticated\")) {\n            this.router.transitionTo(\"validationcode\", {\n              queryParams: {\n                resend: true,\n                clientID: client.get(\"clientID\"),\n                email: (0, _emailUtils.encodeEmailAddress)(client.get(\"email\"))\n              }\n            });\n          } else if (client.get(\"passwordProtected\") && !this.get(\"session.isAuthenticated\")) {\n            this.session.attemptedTransition = transition;\n            this.router.transitionTo(\"login\", {\n              queryParams: {\n                clientID: \"\",\n                email: (0, _emailUtils.encodeEmailAddress)(client.get(\"email\"))\n              }\n            });\n          } else if (client.get(\"inductions.length\") === 0 && this.requiresInductions) {\n            this.router.transitionTo(\"index\");\n          } else if (!client.get(\"furthestPage\") && this.requiresSomeProgression) {\n            this.router.transitionTo(\"index\");\n          } else if (client.get(\"lockedByLawFirm\")) {\n            // This clients record has been locked, they cant make any changes to it\n            this.router.transitionTo(\"lockedrecord\");\n          }\n        }\n      }\n      this.addPracticeAreaSettingsToModel(model);\n    },\n    setupController(controller, model) {\n      this._super(...arguments);\n      if (controller.reset) {\n        controller.reset(model);\n      }\n    },\n    checkIfFirmDisabled(transition) {\n      if (this.get(\"firm.loading\")) {\n        // wait for firm settings to load\n        return (0, _runloop.later)(this, this.checkIfFirmDisabled, transition, 50);\n      }\n\n      // if contract terminated and date that was set on admin dashboard is not in the future,\n      // redirect to disabled route OR allow only admin routes and whitelisted\n      // routes for law firm users to login and check records for 45 days\n      if (this.get(\"firm.terminatedContract\")) {\n        if (this.get(\"firm.state\") === \"terminated\" && this.get(\"session.isAuthenticated\")) {\n          // Invalidate session if the contract is terminated for more that 45 days ago\n          // and they are still logged in to prevent infinite loading screen\n          this.session.invalidate();\n        }\n        if (this.get(\"firm.state\") === \"sunset\") {\n          // Allow system to be in use if termination contract date is in the future\n          return true;\n        } else if (this.get(\"firm.state\") === \"grace\" && this.isAllowedRouteForTerminatedContract() && transition.to.queryParams.clientID !== \"null\") {\n          this.router.transitionTo(this.routeName);\n        } else if (this.routeName !== \"disabled\") {\n          this.router.transitionTo(\"disabled\");\n        }\n      }\n    },\n    isAllowedRouteForTerminatedContract() {\n      const whitelistedRoutes = [\"login\", \"terms\", \"privacy\", \"security\", \"yourinformation\"];\n      if (this.routeName.match(/^admin.*/) || whitelistedRoutes.includes(this.routeName)) {\n        return true;\n      }\n      if (this.session?.isAuthenticated && this.routeName === \"help.frozenrecord\") {\n        return true;\n      }\n      return false;\n    },\n    addPracticeAreaSettingsToModel(model) {\n      if (!model || !(model.client || model.record)) {\n        return;\n      }\n      const clientPracticeArea = model.record ? model.record.practiceArea : model.client.practiceArea;\n      if (!clientPracticeArea) {\n        // No practice area detected\n        return (0, _object.set)(model, \"practiceAreaSettings\", {});\n      }\n\n      // Add practice area specific settings to the model based on the client's practice area\n      (0, _object.set)(model, \"practiceAreaSettings\", this.firm.getPracticeAreaSettings(clientPracticeArea) || {});\n    },\n    actions: {\n      refreshModel() {\n        this.refresh();\n      },\n      willTransition(transition) {\n        this.catalyticEvents.countBacks(this.routeName, null, false, false, transition);\n      }\n    }\n  });\n});","define(\"settify-mvp/routes/changepassword\", [\"exports\", \"settify-mvp/routes/base\"], function (_exports, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    doNotLoadClientRecord: true,\n    allowAdminAccess: true,\n    beforeModel(transition) {\n      this.session.requireAuthentication(transition, this.firm?.isUsingNewUI ? \"v2.auth.login\" : \"login\");\n    }\n  });\n});","define(\"settify-mvp/routes/config-error\", [\"exports\", \"@ember/service\", \"@ember/routing/route\"], function (_exports, _service, _route) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@ember/routing/route\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _route.default.extend({\n    config: (0, _service.inject)(\"dynamic-config\"),\n    router: (0, _service.inject)(),\n    afterModel() {\n      this._super(...arguments);\n      if (this.get(\"config.loaded\")) {\n        // The config has loaded, let's kick the user back to the index route\n        return this.router.transitionTo(\"index\");\n      }\n    }\n  });\n});","define(\"settify-mvp/routes/documents\", [], function () {\n  \"use strict\";\n\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n});","define(\"settify-mvp/routes/error\", [\"exports\", \"@ember/service\", \"settify-mvp/routes/base\"], function (_exports, _service, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"settify-mvp/routes/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    allowAdminAccess: true,\n    cookies: (0, _service.inject)(),\n    beforeModel() {\n      this.cookies.clear(\"clientID\", {\n        path: \"/\"\n      });\n    }\n  });\n});","define(\"settify-mvp/routes/firstlogin\", [\"exports\", \"settify-mvp/routes/base\"], function (_exports, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    doNotLoadClientRecord: true,\n    allowAdminAccess: true\n  });\n});","define(\"settify-mvp/routes/help/frozenrecord\", [\"exports\", \"settify-mvp/routes/base\"], function (_exports, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/base\"eaimeta@70e063a35619d71f\n  // import Ember from 'ember';\n  var _default = _exports.default = _base.default.extend({\n    doNotLoadClientRecord: true,\n    allowAdminAccess: true,\n    queryParams: {\n      clientID: {\n        refreshModel: true\n      }\n    }\n\n    // setupController(controller) {\n    //   this._super(...arguments);\n    //   controller.unfreezeClient(); // Not used in the Admin branches\n    // }\n  });\n});","define(\"settify-mvp/routes/help/legacyrecord\", [\"exports\", \"settify-mvp/routes/base\"], function (_exports, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/base\"eaimeta@70e063a35619d71f\n  class HelpLegacyrecordRoute extends _base.default {}\n  _exports.default = HelpLegacyrecordRoute;\n});","define(\"settify-mvp/routes/index\", [\"exports\", \"settify-mvp/routes/base\"], function (_exports, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({});\n});","define(\"settify-mvp/routes/induction\", [\"exports\", \"settify-mvp/routes/base\"], function (_exports, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({});\n});","define(\"settify-mvp/routes/lockedrecord\", [\"exports\", \"@ember/service\", \"settify-mvp/routes/base\"], function (_exports, _service, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"settify-mvp/routes/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    firm: (0, _service.inject)(),\n    setupController(controller) {\n      this._super(...arguments);\n      controller.set(\"firm\", this.firm);\n      controller.set(\"session\", this.session);\n    }\n  });\n});","define(\"settify-mvp/routes/login\", [\"exports\", \"@ember/service\", \"@ember/routing/route\"], function (_exports, _service, _route) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@ember/routing/route\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let LoginRoute = _exports.default = (_class = class LoginRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"router\", _descriptor, this);\n    }\n    redirect() {\n      this.router.transitionTo(\"v2.auth.login\");\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/mfa\", [\"exports\", \"settify-mvp/routes/base\"], function (_exports, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    doNotLoadClientRecord: true,\n    allowAdminAccess: true,\n    beforeModel(transition) {\n      this.session.requireAuthentication(transition, this.firm?.isUsingNewUI ? \"v2.auth.login\" : \"login\");\n    }\n  });\n});","define(\"settify-mvp/routes/notfound\", [\"exports\", \"settify-mvp/routes/base\"], function (_exports, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    allowAdminAccess: true\n  });\n});","define(\"settify-mvp/routes/privacy\", [\"exports\", \"@ember/service\", \"settify-mvp/routes/base\"], function (_exports, _service, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"settify-mvp/routes/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    allowAdminAccess: true,\n    firm: (0, _service.inject)(),\n    doNotLoadClientRecord: true,\n    setupController(controller) {\n      this._super(...arguments);\n      controller.set(\"firm\", this.firm);\n      controller.set(\"session\", this.session);\n    }\n  });\n});","define(\"settify-mvp/routes/resetpassword\", [\"exports\", \"settify-mvp/routes/base\"], function (_exports, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    doNotLoadClientRecord: true,\n    allowAdminAccess: true\n  });\n});","define(\"settify-mvp/routes/terms\", [\"exports\", \"@ember/service\", \"settify-mvp/routes/base\"], function (_exports, _service, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"settify-mvp/routes/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    allowAdminAccess: true,\n    firm: (0, _service.inject)(),\n    doNotLoadClientRecord: true,\n    setupController(controller) {\n      this._super(...arguments);\n      controller.set(\"firm\", this.firm);\n      controller.set(\"session\", this.session);\n    }\n  });\n});","define(\"settify-mvp/routes/unauthorised\", [\"exports\", \"settify-mvp/routes/base\"], function (_exports, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/routes/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    allowAdminAccess: true,\n    setupController(controller /* , model */) {\n      controller.set(\"session\", this.session);\n\n      // maybe they've been lumped with a bad cookie - delete it just in case!\n      this.cookies.clear(\"clientID\", {\n        path: \"/\"\n      });\n    }\n  });\n});","define(\"settify-mvp/routes/v2\", [\"exports\", \"@ember/routing/route\", \"@ember/service\"], function (_exports, _route, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let V2Route = _exports.default = (_class = class V2Route extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _defineProperty(this, \"templateName\", \"v2/layout-base\");\n      _initializerDefineProperty(this, \"sharedService\", _descriptor, this);\n    }\n    activate() {\n      this.sharedService.activateModernUI();\n    }\n    deactivate() {\n      this.sharedService.deactivateModernUI();\n    }\n    model() {\n      return {\n        settings: []\n      };\n    }\n    redirect(/* model, transition */\n    ) {\n      // TODO: check if firm is disabled\n      // see BaseRoute: this.checkIfFirmDisabled();\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"sharedService\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/admin\", [\"exports\", \"@ember/routing/route\", \"@ember/service\"], function (_exports, _route, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminRoute = _exports.default = (_class = class AdminRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"router\", _descriptor, this);\n    }\n    redirect() {\n      this.router.transitionTo(\"v2.firms.index\");\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/admin/admin-base\", [\"exports\", \"@ember/routing/route\", \"@ember/service\"], function (_exports, _route, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminBaseRoute = _exports.default = (_class = class AdminBaseRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"clientRecords\", _descriptor, this);\n      _initializerDefineProperty(this, \"recordpolling\", _descriptor2, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor3, this);\n    }\n    async getClientRecordAsAdmin(id) {\n      // Note: not using promise chaining because we don't need the events to process in order\n      this.attemptedClientIDToGet = id;\n      const client = await this.clientRecords.getClientByID(id);\n      if (!client) {\n        throw new Error(\"Couldn't load client record, even as admin\");\n      }\n      this.eventLogging.log(client.clientID, this.eventLogging.IDs.FirmAccessed, null, client.practiceArea);\n      this.eventLogging.adminLog(client.clientID, this.eventLogging.adminIDs.clientAccessed, null, null, client.practiceArea);\n      if (client && client.clientID === id) {\n        // record loaded successfully\n        this.recordpolling.setTrackedClient(client);\n        client.readOnly = true;\n      }\n      return client;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"clientRecords\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"recordpolling\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/admin/billing/index\", [\"exports\", \"@ember/routing/route\", \"@ember/service\", \"rsvp\"], function (_exports, _route, _service, _rsvp) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\",0,\"rsvp\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminBillingRoute = _exports.default = (_class = class AdminBillingRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n      _initializerDefineProperty(this, \"invoice\", _descriptor2, this);\n    }\n    model() {\n      return (0, _rsvp.hash)({\n        invoiceRequests: this.invoice.getAllInvoices()\n      });\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"invoice\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/admin/billing/invoice\", [\"exports\", \"@ember/routing/route\", \"@ember/service\", \"moment\"], function (_exports, _route, _service, _moment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\",0,\"moment\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminBillingInvoiceRoute = _exports.default = (_class = class AdminBillingInvoiceRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n      _initializerDefineProperty(this, \"lambda\", _descriptor2, this);\n      _initializerDefineProperty(this, \"invoice\", _descriptor3, this);\n      _defineProperty(this, \"queryParams\", {\n        startDate: {\n          refreshModel: true\n        },\n        endDate: {\n          refreshModel: true\n        }\n      });\n    }\n    async model(params) {\n      const rawInvoices = await this.lambda.invoke(this.lambda.getClientsForInvoiceReviewLambda, {\n        firmID: this.firm.id,\n        invoiceID: params.id,\n        startDate: params.startDate,\n        endDate: params.endDate\n      });\n      const {\n        invoiceRequest,\n        leads,\n        conversionTypes\n      } = this.lambda.processResponse(rawInvoices);\n      const {\n        billedLeads,\n        allLeads\n      } = this.processLeads(leads);\n      const invoiceList = await this.invoice.getAllInvoices();\n      const requestedInvoice = invoiceList.find(invoice => invoice.id === params.id) || {\n        ...invoiceRequest,\n        id: params.id || null\n      };\n      return {\n        allLeads,\n        billedLeads,\n        invoiceRequest: requestedInvoice,\n        conversionTypes: conversionTypes\n      };\n    }\n\n    // TODO: Move below 2 helper functions into the utility class\n    processLeads(leads = []) {\n      // Filter to only show locked leads\n      leads = leads.filter(lead => lead.billingLockedDate);\n\n      // Update dates\n      const unbilledLeads = [];\n      const billedLeads = [];\n      leads.forEach(lead => {\n        lead.formattedReferralDate = (0, _moment.default)(lead.referredToFirmDate).format(\"D MMM YYYY\");\n        lead.timeSinceReferralDate = (0, _moment.default)(lead.referredToFirmDate).from(Date.now());\n        if (lead.invoicedAmount) {\n          // The client has a invoiced amount for this invoice\n          billedLeads.push(lead);\n        } else {\n          unbilledLeads.push(lead);\n        }\n      });\n      return {\n        unbilledLeads,\n        billedLeads,\n        allLeads: leads\n      };\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"invoice\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/admin/billing/review\", [\"exports\", \"@ember/routing/route\", \"@ember/service\", \"moment\"], function (_exports, _route, _service, _moment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\",0,\"moment\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminBillingReviewRoute = _exports.default = (_class = class AdminBillingReviewRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"lambda\", _descriptor, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor2, this);\n      _defineProperty(this, \"queryParams\", {\n        startDate: {\n          refreshModel: true\n        },\n        endDate: {\n          refreshModel: true\n        },\n        historical: {\n          refreshModel: true\n        }\n      });\n    }\n    async model(params) {\n      // invoke lambda to get billing information for these firms\n      const sweep = params.historical === \"true\";\n      if (!sweep && (!params.startDate || !params.endDate)) {\n        return {\n          error: 400,\n          message: \"Uh oh - no billing period has been specified. It looks like you might have come here via a broken link. If you copied and pasted a link into your browser, please make sure that you copied the entire thing.\"\n        };\n      }\n      const payload = {\n        firmID: this.firm.id,\n        sweep,\n        startDate: params.startDate,\n        endDate: params.endDate\n      };\n      const data = await this.lambda.invoke(this.lambda.getClientsForInvoiceReviewLambda, payload).then(this.lambda.processResponse);\n      const leads = await this.processLeads(data.leads);\n      return {\n        sweep: sweep,\n        leads: leads,\n        firm: this.reorderFirmSettingsByPracticeArea(data.firms),\n        informationRequiredForInvoice: this.areAnyConversionTypesPayable(data.conversionTypes),\n        conversionTypes: data.conversionTypes\n      };\n    }\n\n    // TODO: Move below 3 helper functions into the utility class\n    processLeads(leads) {\n      if (!leads || !leads.length) {\n        return;\n      }\n\n      // Update dates\n      leads.forEach(lead => {\n        lead.formattedReferralDate = (0, _moment.default)(lead.referredToFirmDate).format(\"D MMM YYYY\");\n        lead.timeSinceReferralDate = (0, _moment.default)(lead.referredToFirmDate).from(Date.now());\n        const leadAgeInDays = (0, _moment.default)().diff(lead.referredToFirmDate, \"days\");\n        if (leadAgeInDays > 62) {\n          lead.reallyOld = true;\n        } else if (leadAgeInDays > 45) {\n          lead.old = true;\n        }\n      });\n      return leads;\n    }\n    reorderFirmSettingsByPracticeArea(array) {\n      const retval = {};\n      let totalAdded = 0;\n      if (array && array.forEach) {\n        array.forEach(e => {\n          if (e.practiceArea) {\n            retval[e.practiceArea] = e;\n            totalAdded++;\n          }\n        });\n      }\n      if (!totalAdded) {\n        // didn't add anything - dealing with a legacy interface!\n        if (array.length) {\n          retval[this.firm.practiceArea] = array[0];\n          retval.global = array[0];\n        }\n      }\n      return retval;\n    }\n    areAnyConversionTypesPayable(types) {\n      if (!types || !types.length) {\n        return false;\n      }\n      for (let i = 0; i < types.length; i++) {\n        const type = types[i];\n        if (type.invoiceAmountCents > 0) {\n          return true;\n        }\n      }\n      return false;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/admin/clients\", [\"exports\", \"@ember/routing/route\", \"@glimmer/tracking\", \"@ember/service\", \"rsvp\"], function (_exports, _route, _tracking, _service, _rsvp) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@glimmer/tracking\",0,\"@ember/service\",0,\"rsvp\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminClientsRoute = _exports.default = (_class = class AdminClientsRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"lambda\", _descriptor, this);\n      _initializerDefineProperty(this, \"questionnaireLogic\", _descriptor2, this);\n      _initializerDefineProperty(this, \"clientMatter\", _descriptor3, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor4, this);\n      _initializerDefineProperty(this, \"recordpolling\", _descriptor5, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor6, this);\n      _initializerDefineProperty(this, \"router\", _descriptor7, this);\n      _initializerDefineProperty(this, \"store\", _descriptor8, this);\n      _initializerDefineProperty(this, \"savedID\", _descriptor9, this);\n      _defineProperty(this, \"errorCodeRegex\", /[0-9]{3}/);\n    }\n    async model(params) {\n      this.savedID = params.id;\n      const client = await this.getClientRecordAsAdmin(params.id);\n      if (typeof client === \"string\") {\n        // This can happen if the client record has an error or is frozen. See clientRecords.getClientByID()\n        // TODO: Look at having getClientByID raise the error to be handled by the route. We could then use the `@action error()` to handle any errors\n        return client;\n      }\n\n      // FOR TESTING - update the client record to 'now' so that we can access the latest version of the summary\n      // client.set('creationTimestamp', Date.now()); let testingOnly;\n      return (0, _rsvp.hash)({\n        client,\n        metadata: this.store.queryRecord(\"metadata\", {\n          firmID: this.firm.id,\n          clientID: client.id\n        }),\n        inductions: (await this.questionnaireLogic.getInductions(client)).inductions\n      });\n    }\n    afterModel(model, transition) {\n      super.afterModel(...arguments);\n      this.checkForAccessDenied(model, transition);\n    }\n\n    // THE BELOW IS TAKEN FROM admin-base.js\n    async getClientRecordAsAdmin(id) {\n      // Note: not using promise chaining because we don't need the events to process in order\n      const client = await this.clientMatter.getClientMatterByID(id);\n      // console.log(\"Setting tracked client\");\n      if (!client) {\n        throw new Error(\"Couldn't load client record, even as admin\");\n      }\n      this.eventLogging.log(client.clientID, this.eventLogging.IDs.FirmAccessed, null, client.practiceArea);\n      this.eventLogging.adminLog(client.clientID, this.eventLogging.adminIDs.clientAccessed, null, null, client.practiceArea);\n      if (client.clientID === id) {\n        // record loaded successfully\n        this.recordpolling.setTrackedClient(client);\n        client.readOnly = true;\n      }\n      return client;\n    }\n    checkForAccessDenied(model, transition) {\n      if (this.checkIfFirmAllowedToSeeClient(model.client, transition)) {\n        const emails = model?.client?.notifyUpdates;\n        if (!emails) {\n          model.client.notifyUpdates = [{\n            email: this.firm?.contactEmail\n          }];\n        }\n      }\n      if (typeof model === \"string\" && model.match(this.errorCodeRegex)) {\n        // TODO: This would be better if we simply threw an error from\n        // client adapter instead of checking for 3 digit responses\n        this.router.transitionTo(\"v2.admin.client-error\", {\n          id: this.savedID,\n          error: model\n        });\n      }\n    }\n    checkIfFirmAllowedToSeeClient(client) {\n      if (!client) return false;\n      if (client.firmID !== this.firm?.id || client.conflictCheck === \"conflict\") {\n        this.router.transitionTo(\"v2.admin.client-error\", {\n          id: this.savedID,\n          error: \"401\"\n        }); // unauthorised\n        return false;\n      }\n      if (!client.conflictCheckTimestamp) {\n        // this.get('eventLogging').logError('Admin attempted to access record without performing conflict check: ' + client.get('clientID'));\n        this.store.unloadRecord(client); // Remove record from the store as the firm is not allowed access just yet.\n        this.router.transitionTo(\"v2.admin.conflict\", this.savedID);\n        return false;\n      }\n\n      // we're allowed to view this record\n      return true;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"questionnaireLogic\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"clientMatter\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"recordpolling\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"store\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor9 = _applyDecoratedDescriptor(_class.prototype, \"savedID\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _class);\n});","define(\"settify-mvp/routes/v2/admin/index\", [\"exports\", \"@ember/routing/route\", \"rsvp\", \"@ember/service\"], function (_exports, _route, _rsvp, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"rsvp\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminIndexRoute = _exports.default = (_class = class AdminIndexRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n      _initializerDefineProperty(this, \"store\", _descriptor2, this);\n      _defineProperty(this, \"numberOfLeadsToFetch\", 500);\n    }\n    model() {\n      const query = {\n        firmID: this.firm.id,\n        size: this.numberOfLeadsToFetch\n      };\n      return (0, _rsvp.hash)({\n        leads: this.store.query(\"lead\", query),\n        conversionTypes: this.store.peekAll(\"conversion-type\")\n      });\n    }\n    resetController(controller, isExiting) {\n      if (isExiting) {\n        controller.selectedClient = null;\n        controller.showResetConflictModal = false;\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"store\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/admin/integrations\", [\"exports\", \"@ember/routing/route\", \"@ember/service\"], function (_exports, _route, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminIntegrationsRoute = _exports.default = (_class = class AdminIntegrationsRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n      _initializerDefineProperty(this, \"lambda\", _descriptor2, this);\n      _initializerDefineProperty(this, \"router\", _descriptor3, this);\n    }\n    async model() {\n      // TODO: For now we hardcode to use the family pmsID setting (when we get global settings this should move)\n      const pmsID = this.firm.getPracticeAreaSettings(\"Family\")?.settings?.admin?.integrations?.pmsID;\n      if (!pmsID) {\n        return {};\n      }\n      const status = await this.lambda.invoke(this.lambda.getIntegrationStatus, {\n        firmID: this.firm.id,\n        productName: pmsID\n      }).then(this.lambda.processResponse);\n      return {\n        status,\n        pmsID\n      };\n    }\n    afterModel(model, transition) {\n      const isAuthenticated = model?.status?.authenticated;\n      // If there is an authenticated PMS, take them to the specific integration route, others to the index to select a PMS\n      const targetRoute = isAuthenticated ? \"v2.admin.integrations.integration\" : \"v2.admin.integrations.index\";\n      const shouldRedirect = transition?.targetName !== targetRoute;\n      if (shouldRedirect) {\n        const transitionArgs = isAuthenticated ? [targetRoute, model.pmsID] : [targetRoute];\n        return this.router.transitionTo(...transitionArgs);\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/admin/integrations/index\", [\"exports\", \"@ember/routing/route\", \"@ember/service\"], function (_exports, _route, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminIntegrationsIndexRoute = _exports.default = (_class = class AdminIntegrationsIndexRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"lambda\", _descriptor, this);\n      _initializerDefineProperty(this, \"router\", _descriptor2, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor3, this);\n      _initializerDefineProperty(this, \"store\", _descriptor4, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor5, this);\n      _initializerDefineProperty(this, \"notifications\", _descriptor6, this);\n      _defineProperty(this, \"queryParams\", {\n        authCode: {\n          refreshModel: true\n        }\n      });\n    }\n    async beforeModel(transition) {\n      const authCode = transition.to?.queryParams?.authCode;\n      if (authCode) {\n        await this.finishAuthenticationProcess(authCode);\n      }\n    }\n    async model() {\n      const availableIntegrations = await this.lambda.invoke(this.lambda.listPmsMetadata, {}).then(this.lambda.processResponse);\n      return {\n        // For now we only support a limited set of integrations (Leap and Smokeball)\n        availableIntegrations: availableIntegrations.filter(({\n          id\n        }) => [\"leap\", \"smokeball\"].includes(id)),\n        integration: this.modelFor(\"v2.admin.integrations\")\n      };\n    }\n\n    // TODO: Look at adding all of the below to an integration service\n    /**\n     * Finishes the authentication process after receiving the auth code.\n     * @param {String} authCode - The authentication code returned during the handshake between Settify and a PMS.\n     */\n    async finishAuthenticationProcess(authCode) {\n      const {\n        pmsID,\n        practiceArea\n      } = this.getPmsAuthContext();\n      if (!pmsID) return;\n      const {\n        authenticated,\n        message\n      } = await this.authenticatePms(authCode, pmsID);\n      if (!authenticated) {\n        this.setAuthenticationErrorNotification(message);\n        return;\n      }\n\n      // Now that we have finished the pms authorisation process, we are done with the pmsAuthContext\n      window.localStorage.removeItem(\"pmsAuthContext\");\n      await this.saveSelectedPMS(pmsID, practiceArea);\n      return this.router.transitionTo(\"v2.admin.integrations.integration\", pmsID);\n    }\n\n    /**\n     * Retrieves the PMS authentication context from local storage.\n     * @returns {Object} - The PMS authentication context object if found, otherwise an empty object.\n     */\n    getPmsAuthContext() {\n      try {\n        const pmsAuthContext = JSON.parse(window.localStorage.getItem(\"pmsAuthContext\")) || {};\n        return pmsAuthContext;\n      } catch (error) {\n        this.eventLogging.logError(`Failed to get PMS auth context`, error);\n        return {};\n      }\n    }\n\n    /**\n     * Calls the authenticate lambda to process the authentication based on the authCode and pmsID.\n     * @param {String} authCode - An authentication code returned during the handshake between Settify and a PMS\n     * @param {String} pmsID - The ID for the selected PMS\n     * @returns A promise that resolves to an object containing the authentication status and an optional message in case of an error, otherwise an empty object if it fails.\n     */\n    async authenticatePms(authCode, pmsID) {\n      try {\n        return await this.lambda.invoke(this.lambda.authenticateLambda, {\n          firmID: this.firm.id,\n          authCode,\n          productName: pmsID\n        }).then(this.lambda.processResponse);\n      } catch (error) {\n        this.eventLogging.logError(`Failed to finish authentication flow for ${pmsID}`, error);\n        return {};\n      }\n    }\n\n    /**\n     * Saves the selected PMS ID to the firm settings.\n     * @param {String} pmsID - The ID for the selected PMS.\n     * @param {String} practiceArea - The practice area associated with the selected PMS.\n     */\n    saveSelectedPMS(pmsID, practiceArea) {\n      const settings = this.store.peekRecord(\"settings\", practiceArea || \"Family\");\n      settings.set(\"settings.admin.integrations.pmsID\", pmsID);\n      return settings.save();\n    }\n\n    /**\n     * Adds an error message to the notification service to show a failed PMS authentication.\n     * @param {String} message - The message to add to the notification service\n     */\n    setAuthenticationErrorNotification(message = \"Unable to authenticate the connection right now.\") {\n      this.notifications.add({\n        title: \"PMS authentication failed\",\n        icon: \"error\",\n        canDismiss: true,\n        message\n      });\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"store\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"notifications\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/admin/integrations/integration\", [\"exports\", \"@ember/routing/route\", \"@ember/service\", \"rsvp\", \"@ember/object\"], function (_exports, _route, _service, _rsvp, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\",0,\"rsvp\",0,\"@ember/object\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminIntegrationsIntegrationRoute = _exports.default = (_class = class AdminIntegrationsIntegrationRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n      _initializerDefineProperty(this, \"lambda\", _descriptor2, this);\n      _initializerDefineProperty(this, \"store\", _descriptor3, this);\n    }\n    model() {\n      return (0, _rsvp.hash)({\n        pmsMetadata: this.lambda.invoke(this.lambda.getSendToPmsMetadata, {\n          firmID: this.firm.id,\n          practiceArea: \"Family\"\n        }).then(this.lambda.processResponse),\n        settings: this.store.peekRecord(\"settings\", \"Family\")\n      });\n    }\n    setupController(controller, model) {\n      super.setupController(...arguments);\n      const pmsSettingsPath = model.pmsMetadata?.defaultSettingsPath;\n      if (pmsSettingsPath) {\n        controller.set(\"localPmsSettings\", (0, _object.get)(model.settings, pmsSettingsPath));\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"store\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/admin/offices\", [\"exports\", \"@ember/routing/route\", \"@ember/service\"], function (_exports, _route, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminOfficesRoute = _exports.default = (_class = class AdminOfficesRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firmOffices\", _descriptor, this);\n    }\n    async model() {\n      await this.firmOffices.load();\n      return {\n        offices: this.firmOffices.offices\n      };\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firmOffices\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/admin/offices/edit\", [\"exports\", \"@ember/routing/route\", \"@ember/service\", \"uuid\"], function (_exports, _route, _service, _uuid) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\",0,\"uuid\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminOfficesEditRoute = _exports.default = (_class = class AdminOfficesEditRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firmOffices\", _descriptor, this);\n    }\n    async model(params) {\n      const creatingNewAddress = params.id === \"new\";\n      await this.firmOffices.load();\n      // Unfortunately we need to use `id` for new offices, and `officeID` for existing offices due to the way the backend saves and loads offices.\n      const officeToEdit = creatingNewAddress ? {\n        id: (0, _uuid.v4)()\n      } : this.firmOffices.offices.find(office => [office.officeID, office.id].includes(params.id));\n      return {\n        office: officeToEdit,\n        isNew: creatingNewAddress\n      };\n    }\n    setupController(controller, model) {\n      super.setupController(...arguments);\n      controller.initialOfficeState = JSON.parse(JSON.stringify(model.office));\n    }\n    resetController(controller, isExiting, transition) {\n      super.resetController(controller, isExiting, transition);\n      if (isExiting) {\n        controller.initialOfficeState = false;\n        controller.showDeleteOptions = false;\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firmOffices\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/admin/settings/index\", [\"exports\", \"@ember/routing/route\", \"@ember/service\"], function (_exports, _route, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminSettingsRoute = _exports.default = (_class = class AdminSettingsRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"router\", _descriptor, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor2, this);\n    }\n    redirect() {\n      // There is no settings.hbs file, so for now we just transition to the setting route with the first practice area for a firm\n      const defaultPracticeArea = Object.keys(this.firm.otherSettifyURLs)[0]?.toLowerCase();\n      return this.router.transitionTo(\"v2.admin.settings.setting\", {\n        practice_area: defaultPracticeArea\n      });\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/admin/settings/settify\", [\"exports\", \"@ember/routing/route\", \"@ember/service\"], function (_exports, _route, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminSettingsSettifyRoute = _exports.default = (_class = class AdminSettingsSettifyRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"router\", _descriptor, this);\n      _initializerDefineProperty(this, \"session\", _descriptor2, this);\n    }\n    redirect() {\n      // Access to this route only allowed to Settify Admins\n      if (this.session.isAuthenticated && !this.session.data.authenticated.isSettifyAdmin) {\n        this.router.transitionTo(\"v2.admin.settings\");\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/admin/settings/setting\", [\"exports\", \"@ember/routing/route\", \"settify-mvp/helpers/sentence-case\"], function (_exports, _route, _sentenceCase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"settify-mvp/helpers/sentence-case\"eaimeta@70e063a35619d71f\n  class AdminSettingRoute extends _route.default {\n    setupController(controller, model) {\n      super.setupController(controller, model);\n      controller.set(\"selectedPracticeArea\", (0, _sentenceCase.sentenceCase)([model?.practice_area]));\n    }\n  }\n  _exports.default = AdminSettingRoute;\n});","define(\"settify-mvp/routes/v2/admin/settings/setting/billing\", [\"exports\", \"@ember/routing/route\", \"@ember/service\"], function (_exports, _route, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminSettingsBillingRoute = _exports.default = (_class = class AdminSettingsBillingRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firmDetails\", _descriptor, this);\n    }\n    async beforeModel() {\n      return this.firmDetails.load();\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firmDetails\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/admin/settings/setting/client-facing\", [\"exports\", \"@ember/routing/route\", \"@ember/service\", \"settify-mvp/helpers/sentence-case\"], function (_exports, _route, _service, _sentenceCase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\",0,\"settify-mvp/helpers/sentence-case\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminSettingsClientFacingRoute = _exports.default = (_class = class AdminSettingsClientFacingRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"lambda\", _descriptor, this);\n    }\n    async model() {\n      const practiceArea = (0, _sentenceCase.sentenceCase)([this.modelFor(\"v2.admin.settings.setting\").practice_area]);\n      const settingsHelp = await this.lambda.invoke(this.lambda.getFirmSettingsHelpLambda, {\n        practiceArea\n      }).then(this.lambda.processResponse);\n      const helpMap = {};\n      for (let i = 0; settingsHelp && i < settingsHelp.length; i++) {\n        const h = settingsHelp[i];\n        helpMap[h.settingName.replace(/\\./g, \"\")] = h;\n      }\n      return {\n        settingsHelp: helpMap\n      };\n    }\n    setupController(controller, model) {\n      super.setupController(controller, model);\n      controller.set(\"selectedPracticeArea\", (0, _sentenceCase.sentenceCase)([this.modelFor(\"v2.admin.settings.setting\").practice_area]));\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/admin/settings/setting/firm-facing\", [\"exports\", \"@ember/routing/route\", \"@ember/service\", \"settify-mvp/helpers/sentence-case\"], function (_exports, _route, _service, _sentenceCase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\",0,\"settify-mvp/helpers/sentence-case\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminSettingsFirmFacingRoute = _exports.default = (_class = class AdminSettingsFirmFacingRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"lambda\", _descriptor, this);\n    }\n    async model() {\n      const practiceArea = (0, _sentenceCase.sentenceCase)([this.modelFor(\"v2.admin.settings.setting\").practice_area]);\n      const settingsHelp = await this.lambda.invoke(this.lambda.getFirmSettingsHelpLambda, {\n        practiceArea\n      }).then(this.lambda.processResponse);\n      const helpMap = {};\n      for (let i = 0; settingsHelp && i < settingsHelp.length; i++) {\n        const h = settingsHelp[i];\n        helpMap[h.settingName.replace(/\\./g, \"\")] = h;\n      }\n      return {\n        settingsHelp: helpMap\n      };\n    }\n    setupController(controller, model) {\n      super.setupController(controller, model);\n      controller.set(\"selectedPracticeArea\", (0, _sentenceCase.sentenceCase)([this.modelFor(\"v2.admin.settings.setting\").practice_area]));\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/admin/settings/setting/index\", [\"exports\", \"@ember/routing/route\", \"@ember/service\"], function (_exports, _route, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminSettingIndexRoute = _exports.default = (_class = class AdminSettingIndexRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"router\", _descriptor, this);\n    }\n    redirect(model, transition) {\n      super.redirect(model, transition);\n      const {\n        name,\n        parent\n      } = transition?.from || {};\n      const returnToRouteWithNewPracticeArea = name?.startsWith(\"v2.admin.settings.setting\") && parent?.params?.practice_area !== model.practice_area;\n      if (returnToRouteWithNewPracticeArea) {\n        // We are coming from a child route of settings, lets go back to that same route with the new practice area\n        return this.router.transitionTo(transition.from.name);\n      }\n\n      // We are going to the index settings page, for now, let's replace the route with the client-facing settings page until we have an index.hbs page\n      return this.router.transitionTo(\"v2.admin.settings.setting.client-facing\");\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/admin/settings/setting/invitations\", [\"exports\", \"@ember/routing/route\", \"@ember/service\", \"settify-mvp/helpers/sentence-case\"], function (_exports, _route, _service, _sentenceCase) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\",0,\"settify-mvp/helpers/sentence-case\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminSettingsInvitationsRoute = _exports.default = (_class = class AdminSettingsInvitationsRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"lambda\", _descriptor, this);\n    }\n    async model() {\n      const practiceArea = (0, _sentenceCase.sentenceCase)([this.modelFor(\"v2.admin.settings.setting\").practice_area]);\n      const settingsHelp = await this.lambda.invoke(this.lambda.getFirmSettingsHelpLambda, {\n        practiceArea\n      }).then(this.lambda.processResponse);\n      const helpMap = {};\n      for (let i = 0; settingsHelp && i < settingsHelp.length; i++) {\n        const h = settingsHelp[i];\n        helpMap[h.settingName.replace(/\\./g, \"\")] = h;\n      }\n      return {\n        settingsHelp: helpMap\n      };\n    }\n    setupController(controller, model) {\n      super.setupController(controller, model);\n      controller.set(\"selectedPracticeArea\", (0, _sentenceCase.sentenceCase)([this.modelFor(\"v2.admin.settings.setting\").practice_area]));\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/admin/settings/setting/settify-admin\", [\"exports\", \"@ember/routing/route\", \"@ember/service\"], function (_exports, _route, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminSettingsSettifyFacingRoute = _exports.default = (_class = class AdminSettingsSettifyFacingRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"router\", _descriptor, this);\n      _initializerDefineProperty(this, \"session\", _descriptor2, this);\n    }\n    redirect() {\n      // Access to this route only allowed to Settify Admins\n      if (this.session.isAuthenticated && !this.session.data.authenticated.isSettifyAdmin) {\n        this.router.transitionTo(\"v2.admin.settings\");\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/admin/settings/setting/users\", [\"exports\", \"@ember/routing/route\", \"@ember/service\"], function (_exports, _route, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminSettingsUsersRoute = _exports.default = (_class = class AdminSettingsUsersRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"lambda\", _descriptor, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor2, this);\n      _initializerDefineProperty(this, \"lawyerList\", _descriptor3, this);\n    }\n    async model() {\n      const lawyerList = await this.lawyerList.load();\n      const {\n        Users\n      } = await this.lambda.invoke(this.lambda.getFirmUsersLambda, {\n        firmID: this.firm.id\n      }).then(this.lambda.processResponse);\n      const userList = Users.map(user => {\n        const matchingLawyer = lawyerList.find(l => l.email === user.Username);\n        if (matchingLawyer) {\n          return {\n            email: matchingLawyer.email,\n            name: matchingLawyer.name,\n            photoURL: matchingLawyer.photoURL,\n            loginEnabled: user.Enabled\n          };\n        }\n        return {\n          email: user.Username,\n          personType: \"other\",\n          loginEnabled: user.Enabled\n        };\n      });\n      return {\n        userList,\n        lawyerList\n      };\n    }\n    resetController(controller, isExiting) {\n      if (isExiting) {\n        controller.resetControllerValues();\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"lawyerList\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/admin/team\", [\"exports\", \"@ember/routing/route\", \"@ember/service\"], function (_exports, _route, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminTeamRoute = _exports.default = (_class = class AdminTeamRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"lawyerList\", _descriptor, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor2, this);\n    }\n    async model() {\n      try {\n        const teamList = await this.lawyerList.load();\n        return {\n          teamList\n        };\n      } catch (error) {\n        this.eventLogging.logError(\"Failed to load list of team members\", error);\n        return {\n          teamList: []\n        };\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"lawyerList\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/admin/team/edit\", [\"exports\", \"@ember/routing/route\", \"@ember/service\", \"uuid\"], function (_exports, _route, _service, _uuid) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\",0,\"uuid\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminTeamEditRoute = _exports.default = (_class = class AdminTeamEditRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"lawyerList\", _descriptor, this);\n    }\n    async model(params) {\n      const createTeamMember = params.id === \"new\";\n      const teamMember = createTeamMember ? await this.lawyerList.createStaff({\n        personID: (0, _uuid.v4)(),\n        personType: \"pa\"\n      }) : await this.lawyerList.getStaffByID(params.id);\n      return {\n        teamMember\n      };\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"lawyerList\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/auth\", [\"exports\", \"@ember/routing/route\", \"@ember/service\"], function (_exports, _route, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AuthRoute = _exports.default = (_class = class AuthRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _defineProperty(this, \"templateName\", \"v2/layout-auth\");\n      _initializerDefineProperty(this, \"router\", _descriptor, this);\n      _initializerDefineProperty(this, \"session\", _descriptor2, this);\n      _initializerDefineProperty(this, \"sharedService\", _descriptor3, this);\n    }\n    beforeModel() {\n      this.sharedService.setOrRemoveTheme(\"remove\");\n    }\n    redirect(model, transition) {\n      // only transition if we came directly to this route (and not a nested route ie: v2.auth.mfa)\n      if (\"v2.auth.index\" === transition.targetName) {\n        if (this.session.isAuthenticated) {\n          this.router.transitionTo(\"v2.auth.logout\");\n        } else {\n          this.router.transitionTo(\"v2.auth.login\");\n        }\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"sharedService\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/auth/forgot-password\", [\"exports\", \"@ember/routing/route\"], function (_exports, _route) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\"eaimeta@70e063a35619d71f\n  class ForgotPasswordRoute extends _route.default {\n    resetController(controller, isExiting) {\n      if (isExiting) {\n        controller.emailAddress = null;\n        controller.emailSent = false;\n        controller.loading = false;\n        controller.success = false;\n        controller.errorMessage = \"\";\n        controller.newPassword = \"\";\n        controller.isPasswordValid = false;\n      }\n    }\n  }\n  _exports.default = ForgotPasswordRoute;\n});","define(\"settify-mvp/routes/v2/auth/login\", [\"exports\", \"@ember/routing/route\", \"@ember/service\", \"rsvp\"], function (_exports, _route, _service, _rsvp) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\",0,\"rsvp\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AuthLoginRoute = _exports.default = (_class = class AuthLoginRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"session\", _descriptor, this);\n      _initializerDefineProperty(this, \"router\", _descriptor2, this);\n      _defineProperty(this, \"queryParams\", {\n        email: {\n          refreshModel: false\n        },\n        clientID: {\n          refreshModel: true\n        },\n        isFirmLogin: {\n          refreshModel: true\n        },\n        status: {\n          refreshModel: true\n        }\n      });\n    }\n    beforeModel(transition) {\n      if (this.session?.attemptedTransition?.intent?.url?.match(/^\\/(v2\\/)?admin/)) {\n        // this was an attempt to access an admin page - remove the client ID from the query params if it is there\n        // so that admin users aren't prompted to add one of the client's records to their own account!\n        if (transition.to.queryParams.clientID) {\n          this.router.transitionTo(\"v2.auth.login\", {\n            queryParams: {\n              clientID: null,\n              email: null\n            }\n          });\n        }\n      }\n    }\n    model(params) {\n      const email = params.email || \"\";\n      // TODO: deprecate all client stuff from here\n      return (0, _rsvp.hash)({\n        email: email,\n        clientID: null,\n        fromValidationLink: Boolean(email),\n        // if we've got an email in the qparams, it means we've been redirected here from the verify route\n        addingRecordToAccount: false,\n        isFirmLogin: true,\n        // only ever a firm login in settify admin\n        status: params.status\n      });\n    }\n    setupController(controller, model) {\n      super.setupController(controller, model);\n      controller.identification = model.email;\n      controller.fromValidationLink = model.fromValidationLink;\n      controller.status = model.status;\n    }\n    resetController(controller, isExiting) {\n      if (isExiting) {\n        controller.password = null;\n        controller.loading = false;\n        controller.errorMessage = \"\";\n        controller.loggedOut = false;\n        controller.totpRequired = false;\n        controller.totp = null;\n        controller.totpIncorrect = false;\n        controller.showExpiredMessage = false;\n        controller.errorResending = false;\n        controller.status = null;\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/auth/mfa\", [\"exports\", \"@ember/routing/route\", \"@ember/service\"], function (_exports, _route, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let V2AuthMFARoute = _exports.default = (_class = class V2AuthMFARoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"session\", _descriptor, this);\n    }\n    beforeModel(transition) {\n      this.session.requireAuthentication(transition, this.firm?.isUsingNewUI ? \"v2.auth.login\" : \"login\");\n    }\n    resetController(controller, isExiting) {\n      if (isExiting) {\n        controller.mfaSetupResponse = null;\n        controller.loading = false;\n        controller.errorMessage = \"\";\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/auth/password\", [\"exports\", \"@ember/routing/route\", \"@ember/service\"], function (_exports, _route, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let PasswordRoute = _exports.default = (_class = class PasswordRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"session\", _descriptor, this);\n    }\n    beforeModel(transition) {\n      this.session.requireAuthentication(transition, \"v2.auth.login\");\n    }\n    resetController(controller, isExiting) {\n      if (isExiting) {\n        controller.loading = false;\n        controller.errorMessage = \"\";\n        controller.success = false;\n        controller.currentPassword = \"\";\n        controller.newPassword = \"\";\n        controller.isPasswordValid = false;\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/auth/verify\", [\"exports\", \"@ember/routing/route\", \"@ember/service\", \"settify-mvp/utils/email-utils\"], function (_exports, _route, _service, _emailUtils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\",0,\"settify-mvp/utils/email-utils\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let VerifyRoute = _exports.default = (_dec = (0, _service.service)(\"cognitoUser\"), _class = class VerifyRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"session\", _descriptor, this);\n      _initializerDefineProperty(this, \"router\", _descriptor2, this);\n      _initializerDefineProperty(this, \"cognitoService\", _descriptor3, this);\n      _initializerDefineProperty(this, \"awsService\", _descriptor4, this);\n      _initializerDefineProperty(this, \"clientRecords\", _descriptor5, this);\n      _initializerDefineProperty(this, \"store\", _descriptor6, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor7, this);\n      _defineProperty(this, \"queryParams\", {\n        email: {\n          refresh: true\n        },\n        clientID: {\n          refresh: true\n        },\n        validationCode: {\n          refresh: true\n        }\n      });\n    }\n    beforeModel() {\n      if (this.session.isAuthenticated) {\n        this.router.transitionTo(\"v2\");\n      }\n    }\n    async model(params) {\n      return this.verifyAccount(params);\n    }\n    setupController(controller, model) {\n      controller.errorMessage = model.errorMessage;\n      controller.email = model.email;\n    }\n    resetController(controller, isExiting) {\n      if (isExiting) {\n        controller.resent = false;\n        controller.loading = false;\n        controller.errorMessage = false;\n        controller.validationCode = \"\";\n      }\n    }\n    async verifyAccount(params) {\n      if (!params.validationCode || !params.email) {\n        this.router.transitionTo(\"v2\");\n        return;\n      }\n      const email = (0, _emailUtils.decodeEmailAddress)(params.email);\n      this.cognitoService.user = this.awsService.getClientPoolCognitoUser(email);\n      let errorMessage;\n      try {\n        await this.cognitoService.confirmRegistration(params.validationCode);\n        await this.updateRecordAndSave(params.clientID, email);\n      } catch (err) {\n        if (err === \"already-confirmed\") {\n          this.router.transitionTo(\"v2.auth.login\");\n          return;\n        }\n        if (err === \"code-resent\") {\n          errorMessage = \"You entered an old verification code, we have sent a new one to your email.\";\n        } else {\n          errorMessage = \"There was an error verifying your account, please contact Settify Support.\";\n        }\n      }\n      return {\n        email,\n        errorMessage\n      };\n    }\n    async updateRecordAndSave(clientID, email) {\n      try {\n        const clientRecord = await this.clientRecords.getClientByID(clientID);\n        if (clientRecord?.creatingAccount) {\n          clientRecord.firstLogin = true;\n          clientRecord.creatingAccount = false;\n          await clientRecord.forceSave();\n        }\n        this.store.unloadAll();\n        this.router.transitionTo(\"v2.auth.login\", {\n          queryParams: {\n            email: email\n          }\n        });\n      } catch (err) {\n        this.eventLogging.logError(\"Error updating client record\", err);\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"cognitoService\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"awsService\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"clientRecords\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"store\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/client\", [\"exports\", \"@ember/routing/route\", \"@ember/service\"], function (_exports, _route, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let ClientRoute = _exports.default = (_class = class ClientRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"router\", _descriptor, this);\n    }\n    redirect() {\n      this.router.transitionTo(\"v2.firms.index\");\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/console/index\", [\"exports\", \"@ember/routing/route\", \"@ember/service\"], function (_exports, _route, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let ConsoleIndexRoute = _exports.default = (_class = class ConsoleIndexRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"session\", _descriptor, this);\n      _initializerDefineProperty(this, \"router\", _descriptor2, this);\n      _initializerDefineProperty(this, \"cache\", _descriptor3, this);\n    }\n    beforeModel() {\n      // Check authentication\n      if (!this.session.isAuthenticated) {\n        this.router.transitionTo(\"v2.auth.login\");\n        return;\n      }\n\n      // Check management console access permission\n      const hasAccess = this.session.data?.authenticated?.isSettifyAdmin;\n      if (!hasAccess) {\n        console.warn(\"Unauthorized access attempt to Management Console\");\n        this.router.transitionTo(\"v2.firms.index\");\n        return;\n      }\n    }\n    async model() {\n      let selectedFirm = null;\n\n      // Check if there's a cached firm selection\n      const cachedFirmId = this.cache.read({\n        namespace: \"current\",\n        key: \"firmId\"\n      });\n      if (cachedFirmId) {\n        try {\n          // Verify it's a test firm\n          if (selectedFirm?.firmID?.startsWith(\"000000000-\")) {\n            // Attempt to load the cached firm\n            selectedFirm = await this.latteFirm.getFirm({\n              firmID: cachedFirmId\n            });\n          } else {\n            selectedFirm = null;\n            // Clear invalid cached selection\n            this.cache.remove({\n              namespace: \"current\",\n              key: \"firmId\"\n            });\n          }\n        } catch (error) {\n          console.warn(\"Failed to load cached firm:\", error);\n          // Clear invalid cached selection\n          this.cache.remove({\n            namespace: \"current\",\n            key: \"firmId\"\n          });\n        }\n      }\n      return {\n        initialized: true,\n        selectedFirm\n      };\n    }\n\n    // Pass model data to controller on setup\n    setupController(controller, model) {\n      super.setupController(controller, model);\n      if (model.selectedFirm) {\n        controller.selectedFirm = model.selectedFirm;\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"cache\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/firms\", [\"exports\", \"@ember/routing/route\", \"@ember/service\", \"@ember/object\"], function (_exports, _route, _service, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\",0,\"@ember/object\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminRoute = _exports.default = (_class = class AdminRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _defineProperty(this, \"templateName\", \"v2/layout-firms\");\n      _initializerDefineProperty(this, \"sharedService\", _descriptor, this);\n      _initializerDefineProperty(this, \"session\", _descriptor2, this);\n    }\n    beforeModel(transition) {\n      this.sharedService.setOrRemoveTheme(\"remove\");\n      this.session.requireAuthentication(transition, \"v2.auth.login\");\n    }\n\n    // afterModel() {\n    //   super.afterModel(...arguments);\n    // }\n\n    // async setupController(controller) {\n    //   super.setupController(...arguments);\n    // }\n\n    /**\n     * Handles admin specific errors in the V2 route only.\n     * Redirects to appropriate error pages based on error type.\n     *\n     * @param {Error} error - The error instance.\n     * @param {Transition} transition - The transition object for the route.\n     * @returns {boolean} Returns `true` to allow further handling for unexpected errors.\n     */\n    error(/* error, transition */\n    ) {\n      // TODO: Re-implement based on potential manage firm errors\n      // if (error instanceof ClientUnauthorisedError) {\n      //   this.#handleUnauthorisedErrorRedirect(clientID, transition);\n      //   return;\n      // }\n      // if (error instanceof ClientDeletedError) {\n      //   this.router.transitionTo(\"v2.admin.client-error\", { id: clientID, error: \"410\" });\n      //   return;\n      // }\n      //\n      // if (error instanceof ClientFrozenError) {\n      //   this.router.transitionTo(\"v2.admin.client-error\", { id: clientID, error: \"423\" });\n      //   return;\n      // }\n\n      return true; // Let the route above this handle the error.\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"sharedService\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"error\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"error\"), _class.prototype), _class);\n});","define(\"settify-mvp/routes/v2/firms/clients/client\", [\"exports\", \"@ember/routing/route\", \"@ember/service\"], function (_exports, _route, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminIndexRoute = _exports.default = (_class = class AdminIndexRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"latteFirmClientRecords\", _descriptor, this);\n      _initializerDefineProperty(this, \"router\", _descriptor2, this);\n    }\n    async beforeModel(transition) {\n      // redirects back to firms route if we don't have a clientRecord id\n      if (!transition?.to?.params?.client_id) {\n        console.error(`route missing client_id`);\n        this.router.transitionTo(\"v2.firms\");\n      }\n    }\n    async model(params) {\n      const {\n        client_id\n      } = params;\n      const response = await this.latteFirmClientRecords.getClientRecord({\n        clientRecordId: client_id,\n        format: \"html\"\n      });\n      return {\n        ...response?.data\n      };\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"latteFirmClientRecords\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/firms/firm\", [\"exports\", \"@ember/routing/route\", \"@ember/service\"], function (_exports, _route, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminIndexRoute = _exports.default = (_class = class AdminIndexRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firmsService\", _descriptor, this);\n      _initializerDefineProperty(this, \"latteFirmClientRecords\", _descriptor2, this);\n      _initializerDefineProperty(this, \"lambda\", _descriptor3, this);\n      _initializerDefineProperty(this, \"router\", _descriptor4, this);\n      _initializerDefineProperty(this, \"cache\", _descriptor5, this);\n    }\n    async beforeModel(transition) {\n      // redirects back to firms route if we don't have a firm id or its not valid format\n      if (!transition?.to?.params?.firm_id || !/^[0-9]{9}-[A-Z]+$/.test(transition?.to?.params?.firm_id ?? \"\")) {\n        console.error(\"route missing firm_id\");\n        this.router.transitionTo(\"v2.firms.index\");\n      }\n    }\n    async model(params) {\n      const {\n        firm_id\n      } = params;\n\n      // detects firm_id changes across uno admin firm pages\n      this.cache.write({\n        namespace: \"current\",\n        key: \"firmId\",\n        value: firm_id\n      });\n      let firmDetails = {};\n      let clientRecords = {};\n      const promises = [];\n      // TODO: move get firm details to a latte endpoint; this is an example of calling lambda\n      promises.push(this.firmsService.getFirmDetails({\n        firmID: firm_id\n      }).then(result => {\n        firmDetails = result;\n      }));\n      promises.push(this.latteFirmClientRecords.listFirmClientRecords().then(result => {\n        clientRecords = result?.data?.items ?? [];\n      }));\n      await Promise.allSettled(promises);\n      return {\n        firm: firmDetails,\n        practiceAreas: firmDetails?.practiceAreas ?? [],\n        clientRecords\n      };\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firmsService\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"latteFirmClientRecords\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"cache\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/firms/index\", [\"exports\", \"@ember/routing/route\", \"@ember/service\"], function (_exports, _route, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminIndexRoute = _exports.default = (_class = class AdminIndexRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"firmsService\", _descriptor, this);\n      _initializerDefineProperty(this, \"lambda\", _descriptor2, this);\n    }\n    async model() {\n      const listFirms = await this.firmsService.listFirms();\n      return {\n        firms: listFirms\n      };\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firmsService\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/index\", [\"exports\", \"@ember/routing/route\", \"@ember/service\"], function (_exports, _route, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let IndexRoute = _exports.default = (_class = class IndexRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"router\", _descriptor, this);\n      _initializerDefineProperty(this, \"session\", _descriptor2, this);\n    }\n    redirect(model, transition) {\n      // only transition if we came directly to this route (and not a nested route ie: v2.client.index)\n      if (\"v2.index\" === transition.targetName) {\n        this.router.transitionTo(\"v2.firms.index\");\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/page-not-found\", [\"exports\", \"@ember/routing/route\"], function (_exports, _route) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\"eaimeta@70e063a35619d71f\n  class PageNotFoundRoute extends _route.default {}\n  _exports.default = PageNotFoundRoute;\n});","define(\"settify-mvp/routes/v2/reports\", [\"exports\", \"@ember/routing/route\", \"@ember/service\", \"@ember/object\"], function (_exports, _route, _service, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\",0,\"@ember/object\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminRoute = _exports.default = (_class = class AdminRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _defineProperty(this, \"templateName\", \"v2/layout-reports\");\n      _initializerDefineProperty(this, \"sharedService\", _descriptor, this);\n      _initializerDefineProperty(this, \"session\", _descriptor2, this);\n    }\n    beforeModel(transition) {\n      this.sharedService.setOrRemoveTheme(\"remove\");\n      this.session.requireAuthentication(transition, \"v2.auth.login\");\n    }\n\n    // afterModel() {\n    //   super.afterModel(...arguments);\n    // }\n\n    // async setupController(controller) {\n    //   super.setupController(...arguments);\n    // }\n\n    /**\n     * Handles admin specific errors in the V2 route only.\n     * Redirects to appropriate error pages based on error type.\n     *\n     * @param {Error} error - The error instance.\n     * @param {Transition} transition - The transition object for the route.\n     * @returns {boolean} Returns `true` to allow further handling for unexpected errors.\n     */\n    error(/* error, transition */\n    ) {\n      // TODO: Re-implement based on potential manage report errors\n      // if (error instanceof ClientUnauthorisedError) {\n      //   this.#handleUnauthorisedErrorRedirect(clientID, transition);\n      //   return;\n      // }\n      // if (error instanceof ClientDeletedError) {\n      //   this.router.transitionTo(\"v2.admin.client-error\", { id: clientID, error: \"410\" });\n      //   return;\n      // }\n      //\n      // if (error instanceof ClientFrozenError) {\n      //   this.router.transitionTo(\"v2.admin.client-error\", { id: clientID, error: \"423\" });\n      //   return;\n      // }\n\n      return true; // Let the route above this handle the error.\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"sharedService\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _applyDecoratedDescriptor(_class.prototype, \"error\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"error\"), _class.prototype), _class);\n});","define(\"settify-mvp/routes/v2/reports/index\", [\"exports\", \"@ember/routing/route\", \"@ember/service\"], function (_exports, _route, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let ReportsIndexRoute = _exports.default = (_class = class ReportsIndexRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"latteReports\", _descriptor, this);\n      _initializerDefineProperty(this, \"lambda\", _descriptor2, this);\n    }\n    async model() {\n      const reportNames = await this.latteReports.listReportNames();\n      return {\n        reportNames\n      };\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"latteReports\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/serverdown\", [\"exports\", \"@ember/routing/route\", \"settify-mvp/lib/identity\", \"@ember/service\"], function (_exports, _route, _identity, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"settify-mvp/lib/identity\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let ServerdownRoute = _exports.default = (_class = class ServerdownRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"session\", _descriptor, this);\n      _initializerDefineProperty(this, \"cookies\", _descriptor2, this);\n      _initializerDefineProperty(this, \"clientRecords\", _descriptor3, this);\n      _initializerDefineProperty(this, \"dynamicConfig\", _descriptor4, this);\n    }\n    async model() {\n      if (!this.session.data.authenticated.adminUser) {\n        const clientID = await (0, _identity.getClientID)(this.cookies, this.session);\n        if (clientID) {\n          return {\n            client: this.clientRecords.getClientByID(clientID)\n          };\n        }\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"cookies\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"clientRecords\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"dynamicConfig\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/signup\", [\"exports\", \"@ember/routing/route\", \"@ember/service\"], function (_exports, _route, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let AdminRoute = _exports.default = (_class = class AdminRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _defineProperty(this, \"templateName\", \"v2/layout-signup\");\n      _initializerDefineProperty(this, \"router\", _descriptor, this);\n      _initializerDefineProperty(this, \"session\", _descriptor2, this);\n      _initializerDefineProperty(this, \"signupService\", _descriptor3, this);\n    }\n    setupController(controller, model) {\n      super.setupController(controller, model);\n      this.signupService.reset();\n\n      // Arrivals from the LEAP redirect page carry their LEAP context in the URL. Applied before\n      // the country prefill so the LEAP region is used when there is no ?region param.\n      this.signupService.setLeapRedirect(controller.leap);\n      this.signupService.prefillCountry(controller.region);\n    }\n    redirect(model, transition) {\n      if (transition.targetName !== \"v2.signup.index\") {\n        this.router.transitionTo(\"v2.signup.index\");\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"signupService\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/signup/complete\", [\"exports\", \"@ember/routing/route\"], function (_exports, _route) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\"eaimeta@70e063a35619d71f\n  class SignupCompleteRoute extends _route.default {}\n  _exports.default = SignupCompleteRoute;\n});","define(\"settify-mvp/routes/v2/signup/index\", [\"exports\", \"@ember/routing/route\", \"@ember/service\"], function (_exports, _route, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let SignupIndexRoute = _exports.default = (_class = class SignupIndexRoute extends _route.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"signupService\", _descriptor, this);\n    }\n    setupController(controller, model) {\n      super.setupController(controller, model);\n      controller.signupService = this.signupService;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"signupService\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/routes/v2/signup/validate\", [\"exports\", \"@ember/routing/route\"], function (_exports, _route) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/routing/route\"eaimeta@70e063a35619d71f\n  class SignupValidateRoute extends _route.default {}\n  _exports.default = SignupValidateRoute;\n});","define(\"settify-mvp/routes/yourinformation\", [\"exports\", \"@ember/service\", \"settify-mvp/routes/base\"], function (_exports, _service, _base) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"settify-mvp/routes/base\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _base.default.extend({\n    allowAdminAccess: true,\n    session: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    doNotLoadClientRecord: true,\n    setupController(controller /* , model */) {\n      this._super(...arguments);\n      controller.set(\"firm\", this.firm);\n      controller.set(\"session\", this.session);\n    }\n  });\n});","define(\"settify-mvp/serializers/application\", [\"exports\", \"@ember-data/serializer/json-api\"], function (_exports, _jsonApi) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember-data/serializer/json-api\"eaimeta@70e063a35619d71f\n  class ApplicationSerializer extends _jsonApi.default {}\n  _exports.default = ApplicationSerializer;\n});","define(\"settify-mvp/serializers/invoice\", [\"exports\", \"@ember-data/serializer/json-api\"], function (_exports, _jsonApi) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember-data/serializer/json-api\"eaimeta@70e063a35619d71f\n  class InvoiceSerializer extends _jsonApi.default {\n    normalizeArrayResponse(store, primaryModelClass) {\n      const normalizedData = super.normalizeArrayResponse(...arguments);\n      const data = {\n        data: normalizedData.map(invoice => this.normalize(store, primaryModelClass, invoice, invoice.id))\n      };\n      return data;\n    }\n    normalize(store, primaryModelClass, attributes, id) {\n      if (typeof id === \"number\") id = id.toString(); // Ember requires ID's to be a string\n      return {\n        id,\n        attributes,\n        type: primaryModelClass.modelName\n      };\n    }\n  }\n  _exports.default = InvoiceSerializer;\n});","define(\"settify-mvp/serializers/lead\", [\"exports\", \"@ember-data/serializer/json-api\"], function (_exports, _jsonApi) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember-data/serializer/json-api\"eaimeta@70e063a35619d71f\n  class LeadSerializer extends _jsonApi.default {\n    normalizeArrayResponse(store, primaryModelClass /* , payload, id, requestType */) {\n      const normalizedData = super.normalizeArrayResponse(...arguments);\n      const data = {\n        data: normalizedData.leads.map(lead => this.normalize(store, primaryModelClass, lead, lead.clientID))\n      };\n      if (normalizedData.conversionTypes?.length) {\n        data.included = normalizedData.conversionTypes.map(type => this.normalize(store, {\n          modelName: \"conversion-type\"\n        }, type, type.id));\n      }\n      return data;\n    }\n    normalize(store, primaryModelClass, attributes, id /* , requestType */) {\n      return {\n        id,\n        attributes,\n        type: primaryModelClass.modelName\n      };\n    }\n  }\n  _exports.default = LeadSerializer;\n});","define(\"settify-mvp/serializers/metadata\", [\"exports\", \"@ember-data/serializer/json-api\"], function (_exports, _jsonApi) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember-data/serializer/json-api\"eaimeta@70e063a35619d71f\n  class MetadataSerializer extends _jsonApi.default {\n    normalizeResponse(store, primaryModelClass, payload /* , id, requestType */) {\n      const data = {\n        data: this.normalize(primaryModelClass, payload)\n      };\n      return data;\n    }\n    normalize(modelClass, resourceHash) {\n      return {\n        id: resourceHash.clientID,\n        type: modelClass.modelName,\n        attributes: resourceHash\n      };\n    }\n  }\n  _exports.default = MetadataSerializer;\n});","define(\"settify-mvp/serializers/questionnaire-summary\", [\"exports\", \"@ember-data/serializer/json-api\"], function (_exports, _jsonApi) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember-data/serializer/json-api\"eaimeta@70e063a35619d71f\n  class QuestionnaireSummarySerializer extends _jsonApi.default {\n    normalizeArrayResponse(store, primaryModelClass) {\n      const normalizedData = super.normalizeArrayResponse(...arguments);\n      const data = {\n        data: normalizedData.map(form => this.normalize(store, primaryModelClass, form, form.formID))\n      };\n      return data;\n    }\n    normalize(store, primaryModelClass, attributes, id) {\n      return {\n        id,\n        attributes,\n        type: primaryModelClass.modelName\n      };\n    }\n  }\n  _exports.default = QuestionnaireSummarySerializer;\n});","define(\"settify-mvp/serializers/questionnaire\", [\"exports\", \"@ember-data/serializer/json-api\"], function (_exports, _jsonApi) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember-data/serializer/json-api\"eaimeta@70e063a35619d71f\n  class QuestionnaireSerializer extends _jsonApi.default {\n    normalizeSingleResponse(store, primaryModelClass, payload, id) {\n      const normalizedData = super.normalizeSingleResponse(...arguments);\n      return {\n        data: this.normalize(store, primaryModelClass, normalizedData, id)\n      };\n    }\n    normalize(store, primaryModelClass, attributes, id) {\n      return {\n        id,\n        attributes,\n        type: primaryModelClass.modelName\n      };\n    }\n  }\n  _exports.default = QuestionnaireSerializer;\n});","define(\"settify-mvp/serializers/settings\", [\"exports\", \"@ember-data/serializer\", \"@ember/object\"], function (_exports, _serializer, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember-data/serializer\",0,\"@ember/object\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _serializer.default.extend({\n    init() {\n      this.set(\"requestTypesToNomralize\", [\"findAll\", \"findRecord\"]);\n    },\n    normalizeResponse(store, primaryModelClass, payload, id, requestType) {\n      // console.log(\"normalizeResponse\", ...arguments)\n\n      if (this.requestTypesToNomralize.includes(requestType)) {\n        return this.normalize(primaryModelClass, payload);\n      }\n      if (requestType === \"updateRecord\") {\n        return {\n          data: {}\n        };\n      }\n    },\n    // Normalize data coming from the backend so the webapp can read it\n    normalize(modelClass, resourceHash) {\n      // console.log(\"normalize\", ...arguments)\n\n      // fix response from settings hash\n      const data = resourceHash.map(practiceAreaSettings => {\n        practiceAreaSettings.firmID = practiceAreaSettings.id;\n        return {\n          id: practiceAreaSettings.practiceArea,\n          type: modelClass.modelName,\n          attributes: practiceAreaSettings\n        };\n      });\n      return {\n        data\n      };\n    },\n    serialize(snapshot /* , options */) {\n      // console.log(\"serialize\", ...arguments)\n      const json = {\n        id: snapshot.attr(\"firmID\")\n      };\n      snapshot.eachAttribute((key /* , attribute */) => {\n        json[key] = snapshot.attr(key);\n      });\n      this.prepareSettingsForSaving(json);\n      snapshot.eachRelationship((key, relationship) => {\n        if (relationship.kind === \"belongsTo\") {\n          json[key] = snapshot.belongsTo(key, {\n            id: true\n          });\n        } else if (relationship.kind === \"hasMany\") {\n          json[key] = snapshot.hasMany(key, {\n            ids: true\n          });\n        }\n      });\n      return json;\n    },\n    prepareSettingsForSaving(json) {\n      // Update array settings back to a basic array if needed.\n      // TODO: This could be done on the backend eventually\n      json.contactEmailCCs = (json.contactEmailCCs || []).map(this.convertObjectToString);\n      json.bookingNotificationCCs = (json.bookingNotificationCCs || []).map(this.convertObjectToString);\n      json.permittedEmailDomains = (json.permittedEmailDomains || []).map(this.convertObjectToString);\n      json.relationshipManagementContacts = (json.relationshipManagementContacts || []).map(this.convertObjectToString);\n      if ((0, _object.get)(json, \"settings.admin.invitations\")) {\n        (0, _object.set)(json, \"settings.admin.invitations.phoneMeetingAttachment\", ((0, _object.get)(json, \"settings.admin.invitations.phoneMeetingAttachment\") || []).filter(e => e && e.Bucket && e.Key && e.Filename).map(e => `${e.Bucket}&&${e.Key}&&${e.Filename}`));\n      }\n      this.recursivelyReplaceValues(json, undefined, null);\n    },\n    convertObjectToString(setting) {\n      if (typeof setting === \"string\") {\n        return setting;\n      }\n      return setting.contents;\n    },\n    // We don't want to lose undefined settings when we stringify the payload, so we convert undefined to null\n    recursivelyReplaceValues(object, valueToReplace, valueToReplaceWith) {\n      for (const key in object) {\n        if (!Object.prototype.hasOwnProperty.call(object, key)) {\n          if (Array.isArray(object[key])) {\n            object[key].forEach(entry => {\n              this.recursivelyReplaceValues(entry, valueToReplace, valueToReplaceWith);\n            });\n          } else if (typeof object[key] === \"object\") {\n            this.recursivelyReplaceValues(object[key], valueToReplace, valueToReplaceWith);\n          } else if (object[key] === valueToReplace) {\n            object[key] = valueToReplaceWith;\n          }\n        }\n      }\n    },\n    prepareSettingsForEditing(snapshot) {\n      // We get all attributes, but change the values of some arrays to assist with editing\n      snapshot.set(\"contactEmailCCs\", this.prepareArraySettingsForEditing(snapshot.contactEmailCCs));\n      snapshot.set(\"bookingNotificationCCs\", this.prepareArraySettingsForEditing(snapshot.bookingNotificationCCs));\n      snapshot.set(\"permittedEmailDomains\", this.prepareArraySettingsForEditing(snapshot.permittedEmailDomains));\n      snapshot.set(\"relationshipManagementContacts\", this.prepareArraySettingsForEditing(snapshot.relationshipManagementContacts));\n      snapshot.set(\"settings.admin.invitations.phoneMeetingAttachment\", this.prepareArraySettingsForEditing(snapshot.get(\"settings.admin.invitations.phoneMeetingAttachment\")));\n      return snapshot;\n    },\n    prepareArraySettingsForEditing(setting) {\n      if (!setting) {\n        return [{\n          contents: \"\"\n        }];\n      }\n      return setting.map(e => typeof e === \"string\" ? {\n        contents: e\n      } : e);\n    }\n  });\n});","define(\"settify-mvp/serializers/staff\", [\"exports\", \"@ember-data/serializer/json-api\"], function (_exports, _jsonApi) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember-data/serializer/json-api\"eaimeta@70e063a35619d71f\n  class StaffSerializer extends _jsonApi.default {\n    // Used when a single record is returned from the backend\n    normalizeSingleResponse(store, primaryModelClass, payload, id /* , requestType */) {\n      const normalizedData = super.normalizeSingleResponse(...arguments);\n      return {\n        data: this.normalize(store, primaryModelClass, normalizedData, id)\n      };\n    }\n\n    // Used when an array of records are returned from the backend\n    normalizeArrayResponse(store, primaryModelClass /* , payload, id, requestType */) {\n      const normalizedData = super.normalizeArrayResponse(...arguments);\n      return {\n        data: normalizedData.map(staff => this.normalize(store, primaryModelClass, staff, staff.personID))\n      };\n    }\n\n    // Normalize staff object to be used my the model\n    normalize(store, primaryModelClass, attributes, id /* , requestType */) {\n      return {\n        id,\n        attributes,\n        type: primaryModelClass.modelName\n      };\n    }\n    serialize(snapshot /* , options */) {\n      // console.log(\"serialize\", ...arguments)\n      const json = {\n        personID: snapshot.id\n      };\n      snapshot.eachAttribute((key /* , attribute */) => {\n        json[key] = snapshot.attr(key);\n      });\n      return json;\n    }\n  }\n  _exports.default = StaffSerializer;\n});","define(\"settify-mvp/services/-ensure-registered\", [\"exports\", \"@embroider/util/services/ensure-registered\"], function (_exports, _ensureRegistered) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _ensureRegistered.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"@embroider/util/services/ensure-registered\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/services/aws-service\", [\"exports\", \"rsvp\", \"@ember/service\", \"bowser\"], function (_exports, _rsvp, _service, _bowser) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"rsvp\",0,\"@ember/service\",0,\"bowser\"eaimeta@70e063a35619d71f\n  /* global AWS, AmazonCognitoIdentity */\n  var _default = _exports.default = _service.default.extend({\n    cognitoService: (0, _service.service)(\"cognitoUser\"),\n    config: (0, _service.service)(\"dynamic-config\"),\n    session: (0, _service.service)(),\n    clientPool: null,\n    lawyerPool: null,\n    init() {\n      this._super(...arguments);\n      console.debug(\"aws-service\", \"init\");\n      this.initConfig();\n      this.initCognitoPools();\n    },\n    initConfig() {\n      // configure aws config defaults (see discussion here: https://github.com/amazon-archives/aws-cognito-angular-quickstart/issues/49#issuecomment-282377420)\n      const region = this.get(\"config.settings.Region\");\n      AWS.config.update({\n        region: region,\n        correctClockSkew: true\n      });\n      if (_bowser.default.msedge) {\n        // Microsoft Edge stuffs up the CRC checks, so disable them\n        // https://stackoverflow.com/questions/45156215/how-to-fix-a-crc32-error-with-dynamodb-access-from-a-ms-edge-browser\n        AWS.config.update({\n          dynamoDbCrc32: false\n        });\n      }\n      this.useAnonymousCognitoCredentials();\n    },\n    initCognitoPools() {\n      // initialise these once only and re-use\n      this.clientPool = this.getClientUserPool();\n      this.lawyerPool = this.getLawyerUserPool();\n    },\n    getConfigCredentialsStringify(key) {\n      if (Object.prototype.hasOwnProperty.call(AWS.config.credentials, key)) {\n        return JSON.stringify(AWS.config.credentials[key]);\n      }\n      return \"\";\n    },\n    getS3ByType(type) {\n      const bucket = this.getS3BucketName(type);\n      return this.getS3Client(bucket);\n    },\n    /**\n     * @deprecated should consider using dynamic config directly\n     */\n    getS3BucketName(type) {\n      return this.config.getS3BucketName(type);\n    },\n    getS3Client(bucket) {\n      return this._checkAWSCredentialsValid().then(() => {\n        return new AWS.S3({\n          params: {\n            Bucket: bucket\n          }\n        });\n      });\n    },\n    getDocumentClient() {\n      return this._checkAWSCredentialsValid().then(() => {\n        return new AWS.DynamoDB.DocumentClient();\n      });\n    },\n    getLambdaClient() {\n      return this._checkAWSCredentialsValid().then(() => {\n        return new AWS.Lambda();\n      });\n    },\n    /**\n     * This refresh logic ensures both our cognitoUser session and AWS credentials remain valid\n     * - valid cognitoUser session are needed to obtain aws credentials\n     * - valid AWS credentials are needed to use lambda/dynamodb/s3\n     *\n     * NB: Both getSession and getPromise refresh credentials automatically if needed\n     */\n    _checkAWSCredentialsValid() {\n      if (!AWS.config.credentials) {\n        // ensure we always have valid credentials\n        this.useAnonymousCognitoCredentials();\n      }\n      return new _rsvp.Promise(resolve => {\n        const cognitoUser = this.get(\"cognitoService.user\");\n        if (cognitoUser && AWS.config.credentials.needsRefresh()) {\n          // get cognito session\n          cognitoUser.getSession((err, session) => {\n            // update aws credentials object with new session tokens\n            const credentials = this.getCognitoCredentials(session, AWS.config.credentials.isLawyerPool);\n            // refresh aws credentials\n            return resolve(credentials.getPromise());\n          });\n        } else {\n          // just return current aws credentials\n          return resolve(AWS.config.credentials.getPromise());\n        }\n      });\n    },\n    getLawyerCredentials(result) {\n      const {\n        CognitoIdentityUrl,\n        adminPoolID,\n        adminIdentityPoolID\n      } = this.get(\"config.settings\");\n      const params = {\n        IdentityPoolId: adminIdentityPoolID,\n        Logins: {}\n      };\n      if (result && result.isValid()) {\n        params.Logins[`${CognitoIdentityUrl}/${adminPoolID}`] = result.getIdToken().getJwtToken();\n      }\n      return new AWS.CognitoIdentityCredentials(params);\n    },\n    getClientCredentials(result) {\n      const {\n        CognitoIdentityUrl,\n        UnauthIdentityPool,\n        UnauthUserPoolID\n      } = this.get(\"config.settings\");\n      const params = {\n        IdentityPoolId: UnauthIdentityPool,\n        Logins: {}\n      };\n      if (result && result.isValid()) {\n        params.Logins[`${CognitoIdentityUrl}/${UnauthUserPoolID}`] = result.getIdToken().getJwtToken();\n      }\n      return new AWS.CognitoIdentityCredentials(params);\n    },\n    getCognitoCredentials(result, isLawyer) {\n      const credentials = isLawyer ? this.getLawyerCredentials(result) : this.getClientCredentials(result);\n      credentials.isLawyerPool = isLawyer; // storing this to make it easier to refresh\n      this.updateAWSCredentials(credentials);\n      return credentials;\n    },\n    useAnonymousCognitoCredentials() {\n      this.getCognitoCredentials(null, false);\n    },\n    updateAWSCredentials(credentials) {\n      if (AWS.config.credentials && AWS.config.credentials.clearCachedId) {\n        AWS.config.credentials.clearCachedId(); // clear any cached ids\n      }\n      AWS.config.credentials = credentials;\n    },\n    getClientPoolCognitoUser(email) {\n      return this.getCognitoUser(email, false);\n    },\n    getCognitoUser(username, isLawyer) {\n      const userPool = isLawyer ? this.lawyerPool : this.clientPool;\n      return new AmazonCognitoIdentity.CognitoUser({\n        Username: username,\n        Pool: userPool\n      });\n    },\n    getCognitoUserAttribute(value) {\n      return new AmazonCognitoIdentity.CognitoUserAttribute(value);\n    },\n    getAuthenticationDetails(username, password) {\n      return new AmazonCognitoIdentity.AuthenticationDetails({\n        Username: username,\n        Password: password\n      });\n    },\n    getLawyerUserPool() {\n      const {\n        adminPoolID,\n        adminPoolAppID\n      } = this.get(\"config.settings\");\n      return new AmazonCognitoIdentity.CognitoUserPool({\n        UserPoolId: adminPoolID,\n        ClientId: adminPoolAppID,\n        Paranoia: 7\n      });\n    },\n    getClientUserPool() {\n      const {\n        UnauthUserPoolID,\n        UnauthUserPoolAppID\n      } = this.get(\"config.settings\");\n      return new AmazonCognitoIdentity.CognitoUserPool({\n        UserPoolId: UnauthUserPoolID,\n        ClientId: UnauthUserPoolAppID,\n        Paranoia: 7\n      });\n    },\n    // TODO: Review uses of this function as it is likely to be blank if not authenticated if correct\n    //       we should use this.get('session.data.authenticated.identityID') instead\n    getConfigCredentialsIdentity() {\n      return AWS.config.credentials.identityId;\n    }\n  });\n});","define(\"settify-mvp/services/cache\", [\"exports\", \"@ember/service\"], function (_exports, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }\n  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }\n  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\n  function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }\n  function _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n  var _cache = /*#__PURE__*/new WeakMap();\n  var _CacheService_brand = /*#__PURE__*/new WeakSet();\n  class CacheService extends _service.default {\n    constructor() {\n      super(...arguments);\n      _classPrivateMethodInitSpec(this, _CacheService_brand);\n      /**\n       * cache of data held under a namespace.\n       *\n       * Example write(\"foo\", \"bar\", [1,2,3]) =>\n       * {\n       *   \"foo\": {\n       *     \"bar\": [1,2,3]\n       *   }\n       * }\n       */\n      _classPrivateFieldInitSpec(this, _cache, {});\n      console.debug(\"new CacheService\");\n      window._cache = _classPrivateFieldGet(_cache, this);\n    }\n    write({\n      namespace,\n      key,\n      value\n    }) {\n      _assertClassBrand(_CacheService_brand, this, _getNamespace).call(this, namespace)[key] = value;\n    }\n    read({\n      namespace,\n      key\n    }) {\n      return _assertClassBrand(_CacheService_brand, this, _getNamespace).call(this, namespace)[key] ?? null;\n    }\n    remove({\n      namespace,\n      key\n    }) {\n      delete _assertClassBrand(_CacheService_brand, this, _getNamespace).call(this, namespace)[key];\n    }\n  }\n  _exports.default = CacheService;\n  function _getNamespace(namespace) {\n    if (!(namespace in _classPrivateFieldGet(_cache, this))) {\n      _classPrivateFieldGet(_cache, this)[namespace] = {};\n    }\n    return _classPrivateFieldGet(_cache, this)[namespace];\n  }\n});","define(\"settify-mvp/services/catalytic-events\", [\"exports\", \"@ember/object/computed\", \"@ember/utils\", \"@ember/object\", \"@ember/service\"], function (_exports, _computed, _utils, _object, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object/computed\",0,\"@ember/utils\",0,\"@ember/object\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  const SHOW_DROPDOWN_MINIMUM_QUESTIONS = 18;\n  const SHOW_DROPDOWN_THRESHOLD = 0.5;\n  const NUMBER_OF_BACKS_THRESHOLD = 3;\n  const QUESTIONS_TO_SKIP = [\"paragraph\"];\n  var _default = _exports.default = _service.default.extend({\n    questionnaireLogic: (0, _service.inject)(),\n    session: (0, _service.inject)(),\n    fullstory: (0, _service.inject)(),\n    router: (0, _service.inject)(),\n    questionsAnswered: 0,\n    questionsSeen: 0,\n    numberOfConsecutiveBacks: 0,\n    lotsOfBacks: false,\n    hideDropdown: false,\n    notEnoughAnswers: (0, _object.computed)(\"questionsSeen\", \"questionsAnswered\", function () {\n      let percentageAnswered = 1; // Default to all answered, if no questionsSeen\n      if (this?.questionsSeen) {\n        percentageAnswered = this.questionsAnswered / this.questionsSeen;\n      }\n      return percentageAnswered < SHOW_DROPDOWN_THRESHOLD && this.questionsSeen >= SHOW_DROPDOWN_MINIMUM_QUESTIONS;\n    }),\n    countQuestionsAnswered(client, page, context, transition) {\n      if (this.isAdminRoute(transition)) {\n        return;\n      }\n      const counters = {\n        display: 0,\n        answered: 0\n      };\n      page.questions.forEach(q => this.checkQuestionDisplayIf(q, client, context, counters));\n      this.incrementProperty(\"questionsSeen\", counters.display);\n      this.incrementProperty(\"questionsAnswered\", counters.answered);\n    },\n    isAdminUser: (0, _computed.and)(\"session.isAuthenticated\", \"session.data.authenticated.adminUser\"),\n    fullstoryCatalyticObserver: (0, _object.observer)(\"lotsOfBacks\", \"notEnoughAnswers\", \"fullstory\", function () {\n      // Checks the logic for catalytic-feedback and sends an event to Fullstory\n      if (!this.isAdminUser && (this.notEnoughAnswers || this.lotsOfBacks)) {\n        const params = {\n          notEnoughAnswers_bool: this.notEnoughAnswers,\n          lotsOfBacks_bool: this.lotsOfBacks\n        };\n        this.fullstory.sendEvent(\"Catalytic Event\", params);\n      }\n    }),\n    isAdminRoute(transition) {\n      return transition.targetName.includes(\"admin\");\n    },\n    checkQuestionDisplayIf(q, client, context, counters) {\n      if (!QUESTIONS_TO_SKIP.includes(q.type) && this.questionnaireLogic.computeDisplayIf(q, client, context)) {\n        if (q.content && Array.isArray(q.content)) {\n          q.content.forEach(sq => this.checkQuestionDisplayIf(sq, client, context, counters));\n        } else {\n          const idToCheck = q.type === \"date\" ? `${q.id}year` : q.id;\n          this.checkQuestionIsAnswered(idToCheck, null, client, context, counters);\n        }\n        if (q.askFor) {\n          const idsToCheck = Object.keys(q.askFor);\n          idsToCheck.forEach(id => {\n            this.checkQuestionIsAnswered(q.id, id, client, context, counters);\n          });\n        }\n      }\n    },\n    checkQuestionIsAnswered(questionID, subQuestionID, client, context, counters) {\n      const localContext = {\n        induction: context.induction,\n        chapter: context.chapter,\n        page: context.page,\n        question: questionID,\n        subQuestion: subQuestionID\n      };\n      if (context.answersLocation) {\n        const [chapter, page, question] = context.answersLocation.split(\".\");\n        localContext.chapter = chapter;\n        localContext.page = page;\n        localContext.question = question;\n        localContext.subQuestion = questionID;\n      }\n      counters.display += 1;\n      // Check answers object\n      const answer = client.getPreciseAnswer(localContext.induction, localContext.chapter, localContext.page, localContext.question, localContext.subQuestion, context.repeat);\n      if (!(0, _utils.isEmpty)(answer)) {\n        counters.answered += 1;\n      }\n    },\n    listenForBacks: (0, _object.observer)(\"numberOfConsecutiveBacks\", function () {\n      if (this.numberOfConsecutiveBacks > NUMBER_OF_BACKS_THRESHOLD) {\n        this.set(\"lotsOfBacks\", true);\n      }\n    }),\n    countBacks(page, loop, fromRoadmap, skipped, transition) {\n      if (this.isAdminRoute(transition) || this.isAdminUser) {\n        return;\n      }\n      if (typeof page === \"string\") {\n        return this.handleBacksFromBase(page, transition);\n      }\n      const isLooping = !(0, _utils.isNone)(loop);\n      const loopFinished = !isLooping || loop <= 0;\n      let to = transition.to.params.page || transition.targetName;\n      if (!loopFinished) {\n        // We are looping to the same page\n        const newLoop = transition.to.queryParams.loop;\n        if (!newLoop || parseInt(newLoop) > loop) {\n          this.set(\"numberOfConsecutiveBacks\", 0);\n        } else {\n          this.incrementProperty(\"numberOfConsecutiveBacks\");\n        }\n        return;\n      }\n      if (to === \"files\") {\n        // Press reviewed your answers now\n        this.handleBacksFromBase(\"detailed-induction\", transition);\n        return;\n      }\n      if (to === \"induction-roadmap\") {\n        // Going to the induction-roadmap\n        // known issue: Skipping from first page of chapter thinks it's \"Backwards\"\n        // I couldn't figure out a fix, and I don't think its a problem, since\n        // worst case, we ask for feedback on a chapter skip (which we already do!)\n        if (page && page.prev && page.prev.startOfChapter || !page.prev) {\n          // We were at the first page of a chapter\n          this.incrementProperty(\"numberOfConsecutiveBacks\");\n          return;\n        }\n        if (skipped) {\n          this.set(\"numberOfConsecutiveBacks\", 0);\n          return;\n        }\n        if (page && page.next && page.next.endOfChapter) {\n          // We were at the end of a chapter\n          this.set(\"numberOfConsecutiveBacks\", 0);\n          return;\n        }\n      }\n      if (fromRoadmap) {\n        // Going somewhere from the roadmap\n        to = transition.to.params.chapter;\n        if (page && page.next && page.next.chapter === to) {\n          this.set(\"numberOfConsecutiveBacks\", 0);\n          return;\n        }\n        this.incrementProperty(\"numberOfConsecutiveBacks\");\n        return;\n      }\n      if (page && page.next && page.next.page === to) {\n        this.set(\"numberOfConsecutiveBacks\", 0);\n        return;\n      }\n      if (page && page.prev && page.prev.page === to) {\n        this.incrementProperty(\"numberOfConsecutiveBacks\");\n        return;\n      }\n      if (!page.next) {\n        // END OF INDUCTION\n        this.set(\"numberOfConsecutiveBacks\", 0);\n        return;\n      }\n    },\n    handleBacksFromBase(from, transition) {\n      const order = [\"landing\", \"gettingstarted\", \"induction-roadmap\", \"detailedinduction\", \"files\", \"review\"];\n      const to = transition.targetName;\n      const fromIdx = order.indexOf(from);\n      const toIdx = order.indexOf(to);\n      if (fromIdx < toIdx) {\n        this.set(\"numberOfConsecutiveBacks\", 0);\n      } else {\n        this.incrementProperty(\"numberOfConsecutiveBacks\");\n      }\n    }\n  });\n});","define(\"settify-mvp/services/client-document-manager\", [\"exports\", \"@ember/service\", \"uuid\"], function (_exports, _service, _uuid) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"uuid\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let ClientFileManagerService = _exports.default = (_dec = (0, _service.service)(\"dynamic-config\"), _class = class ClientFileManagerService extends _service.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"store\", _descriptor, this);\n      _initializerDefineProperty(this, \"session\", _descriptor2, this);\n      _initializerDefineProperty(this, \"awsService\", _descriptor3, this);\n      _initializerDefineProperty(this, \"config\", _descriptor4, this);\n      _defineProperty(this, \"maxFileSize\", 50 * 1024 * 1024);\n      // 50MB in bytes\n      _defineProperty(this, \"acceptedFiles\", {\n        pdf: \"application/pdf\",\n        docx: \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n        xlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n        doc: \"application/msword\",\n        xls: \"application/vnd.ms-excel\",\n        csv: \"text/csv\",\n        jpg: \"image/jpeg\",\n        jpeg: \"image/jpeg\",\n        png: \"image/png\",\n        gif: \"image/gif\",\n        tif: \"image/tiff\",\n        tiff: \"image/tiff\",\n        mp3: \"audio/mpeg\",\n        mp4: \"video/mp4\",\n        mov: \"video/quicktime\"\n      });\n    }\n    /**\n     * Generate a string of accepted file types. Useful for providing to a file input element.\n     * @return {string} A comma-separated string of accepted file extensions.\n     */\n    get filesToAccept() {\n      return Object.keys(this.acceptedFiles).map(e => `.${e}`).join(\",\");\n    }\n\n    /**\n     * Uploads a given client file\n     * @param {File} document\n     * @param {Object} clientRecord\n     * @param {Object} questionnaireState\n     * @return {Promise<{success: boolean, message: string}>}\n     */\n    async uploadDocument(document, clientRecord, questionnaireState) {\n      if (document.size > this.maxFileSize) {\n        return {\n          success: false,\n          message: `File ${document.name} is too large. Maximum size is ${this.maxFileSize / (1024 * 1024)}MB.`\n        };\n      }\n      const userIdentityID = this.awsService.getConfigCredentialsIdentity();\n      const adminIdentityID = this.config.settings.adminIdentityPoolID;\n      let uploadLocation = `uploads/${adminIdentityID}/staging/${userIdentityID}/${clientRecord.clientID}/${(0, _uuid.v4)()}`;\n      if (this.session.isAuthenticated) uploadLocation = uploadLocation.replace(\"/staging\", \"\");\n      const extension = Object.keys(this.acceptedFiles).find(key => this.acceptedFiles[key] === document.type);\n      const uploadKey = `${uploadLocation}.${extension}`;\n      try {\n        const s3Client = await this.awsService.getS3ByType(\"clientdocuments\");\n        await s3Client.upload({\n          Key: uploadKey,\n          ContentType: document.type,\n          Body: document\n        }).promise();\n        let documentCatalogue = this.store.peekRecord(\"catalogue\", clientRecord.clientID);\n        if (!documentCatalogue) {\n          documentCatalogue = await this.store.findRecord(\"catalogue\", clientRecord.clientID);\n        }\n        documentCatalogue.addDocument(questionnaireState.induction, questionnaireState.repeat, questionnaireState.chapter, questionnaireState.page, questionnaireState.question, questionnaireState.answersLocation, questionnaireState.objectID, {\n          fileName: document.name,\n          S3Key: uploadKey,\n          fileSize: document.size,\n          uploadDate: new Date()\n        });\n        return {\n          success: true,\n          message: `File ${document.name} uploaded successfully.`\n        };\n      } catch (e) {\n        return {\n          success: false,\n          message: `Failed to upload file ${document.name}. Error: ${e.message}`\n        };\n      }\n    }\n    async downloadDocument() {\n      throw new Error(\"download not implemented\");\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"store\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"awsService\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"config\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/services/client-induction\", [\"exports\", \"@ember/service\"], function (_exports, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  /**\n   * TODO: This class was derived from BaseRoute (routes/base.js)\n   *       It was created to avoid v2 routes/controllers needing to extend a BaseRoute/BaseController...\n   */\n  let ClientInductionService = _exports.default = (_class = class ClientInductionService extends _service.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"recordpolling\", _descriptor, this);\n      _initializerDefineProperty(this, \"clientRecords\", _descriptor2, this);\n      _defineProperty(this, \"clientID\", null);\n    }\n    async getInductionClient(params) {\n      if (params && params.clientID) {\n        this.clientID = params.clientID;\n      }\n      const client = await this.clientRecords.getClient(params);\n      this.recordpolling.setTrackedClient(client);\n      return client;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"recordpolling\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"clientRecords\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/services/client-matter\", [\"exports\", \"@ember/service\", \"settify-mvp/lib/identity\"], function (_exports, _service, _identity) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _ClientMatterService_brand;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"settify-mvp/lib/identity\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }\n  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  /**\n   * Service for managing client matters (records) in the new V2 UI routes.\n   *\n   * This service handles operations related to client records such as retrieving,\n   * creating, and updating. It also manages client-related cookies and integrates with various tracking and logging services.\n   *\n   * Usage:\n   * - **Routes**: Used in routes under the \"client\" namespace.\n   * - **Components**: Used in components that are part of the new UI.\n   * - **Controllers**: Used in controllers managing new UI functionality.\n   * - **Other Services**: Could be injected into other services that deal with new UI operations.\n   */\n  let ClientMatterService = _exports.default = (_class = (_ClientMatterService_brand = /*#__PURE__*/new WeakSet(), class ClientMatterService extends _service.default {\n    constructor(...args) {\n      super(...args);\n      /**\n       * Updates the client ID cookies.\n       * @param {string} id - The client ID.\n       */\n      _classPrivateMethodInitSpec(this, _ClientMatterService_brand);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n      _initializerDefineProperty(this, \"store\", _descriptor2, this);\n      _initializerDefineProperty(this, \"lambda\", _descriptor3, this);\n      _initializerDefineProperty(this, \"cookies\", _descriptor4, this);\n      _initializerDefineProperty(this, \"session\", _descriptor5, this);\n      _initializerDefineProperty(this, \"fullstory\", _descriptor6, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor7, this);\n      _initializerDefineProperty(this, \"recordpolling\", _descriptor8, this);\n      _initializerDefineProperty(this, \"questionnaireLogic\", _descriptor9, this);\n    }\n    /**\n     * Gets a client matter by ID, checking the cache first.\n     * @param {string} id - The client ID.\n     * @returns {Promise<Object>} - The client record.\n     */\n    async getClientMatterByID(id) {\n      const clientRecord = this.store.peekRecord(\"client\", id);\n      return clientRecord || this.store.findRecord(\"client\", id);\n    }\n\n    /**\n     * Retrieves a client matter based on cookies, session, or provided params.\n     * @param {Object} params - The parameters to determine client ID.\n     * @returns {Promise<Object|undefined>} - The client record or undefined if not found.\n     */\n    async getClientMatter(params) {\n      let id = (0, _identity.getClientID)(this.cookies, this.session);\n\n      // Query params override stored cookies\n      if (params?.clientID) {\n        id = params.clientID;\n        _assertClassBrand(_ClientMatterService_brand, this, _updateClientIDCookies).call(this, id);\n      }\n      if (!id) return undefined; // No client found\n\n      const clientRecord = await this.getClientMatterByID(id);\n      _assertClassBrand(_ClientMatterService_brand, this, _setupClientTracking).call(this, clientRecord);\n      return clientRecord;\n    }\n\n    /**\n     * Creates a new client matter with the specified parameters.\n     * @param {Object} params - The parameters for the new client record.\n     * @returns {Promise<Object>} - The created client record.\n     */\n    async createClientMatter(params) {\n      const clientRecord = this.store.createRecord(\"client\", {\n        id: params.clientID && params.clientID !== \"resetcookies\" ? params.clientID : undefined,\n        firmID: this.firm.id,\n        readOnly: true,\n        // We stay read-only until we know for sure that our ID is valid\n        otherPriorities: {},\n        creationTimestamp: Date.now(),\n        currentSituation: [\"bfa\", \"grownup\"].includes(params.request) ? \"wanttoprotectmyself\" : undefined,\n        forceBFAPathway: [\"bfa\", \"grownup\"].includes(params.request),\n        customQueryParams: params.customQParams,\n        practiceArea: params.practiceArea,\n        referral: this.cookies.exists(\"proxyActive\") ? \"practiceclient\" : params.referral\n      });\n      clientRecord.notifyUpdates = _assertClassBrand(_ClientMatterService_brand, this, _getFirmContactEmails).call(this);\n      const {\n        exists: isIdTaken,\n        alternativeClientID\n      } = await _assertClassBrand(_ClientMatterService_brand, this, _checkClientIDAvailability).call(this, clientRecord, params);\n      if (isIdTaken) clientRecord.id = alternativeClientID;\n      clientRecord.clientID = clientRecord.id;\n      clientRecord.readOnly = false;\n      _assertClassBrand(_ClientMatterService_brand, this, _logNewClientEvents).call(this, clientRecord, params);\n      _assertClassBrand(_ClientMatterService_brand, this, _updateClientIDCookies).call(this, clientRecord.id);\n      if (params.formID) {\n        _assertClassBrand(_ClientMatterService_brand, this, _addInductionToClientRecord).call(this, clientRecord, params.formID);\n      }\n      await clientRecord.save();\n      return clientRecord;\n    }\n  }), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"store\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"cookies\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"fullstory\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"recordpolling\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor9 = _applyDecoratedDescriptor(_class.prototype, \"questionnaireLogic\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n  function _updateClientIDCookies(id) {\n    this.cookies.write(\"clientID\", id, {\n      path: \"/\"\n    });\n    this.cookies.write(\"activeID\", id, {\n      path: \"/\"\n    });\n    if (this.cookies.exists(\"proxyActive\")) {\n      this.cookies.write(\"proxyID\", id, {\n        path: \"/\"\n      });\n    }\n  }\n  /*\n   * Sets up tracking for the client record.\n   * @param {Object} clientRecord - The client record.\n   */\n  function _setupClientTracking(clientRecord) {\n    this.fullstory.addIdentification(clientRecord.id);\n    this.recordpolling.setTrackedClient(clientRecord);\n  }\n  /**\n   * Gets the firm contact emails.\n   * @returns {Array} - The list of firm contact emails.\n   */\n  function _getFirmContactEmails() {\n    let firmContactEmails = [{\n      email: this.firm.contactEmail\n    }];\n    if (this.firm.contactEmailCCs) {\n      firmContactEmails = firmContactEmails.concat(this.firm.contactEmailCCs.map(email => ({\n        email\n      })));\n    }\n    return firmContactEmails;\n  }\n  /**\n   * Adds an induction to the client record if available.\n   * @param {Object} clientRecord - The client record.\n   * @param {string} formID - The form ID.\n   */\n  function _addInductionToClientRecord(clientRecord, formID) {\n    const selectedForm = this.questionnaireLogic.getAvailableInductions().find(form => form.formID === formID);\n    if (selectedForm) {\n      clientRecord.addInduction(selectedForm);\n      clientRecord.practiceArea = selectedForm.practiceArea;\n    }\n  }\n  /**\n   * Checks if the client ID is available.\n   * @param {Object} clientRecord - The client record.\n   * @returns {Promise<Object>} - An object indicating if the ID is taken and an alternative ID if necessary.\n   */\n  async function _checkClientIDAvailability(clientRecord) {\n    try {\n      return this.lambda.invoke(this.lambda.clientExistsLambda, {\n        clientID: clientRecord.id\n      }).then(this.lambda.processResponse);\n    } catch (error) {\n      this.eventLogging.logError(`Failed to check if ID exists: ${clientRecord.id}`, error);\n      return {\n        exists: false\n      };\n    }\n  }\n  /**\n   * Logs new client-related events.\n   * @param {Object} clientRecord - The new client record.\n   * @param {Object} params - Additional parameters.\n   */\n  function _logNewClientEvents(clientRecord, params) {\n    if (params.noEvents) return;\n    let {\n      referral\n    } = params;\n    if (referral && params.request) {\n      referral += `-${params.request}`;\n    }\n    this.eventLogging.log(clientRecord.id, this.eventLogging.IDs.NewLead, referral, clientRecord.practiceArea);\n    if (params.origin) this.eventLogging.log(clientRecord.id, this.eventLogging.IDs.ClientOrigin, params.origin, clientRecord.practiceArea);\n  }\n});","define(\"settify-mvp/services/client-records\", [\"exports\", \"@ember/runloop\", \"rsvp\", \"@ember/service\", \"settify-mvp/lib/identity\"], function (_exports, _runloop, _rsvp, _service, _identity) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"rsvp\",0,\"@ember/service\",0,\"settify-mvp/lib/identity\"eaimeta@70e063a35619d71f\n  /**\n   * Service for managing client records in the old UI routes.\n   *\n   * This service is responsible for generating and retrieving client records,\n   * including handling client ID cookies, and integrating with tracking and logging services.\n   *\n   * Usage:\n   * - **Routes**: Used in routes under the \"client-records\" namespace.\n   * - **Components**: Used in components that are part of the old UI.\n   * - **Controllers**: Used in controllers managing old UI functionality.\n   * - **Other Services**: Often injected into other services that deal with old UI operations.\n   */\n  var _default = _exports.default = _service.default.extend({\n    lambda: (0, _service.inject)(),\n    eventLogging: (0, _service.inject)(),\n    store: (0, _service.inject)(),\n    cookies: (0, _service.inject)(),\n    session: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    fullstory: (0, _service.inject)(),\n    questionnaireLogic: (0, _service.inject)(),\n    config: (0, _service.inject)(\"dynamic-config\"),\n    freshlyCreatedClient: null,\n    generateNewClientRecord(qparams = {}) {\n      const clientRecord = this.store.createRecord(\"client\");\n      clientRecord.set(\"firmID\", this.firm.id);\n      clientRecord.set(\"readOnly\", true); // we stay read only until we know for sure that our ID is valid\n      if (qparams.clientID && qparams.clientID !== \"resetcookies\") {\n        clientRecord.set(\"id\", qparams.clientID);\n      }\n      clientRecord.set(\"clientID\", clientRecord.id);\n      clientRecord.set(\"otherPriorities\", {});\n      clientRecord.set(\"creationTimestamp\", Date.now());\n      if (qparams.request && [\"bfa\", \"grownup\"].includes(qparams.request)) {\n        clientRecord.set(\"currentSituation\", \"wanttoprotectmyself\");\n        clientRecord.set(\"forceBFAPathway\", true);\n      }\n      if (qparams.customQParams) {\n        clientRecord.set(\"customQueryParams\", qparams.customQParams);\n      }\n      if (clientRecord.inductions && qparams.formID) {\n        const selectedQuestionnaire = this.questionnaireLogic.getAvailableInductions().find(form => form.formID === qparams.formID);\n        if (selectedQuestionnaire) {\n          clientRecord.addInduction(selectedQuestionnaire);\n          qparams.practiceArea = selectedQuestionnaire.practiceArea;\n        }\n      }\n      clientRecord.set(\"practiceArea\", qparams.practiceArea || this.config?.settings?.Firm?.practiceArea);\n\n      // console.log(\"Creating client with ID: \", clientRecord.get('id'));\n\n      // There's a bug, or at least 'unexpected behaviour' in the ember data store.\n      // If we save the record here in setABTestingValues, then when we later save it in invite.js controller,\n      // none of the new properties that we set in that function actually get serialised. (They're in the model,\n      // but the snapshot doesn't get recreated so they just show up as blank. Very frustrating.)\n      // This is a workaround to make sure we don't save the record if we're creating as part of an invitation.\n      const saveRecord = !(qparams.noSave || qparams.referral === \"invitation\");\n      if (saveRecord) {\n        // save the clientID now (we may overwrite it later, but that's okay)\n        this.cookies.write(\"clientID\", clientRecord.id, {\n          path: \"/\"\n        });\n        if (this.cookies.exists(\"proxyActive\")) {\n          this.cookies.write(\"proxyID\", clientRecord.id, {\n            path: \"/\"\n          });\n          qparams.referral = \"practiceclient\";\n        }\n      }\n      if (!(this.session.isAuthenticated && this.session.data.authenticated.adminUser)) {\n        // make sure our ID hasn't been taken already\n        // this is because some (dodgy?) client apps can't generate unique UUIDs\n        // it never seems to happen to admins though, (eg when inviting clients)\n        this.lambda.invoke(this.lambda.clientExistsLambda, {\n          clientID: clientRecord.id\n        }).then(this.lambda.processResponse).then(result => {\n          if (result.exists) {\n            console.log(`ClientID ${clientRecord.id} already existed, using ${result.alternativeClientID} instead.`);\n            clientRecord.set(\"id\", result.alternativeClientID);\n            clientRecord.set(\"clientID\", result.alternativeClientID);\n            if (saveRecord) {\n              this.cookies.write(\"clientID\", clientRecord.id, {\n                path: \"/\"\n              });\n            }\n          }\n        }).finally(() => {\n          clientRecord.set(\"readOnly\", false);\n          this.logEventsAndSave(clientRecord, saveRecord, qparams);\n        });\n      } else {\n        this.logEventsAndSave(clientRecord, saveRecord, qparams);\n      }\n      return clientRecord;\n    },\n    logEventsAndSave(clientRecord, saveRecord, qparams = {}) {\n      if (qparams.noEvents) {\n        return;\n      }\n      let {\n        referral\n      } = qparams;\n      if (referral && qparams.request) {\n        referral += `-${qparams.request}`;\n      }\n      this.eventLogging.log(clientRecord.id, this.eventLogging.IDs.NewLead, referral, clientRecord.practiceArea);\n      if (qparams.origin) {\n        this.eventLogging.log(clientRecord.id, this.eventLogging.IDs.ClientOrigin, qparams.origin, clientRecord.practiceArea);\n      }\n      this.setABTestingValues(clientRecord.clientID, clientRecord, saveRecord);\n      if (!(this.session?.isAuthenticated && this.session?.data?.authenticated?.adminUser)) {\n        // don't set cookie until the record is actually saved\n        // but, we should save a non-cookie indicator that we have already created a client, so that\n        // any other route that wants a new client, can just take this one.\n        this.set(\"freshlyCreatedClient\", clientRecord.id);\n\n        // Full Story\n        this.fullstory.addIdentification(clientRecord.id);\n      }\n    },\n    /**\n     * Retrieves a client record by a given ID. First it checks the local store cache for the client record.\n     * If the record is not found in the cache, it fetches the record from the server.\n     *\n     * @param {string} id - The ID of the client record to retrieve.\n     * @returns {Promise<Ember.Model>} - A promise that resolves with the client record.\n     *\n     * @throws {ClientUnauthorisedError} - Throws if the request fails due to unauthorized access (HTTP 401).\n     * @throws {ClientDeletedError} - Throws if the client record has been deleted (HTTP 410).\n     * @throws {ClientFrozenError} - Throws if the client record is frozen due to inactivity (HTTP 423).\n     * @throws {AdapterError} - Throws a generic adapter error for other issues related to the request.\n     *\n     * @note This method will propagate errors to the caller. The caller should handle these errors appropriately.\n     */\n    getClientByID(id) {\n      // console.log(`Retrieving record based on provided id (${id})`);\n      const clientRecord = this.store.peekRecord(\"client\", id, {\n        reload: false\n      });\n      if (clientRecord) {\n        return (0, _rsvp.resolve)(clientRecord);\n      }\n\n      // console.log(\"Record not cached, going to server.\");\n      return this.store.findRecord(\"client\", id).then(client => {\n        // success\n        // console.log(\"Retrieved successfully: \", client);\n        return client;\n      });\n    },\n    getClient(qparams) {\n      // console.log(\"Entering getClient()\");\n      if (qparams?.clientID) {\n        // set the activeID to this clientID, since that's what the user is expressly trying to access\n        this.cookies.write(\"activeID\", qparams.clientID, {\n          path: \"/\"\n        });\n      }\n      let id = (0, _identity.getClientID)(this.cookies, this.session);\n\n      // query params override stored cookies\n      if (qparams?.clientID) {\n        if (qparams.clientID === \"resetcookies\") {\n          // HACK: I can't figure out how to clear cookies when testing, so this is an entry point\n          // that acceptance tests can use to start with a clean slate.\n          // TODO: can you just do a 'document.cookie = blah' inside the acceptance test?\n          this.cookies.clear(\"clientID\", {\n            path: \"/\"\n          });\n          id = null;\n        } else {\n          // console.log(\"Setting clientID to \" + qparams.clientID + \"based on query param\");\n          id = qparams.clientID;\n\n          // set the cookie to the new value\n          this.cookies.write(\"clientID\", id, {\n            path: \"/\"\n          });\n        }\n      }\n      if (!id && this.freshlyCreatedClient) {\n        id = this.freshlyCreatedClient;\n      }\n      if (id) {\n        // Full Story\n        this.fullstory.addIdentification(id);\n        return this.getClientByID(id).catch(error => {\n          if (error === \"404\") {\n            return new Promise((resolve /* , reject */) => {\n              resolve(this.generateNewClientRecord(qparams));\n            });\n          }\n          throw error;\n        });\n      }\n      // console.log(\"No cookie found - creating record\");\n      return new Promise((resolve /* , reject */) => {\n        resolve(this.generateNewClientRecord(qparams));\n      });\n    },\n    setABTestingValues(clientID, clientRecord, saveRecord) {\n      if (this.firm.initialised) {\n        // console.log(\"Setting firm-downloaded details\");\n        let emails = [{\n          email: this.firm?.contactEmail\n        }];\n        if (this.firm?.contactEmailCCs) {\n          emails = emails.concat(this.firm.contactEmailCCs.map(e => ({\n            email: e\n          })));\n        }\n        clientRecord.set(\"notifyUpdates\", emails);\n        if (saveRecord) {\n          clientRecord.save();\n        }\n\n        // console.log(\"Setting AB Test values\");\n        const inductionSettings = this.firm?.settings?.induction;\n        this.eventLogging.logABTest(clientID, \"saveButtonLocationTestMay18\", inductionSettings.saveButtonNextToNextButton || false);\n        this.eventLogging.logABTest(clientID, \"testimonialsOnLandingPageMay18\", inductionSettings.testimonialsOnLandingPage || false);\n      } else {\n        // console.log(\"Firm details not yet initialised - waiting another second\");\n        (0, _runloop.later)(() => {\n          // note that, if we're waiting to initialise the firm object, then in 1000 ms time, when we're ready to try again, we SHOULD save the\n          // client record, even if we came here via an invitation route.\n          this.setABTestingValues(clientID, clientRecord, true);\n        }, 1000);\n      }\n    }\n  });\n});","define(\"settify-mvp/services/cognito-user\", [\"exports\", \"rsvp\", \"@ember/service\"], function (_exports, _rsvp, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"rsvp\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _service.default.extend({\n    user: null,\n    tempUser: null,\n    status: null,\n    totpTempSession: false,\n    firm: (0, _service.inject)(),\n    changePassword(oldPassword, newPassword) {\n      const cognitoUser = this.user;\n      if (!cognitoUser) {\n        return new _rsvp.Promise((resolve, reject) => {\n          reject(\"No cognito user available\");\n        });\n      }\n      return new _rsvp.Promise((resolve, reject) => {\n        cognitoUser.changePassword(oldPassword, newPassword, function (err /* , result */) {\n          if (err) {\n            reject(err);\n          }\n          resolve();\n        });\n      });\n    },\n    firstLoginNewPassword(oldPassword, newPassword) {\n      const cognitoUser = this.user;\n      if (!cognitoUser) {\n        return new _rsvp.Promise((resolve, reject) => {\n          reject(\"No cognito user available\");\n        });\n      }\n      return new _rsvp.Promise((resolve, reject) => {\n        cognitoUser.completeNewPasswordChallenge(newPassword, {\n          website: this.get(\"firm.id\")\n        }, {\n          onSuccess: result => this.onNewPasswordCallback(result, resolve, reject),\n          onFailure: err => {\n            console.log(\"Failed to change password on first login:\", err);\n            reject(err);\n          },\n          newPasswordRequired: (userAttributes, requiredAttributes) => {\n            this.reset();\n            this.set(\"userAttributes\", userAttributes);\n            this.set(\"requiredAttributes\", requiredAttributes);\n            reject(\"newPasswordRequired\");\n          },\n          totpRequired: (/* tokenType, device */\n          ) => {\n            // user requires mfa, invalidate session and redirect to login page\n            this.reset();\n            reject(\"totpRequired\");\n          }\n        });\n      });\n    },\n    onNewPasswordCallback(passResult, passResolve) {\n      this.set(\"userAttributes\", null);\n      this.set(\"requiredAttributes\", null);\n      passResolve(this.user.username);\n    },\n    provideTOTP(totp) {\n      const cognitoUser = this.user;\n      if (!cognitoUser) {\n        return new _rsvp.Promise((resolve, reject) => {\n          reject(\"No cognito user available\");\n        });\n      }\n      return new _rsvp.Promise((resolve, reject) => {\n        cognitoUser.sendMFACode(totp, {\n          onSuccess: result => this.onTOTPCallback(result, resolve, reject),\n          onFailure: err => {\n            console.log(\"Failed to log in using TOTP:\", err);\n            reject(err);\n          }\n        }, \"SOFTWARE_TOKEN_MFA\");\n      });\n    },\n    onTOTPCallback(mfaResult, mfaResolve) {\n      this.set(\"totpTempSession\", mfaResult);\n      mfaResolve();\n    },\n    confirmRegistration(validationCode) {\n      const cognitoUser = this.user;\n      return new _rsvp.Promise((resolve, reject) => {\n        cognitoUser.confirmRegistration(validationCode, true, (err, result) => {\n          if (err) {\n            if (err.code === \"UserNotFoundException\") {\n              reject(\"user-not-found\");\n            } else if (err.code === \"NotAuthorizedException\" && err.message === \"User cannot be confirmed. Current status is CONFIRMED\") {\n              reject(\"already-confirmed\");\n            } else if (err.code === \"ExpiredCodeException\" || err.code === \"CodeMismatchException\") {\n              this.resendConfirmationCode().then(() => {\n                reject(\"code-resent\");\n              }).catch(e => {\n                reject(e);\n              });\n            } else {\n              reject(err);\n            }\n          } else {\n            // user was confirmed\n            resolve(result);\n          }\n        });\n      });\n    },\n    resendConfirmationCode() {\n      const cognitoUser = this.user;\n      return new _rsvp.Promise((resolve, reject) => {\n        cognitoUser.resendConfirmationCode((err, result) => {\n          if (err) {\n            if (err.message === \"User is already confirmed.\") {\n              reject(\"already-confirmed\");\n            } else {\n              reject(err);\n            }\n          } else {\n            resolve(result);\n          }\n        });\n      });\n    },\n    switchUser() {\n      [this.user, this.tmpUser] = [this.tmpUser, this.user];\n    },\n    reset() {\n      this.set(\"user\", null);\n      this.set(\"tmpUser\", null);\n      this.set(\"status\", null);\n      this.set(\"totpTempSession\", false);\n    }\n  });\n});","define(\"settify-mvp/services/command-registry\", [\"exports\", \"@ember/service\", \"@glimmer/tracking\"], function (_exports, _service, _tracking) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@glimmer/tracking\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  /**\n   * Command categories used throughout the registry.\n   * Ensures consistency between Lambda and Latte commands.\n   */\n  const categories = {\n    ADMIN: \"Admin\",\n    ANALYTICS: \"Analytics\",\n    BILLING: \"Billing\",\n    CLIENT: \"Client\",\n    CONFLICT_CHECK: \"Conflict Check\",\n    DOCUMENTS: \"Documents\",\n    EMAIL: \"Email\",\n    EXPORT: \"Export\",\n    FILES: \"Files\",\n    FIRM_MANAGEMENT: \"Firm Management\",\n    FORMS: \"Forms\",\n    INTEGRATION: \"Integration\",\n    INVITATIONS: \"Invitations\",\n    LAWYER_MANAGEMENT: \"Lawyer Management\",\n    PATHWAY: \"Pathway\",\n    ROLLOUTS: \"Rollouts\",\n    SNAPSHOTS: \"Snapshots\",\n    SUPPORT: \"Support\",\n    SURVEYS: \"Surveys\",\n    USER_MANAGEMENT: \"User Management\",\n    UTILITIES: \"Utilities\"\n  };\n\n  /**\n   * Service to register and manage all available commands for the Console Command Palette.\n   * Commands can be Lambda functions, Latte API endpoints, form actions, or custom actions.\n   *\n   * @class CommandRegistryService\n   * @extends Service\n   */\n  let CommandRegistryService = _exports.default = (_class = class CommandRegistryService extends _service.default {\n    constructor() {\n      super(...arguments);\n      _initializerDefineProperty(this, \"commands\", _descriptor, this);\n      this.registerLambdaCommands();\n      this.registerLatteCommands();\n    }\n\n    /**\n     * Register all Lambda functions as commands.\n     * Parses the lambda-functions.js file structure and creates command objects.\n     */\n    registerLambdaCommands() {\n      const lambdaCommands = [\n      // Pathway functions\n      {\n        id: \"lambda-email-pathway\",\n        name: \"Email Pathway\",\n        functionName: \"als-public-emailpathway2\",\n        type: \"lambda\",\n        category: categories.PATHWAY,\n        description: \"Send pathway email to client\",\n        disabled: true,\n        tags: [\"email\", \"pathway\", \"client\", \"public\"]\n      }, {\n        id: \"lambda-generate-pathway\",\n        name: \"Generate Pathway\",\n        functionName: \"als-public-generatepathway2\",\n        type: \"lambda\",\n        category: categories.PATHWAY,\n        description: \"Generate a pathway for client\",\n        disabled: true,\n        tags: [\"pathway\", \"generate\", \"public\"]\n      },\n      // Email functions\n      {\n        id: \"lambda-email-booking-notification\",\n        name: \"Email Booking Notification\",\n        functionName: \"als-public-emailbookingnotification2\",\n        type: \"lambda\",\n        category: categories.EMAIL,\n        description: \"Send booking notification email\",\n        disabled: true,\n        tags: [\"email\", \"booking\", \"notification\", \"public\"]\n      }, {\n        id: \"lambda-email-resume-link\",\n        name: \"Email Resume Link\",\n        functionName: \"als-public-emailresumelink\",\n        type: \"lambda\",\n        category: categories.EMAIL,\n        description: \"Send resume link to client\",\n        disabled: true,\n        tags: [\"email\", \"resume\", \"link\", \"public\"]\n      }, {\n        id: \"lambda-email-settify\",\n        name: \"Email Settify\",\n        functionName: \"als-public-emailsettify\",\n        type: \"lambda\",\n        category: categories.EMAIL,\n        description: \"Send email from Settify\",\n        disabled: true,\n        tags: [\"email\", \"settify\", \"public\"]\n      }, {\n        id: \"lambda-email-settify-documents\",\n        name: \"Email Settify Documents\",\n        functionName: \"als-public-sendsettifydocuments\",\n        type: \"lambda\",\n        category: categories.EMAIL,\n        description: \"Send Settify documents via email\",\n        disabled: true,\n        tags: [\"email\", \"documents\", \"settify\", \"public\"]\n      },\n      // Conflict check functions\n      {\n        id: \"lambda-get-conflict-check-info\",\n        name: \"Get Conflict Check Information\",\n        functionName: \"als-lawfirm-getminimalinformation3\",\n        type: \"lambda\",\n        category: categories.CONFLICT_CHECK,\n        description: \"Retrieve minimal information for conflict check\",\n        disabled: true,\n        tags: [\"conflict\", \"check\", \"information\", \"lawfirm\"]\n      }, {\n        id: \"lambda-get-previous-enquiries\",\n        name: \"Get Previous Enquiries\",\n        functionName: \"als-public-getpreviousenquiries\",\n        type: \"lambda\",\n        category: categories.CONFLICT_CHECK,\n        description: \"Retrieve previous enquiries for conflict checking\",\n        disabled: true,\n        tags: [\"conflict\", \"enquiries\", \"history\", \"public\"]\n      }, {\n        id: \"lambda-send-conflict-email\",\n        name: \"Send Conflict Email\",\n        functionName: \"als-lawfirm-sendconflictemail\",\n        type: \"lambda\",\n        category: categories.CONFLICT_CHECK,\n        description: \"Send conflict notification email\",\n        disabled: true,\n        tags: [\"conflict\", \"email\", \"notification\", \"lawfirm\"]\n      }, {\n        id: \"lambda-set-conflict-state\",\n        name: \"Set Record Conflict State\",\n        functionName: \"als-lawfirm-setrecordconflictstate\",\n        type: \"lambda\",\n        category: categories.CONFLICT_CHECK,\n        description: \"Set the conflict state for a record\",\n        disabled: true,\n        tags: [\"conflict\", \"state\", \"record\", \"lawfirm\"]\n      }, {\n        id: \"lambda-undo-conflict\",\n        name: \"Undo Conflict\",\n        functionName: \"als-lawfirm-undoconflict\",\n        type: \"lambda\",\n        category: categories.CONFLICT_CHECK,\n        description: \"Undo conflict check on record\",\n        disabled: true,\n        tags: [\"conflict\", \"undo\", \"lawfirm\"]\n      },\n      // Billing (Settify billing/invoicing)\n      {\n        id: \"lambda-create-invoice\",\n        name: \"Create Invoice\",\n        functionName: \"als-admin-createinvoice2\",\n        type: \"lambda\",\n        category: categories.BILLING,\n        description: \"Create a new invoice\",\n        disabled: true,\n        tags: [\"invoice\", \"create\", \"billing\", \"admin\"]\n      }, {\n        id: \"lambda-create-line-items\",\n        name: \"Create Line Items\",\n        functionName: \"als-admin-createlineitems2\",\n        type: \"lambda\",\n        category: categories.BILLING,\n        description: \"Create line items for billing\",\n        disabled: true,\n        tags: [\"billing\", \"line-items\", \"admin\"]\n      }, {\n        id: \"lambda-get-adhoc-payments\",\n        name: \"Get Ad-hoc Payments\",\n        functionName: \"als-getadhocpayments\",\n        type: \"lambda\",\n        category: categories.BILLING,\n        description: \"Retrieve ad-hoc payment records\",\n        disabled: true,\n        tags: [\"payments\", \"billing\"]\n      }, {\n        id: \"lambda-get-billing-information\",\n        name: \"Get Billing Information\",\n        functionName: \"als-getbillinginformation\",\n        type: \"lambda\",\n        category: categories.BILLING,\n        description: \"Get billing information for firm\",\n        disabled: true,\n        tags: [\"billing\", \"information\"]\n      }, {\n        id: \"lambda-send-billing-email\",\n        name: \"Send Billing Email\",\n        functionName: \"als-sendbillingemail\",\n        type: \"lambda\",\n        category: categories.BILLING,\n        description: \"Send billing-related email\",\n        disabled: true,\n        tags: [\"email\", \"billing\"]\n      }, {\n        id: \"lambda-store-commission\",\n        name: \"Store Commission\",\n        functionName: \"als-admin-storecommission\",\n        type: \"lambda\",\n        category: categories.BILLING,\n        description: \"Store commission information\",\n        disabled: true,\n        tags: [\"commission\", \"billing\", \"admin\"]\n      }, {\n        id: \"lambda-update-adhoc-payment\",\n        name: \"Update Ad-hoc Payment\",\n        functionName: \"als-updateadhocpayment\",\n        type: \"lambda\",\n        category: categories.BILLING,\n        description: \"Update an ad-hoc payment\",\n        disabled: true,\n        tags: [\"payment\", \"update\"]\n      }, {\n        id: \"lambda-update-monthly-licence-fee\",\n        name: \"Update Monthly Licence Fee\",\n        functionName: \"als-admin-updatemonthlylicencefee\",\n        type: \"lambda\",\n        category: categories.BILLING,\n        description: \"Update monthly licence fee for firm\",\n        disabled: true,\n        tags: [\"billing\", \"licence\", \"fee\", \"admin\"]\n      },\n      // Email & Templates\n      {\n        id: \"lambda-display-email-template\",\n        name: \"Display Email Template\",\n        functionName: \"als-admin-displayemailtemplate\",\n        type: \"lambda\",\n        category: categories.EMAIL,\n        description: \"Display an email template\",\n        disabled: true,\n        tags: [\"email\", \"template\", \"admin\"]\n      }, {\n        id: \"lambda-email-from-settify\",\n        name: \"Email From Settify\",\n        functionName: \"als-emailfromsettify\",\n        type: \"lambda\",\n        category: categories.EMAIL,\n        description: \"Send email from Settify\",\n        disabled: true,\n        tags: [\"email\"]\n      },\n      // Firm Management (Admin)\n      {\n        id: \"lambda-get-firms\",\n        name: \"Get Firms\",\n        functionName: \"als-admin-getfirms\",\n        type: \"lambda\",\n        category: categories.FIRM_MANAGEMENT,\n        description: \"Retrieve list of firms\",\n        disabled: true,\n        tags: [\"firms\", \"list\", \"admin\"]\n      },\n      // Analytics\n      {\n        id: \"lambda-get-firm-usage-history\",\n        name: \"Get Firm Usage History\",\n        functionName: \"als-analytics-getfirmusagehistory\",\n        type: \"lambda\",\n        category: categories.ANALYTICS,\n        description: \"Get usage history for a firm\",\n        disabled: true,\n        tags: [\"analytics\", \"usage\", \"history\"]\n      }, {\n        id: \"lambda-get-firm-user-events\",\n        name: \"Get Firm User Events\",\n        functionName: \"als-admin-getfirmuserevents\",\n        type: \"lambda\",\n        category: categories.ANALYTICS,\n        description: \"Get user events for a firm\",\n        disabled: true,\n        tags: [\"events\", \"users\", \"analytics\", \"admin\"]\n      }, {\n        id: \"lambda-get-conversion-group-details\",\n        name: \"Get Conversion Group Details\",\n        functionName: \"als-getconversiongroupdetails\",\n        type: \"lambda\",\n        category: categories.ANALYTICS,\n        description: \"Get details for conversion group\",\n        disabled: true,\n        tags: [\"conversion\", \"group\", \"analytics\"]\n      },\n      // Utilities & Testing\n      {\n        id: \"lambda-create-verification-code\",\n        name: \"Create Verification Code\",\n        functionName: \"als-public-createverificationcode\",\n        type: \"lambda\",\n        category: categories.UTILITIES,\n        description: \"Create verification code\",\n        disabled: true,\n        tags: [\"verification\", \"code\", \"security\", \"public\"]\n      }, {\n        id: \"lambda-gitlab-new-issue\",\n        name: \"GitLab New Issue\",\n        functionName: \"als-admin-gitlabnewissue\",\n        type: \"lambda\",\n        category: categories.UTILITIES,\n        description: \"Create a new GitLab issue\",\n        disabled: true,\n        tags: [\"gitlab\", \"issue\", \"support\", \"admin\"]\n      }, {\n        id: \"lambda-send-practice-client\",\n        name: \"Send Practice Client\",\n        functionName: \"als-admin-sendpracticeclient\",\n        type: \"lambda\",\n        category: categories.UTILITIES,\n        description: \"Send practice/training client data\",\n        disabled: true,\n        tags: [\"client\", \"practice\", \"testing\", \"admin\"]\n      },\n      // Support\n      {\n        id: \"lambda-tech-support-request\",\n        name: \"Tech Support Request\",\n        functionName: \"als-public-techsupportrequest\",\n        type: \"lambda\",\n        category: categories.SUPPORT,\n        description: \"Submit tech support request\",\n        disabled: true,\n        tags: [\"support\", \"tech\", \"request\", \"public\"]\n      }, {\n        id: \"lambda-request-accountant-help\",\n        name: \"Request Accountant Help\",\n        functionName: \"als-public-requestaccountanthelp\",\n        type: \"lambda\",\n        category: categories.SUPPORT,\n        description: \"Request accountant help\",\n        disabled: true,\n        tags: [\"support\", \"accountant\", \"request\", \"public\"]\n      },\n      // Integration functions\n      {\n        id: \"lambda-get-send-to-pms-metadata\",\n        name: \"Get Send to PMS Metadata\",\n        functionName: \"als-lawfirm-getsendtopmsmetadata\",\n        type: \"lambda\",\n        category: categories.INTEGRATION,\n        description: \"Get metadata for sending to PMS\",\n        disabled: true,\n        tags: [\"integration\", \"pms\", \"metadata\", \"lawfirm\"]\n      }, {\n        id: \"lambda-get-leads-and-clients\",\n        name: \"Get Leads and Clients\",\n        functionName: \"als-lawfirm-getleadsandclients\",\n        type: \"lambda\",\n        category: categories.INTEGRATION,\n        description: \"Retrieve leads and clients for integration\",\n        disabled: true,\n        tags: [\"integration\", \"leads\", \"clients\", \"lawfirm\"]\n      }, {\n        id: \"lambda-list-pms-metadata\",\n        name: \"List PMS Metadata\",\n        functionName: \"als-lawfirm-listpmsmetadata\",\n        type: \"lambda\",\n        category: categories.INTEGRATION,\n        description: \"List PMS metadata records\",\n        disabled: true,\n        tags: [\"integration\", \"pms\", \"metadata\", \"lawfirm\"]\n      }, {\n        id: \"lambda-initialise-client-from-pms\",\n        name: \"Initialise Client from PMS Matter\",\n        functionName: \"als-lawfirm-initialiseclientfrompmsmatter\",\n        type: \"lambda\",\n        category: categories.INTEGRATION,\n        description: \"Create client from PMS matter\",\n        disabled: true,\n        tags: [\"integration\", \"pms\", \"client\", \"initialise\", \"lawfirm\"]\n      }, {\n        id: \"lambda-send-client-to-integrations\",\n        name: \"Send Client to Integrations\",\n        functionName: \"als-lawfirm-sendnewclientrecordtointegrations\",\n        type: \"lambda\",\n        category: categories.INTEGRATION,\n        description: \"Send new client record to integrations\",\n        disabled: true,\n        tags: [\"integration\", \"client\", \"send\", \"lawfirm\"]\n      }, {\n        id: \"lambda-get-integration-status\",\n        name: \"Get Integration Status\",\n        functionName: \"als-lawfirm-pms-getauthenticationstatus\",\n        type: \"lambda\",\n        category: categories.INTEGRATION,\n        description: \"Get PMS authentication status\",\n        disabled: true,\n        tags: [\"integration\", \"pms\", \"auth\", \"status\", \"lawfirm\"]\n      }, {\n        id: \"lambda-authenticate-pms\",\n        name: \"Authenticate PMS\",\n        functionName: \"als-lawfirm-pms-authenticate\",\n        type: \"lambda\",\n        category: categories.INTEGRATION,\n        description: \"Authenticate with PMS\",\n        disabled: true,\n        tags: [\"integration\", \"pms\", \"authenticate\", \"lawfirm\"]\n      }, {\n        id: \"lambda-disconnect-pms\",\n        name: \"Disconnect PMS\",\n        functionName: \"als-lawfirm-pms-disconnect\",\n        type: \"lambda\",\n        category: categories.INTEGRATION,\n        description: \"Disconnect from PMS\",\n        disabled: true,\n        tags: [\"integration\", \"pms\", \"disconnect\", \"lawfirm\"]\n      },\n      // Files and uploads\n      {\n        id: \"lambda-file-get-send-info\",\n        name: \"File Get Send Info\",\n        functionName: \"als-filegetsendinfo\",\n        type: \"lambda\",\n        category: categories.FILES,\n        description: \"Get file send information\",\n        disabled: true,\n        tags: [\"files\", \"send\", \"info\"]\n      }, {\n        id: \"lambda-file-invite\",\n        name: \"File Invite\",\n        functionName: \"als-fileinvite\",\n        type: \"lambda\",\n        category: categories.FILES,\n        description: \"Invite to file sharing\",\n        disabled: true,\n        tags: [\"files\", \"invite\"]\n      }, {\n        id: \"lambda-file-send\",\n        name: \"File Send\",\n        functionName: \"als-filestartsendprocess\",\n        type: \"lambda\",\n        category: categories.FILES,\n        description: \"Start file send process\",\n        disabled: true,\n        tags: [\"files\", \"send\", \"upload\"]\n      }, {\n        id: \"lambda-file-unsubscribe\",\n        name: \"File Unsubscribe\",\n        functionName: \"als-fileunsubscribe\",\n        type: \"lambda\",\n        category: categories.FILES,\n        description: \"Unsubscribe from file notifications\",\n        disabled: true,\n        tags: [\"files\", \"unsubscribe\"]\n      }, {\n        id: \"lambda-get-file-virus-status\",\n        name: \"Get File Upload Virus Status\",\n        functionName: \"als-public-getfileuploadvirusscanstatus\",\n        type: \"lambda\",\n        category: categories.FILES,\n        description: \"Get virus scan status for uploaded file\",\n        disabled: true,\n        tags: [\"files\", \"virus\", \"scan\", \"security\", \"public\"]\n      },\n      // Lawyer details\n      {\n        id: \"lambda-create-lawyer\",\n        name: \"Create Lawyer\",\n        functionName: \"als-lawfirm-createlawyer\",\n        type: \"lambda\",\n        category: categories.LAWYER_MANAGEMENT,\n        description: \"Create a new lawyer profile\",\n        disabled: true,\n        tags: [\"lawyer\", \"create\", \"profile\", \"lawfirm\"]\n      }, {\n        id: \"lambda-delete-lawyer\",\n        name: \"Delete Lawyer\",\n        functionName: \"als-lawfirm-deletelawyer\",\n        type: \"lambda\",\n        category: categories.LAWYER_MANAGEMENT,\n        description: \"Delete a lawyer profile\",\n        disabled: true,\n        tags: [\"lawyer\", \"delete\", \"lawfirm\"]\n      }, {\n        id: \"lambda-get-lawyer-list\",\n        name: \"Get Lawyer List\",\n        functionName: \"als-public-getlawyerlist\",\n        type: \"lambda\",\n        category: categories.LAWYER_MANAGEMENT,\n        description: \"Get list of lawyers\",\n        disabled: true,\n        tags: [\"lawyer\", \"list\", \"public\"]\n      }, {\n        id: \"lambda-scrape-lawyer-page\",\n        name: \"Scrape Lawyer Page\",\n        functionName: \"als-lawfirm-scrapelawyerpage\",\n        type: \"lambda\",\n        category: categories.LAWYER_MANAGEMENT,\n        description: \"Scrape lawyer information from website\",\n        disabled: true,\n        tags: [\"lawyer\", \"scrape\", \"website\", \"lawfirm\"]\n      }, {\n        id: \"lambda-update-lawyer-details\",\n        name: \"Update Lawyer Details\",\n        functionName: \"als-lawfirm-updatelawyerdetails\",\n        type: \"lambda\",\n        category: categories.LAWYER_MANAGEMENT,\n        description: \"Update lawyer profile details\",\n        disabled: true,\n        tags: [\"lawyer\", \"update\", \"profile\", \"lawfirm\"]\n      },\n      // Firm details\n      {\n        id: \"lambda-init-firm\",\n        name: \"Initialise Firm\",\n        functionName: \"als-public-initialisefirm\",\n        type: \"lambda\",\n        category: categories.FIRM_MANAGEMENT,\n        description: \"Initialise a new firm\",\n        disabled: true,\n        tags: [\"firm\", \"initialise\", \"setup\", \"public\"]\n      }, {\n        id: \"lambda-get-firm-details\",\n        name: \"Get Firm Details\",\n        functionName: \"als-lawfirm-getfirmdetails\",\n        type: \"lambda\",\n        category: categories.FIRM_MANAGEMENT,\n        description: \"Get firm details\",\n        disabled: true,\n        tags: [\"firm\", \"details\", \"lawfirm\"]\n      }, {\n        id: \"lambda-get-firm-offices\",\n        name: \"Get Firm Offices\",\n        functionName: \"als-public-getfirmoffices\",\n        type: \"lambda\",\n        category: categories.FIRM_MANAGEMENT,\n        description: \"Get list of firm offices\",\n        disabled: true,\n        tags: [\"firm\", \"offices\", \"public\"]\n      }, {\n        id: \"lambda-get-firm-settings-help\",\n        name: \"Get Firm Settings Help\",\n        functionName: \"als-lawfirm-getfirmsettingshelp\",\n        type: \"lambda\",\n        category: categories.FIRM_MANAGEMENT,\n        description: \"Get help information for firm settings\",\n        disabled: true,\n        tags: [\"firm\", \"settings\", \"help\", \"lawfirm\"]\n      }, {\n        id: \"lambda-get-firm-settings\",\n        name: \"Get Firm Settings\",\n        functionName: \"als-public-getfirmsettings\",\n        type: \"lambda\",\n        category: categories.FIRM_MANAGEMENT,\n        description: \"Get firm settings configuration\",\n        disabled: true,\n        tags: [\"firm\", \"settings\", \"public\"]\n      }, {\n        id: \"lambda-update-firm-details\",\n        name: \"Update Firm Details\",\n        functionName: \"als-lawfirm-updatefirmdetails\",\n        type: \"lambda\",\n        category: categories.FIRM_MANAGEMENT,\n        description: \"Update firm details\",\n        disabled: true,\n        tags: [\"firm\", \"update\", \"details\", \"lawfirm\"]\n      }, {\n        id: \"lambda-update-firm-offices\",\n        name: \"Update Firm Offices\",\n        functionName: \"als-lawfirm-updatefirmoffices\",\n        type: \"lambda\",\n        category: categories.FIRM_MANAGEMENT,\n        description: \"Update firm offices information\",\n        disabled: true,\n        tags: [\"firm\", \"offices\", \"update\", \"lawfirm\"]\n      }, {\n        id: \"lambda-update-firm-settings\",\n        name: \"Update Firm Settings\",\n        functionName: \"als-lawfirm-updatefirmsettings\",\n        type: \"lambda\",\n        category: categories.FIRM_MANAGEMENT,\n        description: \"Update firm settings configuration\",\n        disabled: true,\n        tags: [\"firm\", \"settings\", \"update\", \"lawfirm\"]\n      },\n      // Rollouts\n      {\n        id: \"lambda-create-rollout\",\n        name: \"Create Rollout\",\n        functionName: \"als-admin-createrollout\",\n        type: \"lambda\",\n        category: categories.ROLLOUTS,\n        description: \"Create a new rollout\",\n        disabled: true,\n        tags: [\"rollout\", \"create\", \"admin\"]\n      }, {\n        id: \"lambda-global-rollout\",\n        name: \"Global Rollout\",\n        functionName: \"als-admin-globalrollouts\",\n        type: \"lambda\",\n        category: categories.ROLLOUTS,\n        description: \"Manage global rollouts\",\n        disabled: true,\n        tags: [\"rollout\", \"global\", \"admin\"]\n      }, {\n        id: \"lambda-process-rollout\",\n        name: \"Process Rollout\",\n        functionName: \"als-admin-processrolloutrequest\",\n        type: \"lambda\",\n        category: categories.ROLLOUTS,\n        description: \"Process rollout request\",\n        disabled: true,\n        tags: [\"rollout\", \"process\", \"admin\"]\n      }, {\n        id: \"lambda-firm-domain-exists\",\n        name: \"Firm Domain Exists\",\n        functionName: \"als-public-firmdomainexists\",\n        type: \"lambda\",\n        category: categories.ROLLOUTS,\n        description: \"Check if firm domain exists\",\n        disabled: true,\n        tags: [\"firm\", \"domain\", \"validation\", \"public\"]\n      }, {\n        id: \"lambda-self-signup\",\n        name: \"Self Signup\",\n        functionName: \"als-public-selfsignup\",\n        type: \"lambda\",\n        category: categories.ROLLOUTS,\n        description: \"Process self signup\",\n        disabled: true,\n        tags: [\"signup\", \"registration\", \"public\"]\n      },\n      // Firm users\n      {\n        id: \"lambda-create-firm-user\",\n        name: \"Create Firm User\",\n        functionName: \"als-lawfirm-createfirmuser\",\n        type: \"lambda\",\n        category: categories.USER_MANAGEMENT,\n        description: \"Create a new firm user\",\n        disabled: true,\n        tags: [\"user\", \"create\", \"firm\", \"lawfirm\"]\n      }, {\n        id: \"lambda-delete-firm-user\",\n        name: \"Delete Firm User\",\n        functionName: \"als-lawfirm-deletefirmuser\",\n        type: \"lambda\",\n        category: categories.USER_MANAGEMENT,\n        description: \"Delete a firm user\",\n        disabled: true,\n        tags: [\"user\", \"delete\", \"firm\", \"lawfirm\"]\n      }, {\n        id: \"lambda-get-firm-users\",\n        name: \"Get Firm Users\",\n        functionName: \"als-lawfirm-getfirmusers\",\n        type: \"lambda\",\n        category: categories.USER_MANAGEMENT,\n        description: \"Get list of firm users\",\n        disabled: true,\n        tags: [\"user\", \"list\", \"firm\", \"lawfirm\"]\n      }, {\n        id: \"lambda-recreate-firm-user\",\n        name: \"Recreate Firm User\",\n        functionName: \"als-public-recreatefirmuser\",\n        type: \"lambda\",\n        category: categories.USER_MANAGEMENT,\n        description: \"Recreate a firm user account\",\n        disabled: true,\n        tags: [\"user\", \"recreate\", \"firm\", \"public\"]\n      }, {\n        id: \"lambda-update-firm-user\",\n        name: \"Update Firm User\",\n        functionName: \"als-lawfirm-updatefirmuser\",\n        type: \"lambda\",\n        category: categories.USER_MANAGEMENT,\n        description: \"Update firm user details\",\n        disabled: true,\n        tags: [\"user\", \"update\", \"firm\", \"lawfirm\"]\n      },\n      // Invitations\n      {\n        id: \"lambda-invite-client\",\n        name: \"Invite Client\",\n        functionName: \"als-lawfirm-inviteclient5\",\n        type: \"lambda\",\n        category: categories.INVITATIONS,\n        description: \"Send invitation to client\",\n        disabled: true,\n        tags: [\"invitation\", \"client\", \"email\", \"lawfirm\"]\n      }, {\n        id: \"lambda-send-calendar-invite\",\n        name: \"Send Calendar Invite\",\n        functionName: \"als-public-sendcalendarinvite\",\n        type: \"lambda\",\n        category: categories.INVITATIONS,\n        description: \"Send calendar invitation\",\n        disabled: true,\n        tags: [\"calendar\", \"invite\", \"email\", \"public\"]\n      },\n      // Gender check\n      {\n        id: \"lambda-name-check\",\n        name: \"Name Check\",\n        functionName: \"als-public-namecheck\",\n        type: \"lambda\",\n        category: categories.UTILITIES,\n        description: \"Check name for gender detection\",\n        disabled: true,\n        tags: [\"name\", \"gender\", \"validation\", \"public\"]\n      },\n      // Billing\n      {\n        id: \"lambda-confirm-invoice-details\",\n        name: \"Confirm Invoice Details\",\n        functionName: \"als-lawfirm-confirmclientsforinvoice\",\n        type: \"lambda\",\n        category: categories.BILLING,\n        description: \"Confirm clients for invoice\",\n        disabled: true,\n        tags: [\"billing\", \"invoice\", \"confirm\", \"lawfirm\"]\n      }, {\n        id: \"lambda-delete-line-item\",\n        name: \"Delete Line Item\",\n        functionName: \"als-admin-deletelineitem\",\n        type: \"lambda\",\n        category: categories.BILLING,\n        description: \"Delete a billing line item\",\n        disabled: true,\n        tags: [\"billing\", \"line-item\", \"delete\", \"admin\"]\n      }, {\n        id: \"lambda-get-clients-for-invoice-review\",\n        name: \"Get Clients for Invoice Review\",\n        functionName: \"als-lawfirm-getclientsforbillingportal\",\n        type: \"lambda\",\n        category: categories.BILLING,\n        description: \"Get clients for billing portal review\",\n        disabled: true,\n        tags: [\"billing\", \"clients\", \"review\", \"lawfirm\"]\n      }, {\n        id: \"lambda-get-invoice-requests\",\n        name: \"Get Invoice Requests\",\n        functionName: \"als-lawfirm-getinvoicerequests\",\n        type: \"lambda\",\n        category: categories.BILLING,\n        description: \"Get invoice requests\",\n        disabled: true,\n        tags: [\"billing\", \"invoice\", \"requests\", \"lawfirm\"]\n      }, {\n        id: \"lambda-get-stripe-portal-url\",\n        name: \"Get Stripe Portal URL\",\n        functionName: \"als-lawfirm-getstripeportalurl\",\n        type: \"lambda\",\n        category: categories.BILLING,\n        description: \"Get Stripe customer portal URL\",\n        disabled: true,\n        tags: [\"billing\", \"stripe\", \"portal\", \"lawfirm\"]\n      }, {\n        id: \"lambda-get-unbilled-line-items\",\n        name: \"Get Unbilled Line Items\",\n        functionName: \"als-admin-getunbilledlineitems\",\n        type: \"lambda\",\n        category: categories.BILLING,\n        description: \"Get unbilled line items\",\n        disabled: true,\n        tags: [\"billing\", \"line-items\", \"unbilled\", \"admin\"]\n      }, {\n        id: \"lambda-set-billing-information\",\n        name: \"Set Billing Information\",\n        functionName: \"als-lawfirm-setclientbillinginformation\",\n        type: \"lambda\",\n        category: categories.BILLING,\n        description: \"Set client billing information\",\n        disabled: true,\n        tags: [\"billing\", \"client\", \"information\", \"lawfirm\"]\n      }, {\n        id: \"lambda-stripe-checkout\",\n        name: \"Stripe Checkout\",\n        functionName: \"als-public-stripecheckout\",\n        type: \"lambda\",\n        category: categories.BILLING,\n        description: \"Process Stripe checkout\",\n        disabled: true,\n        tags: [\"billing\", \"stripe\", \"checkout\", \"payment\", \"public\"]\n      }, {\n        id: \"lambda-update-firm-notes\",\n        name: \"Update Firm Notes\",\n        functionName: \"als-lawfirm-updatefirmnotes\",\n        type: \"lambda\",\n        category: categories.BILLING,\n        description: \"Update firm billing notes\",\n        disabled: true,\n        tags: [\"billing\", \"notes\", \"firm\", \"lawfirm\"]\n      }, {\n        id: \"lambda-void-xero-invoice\",\n        name: \"Void Xero Invoice\",\n        functionName: \"als-lawfirm-voidxeroinvoice\",\n        type: \"lambda\",\n        category: categories.BILLING,\n        description: \"Void invoice in Xero\",\n        disabled: true,\n        tags: [\"billing\", \"xero\", \"invoice\", \"void\", \"lawfirm\"]\n      }, {\n        id: \"lambda-disbursement-report\",\n        name: \"Disbursement Report\",\n        functionName: \"als-lawfirm-disbursementreport\",\n        type: \"lambda\",\n        category: categories.BILLING,\n        description: \"Generate disbursement report\",\n        disabled: true,\n        tags: [\"billing\", \"disbursement\", \"report\", \"lawfirm\"]\n      },\n      // Surveys\n      {\n        id: \"lambda-create-qr-code\",\n        name: \"Create QR Code\",\n        functionName: \"als-lawfirm-createqrcode\",\n        type: \"lambda\",\n        category: categories.SURVEYS,\n        description: \"Create QR code for surveys\",\n        disabled: true,\n        tags: [\"survey\", \"qr\", \"code\", \"lawfirm\"]\n      }, {\n        id: \"lambda-log-survey-response\",\n        name: \"Log Survey Response\",\n        functionName: \"als-public-logsurveyresponse\",\n        type: \"lambda\",\n        category: categories.SURVEYS,\n        description: \"Log survey response\",\n        disabled: true,\n        tags: [\"survey\", \"response\", \"log\", \"public\"]\n      }, {\n        id: \"lambda-save-catalytic-feedback\",\n        name: \"Save Catalytic Feedback\",\n        functionName: \"als-public-savecatalyticfeedback\",\n        type: \"lambda\",\n        category: categories.SURVEYS,\n        description: \"Save catalytic feedback\",\n        disabled: true,\n        tags: [\"survey\", \"feedback\", \"catalytic\", \"public\"]\n      },\n      // Client Search\n      {\n        id: \"lambda-search-clients\",\n        name: \"Search Clients\",\n        functionName: \"als-lawfirm-searchclients\",\n        type: \"lambda\",\n        category: categories.CLIENT,\n        description: \"Search for clients\",\n        disabled: true,\n        tags: [\"search\", \"clients\", \"lawfirm\"]\n      },\n      // Client Lists & Admin queries\n      {\n        id: \"lambda-get-all-client-records\",\n        name: \"Get All Client Records\",\n        functionName: \"als-getallclientrecords\",\n        type: \"lambda\",\n        category: categories.CLIENT,\n        description: \"Retrieve all client records\",\n        disabled: true,\n        tags: [\"client\", \"records\", \"list\"]\n      },\n      // Client lists\n      {\n        id: \"lambda-get-augmented-lead-list\",\n        name: \"Get Augmented Lead List\",\n        functionName: \"als-lawfirm-getaugmentedleadlist\",\n        type: \"lambda\",\n        category: categories.CLIENT,\n        description: \"Get augmented lead list with additional data\",\n        disabled: true,\n        tags: [\"leads\", \"list\", \"augmented\", \"lawfirm\"]\n      }, {\n        id: \"lambda-get-invitation-list\",\n        name: \"Get Invitation List\",\n        functionName: \"als-lawfirm-getinvitationlist\",\n        type: \"lambda\",\n        category: categories.CLIENT,\n        description: \"Get list of client invitations\",\n        disabled: true,\n        tags: [\"invitations\", \"list\", \"lawfirm\"]\n      }, {\n        id: \"lambda-get-lead-list\",\n        name: \"Get Lead List\",\n        functionName: \"als-lawfirm-getleadlist\",\n        type: \"lambda\",\n        category: categories.CLIENT,\n        description: \"Get list of leads\",\n        disabled: true,\n        tags: [\"leads\", \"list\", \"lawfirm\"]\n      },\n      // Client brief\n      {\n        id: \"lambda-get-client-metadata\",\n        name: \"Get Client Metadata\",\n        functionName: \"als-lawfirm-getclientmetadata\",\n        type: \"lambda\",\n        category: categories.CLIENT,\n        description: \"Get client metadata\",\n        disabled: true,\n        tags: [\"client\", \"metadata\", \"lawfirm\"]\n      },\n      // Client CRUD\n      {\n        id: \"lambda-add-record-to-account\",\n        name: \"Add Record to Account\",\n        functionName: \"als-public-addrecordtoaccount\",\n        type: \"lambda\",\n        category: categories.CLIENT,\n        description: \"Add record to client account\",\n        disabled: true,\n        tags: [\"client\", \"record\", \"add\", \"public\"]\n      }, {\n        id: \"lambda-allow-firm-access\",\n        name: \"Allow Firm Access\",\n        functionName: \"als-lawfirm-allowfirmaccess\",\n        type: \"lambda\",\n        category: categories.CLIENT,\n        description: \"Allow firm access to client\",\n        disabled: true,\n        tags: [\"client\", \"access\", \"firm\", \"lawfirm\"]\n      }, {\n        id: \"lambda-client-exists\",\n        name: \"Client Exists\",\n        functionName: \"als-public-clientexists\",\n        type: \"lambda\",\n        category: categories.CLIENT,\n        description: \"Check if client exists\",\n        disabled: true,\n        tags: [\"client\", \"validation\", \"exists\", \"public\"]\n      }, {\n        id: \"lambda-create-client\",\n        name: \"Create Client\",\n        functionName: \"als-public-createclient\",\n        type: \"lambda\",\n        category: categories.CLIENT,\n        description: \"Create a new client record\",\n        disabled: true,\n        tags: [\"client\", \"create\", \"public\"]\n      }, {\n        id: \"lambda-delete-client\",\n        name: \"Delete Client\",\n        functionName: \"als-admin-deleteclient\",\n        type: \"lambda\",\n        category: categories.CLIENT,\n        description: \"Delete a client record\",\n        disabled: true,\n        tags: [\"client\", \"delete\", \"admin\"]\n      }, {\n        id: \"lambda-get-client\",\n        name: \"Get Client\",\n        functionName: \"als-public-getclient\",\n        type: \"lambda\",\n        category: categories.CLIENT,\n        description: \"Get client record\",\n        disabled: false,\n        tags: [\"client\", \"get\", \"read\", \"public\"],\n        requiredArgs: [\"clientID\", \"firmID\"],\n        payloadTemplate: {\n          id: \"{clientID}\",\n          firmID: \"{firmID}\"\n        }\n      }, {\n        id: \"lambda-get-client-last-modified\",\n        name: \"Get Client Last Modified\",\n        functionName: \"als-public-getclientlastmodified\",\n        type: \"lambda\",\n        category: categories.CLIENT,\n        description: \"Get client last modified timestamp\",\n        disabled: true,\n        tags: [\"client\", \"modified\", \"timestamp\", \"public\"]\n      }, {\n        id: \"lambda-get-records-in-account\",\n        name: \"Get Records in Account\",\n        functionName: \"als-public-getrecordsinaccount\",\n        type: \"lambda\",\n        category: categories.CLIENT,\n        description: \"Get all records in client account\",\n        disabled: true,\n        tags: [\"client\", \"records\", \"account\", \"public\"]\n      }, {\n        id: \"lambda-protect-record\",\n        name: \"Protect Record\",\n        functionName: \"als-public-protectrecord\",\n        type: \"lambda\",\n        category: categories.CLIENT,\n        description: \"Protect client record from deletion\",\n        disabled: true,\n        tags: [\"client\", \"protect\", \"security\", \"public\"]\n      }, {\n        id: \"lambda-update-client\",\n        name: \"Update Client\",\n        functionName: \"als-public-updateclient2\",\n        type: \"lambda\",\n        category: categories.CLIENT,\n        description: \"Update client record\",\n        disabled: true,\n        tags: [\"client\", \"update\", \"public\"]\n      },\n      // Client record repair\n      {\n        id: \"lambda-get-cognito-details\",\n        name: \"Get Cognito Details\",\n        functionName: \"als-admin-getcognitodetails\",\n        type: \"lambda\",\n        category: categories.CLIENT,\n        description: \"Get Cognito user details\",\n        disabled: true,\n        tags: [\"client\", \"cognito\", \"admin\", \"repair\"]\n      }, {\n        id: \"lambda-repair-client-record\",\n        name: \"Repair Client Record\",\n        functionName: \"als-admin-repairclientrecord\",\n        type: \"lambda\",\n        category: categories.CLIENT,\n        description: \"Repair corrupted client record\",\n        disabled: true,\n        tags: [\"client\", \"repair\", \"admin\"]\n      },\n      // Client Snapshots\n      {\n        id: \"lambda-compare-html\",\n        name: \"Compare HTML\",\n        functionName: \"als-lawfirm-comparehtml\",\n        type: \"lambda\",\n        category: categories.SNAPSHOTS,\n        description: \"Compare HTML versions\",\n        disabled: true,\n        tags: [\"snapshot\", \"compare\", \"html\", \"lawfirm\"]\n      }, {\n        id: \"lambda-create-snapshot\",\n        name: \"Create Snapshot\",\n        functionName: \"als-lawfirm-createsnapshot\",\n        type: \"lambda\",\n        category: categories.SNAPSHOTS,\n        description: \"Create client snapshot\",\n        disabled: true,\n        tags: [\"snapshot\", \"create\", \"client\", \"lawfirm\"]\n      }, {\n        id: \"lambda-get-client-snapshots\",\n        name: \"Get Client Snapshots\",\n        functionName: \"als-lawfirm-getclientsnapshots\",\n        type: \"lambda\",\n        category: categories.SNAPSHOTS,\n        description: \"Get client snapshots\",\n        disabled: true,\n        tags: [\"snapshot\", \"client\", \"list\", \"lawfirm\"]\n      },\n      // Logging\n      {\n        id: \"lambda-log-ab-test\",\n        name: \"Log A/B Test\",\n        functionName: \"als-public-logabtest\",\n        type: \"lambda\",\n        category: categories.ANALYTICS,\n        description: \"Log A/B test event\",\n        disabled: true,\n        tags: [\"analytics\", \"ab-test\", \"logging\", \"public\"]\n      }, {\n        id: \"lambda-log-event\",\n        name: \"Log Event\",\n        functionName: \"als-public-logevent\",\n        type: \"lambda\",\n        category: categories.ANALYTICS,\n        description: \"Log analytics event\",\n        disabled: true,\n        tags: [\"analytics\", \"event\", \"logging\", \"public\"]\n      },\n      // Unfreeze\n      {\n        id: \"lambda-send-unfreeze-email\",\n        name: \"Send Unfreeze Email\",\n        functionName: \"als-public-sendunfreezeemail\",\n        type: \"lambda\",\n        category: categories.UTILITIES,\n        description: \"Send unfreeze email to client\",\n        disabled: true,\n        tags: [\"client\", \"unfreeze\", \"email\", \"public\"]\n      }, {\n        id: \"lambda-unfreeze-client\",\n        name: \"Unfreeze Client\",\n        functionName: \"als-public-unfreezeclient\",\n        type: \"lambda\",\n        category: categories.UTILITIES,\n        description: \"Unfreeze client account\",\n        disabled: true,\n        tags: [\"client\", \"unfreeze\", \"public\"]\n      },\n      // UI backend helpers\n      {\n        id: \"lambda-get-exchange-rate\",\n        name: \"Get Exchange Rate\",\n        functionName: \"als-public-getexchangerate\",\n        type: \"lambda\",\n        category: categories.UTILITIES,\n        description: \"Get currency exchange rate\",\n        disabled: true,\n        tags: [\"currency\", \"exchange\", \"rate\", \"public\"]\n      }, {\n        id: \"lambda-postcode-lookup\",\n        name: \"Postcode Lookup\",\n        functionName: \"als-public-postcodelookup\",\n        type: \"lambda\",\n        category: categories.UTILITIES,\n        description: \"Lookup address by postcode\",\n        disabled: true,\n        tags: [\"address\", \"postcode\", \"lookup\", \"public\"]\n      },\n      // Automation\n      {\n        id: \"lambda-docx-templater\",\n        name: \"DOCX Templater\",\n        functionName: \"als-lawfirm-docxtemplater\",\n        type: \"lambda\",\n        category: categories.EXPORT,\n        description: \"Generate document from DOCX template\",\n        disabled: true,\n        tags: [\"document\", \"template\", \"automation\", \"lawfirm\"]\n      },\n      // Output to various file formats\n      {\n        id: \"lambda-create-csv\",\n        name: \"Create CSV\",\n        functionName: \"als-lawfirm-createcsv\",\n        type: \"lambda\",\n        category: categories.EXPORT,\n        description: \"Create CSV file\",\n        disabled: true,\n        tags: [\"export\", \"csv\", \"file\", \"lawfirm\"]\n      }, {\n        id: \"lambda-create-spreadsheet\",\n        name: \"Create Spreadsheet\",\n        functionName: \"als-lawfirm-createspreadsheet\",\n        type: \"lambda\",\n        category: categories.EXPORT,\n        description: \"Create spreadsheet file\",\n        disabled: true,\n        tags: [\"export\", \"spreadsheet\", \"excel\", \"lawfirm\"]\n      }, {\n        id: \"lambda-html-to-docx\",\n        name: \"HTML to DOCX\",\n        functionName: \"als-lawfirm-htmltodocx\",\n        type: \"lambda\",\n        category: categories.EXPORT,\n        description: \"Convert HTML to DOCX\",\n        disabled: true,\n        tags: [\"export\", \"html\", \"docx\", \"conversion\", \"lawfirm\"]\n      }, {\n        id: \"lambda-html-to-pdf\",\n        name: \"HTML to PDF\",\n        functionName: \"als-public-htmltopdf\",\n        type: \"lambda\",\n        category: categories.EXPORT,\n        description: \"Convert HTML to PDF\",\n        disabled: true,\n        tags: [\"export\", \"html\", \"pdf\", \"conversion\", \"public\"]\n      },\n      // Integration functions (third-party)\n      {\n        id: \"lambda-post-form-data\",\n        name: \"Post Form Data\",\n        functionName: \"als-lawfirm-postformdata\",\n        type: \"lambda\",\n        category: categories.INTEGRATION,\n        description: \"Post form data to external service\",\n        disabled: true,\n        tags: [\"integration\", \"form\", \"post\", \"lawfirm\"]\n      }, {\n        id: \"lambda-send-to-formily\",\n        name: \"Send to Formily\",\n        functionName: \"als-lawfirm-sendtoformily\",\n        type: \"lambda\",\n        category: categories.INTEGRATION,\n        description: \"Send data to Formily\",\n        disabled: true,\n        tags: [\"integration\", \"formily\", \"lawfirm\"]\n      }, {\n        id: \"lambda-send-to-ontraport\",\n        name: \"Send to Ontraport\",\n        functionName: \"als-lawfirm-sendtoontraport\",\n        type: \"lambda\",\n        category: categories.INTEGRATION,\n        description: \"Send data to Ontraport\",\n        disabled: true,\n        tags: [\"integration\", \"ontraport\", \"lawfirm\"]\n      }, {\n        id: \"lambda-send-client-to-syntaq\",\n        name: \"Send Client to Syntaq\",\n        functionName: \"als-sendclienttosyntaq\",\n        type: \"lambda\",\n        category: categories.INTEGRATION,\n        description: \"Send client to Syntaq\",\n        disabled: true,\n        tags: [\"integration\", \"syntaq\", \"client\"]\n      },\n      // Settify forms\n      {\n        id: \"lambda-create-form\",\n        name: \"Create Form\",\n        functionName: \"als-lawfirm-createform\",\n        type: \"lambda\",\n        category: categories.FORMS,\n        description: \"Create a new Settify form\",\n        disabled: true,\n        tags: [\"form\", \"create\", \"lawfirm\"]\n      }, {\n        id: \"lambda-delete-form\",\n        name: \"Delete Form\",\n        functionName: \"als-lawfirm-deleteform\",\n        type: \"lambda\",\n        category: categories.FORMS,\n        description: \"Delete a Settify form\",\n        disabled: true,\n        tags: [\"form\", \"delete\", \"lawfirm\"]\n      }, {\n        id: \"lambda-get-form\",\n        name: \"Get Form\",\n        functionName: \"als-public-getform\",\n        type: \"lambda\",\n        category: categories.FORMS,\n        description: \"Get Settify form data\",\n        disabled: true,\n        tags: [\"form\", \"get\", \"read\", \"public\"]\n      }, {\n        id: \"lambda-get-form-list\",\n        name: \"Get Form List\",\n        functionName: \"als-public-getformlist\",\n        type: \"lambda\",\n        category: categories.FORMS,\n        description: \"Get list of Settify forms\",\n        disabled: true,\n        tags: [\"form\", \"list\", \"public\"]\n      }, {\n        id: \"lambda-lock-form\",\n        name: \"Lock Form\",\n        functionName: \"als-lawfirm-lockform\",\n        type: \"lambda\",\n        category: categories.FORMS,\n        description: \"Lock a Settify form\",\n        disabled: true,\n        tags: [\"form\", \"lock\", \"lawfirm\"]\n      }, {\n        id: \"lambda-log-form-event\",\n        name: \"Log Form Event\",\n        functionName: \"als-public-logformevent\",\n        type: \"lambda\",\n        category: categories.FORMS,\n        description: \"Log form event\",\n        disabled: true,\n        tags: [\"form\", \"event\", \"logging\", \"public\"]\n      }, {\n        id: \"lambda-unlock-form\",\n        name: \"Unlock Form\",\n        functionName: \"als-lawfirm-unlockform\",\n        type: \"lambda\",\n        category: categories.FORMS,\n        description: \"Unlock a Settify form\",\n        disabled: true,\n        tags: [\"form\", \"unlock\", \"lawfirm\"]\n      }, {\n        id: \"lambda-update-form\",\n        name: \"Update Form\",\n        functionName: \"als-lawfirm-updateform\",\n        type: \"lambda\",\n        category: categories.FORMS,\n        description: \"Update Settify form\",\n        disabled: true,\n        tags: [\"form\", \"update\", \"lawfirm\"]\n      },\n      // Settify documents\n      {\n        id: \"lambda-create-document\",\n        name: \"Create Document\",\n        functionName: \"als-public-createdocument\",\n        type: \"lambda\",\n        category: categories.DOCUMENTS,\n        description: \"Create a new document\",\n        disabled: true,\n        tags: [\"document\", \"create\", \"public\"]\n      }, {\n        id: \"lambda-delete-document\",\n        name: \"Delete Document\",\n        functionName: \"als-public-deletedocument\",\n        type: \"lambda\",\n        category: categories.DOCUMENTS,\n        description: \"Delete a document\",\n        disabled: true,\n        tags: [\"document\", \"delete\", \"public\"]\n      }, {\n        id: \"lambda-get-catalogue\",\n        name: \"Get Catalogue\",\n        functionName: \"als-public-getcatalogue\",\n        type: \"lambda\",\n        category: categories.DOCUMENTS,\n        description: \"Get document catalogue\",\n        disabled: true,\n        tags: [\"document\", \"catalogue\", \"list\", \"public\"]\n      }, {\n        id: \"lambda-update-document\",\n        name: \"Update Document\",\n        functionName: \"als-lawfirm-updatedocument\",\n        type: \"lambda\",\n        category: categories.DOCUMENTS,\n        description: \"Update document\",\n        disabled: true,\n        tags: [\"document\", \"update\", \"lawfirm\"]\n      },\n      // Other functions\n      {\n        id: \"lambda-invite-friend\",\n        name: \"Invite Friend\",\n        functionName: \"als-public-invitefriend\",\n        type: \"lambda\",\n        category: categories.INVITATIONS,\n        description: \"Send friend invitation\",\n        disabled: true,\n        tags: [\"invitation\", \"friend\", \"public\"]\n      }, {\n        id: \"lambda-invite-spouse\",\n        name: \"Invite Spouse\",\n        functionName: \"als-public-invitespouse\",\n        type: \"lambda\",\n        category: categories.INVITATIONS,\n        description: \"Send spouse invitation\",\n        disabled: true,\n        tags: [\"invitation\", \"spouse\", \"public\"]\n      }, {\n        id: \"lambda-send-accountant-invite\",\n        name: \"Send Accountant Invite\",\n        functionName: \"als-public-sendaccountantinvite\",\n        type: \"lambda\",\n        category: categories.INVITATIONS,\n        description: \"Send accountant invitation\",\n        disabled: true,\n        tags: [\"invitation\", \"accountant\", \"public\"]\n      }, {\n        id: \"lambda-send-wills-reminder-invite\",\n        name: \"Send Wills Reminder Invite\",\n        functionName: \"als-public-sendwillsreminderinvite\",\n        type: \"lambda\",\n        category: categories.INVITATIONS,\n        description: \"Send wills reminder invitation\",\n        disabled: true,\n        tags: [\"invitation\", \"wills\", \"reminder\", \"public\"]\n      }];\n      this.commands = [...this.commands, ...lambdaCommands];\n    }\n\n    /**\n     * Register Latte API endpoints as commands.\n     * Parsed from @settify/latte-sdk API classes.\n     */\n    registerLatteCommands() {\n      const latteCommands = [\n      // LatteEchoApi - Testing\n      {\n        id: \"latte-echo\",\n        name: \"Echo\",\n        type: \"latte\",\n        category: categories.UTILITIES,\n        description: \"Echo test endpoint for Latte API\",\n        endpoint: \"/v1/echo\",\n        method: \"POST\",\n        serviceName: \"latteEcho\",\n        apiClass: \"LatteEchoApi\",\n        apiMethod: \"echo\",\n        disabled: false,\n        tags: [\"latte\", \"test\", \"echo\", \"debug\"],\n        payloadTemplate: {\n          helloWorld: \"this is an echo\"\n        }\n      },\n      // LatteFirmApi - Firms\n      {\n        id: \"latte-list-firms\",\n        name: \"List Firms\",\n        type: \"latte\",\n        category: categories.FIRM_MANAGEMENT,\n        description: \"List all firms with optional status filter\",\n        endpoint: \"/v1/firms\",\n        method: \"GET\",\n        apiClass: \"LatteFirmApi\",\n        apiMethod: \"listFirms\",\n        disabled: true,\n        tags: [\"latte\", \"firms\", \"list\"]\n      },\n      // LatteFirmClientRecordsApi - Client Records\n      {\n        id: \"latte-list-firm-client-records\",\n        name: \"List Firm Client Records\",\n        type: \"latte\",\n        category: categories.CLIENT,\n        description: \"List all client records for the current firm with optional filtering and expansion\",\n        endpoint: \"/v1/firm/clientRecords\",\n        method: \"GET\",\n        apiClass: \"LatteFirmClientRecordsApi\",\n        apiMethod: \"listFirmClientRecords\",\n        disabled: true,\n        tags: [\"latte\", \"client\", \"records\", \"list\"]\n      }, {\n        id: \"latte-get-firm-client-record\",\n        name: \"Get Firm Client Record\",\n        type: \"latte\",\n        category: categories.CLIENT,\n        description: \"Get a specific client record by ID with optional expansion and format\",\n        endpoint: \"/v1/firm/clientRecords/{clientRecordId}\",\n        method: \"GET\",\n        apiClass: \"LatteFirmClientRecordsApi\",\n        apiMethod: \"getFirmClientRecord\",\n        disabled: true,\n        tags: [\"latte\", \"client\", \"record\", \"get\", \"read\"]\n      },\n      // LatteFirmFilesApi - File Management\n      {\n        id: \"latte-list-firm-files\",\n        name: \"List Firm Files\",\n        type: \"latte\",\n        category: categories.FILES,\n        description: \"List files from a specific category and optional subpath\",\n        endpoint: \"/v1/firm/files/{category}/{subPath}\",\n        method: \"GET\",\n        apiClass: \"LatteFirmFilesApi\",\n        apiMethod: \"listFirmFiles\",\n        disabled: true,\n        tags: [\"latte\", \"files\", \"list\", \"storage\"]\n      }, {\n        id: \"latte-upload-firm-file\",\n        name: \"Upload Firm File\",\n        type: \"latte\",\n        category: categories.FILES,\n        description: \"Get a signed URL to upload a file to firm storage\",\n        endpoint: \"/v1/firm/files/{category}/{subPath}\",\n        method: \"PUT\",\n        apiClass: \"LatteFirmFilesApi\",\n        apiMethod: \"uploadFirmFile\",\n        disabled: true,\n        tags: [\"latte\", \"files\", \"upload\", \"storage\"]\n      }, {\n        id: \"latte-delete-firm-file\",\n        name: \"Delete Firm File\",\n        type: \"latte\",\n        category: categories.FILES,\n        description: \"Delete a file from firm storage\",\n        endpoint: \"/v1/firm/files/{category}/{subPath}\",\n        method: \"DELETE\",\n        apiClass: \"LatteFirmFilesApi\",\n        apiMethod: \"deleteFirmFile\",\n        disabled: true,\n        tags: [\"latte\", \"files\", \"delete\", \"storage\"]\n      },\n      // LattePredictionApi - AI/ML\n      {\n        id: \"latte-predict\",\n        name: \"Predict\",\n        type: \"latte\",\n        category: categories.ANALYTICS,\n        description: \"Get AI predictions for a client record\",\n        endpoint: \"/v1/prediction\",\n        method: \"POST\",\n        apiClass: \"LattePredictionApi\",\n        apiMethod: \"predict\",\n        serviceName: \"lattePrediction\",\n        disabled: false,\n        tags: [\"latte\", \"prediction\", \"ai\", \"ml\"],\n        requiredArgs: [\"clientID\"],\n        payloadTemplate: {\n          clientRecordId: \"{clientID}\"\n        }\n      },\n      // LatteAiSummary - OpenAI\n      {\n        id: \"latte-ai-summary\",\n        name: \"AI Summary\",\n        type: \"latte\",\n        category: categories.ANALYTICS,\n        description: \"Get AI summary for a client record\",\n        endpoint: \"/features/ai/summary\",\n        method: \"POST\",\n        apiClass: \"LatteAiApi\",\n        serviceName: \"latteAiSummary\",\n        apiMethod: \"getAiSummary\",\n        disabled: false,\n        tags: [\"latte\", \"summary\", \"ai\", \"openai\"],\n        requiredArgs: [\"clientID\"],\n        payloadTemplate: {\n          clientRecordId: \"{clientID}\"\n        }\n      },\n      // FirmApi (Lambda-based via SDK) - Firm Management\n      {\n        id: \"latte-sdk-get-firms\",\n        name: \"Get Firms (SDK)\",\n        type: \"latte\",\n        category: categories.FIRM_MANAGEMENT,\n        description: \"Get all firms via SDK (wraps Lambda)\",\n        apiClass: \"FirmApi\",\n        apiMethod: \"getFirms\",\n        functionName: \"als-admin-getfirms\",\n        disabled: true,\n        tags: [\"latte\", \"sdk\", \"firms\", \"admin\"]\n      }, {\n        id: \"latte-sdk-get-firm-details\",\n        name: \"Get Firm Details (SDK)\",\n        type: \"latte\",\n        category: categories.FIRM_MANAGEMENT,\n        description: \"Get firm details via SDK (wraps Lambda)\",\n        apiClass: \"FirmApi\",\n        apiMethod: \"getFirmDetails\",\n        functionName: \"als-lawfirm-getfirmdetails\",\n        disabled: true,\n        tags: [\"latte\", \"sdk\", \"firm\", \"details\", \"lawfirm\"]\n      }, {\n        id: \"latte-sdk-get-firm-offices\",\n        name: \"Get Firm Offices (SDK)\",\n        type: \"latte\",\n        category: categories.FIRM_MANAGEMENT,\n        description: \"Get firm offices via SDK (wraps Lambda)\",\n        apiClass: \"FirmApi\",\n        apiMethod: \"getFirmOffices\",\n        functionName: \"als-public-getfirmoffices\",\n        disabled: true,\n        tags: [\"latte\", \"sdk\", \"firm\", \"offices\", \"public\"]\n      }, {\n        id: \"latte-sdk-get-firm-settings\",\n        name: \"Get Firm Settings (SDK)\",\n        type: \"latte\",\n        category: categories.FIRM_MANAGEMENT,\n        description: \"Get firm settings via SDK (wraps Lambda)\",\n        apiClass: \"FirmApi\",\n        apiMethod: \"getFirmSettings\",\n        functionName: \"als-public-getfirmsettings\",\n        disabled: true,\n        tags: [\"latte\", \"sdk\", \"firm\", \"settings\", \"public\"]\n      }, {\n        id: \"latte-sdk-get-firm-settings-help\",\n        name: \"Get Firm Settings Help (SDK)\",\n        type: \"latte\",\n        category: categories.FIRM_MANAGEMENT,\n        description: \"Get help for firm settings via SDK (wraps Lambda)\",\n        apiClass: \"FirmApi\",\n        apiMethod: \"getFirmSettingsHelp\",\n        functionName: \"als-lawfirm-getfirmsettingshelp\",\n        disabled: true,\n        tags: [\"latte\", \"sdk\", \"firm\", \"settings\", \"help\", \"lawfirm\"]\n      }, {\n        id: \"latte-sdk-initialise-firm\",\n        name: \"Initialise Firm (SDK)\",\n        type: \"latte\",\n        category: categories.FIRM_MANAGEMENT,\n        description: \"Initialise a firm via SDK (wraps Lambda)\",\n        apiClass: \"FirmApi\",\n        apiMethod: \"initialiseFirm\",\n        functionName: \"als-public-initialisefirm\",\n        disabled: true,\n        tags: [\"latte\", \"sdk\", \"firm\", \"initialise\", \"setup\", \"public\"]\n      }, {\n        id: \"latte-sdk-get-lead-list\",\n        name: \"Get Lead List (SDK)\",\n        type: \"latte\",\n        category: categories.FIRM_MANAGEMENT,\n        description: \"Get lead list via SDK (wraps Lambda)\",\n        apiClass: \"FirmApi\",\n        apiMethod: \"getLeadList\",\n        functionName: \"als-lawfirm-getleadlist\",\n        disabled: true,\n        tags: [\"latte\", \"sdk\", \"leads\", \"list\", \"lawfirm\"]\n      }, {\n        id: \"latte-sdk-get-firm-users\",\n        name: \"Get Firm Users (SDK)\",\n        type: \"latte\",\n        category: categories.FIRM_MANAGEMENT,\n        description: \"Get firm users via SDK (wraps Lambda)\",\n        apiClass: \"FirmApi\",\n        apiMethod: \"getFirmUsers\",\n        functionName: \"als-lawfirm-getfirmusers\",\n        disabled: true,\n        tags: [\"latte\", \"sdk\", \"users\", \"firm\", \"lawfirm\"]\n      }];\n      this.commands = [...this.commands, ...latteCommands];\n    }\n\n    /**\n     * Get all commands.\n     * @returns {Array} All registered commands (only enabled)\n     */\n    getAllCommands() {\n      return this.commands.filter(cmd => !cmd.disabled);\n    }\n\n    /**\n     * Get commands by category.\n     * @param {string} category - The category to filter by\n     * @returns {Array} Commands in the specified category (only enabled)\n     */\n    getCommandsByCategory(category) {\n      return this.commands.filter(cmd => cmd.category === category && !cmd.disabled);\n    }\n\n    /**\n     * Get all unique categories.\n     * @returns {Array} Array of unique category names (from enabled commands only)\n     */\n    getCategories() {\n      return [...new Set(this.commands.filter(cmd => !cmd.disabled).map(cmd => cmd.category))].sort();\n    }\n\n    /**\n     * Search commands by name, description, or tags.\n     * @param {string} query - The search query\n     * @returns {Array} Matching commands (only enabled)\n     */\n    searchCommands(query) {\n      const enabledCommands = this.commands.filter(cmd => !cmd.disabled);\n      if (!query || query.trim() === \"\") {\n        return enabledCommands;\n      }\n      const lowerQuery = query.toLowerCase().trim();\n      return enabledCommands.filter(cmd => {\n        return cmd.name.toLowerCase().includes(lowerQuery) || cmd.description.toLowerCase().includes(lowerQuery) || cmd.category.toLowerCase().includes(lowerQuery) || cmd.tags.some(tag => tag.toLowerCase().includes(lowerQuery)) || cmd.functionName?.toLowerCase().includes(lowerQuery) || cmd.endpoint?.toLowerCase().includes(lowerQuery);\n      });\n    }\n\n    /**\n     * Get a command by ID.\n     * @param {string} id - The command ID\n     * @returns {Object|null} The command object or null if not found (searches all commands including disabled)\n     */\n    getCommandById(id) {\n      return this.commands.find(cmd => cmd.id === id) || null;\n    }\n\n    /**\n     * Formats a payload template by replacing placeholders with actual values.\n     */\n    formatPayloadTemplate(template, {\n      clientID,\n      firmID\n    } = {}) {\n      if (!template) {\n        return {};\n      }\n      const templateStr = JSON.stringify(template);\n\n      // Build replacement map\n      const replacements = {\n        clientID: clientID || \"\",\n        firmID: firmID || \"\"\n      };\n\n      // Replace all placeholders\n      let formattedStr = templateStr;\n      Object.keys(replacements).forEach(key => {\n        const placeholder = `{${key}}`;\n        formattedStr = formattedStr.replaceAll(placeholder, replacements[key]);\n      });\n      return JSON.parse(formattedStr);\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"commands\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return [];\n    }\n  }), _class);\n});","define(\"settify-mvp/services/console\", [\"exports\", \"@ember/service\", \"@glimmer/tracking\"], function (_exports, _service, _tracking) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@ember/service\",0,\"@glimmer/tracking\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let consoleService = _exports.default = (_class = class consoleService extends _service.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"latteFirmClientRecords\", _descriptor, this);\n      _initializerDefineProperty(this, \"lattePrediction\", _descriptor2, this);\n      _initializerDefineProperty(this, \"latteAiSummary\", _descriptor3, this);\n      _initializerDefineProperty(this, \"latteFirm\", _descriptor4, this);\n      _initializerDefineProperty(this, \"latteEcho\", _descriptor5, this);\n      _initializerDefineProperty(this, \"cache\", _descriptor6, this);\n      _initializerDefineProperty(this, \"selectedFirm\", _descriptor7, this);\n      _initializerDefineProperty(this, \"selectedClient\", _descriptor8, this);\n    }\n    // Manage console state\n    setFirm(firm) {\n      this.selectedFirm = firm;\n      this.selectedClient = null; // Clear client state\n\n      // Store firm in cache\n      this.cache.write({\n        namespace: \"current\",\n        key: \"firmId\",\n        value: firm.firmID\n      });\n    }\n    setClient(client) {\n      this.selectedClient = client;\n\n      // Store client in cache\n      this.cache.write({\n        namespace: \"current\",\n        key: \"clientId\",\n        value: client.id\n      });\n    }\n    clear() {\n      this.selectedFirm = null;\n      this.selectedClient = null;\n\n      // Clear from cache\n      this.cache.remove({\n        namespace: \"current\",\n        key: \"firmId\"\n      });\n      this.cache.remove({\n        namespace: \"current\",\n        key: \"clientId\"\n      });\n    }\n    async getTestFirms() {\n      try {\n        const allFirms = await this.latteFirm.listFirms();\n\n        // Filter only test firms (firmID starting with 000000000-)\n        const testFirms = allFirms?.filter(firm => {\n          return firm.firmID?.startsWith(\"000000000-\") && firm.status === \"Active\";\n        }) ?? [];\n        return testFirms;\n      } catch (error) {\n        return [];\n      }\n    }\n    async getFirmClients() {\n      try {\n        const response = await this.latteFirmClientRecords.listFirmClientRecords();\n        return response?.data || null;\n      } catch (error) {\n        console.error(\"Management API: searchRecords failed\", error);\n        throw error;\n      }\n    }\n    async getClient(clientId) {\n      if (!clientId) return null;\n      try {\n        const response = await this.latteFirmClientRecords.getClientRecord({\n          clientRecordId: clientId,\n          format: \"html\"\n        });\n        return response?.data || null;\n      } catch (error) {\n        console.error(`Management API: getRecord failed ${clientId}`, error);\n        return null;\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"latteFirmClientRecords\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"lattePrediction\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"latteAiSummary\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"latteFirm\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"latteEcho\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"cache\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"selectedFirm\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"selectedClient\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _class);\n});","define(\"settify-mvp/services/cookies\", [\"exports\", \"ember-cookies/services/cookies\"], function (_exports, _cookies) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _cookies.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-cookies/services/cookies\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/services/document-client-brief\", [\"exports\", \"@ember/service\", \"jquery\"], function (_exports, _service, _jquery) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"jquery\"eaimeta@70e063a35619d71f\n  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }\n  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\n  function _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n  /**\n   * Attempted to move all \"HTML\" related calls into one class. Ideally this needs to die a horrible, horrible death.\n   * Reading and generating the dom for document generation is nasty process.\n   */\n  var _DocumentClientBrief_brand = /*#__PURE__*/new WeakSet();\n  class DocumentClientBrief extends _service.default {\n    constructor(...args) {\n      super(...args);\n      _classPrivateMethodInitSpec(this, _DocumentClientBrief_brand);\n    }\n    /**\n     * Function used to scrape the uno client brief html and send it to the backend for conversion to pdf/html.\n     *\n     * @param options = { includePdfElements, targetID, styleClass }\n     * @returns {null|string}\n     */\n    generateBriefHTML({\n      targetID = \"client-brief\",\n      includePdfElements = false,\n      styleClass = \"\"\n    }) {\n      const clonedElement = _assertClassBrand(_DocumentClientBrief_brand, this, _getHTML).call(this, includePdfElements, targetID);\n      let htmlContent = \"\";\n      if (clonedElement) {\n        const content = `\n      <html class=\"modern\">\n        <head>\n          <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n          <link href='https://fonts.googleapis.com/css?family=Lato:300,400,900' rel='stylesheet' type='text/css'>\n          <script src=\"https://kit.fontawesome.com/ba16d22322.js\" crossorigin=\"anonymous\"></script>\n          <style> ${_assertClassBrand(_DocumentClientBrief_brand, this, _getTailwindCss).call(this)} ${_assertClassBrand(_DocumentClientBrief_brand, this, _getCustomCss).call(this, includePdfElements)} </style>\n        </head>\n        <body id=\"${targetID}\" class=\"${styleClass}\">\n          ${clonedElement.html().replace(/<!---->/g, \"\")}\n        </body>\n      </html>`;\n        htmlContent = content.replace(/\\s+/g, \" \").trim();\n      }\n      return htmlContent;\n    }\n  }\n  _exports.default = DocumentClientBrief;\n  function _getHTML(includePdfElements = false, targetID = \"client-brief\") {\n    const element = (0, _jquery.default)(`#${targetID}`); // eslint-disable-line ember/no-jquery\n    if (element.length === 0) {\n      // No element found with the specified ID\n      return \"\";\n    }\n    if (includePdfElements) {\n      _assertClassBrand(_DocumentClientBrief_brand, this, _markElementsForRemoval).call(this, element, \":hidden:not(.pdf-only, .pdf-include)\", \".pdf-include, .pdf-only\");\n    } else {\n      _assertClassBrand(_DocumentClientBrief_brand, this, _markElementsForRemoval).call(this, element);\n    }\n    return _assertClassBrand(_DocumentClientBrief_brand, this, _cloneElementAndRemoveMarked).call(this, element);\n  }\n  // We mark hidden elements so we can remove them\n  // In some cases, we need to make sure any of the hidden elements parents don't have pdf-only or pdf-include before removing\n  function _markElementsForRemoval(element, selector = \":hidden\", parentSelector = \"\") {\n    element.find(selector).filter((_, el) => !parentSelector || (0, _jquery.default)(el).parents(parentSelector).length === 0) // eslint-disable-line ember/no-jquery\n    .addClass(\"marked-for-removal\");\n  }\n  function _cloneElementAndRemoveMarked(element) {\n    return element.clone().find(\".marked-for-removal\").remove().end();\n  }\n  function _getTailwindCss() {\n    let cssRules = \"\";\n    for (const sheet of document.styleSheets) {\n      if (!sheet?.href?.includes(\"tailwind.css\")) {\n        // Not a tailwind css file, skip\n        continue;\n      }\n      for (const rule of sheet.cssRules) {\n        cssRules += rule.cssText || \"\";\n      }\n    }\n    return cssRules;\n  }\n  /**\n   * These styles should be kept minimal and specific to PDF/Word changes. Most changes for PDF should\n   * be done inside Tailwind using clientbrief.css... until we move all this to the backend!\n   */\n  function _getCustomCss(includePdfElements) {\n    return `\n    /* PDF/Word only styles */\n    html { font-size: 14px }\n    table, tr, td, th, tbody, thead, tfoot { page-break-inside: auto !important; }\n    .keep-together { page-break-inside: avoid !important; }\n    .pdf-exclude { display: none !important; }\n    .pdf-include { display: inline-block !important; }\n    ${includePdfElements ? \".pdf-only { display: block; }\" : \"\"}\n    `;\n  }\n});","define(\"settify-mvp/services/document-manager\", [\"exports\", \"@ember/service\", \"file-saver\"], function (_exports, _service, _fileSaver) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"file-saver\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  /* global X2JS */\n  let DocumentManagerService = _exports.default = (_dec = (0, _service.inject)(\"dynamic-config\"), _class = class DocumentManagerService extends _service.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"config\", _descriptor, this);\n      _initializerDefineProperty(this, \"documentClientBrief\", _descriptor2, this);\n      _initializerDefineProperty(this, \"awsService\", _descriptor3, this);\n      _initializerDefineProperty(this, \"lambda\", _descriptor4, this);\n      _initializerDefineProperty(this, \"store\", _descriptor5, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor6, this);\n    }\n    getClientUploadedDocuments(client) {\n      if (!client) return [];\n      const {\n        documents\n      } = this.store.peekRecord(\"catalogue\", client.clientID) || {};\n      return documents?.filter(doc => !doc.expired) || [];\n    }\n    getAvailableDocuments(client) {\n      if (!client?.practiceArea) {\n        return [];\n      }\n      const {\n        settings: practiceAreaSettings\n      } = this.firm.getPracticeAreaSettings(client.practiceArea);\n      const documentList = [{\n        name: \"PDF\",\n        value: \"pdf\",\n        enabled: true,\n        // Always enabled\n        mimeType: \"application/text;charset=utf-8\",\n        generate: async (client, options) => this.generateBriefPdf(client, options)\n      }, {\n        name: \"Word\",\n        value: \"docx\",\n        enabled: practiceAreaSettings?.admin?.allowWordDownload,\n        mimeType: \"application/text;charset=utf-8\",\n        generate: async (client, options) => this.generateBriefWord(client, options)\n      }, {\n        name: \"Balance sheet\",\n        value: \"xlsx\",\n        enabled: practiceAreaSettings?.admin?.allowBalanceSheetDownload && client?.practiceArea === \"Family\",\n        mimeType: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8\",\n        generate: async (client, options) => this.generateBalanceSheet(client, options)\n      }, {\n        name: \"Assets and Liabilities\",\n        value: \"xlsx\",\n        enabled: client?.practiceArea === \"Family\",\n        mimeType: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8\",\n        generate: async (client, options) => this.generateAssetsAndLiabilities(client, options)\n      }, {\n        name: \"XML\",\n        value: \"xml\",\n        enabled: practiceAreaSettings?.admin?.allowXMLDownload,\n        type: \"application/xml;charset=utf-8\",\n        generate: async client => this.generateBriefXML(client)\n      }, {\n        name: \"JSON\",\n        value: \"json\",\n        enabled: practiceAreaSettings?.admin?.allowJSONDownload,\n        type: \"application/json;charset=utf-8\",\n        generate: async client => this.generateBriefJSON(client)\n      }, {\n        name: \"Client uploads\",\n        value: \"client-uploads\",\n        enabled: this.getClientUploadedDocuments(client).length,\n        generate: async (client, options) => this.generateClientUploadedDocuments(client, options)\n      }];\n\n      // TODO: Implement a download 'All' option. Have it only available when there are more than 1 item in the filtered array\n      return documentList.filter(document => document.enabled);\n    }\n\n    /**\n     * Generates a PDF file from the HTML of the brief for a given client.\n     * @param {Object} client - The client object for whom the PDF is generated.\n     * @param {Object} options - Options to control the output and processing of the PDF.\n     * @returns {Promise<Array>} - A promise that resolves to an array containing an object with either the PDF buffer data (downloading) or S3 bucket and key info (emailing). This array format facilitates consistent handling of document downloads and batch processing.\n     */\n    async generateBriefPdf(client, options = {}) {\n      const fileName = this.generateFileName(client, \"pdf\");\n      const payload = this._constructPayload(client, fileName, {\n        ...options,\n        includePdfElements: true\n      });\n      return this._generatePDF(fileName, payload, options);\n    }\n\n    /**\n     * Generates a PDF file from the HTML of the review page for a given client.\n     * @param {Object} client - The client object for whom the PDF is generated.\n     * @param {Object} options - Options to control the output and processing of the PDF.\n     * @returns {Promise<Array>} - A promise that resolves to an array containing an object with either the PDF buffer data (downloading) or S3 bucket and key info (emailing). This array format facilitates consistent handling of document downloads and batch processing.\n     */\n    async generateReviewPdf(client, options = {}) {\n      const fileName = this.generateFileName(client, \"pdf\", options.filenameExtra);\n      const payload = this._constructPayload(client, fileName, {\n        ...options,\n        includePdfElements: true\n      });\n      return this._generatePDF(fileName, payload, options);\n    }\n\n    /**\n     * Generates a Word document (.docx) from the HTML of the brief for a given client.\n     * @param {Object} client - The client object for whom the document is generated.\n     * @param {Object} options - Options to control the output and processing of the document.\n     * @returns {Promise<Array>} - A promise that resolves to an array containing an object with either the document buffer data (downloading) or bucket and key info (emailing). This array format facilitates consistent handling of document downloads and batch processing.\n     */\n    async generateBriefWord(client, options = {}) {\n      const fileName = this.generateFileName(client, \"docx\");\n      const payload = this._constructPayload(client, fileName, options);\n      const data = await this.lambda.invoke(this.lambda.htmltodocxLambda, payload).then(this.lambda.processResponse); // Generates docx and either returns buffer if downloading or saves to S3 if emailing\n      return options?.uploadToStorage ? [{\n        bucket: payload.bucket,\n        key: payload.key,\n        fileName\n      }] : [{\n        data,\n        fileName\n      }];\n    }\n\n    /**\n     * Downloads client-uploaded documents from S3, or returns their S3 keys and bucket info if emailing.\n     * Additionally, it marks each retrieved document as downloaded.\n     * @param {Object} client - The client whose uploaded documents are to be retrieved.\n     * @param {Object} options - Options dictating how documents are processed, specifically whether to only retrieve S3 info without downloading.\n     * @returns {Promise<Array>} - A promise that resolves to an array of objects containing either the document data (downloading) or S3 bucket and key info (emailing).\n     */\n    async generateClientUploadedDocuments(client, options = {}) {\n      const documents = this.getClientUploadedDocuments(client);\n      const s3Client = await this.awsService.getS3ByType(\"clientdocuments\");\n      const bucket = s3Client.config.params.Bucket;\n      const documentData = await Promise.all(documents.map(async document => {\n        if (options?.uploadToStorage) return {\n          fileName: document.fileName,\n          key: document.S3Key,\n          bucket\n        }; // Just return the bucket information to send in an email\n        const {\n          Body,\n          ContentType\n        } = await s3Client.getObject({\n          Key: document.S3Key\n        }).promise(); // Get document data from S3\n        return {\n          data: Body,\n          fileName: document.fileName,\n          mimeType: ContentType\n        };\n      }));\n      documents.forEach(document => this._markDocumentAsDownloaded(document, client)); // Mark each document as downloaded\n      return documentData;\n    }\n\n    /**\n     * Generates an XML representation of client data.\n     * @param {Object} client - The client object for whom the XML data is generated.\n     * @returns {Promise<Array>} - A promise that resolves to an array containing the XML data and the file name. This array format facilitates consistent handling of document downloads and batch processing.\n     * @todo Add the ability to email the document.\n     */\n    async generateBriefXML(client) {\n      const clientExport = await this._generateAttributesFromForm(client);\n      const fileName = this.generateFileName(client, \"xml\");\n      const clientRecord = {\n        _source: clientExport._source,\n        firmID: clientExport[\"firm-id\"],\n        practiceArea: clientExport[\"practice-area\"],\n        clientID: clientExport[\"client-id\"],\n        ...clientExport.helpers\n      };\n      const x2js = new X2JS();\n      const data = x2js.json2xml_str({\n        client: clientRecord\n      });\n      return [{\n        data,\n        fileName\n      }];\n    }\n\n    /**\n     * Generates a JSON representation of client data.\n     * @param {Object} client - The client object for whom the JSON data is generated.\n     * @returns {Promise<Array>} - A promise that resolves to an array containing the JSON data and the file name. his array format facilitates consistent handling of document downloads and batch processing. This array format facilitates consistent handling of document downloads and batch processing.\n     * @todo Add the ability to email the document.\n     */\n    async generateBriefJSON(client) {\n      const clientExport = await this._generateAttributesFromForm(client);\n      const fileName = this.generateFileName(client, \"json\");\n      const clientRecord = {\n        _source: clientExport._source,\n        firmID: clientExport[\"firm-id\"],\n        practiceArea: clientExport[\"practice-area\"],\n        clientID: clientExport[\"client-id\"],\n        ...clientExport.helpers\n      };\n      const data = JSON.stringify(clientRecord, null, 2);\n      return [{\n        data,\n        fileName\n      }];\n    }\n\n    /**\n     * Generates spreadsheet document with a call to AWS createspreadsheet function\n     * @param {Object} client - The client object for whom the document is generated.\n     * @param {Object} options - Options to control the output and processing of the XLSX document.\n     * @returns {Promise<Array>} - A promise that resolves to an array containing an object with either the XLSX buffer data (downloading) or S3 bucket and key info (emailing).\n     */\n    async generateBalanceSheet(client, options = {}) {\n      const fileName = this.generateFileName(client, \"xlsx\", \" - Balance Sheet\");\n      const {\n        clientID,\n        firmID,\n        inductions\n      } = client;\n      const payload = {\n        clientID,\n        firmID,\n        useClientTransformer: true,\n        documentType: \"balance_sheet\",\n        formId: inductions[0].id,\n        repeatToken: inductions[0].repeatToken\n      };\n      if (options?.uploadToStorage) {\n        // If we are uploading, we need to add where to save the document once it has been generated\n        payload.bucket = this.config.settings.Buckets.clientdocuments;\n        payload.key = `tmp/${this.config.settings.adminIdentityPoolID}/${fileName}`;\n      }\n      const data = await this.lambda.invoke(this.lambda.createspreadsheetLambda, payload).then(this.lambda.processResponse);\n      return options?.uploadToStorage ? [{\n        bucket: payload.bucket,\n        key: payload.key,\n        fileName\n      }] : [{\n        data,\n        fileName\n      }];\n    }\n    async generateAssetsAndLiabilities(client, options = {}) {\n      const fileName = this.generateFileName(client, \"xlsx\", \" - Property Pool\");\n      const {\n        clientID,\n        firmID,\n        inductions\n      } = client;\n      const payload = {\n        clientID,\n        firmID,\n        useClientTransformer: true,\n        firmName: this.firm.name,\n        formId: inductions[0].id,\n        repeatToken: inductions[0].repeatToken\n      };\n      if (options?.uploadToStorage) {\n        // If we are uploading, we need to add where to save the document once it has been generated\n        payload.bucket = this.config.settings.Buckets.clientdocuments;\n        payload.key = `tmp/${this.config.settings.adminIdentityPoolID}/${fileName}`;\n      }\n      const data = await this.lambda.invoke(this.lambda.createspreadsheetLambda, payload).then(this.lambda.processResponse); // Generates docx and either returns buffer if downloading or saves to S3 if emailing\n      return options?.uploadToStorage ? [{\n        bucket: payload.bucket,\n        key: payload.key,\n        fileName\n      }] : [{\n        data,\n        fileName\n      }];\n    }\n    async _generateAttributesFromForm(client) {\n      const attributes = this._generateAttributesForExport(client);\n      const record = await client.exportRecord();\n      attributes.helpers = {\n        ...attributes.helpers,\n        ...record\n      }; // Append any form export attributes to the helpers attributes\n      return attributes;\n    }\n\n    /**\n     * Generates payload used to call htmltopdfLambda function\n     * @param {Object} client - The client object for whom the PDF is generated.\n     * @param {Object} fileName - File name used for S3 object name when emailing document.\n     * @param {Object} options - Options to control the output and processing of the PDF.\n     * @returns {Promise<Array>} - A promise that resolves to an array containing an object with either the PDF buffer data (downloading) or S3 bucket and key info (emailing). This array format facilitates consistent handling of document downloads and batch processing.\n     */\n    _constructPayload(client, fileName, options = {}) {\n      const {\n        displayName,\n        clientID,\n        firmID\n      } = client;\n      const htmlContent = this.documentClientBrief.generateBriefHTML(options);\n      const payload = {\n        htmlContent,\n        displayName,\n        clientID,\n        firmID\n      };\n      if (options?.uploadToStorage) {\n        // If we are uploading, we need to add where to save the document once it has been generated\n        payload.bucket = this.config.settings.Buckets.clientdocuments;\n        payload.key = `tmp/${this.config.settings.adminIdentityPoolID}/${fileName}`;\n      }\n      return payload;\n    }\n    _generateAttributesForExport(client) {\n      const adapter = this.store.adapterFor(\"client\");\n      const source = JSON.parse(adapter.getReferenceJSON(client.id));\n      source.attributes._source = \"Settify\";\n      source.attributes.helpers = {\n        displayName: client.displayName\n      };\n      return source.attributes;\n    }\n    _markDocumentAsDownloaded(document, client) {\n      // Mark this document as downloaded\n      const payload = {\n        clientID: client?.clientID,\n        firmID: this.firm.id,\n        rowID: document.id,\n        details: {\n          firmDownloaded: true\n        }\n      };\n      return this.lambda.invoke(this.lambda.updateDocumentLambda, payload);\n    }\n    generateFileName(client, fileExtension = \"docx\", filenameExtra = \"\") {\n      return `${client.displayName} ${filenameExtra} (${client.practiceArea}).${fileExtension}`.replace(/\\s+/g, \" \").trim();\n    }\n\n    /**\n     * Generates PDF buffer with a call to AWS htmltopdfLambda function\n     * @param {Object} fileName - PDF file name.\n     * @param {Object} client - The client object for whom the PDF is generated.\n     * @param {Object} options - Options to control the output and processing of the PDF.\n     * @returns {Promise<Array>} - A promise that resolves to an array containing an object with either the PDF buffer data (downloading) or S3 bucket and key info (emailing). This array format facilitates consistent handling of document downloads and batch processing.\n     */\n    async _generatePDF(fileName, payload, options) {\n      const data = await this.lambda.invoke(this.lambda.htmltopdfLambda, payload).then(this.lambda.processResponse); // Generates PDF and either returns buffer if downloading or saves to S3 if emailing\n      return options?.uploadToStorage ? [{\n        bucket: payload.bucket,\n        key: payload.key,\n        fileName\n      }] : [{\n        data,\n        fileName\n      }];\n    }\n    downloadBuffer(buffer, fileName, type = \"application/text;charset=utf-8\") {\n      const blob = new Blob([buffer], {\n        type\n      });\n      (0, _fileSaver.default)(blob, fileName);\n    }\n    emailDocument(client, emailOptions) {\n      const payload = {\n        firmID: client.firmID,\n        clientID: client.clientID,\n        practiceArea: client.practiceArea,\n        clientName: client.displayName,\n        template: emailOptions.template,\n        to: emailOptions.to,\n        cc: emailOptions.cc || [],\n        // The lambda function will fail if there isn't at least an empty array here\n        bcc: emailOptions.bcc || [],\n        // The lambda function will fail if there isn't at least an empty array here\n        bucketLocations: emailOptions.bucketLocations,\n        emailMessage: emailOptions.message,\n        fileExplanations: [{\n          document: \"\",\n          explanation: \"\"\n        }] // TODO: Update the lambda function to make this array optional\n      };\n      return this.lambda.invoke(this.lambda.emailSettifyDocuments, payload);\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"config\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"documentClientBrief\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"awsService\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"store\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/services/download-leads\", [\"exports\", \"@ember/service\", \"@glimmer/tracking\", \"settify-mvp/helpers/address-string\", \"moment\", \"settify-mvp/utils/get-conversion-type\"], function (_exports, _service, _tracking, _addressString, _moment, _getConversionType) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@glimmer/tracking\",0,\"settify-mvp/helpers/address-string\",0,\"moment\",0,\"settify-mvp/utils/get-conversion-type\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let DownloadLeadsService = _exports.default = (_class = class DownloadLeadsService extends _service.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor, this);\n      _initializerDefineProperty(this, \"lambda\", _descriptor2, this);\n      _initializerDefineProperty(this, \"downloadPercentage\", _descriptor3, this);\n      _defineProperty(this, \"maxClientsPerPage\", 50);\n    }\n    sanitiseState(s) {\n      if (!s || !s.toLowerCase) {\n        return \"\";\n      }\n      const lower = s.toLowerCase();\n      if ([\"nsw\", \"new south wales\"].includes(lower)) {\n        return \"NSW\";\n      }\n      if ([\"qld\", \"queensland\", \"q\"].includes(lower)) {\n        return \"QLD\";\n      }\n      if ([\"vic\", \"victoria\", \"v\"].includes(lower)) {\n        return \"VIC\";\n      }\n      if ([\"wa\", \"west australia\", \"western australia\"].includes(lower)) {\n        return \"WA\";\n      }\n      if ([\"sa\", \"south australia\"].includes(lower)) {\n        return \"VIC\";\n      }\n      if ([\"tas\", \"tasmania\", \"t\"].includes(lower)) {\n        return \"TAS\";\n      }\n      if ([\"nt\", \"northern territory\"].includes(lower)) {\n        return \"NT\";\n      }\n      if ([\"act\", \"australian capital territory\"].includes(lower)) {\n        return \"ACT\";\n      }\n      return s;\n    }\n\n    /**\n     * Due to how the backend does pagination using sql (LIMIT [offset,] row_count;) the code here looks a little odd; but rest assured it is correct\n     * page=1, size=50, is LIMIT 0, 50; page 2, page size 50, is LIMIT 50, 50, ... , page=10, size=50, is LIMIT 450, 50\n     */\n    async startDownload(request, conversionTypes) {\n      this.eventLogging.adminLog(null, this.eventLogging.adminIDs.allLeadsDownloadedCSV);\n      try {\n        const totalPages = Math.ceil(request.totalClients / this.maxClientsPerPage);\n        const paginator = {\n          maxClientsPerPage: this.maxClientsPerPage,\n          totalPages: totalPages,\n          currentPage: 1\n        };\n        const clientList = await this.downloadClientListPaginated(paginator, request);\n        return this.convertClientDataToCsv(clientList, request, conversionTypes);\n      } catch (error) {\n        this.eventLogging.logError(`Error downloading client list`, error);\n        throw error;\n      }\n    }\n    async downloadClientListPaginated(paginator, request) {\n      const clients = [];\n      while (paginator.currentPage <= paginator.totalPages) {\n        const payload = {\n          firmID: request.firmID,\n          restrictPracticeAreaTo: request.restrictPracticeAreaTo || null,\n          page: paginator.currentPage,\n          size: paginator.maxClientsPerPage,\n          sortColumn: \"becameLead\",\n          sortDirection: \"DESC\",\n          augment: {\n            firstName: true,\n            middleName: true,\n            surname: true,\n            phone: true,\n            email: true,\n            postalAddress: true,\n            preferredOffice: true,\n            preferredLawyer: true,\n            referralSource: true\n          }\n        };\n        const data = await this.lambda.invoke(this.lambda.getAugmentedLeadListLambda, payload).then(this.lambda.processResponse);\n        this.updateDownloadProgress(paginator);\n        clients.push(...data.leads);\n        ++paginator.currentPage;\n      }\n      return clients;\n    }\n    updateDownloadProgress(paginator) {\n      // console.log(\"downloading:\", paginator.currentPage, \"of\", paginator.totalPages);\n      this.downloadPercentage = Math.round(paginator.currentPage / paginator.totalPages * 100);\n    }\n    convertClientDataToCsv(clientsList = [], request, conversionTypes) {\n      let csvContent = \"Display name,First name,Middle name,Surname,Phone,Email,Address,Address Line One,Address Line Two,Address Line Three,Suburb,State,Postcode,Preferred Lawyer,Preferred Office,Began Settify,Finished Settify,Source,Referral source,Conflicted/unable to act?,Settify invoicing status,Your notes,Origin\";\n      if (request.includePracticeArea) {\n        csvContent = `PracticeArea,${csvContent}`;\n      }\n      csvContent += \"\\n\";\n      for (const clientData of clientsList) {\n        let leadInfo = \"\";\n        let {\n          name\n        } = clientData;\n        if (!clientData?.name || clientData?.name === \"null\") {\n          name = \"Name not provided\";\n        }\n        let provenance = \"Website\";\n        if (clientData.referral === \"invitation\") {\n          provenance = \"Invitation\";\n        }\n        let conflicted = \"\";\n        if (clientData.hasConflict === 1) {\n          conflicted = \"Yes\";\n        }\n        let status = clientData.invoiceType;\n        if (!status) {\n          status = \"\";\n        } else if (conversionTypes) {\n          const type = (0, _getConversionType.default)(status, conversionTypes);\n          if (type && type.longName) {\n            status = type.longName;\n          }\n        }\n        let optionalPracticeArea = \"\";\n        if (request.includePracticeArea) {\n          optionalPracticeArea = `${clientData.practiceArea},`;\n        }\n        const address = clientData.postalAddress || {};\n        leadInfo = `${optionalPracticeArea + [name, clientData.firstName, clientData.middleName, clientData.surname, clientData.phone, clientData.email, (0, _addressString.addressString)([address], {\n          newlines: true,\n          detailed: true\n        }), address.lineOne, address.lineTwo, address.lineThree, address.suburb, this.sanitiseState(address.state), address.postcode, clientData.preferredLawyer, clientData.preferredOffice, clientData.becameLead ? (0, _moment.default)(clientData.becameLead).format(request.dateFormat) : \"\", clientData.referredToFirm ? (0, _moment.default)(clientData.referredToFirm).format(request.dateFormat) : \"\", provenance, clientData.referralSource, conflicted, status, clientData.firmNotes || \"\", clientData.origin || \"\"].map(s => `\"${s || \"\"}\"`).join(\",\")}\\n`;\n        csvContent += leadInfo;\n      }\n      return csvContent;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"downloadPercentage\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return 0;\n    }\n  }), _class);\n});","define(\"settify-mvp/services/downtime-service\", [\"exports\", \"@ember/service\", \"@glimmer/tracking\", \"@ember/destroyable\", \"fetch\", \"settify-mvp/config/environment\"], function (_exports, _service, _tracking, _destroyable, _fetch, _environment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _baseUrl, _browserVisibilityKey, _pollTimer, _DowntimeService_brand;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@glimmer/tracking\",0,\"@ember/destroyable\",0,\"fetch\",0,\"settify-mvp/config/environment\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }\n  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }\n  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }\n  function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }\n  function _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const POLL_INTERVAL = 5 * 60 * 1000; // 5 minutes\n\n  /**\n   * This service is responsible for redirecting clients to downtime page when a scheduled downtime is found\n   */\n  let DowntimeService = _exports.default = (_dec = (0, _service.service)(\"dynamic-config\"), _class = (_baseUrl = /*#__PURE__*/new WeakMap(), _browserVisibilityKey = /*#__PURE__*/new WeakMap(), _pollTimer = /*#__PURE__*/new WeakMap(), _DowntimeService_brand = /*#__PURE__*/new WeakSet(), class DowntimeService extends _service.default {\n    constructor() {\n      super(...arguments);\n      /**\n       * Detects which `document.hidden` key is supported by the current browser.\n       * @returns {string|null} The property name ('hidden', 'msHidden', 'webkitHidden') or null\n       */\n      _classPrivateMethodInitSpec(this, _DowntimeService_brand);\n      _initializerDefineProperty(this, \"config\", _descriptor, this);\n      _initializerDefineProperty(this, \"router\", _descriptor2, this);\n      _initializerDefineProperty(this, \"session\", _descriptor3, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor4, this);\n      _initializerDefineProperty(this, \"downtimeStatus\", _descriptor5, this);\n      _initializerDefineProperty(this, \"hideDowntimeMessage\", _descriptor6, this);\n      _classPrivateFieldInitSpec(this, _baseUrl, \"https://cdn.settify.com.au/status.json\");\n      _classPrivateFieldInitSpec(this, _browserVisibilityKey, null);\n      _classPrivateFieldInitSpec(this, _pollTimer, null);\n      if (_environment.default.testing) return;\n\n      // Cache the visibility property once\n      _classPrivateFieldSet(_browserVisibilityKey, this, _assertClassBrand(_DowntimeService_brand, this, _getBrowserVisibilityKey).call(this));\n\n      // Register a cleanup of the timer on destroy\n      (0, _destroyable.registerDestructor)(this, () => _assertClassBrand(_DowntimeService_brand, this, _cleanUpPoll).call(this));\n      this.cautiouslyCheckDowntimeStatus();\n    }\n    /**\n     * Checks downtime status from CDN, but only when page is visible.\n     * Automatically schedules the next check.\n     */\n    async cautiouslyCheckDowntimeStatus() {\n      if (typeof document === \"undefined\") return;\n      if (_assertClassBrand(_DowntimeService_brand, this, _isPageHidden).call(this)) {\n        // Page is hidden - skip check and reschedule for later\n        _assertClassBrand(_DowntimeService_brand, this, _scheduleNextPoll).call(this);\n        return;\n      }\n      try {\n        const data = await _assertClassBrand(_DowntimeService_brand, this, _fetchStatus).call(this);\n        _assertClassBrand(_DowntimeService_brand, this, _handleDowntimeData).call(this, data);\n      } catch (error) {\n        this.eventLogging.logError(\"downtime-service: failed to fetch downtime status\", error, {\n          region: this.config?.settings?.Region\n        });\n      } finally {\n        _assertClassBrand(_DowntimeService_brand, this, _scheduleNextPoll).call(this);\n      }\n    }\n    closeDowntimeMessage() {\n      this.hideDowntimeMessage = true;\n    }\n  }), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"config\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"downtimeStatus\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"hideDowntimeMessage\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _class);\n  function _getBrowserVisibilityKey() {\n    if (typeof document === \"undefined\") return null;\n    if (typeof document.hidden !== \"undefined\") return \"hidden\";\n    if (typeof document.msHidden !== \"undefined\") return \"msHidden\";\n    if (typeof document.webkitHidden !== \"undefined\") return \"webkitHidden\";\n    return null;\n  }\n  /**\n   * Check if page is currently hidden\n   * @returns {boolean}\n   */\n  function _isPageHidden() {\n    if (!_classPrivateFieldGet(_browserVisibilityKey, this)) return false;\n    return Boolean(document?.[_classPrivateFieldGet(_browserVisibilityKey, this)]);\n  }\n  /**\n   * Schedules the next downtime status check\n   * Cancels any existing timer first\n   */\n  function _scheduleNextPoll() {\n    _assertClassBrand(_DowntimeService_brand, this, _cleanUpPoll).call(this);\n    _classPrivateFieldSet(_pollTimer, this, setTimeout(() => this.cautiouslyCheckDowntimeStatus(), POLL_INTERVAL));\n  }\n  /**\n   * Cancels the scheduled poll timer if one exists\n   */\n  function _cleanUpPoll() {\n    if (_classPrivateFieldGet(_pollTimer, this)) {\n      clearTimeout(_classPrivateFieldGet(_pollTimer, this));\n      _classPrivateFieldSet(_pollTimer, this, null);\n    }\n  }\n  /**\n   * Fetches the downtime status from a given Url.\n   * @return {Promise<*>}\n   */\n  async function _fetchStatus() {\n    const rawData = await (0, _fetch.default)(`${_classPrivateFieldGet(_baseUrl, this)}?nocache=${Date.now().toString()}`, {\n      method: \"GET\"\n    });\n    if (!rawData.ok) throw new Error(rawData?.status ?? \"Error fetching downtime status\");\n    return rawData.json();\n  }\n  /**\n   * Process downtime data and redirect if necessary\n   * @param {Object} data - The downtime status data\n   */\n  function _handleDowntimeData(data) {\n    const region = this.config?.settings?.Region;\n    const regionInfo = data?.[region];\n    if (!regionInfo) {\n      if (this.downtimeStatus) {\n        // No downtime status for our region, but downtimeStatus has content so we must have fixed the issue\n        this.downtimeStatus = null;\n      }\n      return;\n    }\n\n    // Our region has a downtime status\n    const isAdmin = this.session?.isAuthenticated && this.session?.data?.authenticated?.adminUser;\n    if (isAdmin) {\n      // User is Admin, set downtime status to adminUser data\n      this.downtimeStatus = regionInfo.adminUser;\n      if (regionInfo.adminUser.blockAdminUsage) {\n        this.router.transitionTo(\"v2.serverdown\");\n      }\n      return;\n    }\n\n    // User is a regular client\n    if (regionInfo.adminUser && regionInfo.client) {\n      regionInfo.client.blockAdminUsage = regionInfo.adminUser.blockAdminUsage;\n    }\n    this.downtimeStatus = regionInfo.client;\n    if (regionInfo.client && regionInfo.client.blockClientUsage) {\n      this.router.transitionTo(\"v2.serverdown\");\n    }\n  }\n});","define(\"settify-mvp/services/dynamic-config\", [\"exports\", \"rsvp\", \"@ember/service\", \"settify-mvp/config/environment\", \"settify-mvp/lib/settings\"], function (_exports, _rsvp, _service, _environment, _settings) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"rsvp\",0,\"@ember/service\",0,\"settify-mvp/config/environment\",0,\"settify-mvp/lib/settings\"eaimeta@70e063a35619d71f\n  /**\n   * This is used to detect our application configuration, firm and settings based on url segments\n   */\n  var _default = _exports.default = _service.default.extend({\n    cookies: (0, _service.inject)(),\n    firm: false,\n    domain: false,\n    settings: false,\n    localhost: false,\n    settingsPromise: null,\n    loaded: false,\n    init() {\n      this._super(...arguments);\n      // listed in priority order, first=default\n      this._supportedDomains = [{\n        id: \"au\",\n        name: \"Australia\",\n        icon: \"fa-globe-asia\",\n        tld: \".com.au\",\n        region: \"ap-southeast-2\",\n        environment: \"production\"\n      }, {\n        id: \"nz\",\n        name: \"New Zealand\",\n        icon: \"fa-globe-asia\",\n        tld: \".co.nz\",\n        region: \"ap-southeast-2\",\n        environment: \"production\"\n      }, {\n        id: \"uk\",\n        name: \"United Kingdom\",\n        icon: \"fa-globe-europe\",\n        tld: \".co.uk\",\n        region: \"eu-west-2\",\n        environment: \"production\"\n      }, {\n        id: \"ca\",\n        name: \"Canada\",\n        icon: \"fa-globe-americas\",\n        tld: \".ca\",\n        region: \"ca-central-1\",\n        environment: \"production\"\n      }, {\n        id: \"us\",\n        name: \"USA\",\n        icon: \"fa-globe-americas\",\n        tld: \".com\",\n        region: \"us-west-2\",\n        environment: \"production\"\n      }];\n      if (_environment.default.testing) {\n        // set some safe values for tests that depend on this (eg: firm.js service)\n        this.set(\"settings\", _settings.default.getTestSettings(this._supportedDomains[0]));\n        this.set(\"loaded\", true);\n      } else {\n        // don't auto initialise for tests, we do this manually\n        this._initialiseService();\n      }\n    },\n    // exposed for testing\n    _initialiseService(location) {\n      this.setLocation(location || window.location || new URL(\"http://localhost\"));\n      this.set(\"settingsPromise\", this._resolveSettings());\n    },\n    setLocation(location) {\n      if (!_environment.default.testing && \"localhost\" === location.hostname) {\n        this.set(\"location\", _settings.default.getFallbackLocation());\n      } else {\n        this.set(\"location\", location);\n      }\n      const localhostDetected = \"localhost\" === location.hostname || location.hostname.indexOf(\"settifylocal\") >= 0;\n      this.set(\"localhost\", localhostDetected);\n    },\n    resolve() {\n      if (_environment.default.testing) {\n        // Return promise in test environment so that \"then\" can be triggered in the application.js route\n        return new _rsvp.Promise(resolve => {\n          resolve();\n        });\n      }\n      return this.settingsPromise;\n    },\n    _detectDomain() {\n      if (_settings.default.isDevelopmentAccount()) {\n        console.log(\"dynamic-config\", \"using development settings\");\n        this.useDevelopmentAccountSettings();\n      }\n      const hostname = this.get(\"location.hostname\");\n      const detectedDomain = this._supportedDomains.find(d => hostname.endsWith(d.tld));\n      const fallbackDomain = this._supportedDomains.find(d => d.region === _settings.default.detectFallbackRegion());\n      // If we are unable to detect the domain based on the tld, we fallback to the AWSConfig regions domain and then just the first supported domain\n      this.set(\"domain\", detectedDomain || fallbackDomain || this._supportedDomains[0]);\n    },\n    _detectFirm() {\n      const hostname = this.get(\"location.hostname\");\n      const matches = hostname.match(/([a-z0-9-]+)\\./i);\n      if (matches) {\n        const firmUrl = matches[1];\n        console.debug(\"detected firm:\", firmUrl);\n        this.set(\"firm\", firmUrl);\n      } else {\n        console.debug(`failed detect firm from hostname`);\n        this.set(\"firm\", false);\n      }\n    },\n    useDevelopmentAccountSettings() {\n      this._supportedDomains = [{\n        id: \"au\",\n        name: \"Australia\",\n        icon: \"fa-globe-asia\",\n        tld: \".com.au\",\n        region: \"ap-southeast-2\",\n        environment: \"development\"\n      }, {\n        id: \"us\",\n        name: \"USA\",\n        icon: \"fa-globe-americas\",\n        tld: \".com\",\n        region: \"us-west-2\",\n        environment: \"development\"\n      }];\n    },\n    detectSettingsFromUrl() {\n      this._detectDomain();\n      this._detectFirm();\n    },\n    _resolveSettings() {\n      this.detectSettingsFromUrl();\n      console.debug(\"resolved settings:\", this.domain.id);\n      const hostname = this.get(\"location.hostname\");\n      return _settings.default.resolve(this.domain, hostname).then(settings => {\n        this.set(\"settings\", settings);\n        this.set(\"loaded\", true);\n        return settings;\n      });\n    },\n    getSettings() {\n      if (this.settings) {\n        return this.settings;\n      }\n      throw new Error(`Dynamic config settings have not been resolved`);\n    },\n    getS3UrlForBucket(bucketName, ...parts) {\n      const settings = this.getSettings();\n      // joins (base, bucket, parts) using / to create a full s3 url\n      return [settings.S3BaseUrl, this.getS3BucketName(bucketName), ...parts].join(\"/\");\n    },\n    getS3BucketName(bucketName) {\n      const settings = this.getSettings();\n      if (Object.keys(settings.Buckets).includes(bucketName)) {\n        return settings.Buckets[bucketName];\n      }\n      throw new Error(`Unknown Bucket: ${bucketName || \"missing bucketName\"}`);\n    }\n  });\n});","define(\"settify-mvp/services/email-templates\", [\"exports\", \"@ember/service\"], function (_exports, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _service.default.extend({\n    getEmailCategories() {\n      return [{\n        label: \"Billing\",\n        value: \"billing\"\n      }, {\n        label: \"Files\",\n        value: \"files\"\n      }, {\n        label: \"Email\",\n        value: \"email\"\n      }, {\n        label: \"Accounts\",\n        value: \"accounts\"\n      }, {\n        label: \"Surveys\",\n        value: \"surveys\"\n      }, {\n        label: \"Warnings\",\n        value: \"warnings\"\n      }, {\n        label: \"Diagnostics\",\n        value: \"diagnostics\"\n      }, {\n        label: \"Integrations\",\n        value: \"integrations\"\n      }, {\n        label: \"Accountant\",\n        value: \"accountant\"\n      }, {\n        label: \"Invites\",\n        value: \"invites\"\n      }, {\n        label: \"Conflict Check\",\n        value: \"conflictCheck\"\n      }];\n    },\n    getEmailTemplates(category) {\n      return [{\n        label: \"Invoice Attached\",\n        value: \"billing/invoiceattached\",\n        category: \"billing\"\n      }, {\n        label: \"Billing Portal Request\",\n        value: \"billing/billingportal\",\n        category: \"billing\"\n      }, {\n        label: \"Sweep Request\",\n        value: \"billing/sweeprequest\",\n        category: \"billing\"\n      }, {\n        label: \"Void Invoice\",\n        value: \"billing/voidinvoice\",\n        category: \"billing\"\n      }, {\n        label: \"File Sent To Firm\",\n        value: \"files/filesenttofirm\",\n        category: \"files\"\n      }, {\n        label: \"File Expiring\",\n        value: \"files/fileexpiring\",\n        category: \"files\"\n      }, {\n        label: \"Settify Docs Attached\",\n        value: \"clientfiles/settifydocsattached\",\n        category: \"files\"\n      }, {\n        label: \"Settify Information Attached\",\n        value: \"clientfiles/settifyinformationattached\",\n        category: \"files\"\n      }, {\n        label: \"File Uploaded\",\n        value: \"files/fileuploaded\",\n        category: \"files\"\n      }, {\n        label: \"Client Updated Information\",\n        value: \"emailbookingnotification/clientupdatedinformation\",\n        category: \"email\"\n      }, {\n        label: \"Notify Firm\",\n        value: \"emailbookingnotification/notifyfirm\",\n        category: \"email\"\n      }, {\n        label: \"Invited Reminder\",\n        value: \"reminderemail/invitedreminder\",\n        category: \"email\"\n      }, {\n        label: \"Regular Reminder\",\n        value: \"reminderemail/regularreminder\",\n        category: \"email\"\n      }, {\n        label: \"Lawfirm Account Created\",\n        value: \"useraccounts/lawfirmaccountcreated\",\n        category: \"accounts\"\n      }, {\n        label: \"Unfreeze\",\n        value: \"useraccounts/unfreeze\",\n        category: \"accounts\"\n      }, {\n        label: \"Reset Password\",\n        value: \"useraccounts/resetpassword\",\n        category: \"accounts\"\n      }, {\n        label: \"Resume Link\",\n        value: \"resumelink/resumelink\",\n        category: \"accounts\"\n      }, {\n        label: \"Lawyer Catalytic Feedback\",\n        value: \"surveys/catalyticmechanism/lawyer\",\n        category: \"surveys\"\n      }, {\n        label: \"Client Catalytic Feedback\",\n        value: \"surveys/catalyticmechanism/client\",\n        category: \"surveys\"\n      }, {\n        label: \"No Conflict Check Performed\",\n        value: \"warnings/noconflictcheckperformed\",\n        category: \"warnings\"\n      }, {\n        label: \"Email Bounce\",\n        value: \"diagnostics/emailbounce\",\n        category: \"diagnostics\"\n      }, {\n        label: \"Practice Evolve Started\",\n        value: \"integrations/practiceevolvestarted\",\n        category: \"integrations\"\n      }, {\n        label: \"Practice Evolve Connected\",\n        value: \"integrations/integrationconnected\",\n        category: \"integrations\"\n      }, {\n        label: \"Assets Liabilities Wills\",\n        value: \"accountanthelp/assetsliabilities-wills\",\n        category: \"accountant\"\n      }, {\n        label: \"Invite Friend Wills\",\n        value: \"invitefriend/invitefriendwills\",\n        category: \"invites\"\n      }, {\n        label: \"Invite Spouse Wills\",\n        value: \"invitespouse/invitespousewills\",\n        category: \"invites\"\n      }, {\n        label: \"Notify Client\",\n        value: \"conflictcheck/notifyclient\",\n        category: \"conflictCheck\"\n      }].filter(template => template.category === category);\n    }\n  });\n});","define(\"settify-mvp/services/event-logging\", [\"exports\", \"@ember/service\", \"settify-mvp/config/environment\", \"@sentry/ember\"], function (_exports, _service, _environment, Sentry) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"settify-mvp/config/environment\",0,\"@sentry/ember\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _service.default.extend({\n    session: (0, _service.inject)(),\n    lambda: (0, _service.inject)(),\n    config: (0, _service.inject)(\"dynamic-config\"),\n    init() {\n      this._super(...arguments);\n      this.IDs = {\n        NewLead: \"NEW_LEAD\",\n        CommencedSimpleInduction: \"COMMENCED_SIMPLE_INDUCTION\",\n        PageReached: \"PAGE_REACHED\",\n        CompletedSimpleInduction: \"COMPLETED_SIMPLE_INDUCTION\",\n        CompletedDetailedInduction: \"COMPLETED_DETAILED_INDUCTION\",\n        ReferredToFirm: \"REFERRED_TO_FIRM\",\n        ConflictCheckCompleted: \"CONFLICT_CHECK_COMPLETED\",\n        EmailedPathway: \"EMAILED_PATHWAY\",\n        EmailedResumeLink: \"EMAILED_RESUME_LINK\",\n        InductionInvoiced: \"INDUCTION_INVOICED\",\n        InductionMarkedNonBillable: \"INDUCTION_MARKED_NON_BILLABLE\",\n        FirmDeniedAccess: \"FIRM_DENIED_ACCESS\",\n        RecordMovedToNewTable: \"RECORD_MOVED_TO_NEW_TABLE\",\n        CreatedAccount: \"CREATED_ACCOUNT\",\n        AcceptedTermsAndConditions: \"ACCEPTED_TERMS_AND_CONDITIONS\",\n        CommencedDetailedInduction: \"COMMENCED_DETAILED_INDUCTION\",\n        NameChanged: \"NAME_CHANGED\",\n        HelpWantedChanged: \"HELP_WANTED_CHANGED\",\n        PreferredOfficeChanged: \"PREFERRED_OFFICE_CHANGED\",\n        RequestedTechSupport: \"REQUESTED_TECH_SUPPORT\",\n        FirmAccessed: \"FIRM_ACCESSED\",\n        UserSaved: \"USER_SAVED\",\n        ABVariant: \"AB_VARIANT\",\n        AppointmentTime: \"APPOINTMENT_TIME\",\n        Unsubscribed: \"UNSUBSCRIBED\",\n        SuppressMissedLeadReminders: \"SUPPRESS_MISSED_LEAD_REMINDERS\",\n        ClientOrigin: \"CLIENT_ORIGIN\",\n        AccountantHelpAssetsLiabilities: \"REQUESTED_ACCOUNTANT_HELP_ASSSETS_LIABILITIES\",\n        AccountantHelpDocuments: \"REQUESTED_ACCOUNTANT_HELP_DOCUMENTS\",\n        SetSpouseID: \"SET_SPOUSE_ID\",\n        SetBillingFlag: \"SET_BILLING_FLAG\",\n        SetZeroBilling: \"SET_ZERO_BILLING\",\n        InvitationEmailSent: \"INVITATION_EMAIL_SENT\",\n        SetHasLinkedRecord: \"SET_HAS_LINKED_RECORD\"\n      };\n      this.adminIDs = {\n        invitationSentNoAppointment: \"INVITATION_EMAIL_SENT_NO_APPOINTMENT\",\n        invitationSentWithAppointment: \"INVITATION_EMAIL_SENT_WITH_APPOINTMENT\",\n        followUpSentNoAppointment: \"FOLLOWUP_EMAIL_SENT_WITHOUT_APPOINTMENT\",\n        followUpSentWithAppointment: \"FOLLOWUP_EMAIL_SENT_WITH_APPOINTMENT\",\n        editingEntireEmail: \"EDITING_ENTIRE_EMAIL\",\n        editingEntireEmailCancelled: \"CANCELLED_EDITING_ENTIRE_EMAIL\",\n        personalMessageAdded: \"PERSONAL_MESSAGE_ADDED_TO_INVITATION\",\n        personalMessageRemoved: \"PERSONAL_MESSAGE_REMOVED_FROM_INVITATION\",\n        clientAccessed: \"CLIENT_ACCESSED\",\n        clientDocumentDownloaded: \"CLIENT_DOCUMENT_DOWNLOADED\",\n        clientDocumentEmailed: \"CLIENT_DOCUMENT_EMAILED\",\n        clientCompared: \"CLIENT_COMPARED\",\n        clientBillingStatusChanged: \"CLIENT_BILLING_STATUS_CHANGED\",\n        noteAdded: \"CLIENT_NOTE_ADDED\",\n        clientSearch: \"CLIENT_SEARCH_USED\",\n        invoiceConfirmed: \"INVOICE_CONFIRMED\",\n        recordLocked: \"RECORD_LOCKED\",\n        recordUnlocked: \"RECORD_UNLOCKED\",\n        invitationHistoryViewed: \"INVITATION_HISTORY_VIEWED\",\n        allLeadsDownloadedCSV: \"ALL_LEADS_DOWNLOADED\",\n        requestedTechSupport: \"REQUESTED_TECH_SUPPORT\"\n      };\n    },\n    log(clientID, eventID, data, practiceArea) {\n      return this.logWithFirm(clientID, eventID, data, {\n        id: this.get(\"config.settings.Firm.id\"),\n        practiceArea: practiceArea || this.get(\"config.settings.Firm.practiceArea\")\n      });\n    },\n    adminLog(clientID, eventID, data, extraData, practiceArea) {\n      return this.logWithFirm(clientID, eventID, data, {\n        id: this.get(\"config.settings.Firm.id\"),\n        practiceArea: practiceArea || this.get(\"config.settings.Firm.practiceArea\")\n      }, extraData, true);\n    },\n    logWithFirm(clientID, eventID, data, firm, extraData, adminMode) {\n      if (!this.get(\"config.loaded\")) {\n        // Defensive coding: If config is not loaded, we should not try to log any events\n        return;\n      }\n      const payload = {\n        clientID: clientID,\n        firmID: firm.id,\n        eventID: eventID,\n        data: data,\n        practiceArea: firm.practiceArea,\n        extraData,\n        adminMode\n      };\n      if (adminMode) {\n        payload.username = this.get(\"session.session.content.authenticated.username\");\n      }\n      return this.lambda.invoke(this.get(\"lambda.logEvent\"), payload);\n    },\n    logABTest(clientID, testName, testValue) {\n      const payload = {\n        clientID: clientID,\n        test: testName,\n        value: testValue\n      };\n      return this.lambda.invoke(this.get(\"lambda.logABTest\"), payload);\n    },\n    logFormUsage(clientID, formID, repeatToken, eventID) {\n      const payload = {\n        clientID,\n        formID,\n        firmID: this.get(\"config.settings.Firm.id\"),\n        repeatToken,\n        eventID\n      };\n      return this.lambda.invoke(this.get(\"lambda.logFormEventLambda\"), payload);\n    },\n    /**\n     * @param message\n     * @param error {Error}\n     * @param context {Object|{}}\n     */\n    logError(message, error, context = {}) {\n      if (_environment.default.testing) {\n        console.error(\"ERROR\", message, error, context);\n        return; // prevent sending error to sentry\n      }\n      if (!this.sendErrorToSentry(message, error, context)) {\n        // Sentry not defined, console log instead\n        if (error instanceof Error) {\n          console.error(error, {\n            context,\n            message\n          });\n        } else {\n          console.warn(message, {\n            context,\n            error\n          });\n        }\n      }\n    },\n    setSentryUserContext(sessionData) {\n      if (typeof Sentry !== \"undefined\") {\n        if (sessionData) {\n          Sentry.setUser({\n            id: sessionData.uid\n          });\n          Sentry.setContext(\"sessionData\", {\n            isLawyer: sessionData.adminUser,\n            isSettifyAdmin: sessionData.isSettifyAdmin,\n            mfaEnabled: sessionData.mfaEnabled\n          });\n        } else {\n          Sentry.configureScope(scope => scope.clear());\n        }\n      }\n    },\n    /**\n     * @param message\n     * @param error {Error}\n     * @param context {Object|{}}\n     */\n    sendErrorToSentry(message, error, context) {\n      if (typeof Sentry !== \"undefined\") {\n        const extra = {\n          firmID: this.get(\"config.settings.Firm.id\") || \"unknown\",\n          context\n        };\n\n        // Sentry captureException expects an Error, if not we use captureMessage to send the \"error\" as part of context\n        if (error instanceof Error) {\n          Sentry.captureException(error, {\n            level: \"warning\",\n            extra: {\n              ...extra,\n              message\n            }\n          });\n        } else {\n          Sentry.captureMessage(message, {\n            level: \"warning\",\n            extra: {\n              ...extra,\n              error\n            }\n          });\n        }\n        return true;\n      }\n      return false;\n    },\n    logButtonEvent(payload) {\n      const xhr = new XMLHttpRequest();\n      const verb = \"POST\"; // use POST rather than PUT to avoid a CORS preflight negotiation\n      const lambdaEndpoint = this.get(\"config.settings.LambdaEndpoint\");\n      const url = `${lambdaEndpoint}/production/logbuttonevent`;\n      payload.eventID = \"CLICKED\";\n      xhr.open(verb, url);\n      xhr.setRequestHeader(\"Content-Type\", \"text/plain\"); // using text/plain, instead of application/JSON, avoids a CORS preflight negotiation\n      xhr.onreadystatechange = handler;\n      xhr.responseType = \"json\";\n      xhr.setRequestHeader(\"Accept\", \"application/json\");\n\n      // console.log(\"Payload: \", payload);\n      xhr.send(JSON.stringify(payload));\n      function handler() {}\n    }\n  });\n});","define(\"settify-mvp/services/execution-history\", [\"exports\", \"@ember/service\", \"@glimmer/tracking\", \"@ember/object\", \"uuid\"], function (_exports, _service, _tracking, _object, _uuid) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _ExecutionHistoryService_brand;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"uuid\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }\n  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  const STORAGE_NAMESPACE = \"execution-history\";\n  const STORAGE_KEY = \"executions\";\n\n  /**\n   * Service to manage command execution history and outputs.\n   * Stores each execution as a tab-like entry with name, state, and output data.\n   */\n  let ExecutionHistoryService = _exports.default = (_class = (_ExecutionHistoryService_brand = /*#__PURE__*/new WeakSet(), class ExecutionHistoryService extends _service.default {\n    constructor() {\n      super(...arguments);\n      /**\n       * Save executions to local storage.\n       * Serializes the executions array, converting Date objects to ISO strings\n       * and Error objects to serializable format.\n       */\n      _classPrivateMethodInitSpec(this, _ExecutionHistoryService_brand);\n      _initializerDefineProperty(this, \"localStorage\", _descriptor, this);\n      _initializerDefineProperty(this, \"executions\", _descriptor2, this);\n      _assertClassBrand(_ExecutionHistoryService_brand, this, _loadFromStorage).call(this);\n    }\n    add({\n      name,\n      commandId,\n      type,\n      payload,\n      state = \"pending\",\n      output = null,\n      error = null,\n      firmId = null,\n      clientId = null\n    }) {\n      const executionId = this.generateExecutionId();\n      const timestamp = new Date();\n      const execution = {\n        id: executionId,\n        name,\n        commandId,\n        type,\n        payload,\n        state,\n        output,\n        error,\n        timestamp,\n        duration: null,\n        // Will be set when execution completes\n        firmId,\n        clientId\n      };\n      this.executions = [...this.executions, execution];\n      _assertClassBrand(_ExecutionHistoryService_brand, this, _saveToStorage).call(this);\n      return executionId;\n    }\n\n    /**\n     * Update an existing execution with new data.\n     * @param {string} executionId - The execution ID to update\n     * @param {Object} updates - Fields to update\n     */\n    update(executionId, updates) {\n      this.executions = this.executions.map(execution => {\n        if (execution.id !== executionId) {\n          return execution; // Keep unchanged executions as-is\n        }\n\n        // Calculate duration if state is being set to success or error\n        if ((updates.state === \"success\" || updates.state === \"error\") && !execution.duration) {\n          updates.duration = Date.now() - execution.timestamp.getTime();\n        }\n\n        // Trigger reactivity by creating new array for ember\n        return {\n          ...execution,\n          ...updates\n        };\n      });\n      _assertClassBrand(_ExecutionHistoryService_brand, this, _saveToStorage).call(this);\n    }\n\n    /**\n     * Mark an execution as successful.\n     * @param {string} executionId - The execution ID\n     * @param {*} output - The output/response data\n     */\n    markSuccess(executionId, output) {\n      this.update(executionId, {\n        state: \"success\",\n        output,\n        error: null\n      });\n    }\n\n    /**\n     * Mark an execution as failed.\n     * @param {string} executionId - The execution ID\n     * @param {Error} error - The error object\n     */\n    markError(executionId, error) {\n      this.update(executionId, {\n        state: \"error\",\n        error,\n        output: null\n      });\n    }\n\n    /**\n     * Remove an execution from history.\n     * @param {string} executionId - The execution ID to remove\n     */\n    remove(executionId) {\n      this.executions = this.executions.filter(e => e.id !== executionId);\n      _assertClassBrand(_ExecutionHistoryService_brand, this, _saveToStorage).call(this);\n    }\n\n    /**\n     * Remove all executions from history.\n     */\n    clear() {\n      this.executions = [];\n      _assertClassBrand(_ExecutionHistoryService_brand, this, _saveToStorage).call(this);\n    }\n\n    /**\n     * Get an execution by ID.\n     * @param {string} executionId - The execution ID\n     * @returns {Object|null} The execution object or null\n     */\n    getExecution(executionId) {\n      return this.executions.find(e => e.id === executionId) || null;\n    }\n\n    /**\n     * Get executions by state.\n     * @param {string} state - The state to filter by\n     * @returns {Array} Array of executions with the specified state\n     */\n    getExecutionsByState(state) {\n      return this.executions.filter(e => e.state === state);\n    }\n\n    /**\n     * Get the most recent execution.\n     * @returns {Object|null} The most recent execution or null\n     */\n    get latestExecution() {\n      return this.executions[this.executions.length - 1] || null;\n    }\n\n    /**\n     * Generate a unique execution ID.\n     * @returns {string} Unique execution ID\n     */\n    generateExecutionId() {\n      return `exec-${(0, _uuid.v4)()}`;\n    }\n  }), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"localStorage\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"executions\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return [];\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"add\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"add\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"update\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"update\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"markSuccess\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"markSuccess\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"markError\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"markError\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"remove\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"remove\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"clear\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"clear\"), _class.prototype), _class);\n  function _saveToStorage() {\n    try {\n      const serializedExecutions = this.executions.map(execution => ({\n        ...execution,\n        timestamp: execution.timestamp?.toISOString(),\n        error: execution.error ? _assertClassBrand(_ExecutionHistoryService_brand, this, _serializeError).call(this, execution.error) : null\n      }));\n      this.localStorage.write({\n        namespace: STORAGE_NAMESPACE,\n        key: STORAGE_KEY,\n        value: serializedExecutions\n      });\n    } catch (error) {\n      console.error(\"Failed to save execution history to storage:\", error);\n    }\n  }\n  /**\n   * Load executions from local storage.\n   * Deserializes the executions array, converting ISO strings back to Date objects\n   * and error data back to Error objects.\n   */\n  function _loadFromStorage() {\n    try {\n      const stored = this.localStorage.read({\n        namespace: STORAGE_NAMESPACE,\n        key: STORAGE_KEY\n      });\n      if (stored && Array.isArray(stored)) {\n        this.executions = stored.map(execution => ({\n          ...execution,\n          timestamp: execution.timestamp ? new Date(execution.timestamp) : new Date(),\n          error: execution.error ? _assertClassBrand(_ExecutionHistoryService_brand, this, _deserializeError).call(this, execution.error) : null\n        }));\n      }\n    } catch (error) {\n      console.error(\"Failed to load execution history from storage:\", error);\n      this.executions = [];\n    }\n  }\n  /**\n   * Serialize an Error object to a plain object for storage.\n   * @param {Error} error - The error to serialize\n   * @returns {Object} Serialized error object\n   */\n  function _serializeError(error) {\n    return {\n      message: error.message,\n      name: error.name,\n      stack: error.stack\n    };\n  }\n  /**\n   * Deserialize a plain object back to an Error object.\n   * @param {Object} errorData - The serialized error data\n   * @returns {Error} Reconstructed error object\n   */\n  function _deserializeError(errorData) {\n    const error = new Error(errorData.message);\n    error.name = errorData.name;\n    error.stack = errorData.stack;\n    return error;\n  }\n});","define(\"settify-mvp/services/firm-details\", [\"exports\", \"@ember/service\"], function (_exports, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _service.default.extend({\n    lambda: (0, _service.inject)(),\n    session: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    loading: false,\n    initialised: false,\n    save(firmID) {\n      return this.lambda.invoke(this.lambda.updateFirmDetailsLambda, {\n        firmID: firmID || this.get(\"firm.id\"),\n        details: [this.globalDetails].concat(this.practiceAreaDetails),\n        userEmail: this.get(\"session.data.authenticated.username\")\n      });\n    },\n    load(forceReload, firmID) {\n      if (this.initialised || this.loading) {\n        if (!forceReload) {\n          return;\n        }\n      }\n      this.set(\"loading\", true);\n      return this.lambda.invoke(this.lambda.getFirmDetailsLambda, {\n        firmID: firmID || this.get(\"firm.id\")\n      }).then(this.lambda.processResponse).then(details => {\n        this.set(\"globalDetails\", details.practiceAreas.filter(e => e.practiceArea === \"global\")[0]);\n        this.set(\"practiceAreaDetails\", details.practiceAreas.filter(e => e.practiceArea !== \"global\"));\n        this.set(\"loading\", false);\n        this.set(\"initialised\", true);\n      });\n    }\n  });\n});","define(\"settify-mvp/services/firm-offices\", [\"exports\", \"@ember/service\", \"@glimmer/tracking\"], function (_exports, _service, _tracking) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@glimmer/tracking\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let FirmOfficesService = _exports.default = (_class = class FirmOfficesService extends _service.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"lambda\", _descriptor, this);\n      _initializerDefineProperty(this, \"session\", _descriptor2, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor3, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor4, this);\n      _initializerDefineProperty(this, \"offices\", _descriptor5, this);\n      _initializerDefineProperty(this, \"loading\", _descriptor6, this);\n      _defineProperty(this, \"initialised\", false);\n      _defineProperty(this, \"_loadingPromise\", null);\n    }\n    // Cached promise for ongoing loads\n\n    save(firmID) {\n      return this.lambda.invoke(this.lambda.updateFirmOfficesLambda, {\n        firmID,\n        offices: this.offices,\n        userEmail: this.session.data.authenticated.username\n      });\n    }\n\n    // TODO: Look at moving offices to an Ember model and using the store for better data management\n    async load(forceReload = false, firmID) {\n      if (this.loading && !forceReload) {\n        // If a load is already in progress and no forced reload is requested, return the ongoing promise.\n        return this._loadingPromise;\n      }\n      if (this.initialised && !forceReload) {\n        // If data is already loaded and no forced reload is requested, return the cached data.\n        return this.offices;\n      }\n      try {\n        this.loading = true;\n        this._loadingPromise = this.lambda.invoke(this.lambda.getFirmOfficesLambda, {\n          firmID\n        }).then(this.lambda.processResponse);\n        const offices = await this._loadingPromise;\n        offices.forEach(office => office.editingOffice = false);\n        this.offices = offices;\n        this.initialised = true;\n        return this.offices;\n      } catch (error) {\n        this.eventLogging.logError(\"Error loading office list\", error);\n        return [];\n      } finally {\n        this.loading = false;\n        this._loadingPromise = null;\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"offices\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return {};\n    }\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"loading\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _class);\n});","define(\"settify-mvp/services/firm-settings\", [\"exports\", \"@ember/object\", \"@ember/service\", \"settify-mvp/helpers/deep-copy\"], function (_exports, _object, _service, _deepCopy) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/service\",0,\"settify-mvp/helpers/deep-copy\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _service.default.extend({\n    lambda: (0, _service.service)(),\n    firm: (0, _service.service)(),\n    session: (0, _service.service)(),\n    loading: false,\n    initialised: false,\n    save(firmID, settings = this.settings) {\n      /**\n       * Copy our settings object so we don't change actual value\n       * When a setting is set to undefined (It's value is deleted), it is then 'forgotten' in the settings object when we stringify/parse\n       * So let's copy our settings using a different method that doesn't throw away undefined values.\n       * We also want to pre parse our object, so any undefined settings become null, so that they don't get \"disappeared\" when our\n       * payload is JSON.stringified in order to send as an event to the lambda function.\n       */\n      let settingsClone = (0, _deepCopy.deepCopy)(settings);\n      this.recursivelyReplaceValues(settingsClone, undefined, null);\n      if (settingsClone.contactEmailCCs) {\n        (0, _object.set)(settingsClone, \"contactEmailCCs\", settingsClone.contactEmailCCs.map(e => e.contents));\n      }\n      if (settingsClone.bookingNotificationCCs) {\n        (0, _object.set)(settingsClone, \"bookingNotificationCCs\", settingsClone.bookingNotificationCCs.map(e => e.contents));\n      }\n      if (settingsClone.permittedEmailDomains) {\n        (0, _object.set)(settingsClone, \"permittedEmailDomains\", settingsClone.permittedEmailDomains.map(e => e.contents));\n      }\n      if (settingsClone.relationshipManagementContacts) {\n        (0, _object.set)(settingsClone, \"relationshipManagementContacts\", settingsClone.relationshipManagementContacts.map(e => e.contents));\n      }\n      if (settingsClone.settings && settingsClone.settings.admin && settingsClone.settings.admin.invitations && settingsClone.settings.admin.invitations.phoneMeetingAttachment) {\n        (0, _object.set)(settingsClone.settings.admin.invitations, \"phoneMeetingAttachment\", settingsClone.settings.admin.invitations.phoneMeetingAttachment.filter(e => e && e.Bucket && e.Key && e.Filename).map(e => `${e.Bucket}&&${e.Key}&&${e.Filename}`));\n      }\n      return this.lambda.invoke(this.lambda.updateFirmSettingsLambda, {\n        firmID: firmID,\n        settings: settingsClone,\n        userEmail: this.session.data.authenticated.username\n      });\n    },\n    load(forceReload, firmID, practiceArea) {\n      if (this.initialised || this.loading) {\n        if (!forceReload) {\n          return;\n        }\n      }\n      this.set(\"loading\", true);\n      return this.lambda.invoke(this.lambda.getFirmSettingsLambda, {\n        firmID: firmID,\n        practiceArea: practiceArea || this.firm.practiceArea,\n        includeNonLivePracticeAreas: true // as Settify admins, we want to see all \"other\" practice areas, even if they're not yet live\n      }).then(this.lambda.processResponse).then(settings => {\n        this.set(\"settings\", settings);\n      }).then(() => {\n        return this.lambda.invoke(this.lambda.getFirmSettingsHelpLambda, {\n          practiceArea: practiceArea || this.firm.practiceArea\n        });\n      }).then(this.lambda.processResponse).then(settingsHelp => {\n        let helpMap = {};\n        for (let i = 0; settingsHelp && i < settingsHelp.length; i++) {\n          const h = settingsHelp[i];\n          helpMap[h.settingName.replace(/\\./g, \"\")] = h;\n        }\n        this.set(\"settingsHelp\", helpMap);\n        this.set(\"loading\", false);\n        this.set(\"initialised\", true);\n      });\n    },\n    recursivelyReplaceValues(object, valueToReplace, valueToReplaceWith) {\n      for (let key in object) {\n        if (Object.prototype.hasOwnProperty.call(object, key)) {\n          if (Array.isArray(object[key])) {\n            object[key].forEach(entry => {\n              this.recursivelyReplaceValues(entry, valueToReplace, valueToReplaceWith);\n            });\n          } else if (typeof object[key] === \"object\") {\n            this.recursivelyReplaceValues(object[key], valueToReplace, valueToReplaceWith);\n          } else if (object[key] === valueToReplace) {\n            (0, _object.set)(object, key, valueToReplaceWith);\n          }\n        }\n      }\n    }\n  });\n});","define(\"settify-mvp/services/firm\", [\"exports\", \"rsvp\", \"@ember/service\", \"settify-mvp/config/environment\", \"settify-mvp/utils/set-css-variable\"], function (_exports, _rsvp, _service, _environment, _setCssVariable) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"rsvp\",0,\"@ember/service\",0,\"settify-mvp/config/environment\",0,\"settify-mvp/utils/set-css-variable\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _service.default.extend({\n    config: (0, _service.inject)(\"dynamic-config\"),\n    lambda: (0, _service.inject)(),\n    fullstory: (0, _service.inject)(),\n    store: (0, _service.inject)(),\n    cookies: (0, _service.inject)(),\n    googleAnalytics: (0, _service.inject)(),\n    initialised: false,\n    loading: false,\n    /**\n     * Due to how many things we have that assume `firm.id` and `firm.practiceArea` are set, we need to initialise them\n     * as soon as our configuration has loaded. I think review our use of get('firm.id') as many of these are payloads for\n     * lambda, and we could refactor the lambda service to automatically inject these values into a payload. // TODO\n     */\n    initialiseFromConfig() {\n      this.set(\"practiceArea\", this.get(\"config.settings.Firm.practiceArea\"));\n      this.set(\"id\", this.get(\"config.settings.Firm.id\"));\n    },\n    initialise(forceReload) {\n      if (!this.initialised) {\n        this.initialiseFromConfig();\n      }\n      // putting this here to see id/pa re set and detect when calls are occur\n      console.log(`Loading firm details for ${this.id} (${this.practiceArea})`);\n      if (!this.config.loaded) {\n        // Defensive coding: If config is not loaded, we should not try to load the firm settings\n        return (0, _rsvp.reject)(new Error(\"The configuration has not been loaded\"));\n      }\n      if (this.initialised && !forceReload) {\n        return (0, _rsvp.resolve)(this);\n      } else if (this.loading) {\n        return this.waitUntilLoaded();\n      }\n      this.set(\"loading\", true);\n      if (!forceReload) {\n        // ensures addresses is initialised on first load\n        this.set(\"addresses\", [{}]);\n      }\n      if (_environment.default.testing) {\n        this.set(\"initialised\", true);\n        this.set(\"loading\", false);\n      } else {\n        return this.lambda.invoke(this.get(\"lambda.initFirmLambda\"), {\n          firmID: this.get(\"config.settings.Firm.id\")\n        }).then(this.lambda.processResponse).then(result => {\n          const globalSettings = result?.settings?.find(setting => setting.practiceArea === \"global\");\n          globalSettings.theme = result?.theme;\n          this.ingestPropertiesFrom(globalSettings);\n          this.addFirmSettingsToStore(result?.settings);\n          if (_environment.default.environment === \"development\") {\n            // TODO: Consider if we do this for other settings like `otherSettifyURLs` as well?\n            // Prevent uses of firm.settifyURL from redirecting localhost to the live site\n            // for example things like this in forms: `link {firm.settifyURL|concatstrings /requestappointment}}`\n            this.set(\"settifyURL\", \"http://localhost:4200\");\n          }\n          this.fullstory.firmSettingsLoaded();\n          this.googleAnalytics.embedScript();\n\n          // Firm theme\n          this.setFirmTheme(result?.theme);\n          this.set(\"initialised\", true);\n          this.set(\"loading\", false);\n          return (0, _rsvp.resolve)(this);\n        });\n      }\n    },\n    addFirmSettingsToStore(settings = []) {\n      this.store.push(this.store.normalize(\"settings\", settings));\n    },\n    getPracticeAreaSettings(practiceArea = this.practiceArea) {\n      return this.store.peekRecord(\"settings\", practiceArea) || {};\n    },\n    setFirmTheme(theme = {}) {\n      this.addColors(theme.colors);\n      this.addFonts(theme.fonts);\n      this.addAssets(theme.assets);\n    },\n    addColors(colors = {}) {\n      for (const [color, value] of Object.entries(colors)) {\n        (0, _setCssVariable.setCSSVariable)(`brand-${color}-color`, value);\n        const RGBColor = this.getRGBColor(value);\n        (0, _setCssVariable.setCSSVariable)(`brand-${color}-color-rgb`, RGBColor);\n      }\n    },\n    addFonts(fonts = {}) {\n      (0, _setCssVariable.setCSSVariable)(`brand-body-font-family`, fonts[\"body-font\"] || \"\");\n      (0, _setCssVariable.setCSSVariable)(`brand-heading-font-family`, fonts[\"heading-font\"] || \"\");\n      if (fonts.googleFontURL) {\n        const fontLink = document.createElement(\"link\");\n        fontLink.rel = \"stylesheet\";\n        fontLink.type = \"text/css\";\n        fontLink.href = new URL(fonts.googleFontURL);\n        document.querySelector(\"head\").append(fontLink);\n      }\n    },\n    addAssets(assets = {}) {\n      // Logos\n      this.set(\"logo\", assets?.logos?.primary || \"\");\n\n      // Banner\n      if (assets.banner) {\n        (0, _setCssVariable.setCSSVariable)(\"brand-banner-image\", `url(${assets.banner}`);\n      }\n\n      // Landing images for V2 system\n      if (assets.landingImages) {\n        (0, _setCssVariable.setCSSVariable)(`brand-landing-image`, `url('${assets.landingImages.global}')`);\n      }\n\n      // Favicon\n      if (assets.favicon) {\n        document.querySelector(\"link[rel~='icon']\").href = new URL(assets.favicon);\n      }\n    },\n    reloadFirm() {\n      return this.initialise(true);\n    },\n    ingestPropertiesFrom(obj) {\n      for (const key in obj) {\n        // if (obj.hasOwnProperty(key)) {\n        const element = obj[key];\n        this.set(key, element);\n        // }\n      }\n      this.set(\"themeLogoURL\", \"/assets/images/adminlogo.png\");\n      document.title = this.name;\n    },\n    waitUntilLoaded() {\n      if (this.initialised) {\n        return (0, _rsvp.resolve)(this);\n      }\n      const that = this;\n      const timeout = 30000;\n      const startTime = Date.now();\n      return new _rsvp.Promise((resolve, reject) => {\n        function loadingCallback() {\n          if (that.get(\"initialised\")) {\n            return resolve(that);\n          } else if (Date.now() > startTime + timeout) {\n            return reject(\"timeout waiting for firm settings to load\");\n          }\n          setTimeout(loadingCallback, 50);\n        }\n        loadingCallback();\n      });\n    },\n    /**\n     * Converts a hexadecimal color code to an RGB color value in the format \"r g b\".\n     *\n     * @param {string} value - The hexadecimal color code to convert.\n     *                          Can be in the format \"#fff\", \"#ffffff\", \"fff\", or \"ffffff\".\n     * @returns {string|null} - The RGB value in \"255 255 255\" format,\n     *                         or null if the input is not a valid hex code.\n     *\n     * Examples:\n     *  hexToRgb(\"#fff\")   => \"255 255 255\"\n     *  hexToRgb(\"#ffffff\") => \"255 255 255\"\n     *  hexToRgb(\"333\")    => \"51 51 51\"\n     *  hexToRgb(\"invalid\") => null\n     */\n    hexToRgb(value) {\n      // Validate the hex code\n      const validHex = /^#?([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$/.test(value);\n      if (!validHex) {\n        return null; // return null to use fallback if not hex color\n      }\n\n      // Remove the # symbol\n      value = value.replace(/^#/, \"\");\n\n      // Expand 3-digit hex to 6-digit\n      if (value.length === 3) {\n        value = value.split(\"\").map(char => char + char).join(\"\");\n      }\n\n      // Parse the value string to get the red, green, and blue values\n      const [r, g, b] = [parseInt(value.substring(0, 2), 16), parseInt(value.substring(2, 4), 16), parseInt(value.substring(4, 6), 16)];\n\n      // Return value in the 255 255 255 format as Tailwind prefers this\n      return `${r} ${g} ${b}`;\n    },\n    /**\n     * Checks if a string is a valid RGB color value.\n     *\n     * @param {string} str - The string to check.\n     * @returns {boolean} - True if the string is a valid RGB color, false otherwise.\n     */\n    isRGB(str) {\n      const string = this.replaceAndSplitRGBString(str);\n\n      // Regular expression to match RGB color values (with optional spaces)\n      const rgbRegex = /^\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*$/;\n\n      // Test the string against the regular expression\n      const match = string.match(rgbRegex);\n      if (!match) {\n        return false; // Not an RGB string\n      }\n\n      // Check if the RGB values are within the valid range (0-255)\n      const r = parseInt(match[1], 10);\n      const g = parseInt(match[2], 10);\n      const b = parseInt(match[3], 10);\n      return r >= 0 && r <= 255 && g >= 0 && g <= 255 && b >= 0 && b <= 255;\n    },\n    /**\n     * Formats an RGB color string to the \"R G B\" format with spaces.\n     *\n     * @param {string} rgbString - The RGB string to format (e.g., \"255,0,0\", \"rgb(255, 0, 0)\").\n     * @returns {string} - The formatted RGB string (e.g., \"255 0 0\").\n     */\n    formatRGB(rgbString) {\n      const string = this.replaceAndSplitRGBString(rgbString);\n\n      // Split the string by commas and/or spaces, then join with spaces\n      return string.split(/[\\s,]+/).join(\" \");\n    },\n    /**\n     * Replaces and splits RGB string\n     *\n     * @param {string} rgbString - The RGB string to update (e.g., \"255,0,0\", \"rgb(255, 0, 0)\").\n     * @returns {string} - Formatted RGB value\n     */\n    replaceAndSplitRGBString(rgbString) {\n      // Remove any leading \"rgb(\" and trailing \")\"\n      rgbString = rgbString.replace(/^rgb\\(/, \"\").replace(/\\)$/, \"\");\n\n      // If there are no commas, split by spaces and join with commas\n      if (!rgbString.includes(\",\")) {\n        // Correctly split the string into groups of digits\n        rgbString = rgbString.split(/\\s+/).join(\",\");\n      }\n      return rgbString;\n    },\n    /**\n     * Returns the RGB representation of a color value.\n     *\n     * @param {string} value - The color value. Can be either a valid RGB string or a hex color code.\n     * @returns {string|null} The RGB representation of the color in \"R G B\" format, or null if invalid.\n     */\n    getRGBColor(value) {\n      if (this.isRGB(value)) return this.formatRGB(value);\n      return this.hexToRgb(value);\n    },\n    getLegacyRecordUrl(practiceArea) {\n      if (!practiceArea) return null;\n      const domain = this.config.location.host.match(/\\.settify.*/)[0]; // extracts settify.xxx\n      const subdomain = this.config.location.hostname.split(\".\")[0];\n      if (!domain || !subdomain) return null;\n      const domainPracticeArea = this.practiceAreaDomain(practiceArea);\n      return `https://${subdomain}${domainPracticeArea}${domain}/`;\n    },\n    practiceAreaDomain(practiceArea) {\n      const extenstions = {\n        Wills: \".wills\",\n        Probate: \".probate\",\n        Estates: \".estates\",\n        default: \"\"\n      };\n      return extenstions[practiceArea] || extenstions.default;\n    },\n    get isUsingNewUI() {\n      return this?.defaultClientUI === \"v2\" || this.cookies.read(\"ui_version\") === \"v2\";\n    }\n  });\n});","define(\"settify-mvp/services/firms-service\", [\"exports\", \"@ember/service\", \"@settify/latte-sdk\"], function (_exports, _service, _latteSdk) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _FirmsService_brand;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@settify/latte-sdk\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }\n  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let FirmsService = _exports.default = (_dec = (0, _service.service)(\"dynamic-config\"), _class = (_FirmsService_brand = /*#__PURE__*/new WeakSet(), class FirmsService extends _service.default {\n    constructor() {\n      super(...arguments);\n      _classPrivateMethodInitSpec(this, _FirmsService_brand);\n      _initializerDefineProperty(this, \"config\", _descriptor, this);\n      _initializerDefineProperty(this, \"cognitoUser\", _descriptor2, this);\n      _initializerDefineProperty(this, \"awsService\", _descriptor3, this);\n      _initializerDefineProperty(this, \"latteFirm\", _descriptor4, this);\n      console.debug(\"new FirmsService\");\n    }\n    async refreshFirms() {\n      await this.latteFirm.refreshFirms();\n    }\n    async listFirms() {\n      return await this.latteFirm.listFirms();\n    }\n    async getFirm({\n      firmID\n    }) {\n      return await this.latteFirm.getFirm({\n        firmID\n      });\n    }\n    async getFirmDetails({\n      firmID\n    }) {\n      const firmsApi = await _assertClassBrand(_FirmsService_brand, this, _buildApi).call(this);\n      const firm = await this.getFirm({\n        firmID\n      });\n      if (!firm.details) {\n        const {\n          StatusCode,\n          ErrorCode,\n          Payload\n        } = await firmsApi.getFirmDetails({\n          firmID\n        });\n        // TODO: handle service errors\n        if (StatusCode !== 200) {\n          console.error(\"Firms Service Error\", ErrorCode);\n          return [];\n        }\n\n        // process response\n        const global = Payload?.practiceAreas?.find(e => e.practiceArea === \"global\");\n        const practiceAreas = Payload?.practiceAreas?.filter(e => e.practiceArea !== \"global\") ?? [];\n        firm.details = {\n          global,\n          practiceAreas\n        };\n      }\n      return firm.details;\n    }\n    async getFirmOffices({\n      firmID\n    }) {\n      const firmsApi = await _assertClassBrand(_FirmsService_brand, this, _buildApi).call(this);\n      const firm = await this.getFirm({\n        firmID\n      });\n      if (!firm.offices) {\n        firm.offices = await firmsApi.getFirmOffices({\n          firmID\n        });\n      }\n      return firm.offices;\n    }\n    async getFirmSettings({\n      firmID,\n      practiceArea\n    }) {\n      const firmsApi = await _assertClassBrand(_FirmsService_brand, this, _buildApi).call(this);\n      const firm = await this.getFirm({\n        firmID\n      });\n      if (!firm.settings) {\n        firm.settings = {};\n      }\n      if (!firm.settings[practiceArea]) {\n        firm.settings[practiceArea] = await firmsApi.getFirmSettings({\n          firmID,\n          practiceArea\n        });\n      }\n      return firm.settings[practiceArea];\n    }\n    async getFirmUsers({\n      firmID\n    }) {\n      const firmsApi = await _assertClassBrand(_FirmsService_brand, this, _buildApi).call(this);\n      const firm = await this.getFirm({\n        firmID\n      });\n      if (!firm.users) {\n        const {\n          Users\n        } = await firmsApi.getFirmUsers({\n          firmID\n        });\n        firm.users = Users;\n      }\n      return firm.users;\n    }\n    async getFirmSettingsHelp({\n      practiceArea\n    }) {\n      const firmsApi = await _assertClassBrand(_FirmsService_brand, this, _buildApi).call(this);\n      return await firmsApi.getFirmSettingsHelp({\n        practiceArea\n      });\n    }\n    async initialiseFirm({\n      firmID\n    }) {\n      const firmsApi = await _assertClassBrand(_FirmsService_brand, this, _buildApi).call(this);\n      return await firmsApi.initialiseFirm({\n        firmID\n      });\n    }\n    async getLeadList({\n      firmID\n    }) {\n      const firmsApi = await _assertClassBrand(_FirmsService_brand, this, _buildApi).call(this);\n      const firm = await this.getFirm({\n        firmID\n      });\n      if (!firm.leads) {\n        const {\n          leads\n        } = await firmsApi.getLeadList({\n          firmID\n        });\n        firm.leads = leads;\n      }\n      return firm.leads;\n    }\n    async getLead({\n      firmID,\n      clientID\n    }) {\n      const leads = await this.getLeadList({\n        firmID\n      });\n      return leads.find(item => item.clientID === clientID);\n    }\n  }), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"config\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"cognitoUser\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"awsService\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"latteFirm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n  async function _buildApi() {\n    const lambdaInvoker = new _latteSdk.LambdaInvoker({\n      client: await this.awsService.getLambdaClient()\n    });\n\n    // Use config as Region/Account resolution is done for us based on Url/Domain\n    const region = this.config?.settings?.Region;\n    const account = this.config?.settings?.Account;\n\n    // Mirror existing master/production alias switch for all legacy lambda function\n    const firmID = this.config?.settings?.Firm?.id;\n    const alias = firmID && firmID.match(/^000000000-*/) ? \"master\" : \"production\";\n    return new _latteSdk.FirmApi({\n      lambdaInvoker,\n      region,\n      account,\n      alias\n    });\n  }\n});","define(\"settify-mvp/services/frozen-record\", [\"exports\", \"@ember/service\"], function (_exports, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let FrozenRecordService = _exports.default = (_class = class FrozenRecordService extends _service.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"lambda\", _descriptor, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor2, this);\n    }\n    async unfreezeClient(firmID, clientID, totp) {\n      if (clientID && totp) {\n        try {\n          const clientClientLambda = await this.lambda.invoke(this.lambda.unfreezeClientLambda, {\n            id: clientID,\n            firmID,\n            totp: totp\n          });\n          const data = this.lambda.processResponse(clientClientLambda);\n          if (!data.success) throw new Error(\"Failed to unfreeze the client record\");\n        } catch (error) {\n          // TODO: decide if we log and throw a sanitised ui error to the front end (TEAM DISCUSSION)\n          this.eventLogging.logError(\"Failed to unfreeze client record\", error, {\n            clientID,\n            firmID\n          });\n        }\n      }\n    }\n    async sendUnfreezeEmail(firmID, clientID, lawyerEmail) {\n      if (firmID && clientID && lawyerEmail) {\n        try {\n          const payload = {\n            firmID,\n            clientID,\n            lawyerEmail\n          };\n          const data = await this.lambda.invoke(this.lambda.sendUnfreezeEmailLambda, payload);\n          const result = this.lambda.processResponse(data);\n          if (result.code && result.message) {\n            throw new Error(`${result.code}: ${result.message}`);\n          }\n          return result;\n        } catch (error) {\n          // TODO: decide if we log and throw a sanitised ui error to the front end (TEAM DISCUSSION)\n          this.eventLogging.logError(\"Failed to send unfreeze email\", error, {\n            clientID,\n            firmID\n          });\n          throw error;\n        }\n      }\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/services/fullstory\", [\"exports\", \"@ember/service\", \"settify-mvp/config/environment\"], function (_exports, _service, _environment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"settify-mvp/config/environment\"eaimeta@70e063a35619d71f\n  /* global FS */\n  var _default = _exports.default = _service.default.extend({\n    firm: (0, _service.inject)(),\n    active: false,\n    recording: false,\n    init() {\n      this._super(...arguments);\n      this.embedFullStoryScript();\n    },\n    /**\n     * This injects full story script in a disabled (shutdown) state\n     */\n    embedFullStoryScript() {\n      if (typeof FS !== \"undefined\" || typeof document === \"undefined\") {\n        return;\n      }\n      if (!_environment.default.production || _environment.default.testing) {\n        console.debug(\"Full Story: disabled\");\n        return;\n      }\n\n      // Initialise FullStory\n      window._fs_debug = false;\n      window._fs_host = \"fullstory.com\";\n      window._fs_script = \"edge.fullstory.com/s/fs.js\";\n      window._fs_org = \"CFCZX\";\n      window._fs_namespace = \"FS\";\n      window._fs_ready = this.fsReady.bind(this); // binds callback function to this Ember service\n\n      const script = `\n    (function(m,n,e,t,l,o,g,y){\n        if (e in m) {if(m.console && m.console.log) { m.console.log('FullStory namespace conflict. Please set window[\"_fs_namespace\"].');} return;}\n        g=m[e]=function(a,b,s){g.q?g.q.push([a,b,s]):g._api(a,b,s);};g.q=[];\n        o=n.createElement(t);o.async=1;o.crossOrigin='anonymous';o.src='https://'+_fs_script;\n        y=n.getElementsByTagName(t)[0];y.parentNode.insertBefore(o,y);\n        g.identify=function(i,v,s){g(l,{uid:i},s);if(v)g(l,v,s)};g.setUserVars=function(v,s){g(l,v,s)};g.event=function(i,v,s){g('event',{n:i,p:v},s)};\n        g.anonymize=function(){g.identify(!!0)};\n        g.shutdown=function(){g(\"rec\",!1)};g.restart=function(){g(\"rec\",!0)};\n        g.log = function(a,b){g(\"log\",[a,b])};\n        g.consent=function(a){g(\"consent\",!arguments.length||a)};\n        g.identifyAccount=function(i,v){o='account';v=v||{};v.acctId=i;g(o,v)};\n        g.clearUserCookie=function(){};\n        g.setVars=function(n, p){g('setVars',[n,p]);};\n        g._w={};y='XMLHttpRequest';g._w[y]=m[y];y='fetch';g._w[y]=m[y];\n        if(m[y])m[y]=function(){return g._w[y].apply(this,arguments)};\n        g._v=\"1.3.0\";\n    })(window,document,window['_fs_namespace'],'script','user');\n    FS.shutdown(); // ensures FS injects in a stopped state\n      `;\n      const scriptEl = document.createElement(\"script\");\n      scriptEl.innerHTML = script;\n      document.querySelector(\"body\").append(scriptEl);\n    },\n    /**\n     * This is called once by FS when it initialises (after session starts recording).\n     * TODO: active state not being used at present but may be useful in the future.\n     */\n    fsReady() {\n      this.set(\"active\", true);\n    },\n    /**\n     * re-establishes FS state when firm settings are reloaded inside of services/firm.js\n     * This setting is controlled on a firm level through Admin branch\n     */\n    firmSettingsLoaded() {\n      // TODO: For now we hardcode to use the family full story setting (when we get global settings this should move)\n      const settings = this.firm.getPracticeAreaSettings(\"Family\");\n      if (!settings?.settings?.admin?.fullStory) {\n        return this.stop();\n      }\n      this.start();\n    },\n    /**\n     * Starts recording the current session\n     */\n    start() {\n      this.set(\"recording\", true);\n      if (typeof FS === \"undefined\" || !FS.shutdown) {\n        return;\n      }\n      FS.restart();\n    },\n    /**\n     * Stops recording the current session\n     */\n    stop() {\n      this.set(\"recording\", false);\n      if (typeof FS === \"undefined\" || !FS.shutdown) {\n        return;\n      }\n      FS.shutdown();\n    },\n    /**\n     * Due to sensitive nature of our system we capture basic non-personal details in full story only\n     * for clients - id is typically UUID matching the client record\n     * for lawyers - id is typically email of authenticated user\n     *\n     * @param id UUID or email, if no id provided anonymize the session\n     */\n    addIdentification(id = null) {\n      if (typeof FS === \"undefined\" || !FS.identify) {\n        return;\n      }\n      if (id) {\n        const userVars = {\n          firmId_str: this.get(\"firm.id\")\n        };\n\n        // use id for FS session\n        FS.identify(id, userVars);\n      }\n    },\n    removeIdentification() {\n      if (typeof FS === \"undefined\" || !FS.anonymize) {\n        return;\n      }\n      // anonymize FS session\n      FS.anonymize();\n    },\n    sendEvent(eventName, eventProperties) {\n      if (typeof FS === \"undefined\" || !FS.shutdown) {\n        return;\n      }\n      // Send event to FS\n      FS.event(eventName, eventProperties);\n    },\n    setUserProperties(userVars) {\n      if (typeof FS === \"undefined\" || !FS.shutdown) {\n        return;\n      }\n      // Update user attributes\n      FS.setUserVars(userVars);\n    }\n  });\n});","define(\"settify-mvp/services/generate-pdf\", [\"exports\", \"rsvp\", \"@ember/service\", \"settify-mvp/lib/sendhttp\", \"settify-mvp/mixins/upload-download\", \"uuid\"], function (_exports, _rsvp, _service, _sendhttp, _uploadDownload, _uuid) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"rsvp\",0,\"@ember/service\",0,\"settify-mvp/lib/sendhttp\",0,\"settify-mvp/mixins/upload-download\",0,\"uuid\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _service.default.extend(_uploadDownload.default, {\n    eventLogging: (0, _service.inject)(),\n    config: (0, _service.inject)(\"dynamic-config\"),\n    generatePDF(html, css, filename, email) {\n      return (0, _rsvp.resolve)().then(() => {\n        const specialCSS = `\n      body {\n        background: transparent;\n        -webkit-font-smoothing: none !important;\n      }\n      html, body, p, table, tr, td, th, div, b, .summary-appendix-content, .summary-appendix-content div, .summary-appendix-content.div, label, input {\n        font-family: 'Lato', 'Lato Light', 'serif';\n        font-size: 14px !important;\n        -webkit-font-smoothing: none !important;\n      }\n      h1 {\n        font-family: 'Lato', 'Lato Hairline';\n        font-size: 22px;\n        -webkit-font-smoothing: none !important;\n      }\n      h3, h4, h5, h2.div ,h3.div, h4.div ,h5.div{\n        font-size: 16px;\n        -webkit-font-smoothing: none !important;\n      }\n      h2 {\n        font-size: 18px;\n        -webkit-font-smoothing: none !important;\n      }\n      small {\n        font-size: 12px;\n      }\n      b {\n        font-family: 'Lato', 'Lato Bold';\n      }\n      a, a:hover, a:visited, a:active {\n        color: inherit;\n        text-decoration: none;\n      }\n      .settify-contentcolumn {\n        -webkit-box-shadow: none;\n        -moz-box-shadow: none;\n        box-shadow: none;\n        background: transparent;\n        max-width: none;\n        width: 100%;\n      }\n      .hide-in-download {\n        display: none;\n      }\n      .show-in-download-only {\n        display: inherit;\n      }`;\n        const output = `\n      <html>\n      <head>\n      <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n      <link href='https://fonts.googleapis.com/css?family=Lato:300,400,900' rel='stylesheet' type='text/css'>\n      <style>${this.getDocumentCSS()}\\n${specialCSS}\\n${css}\\n` + `</style></head>\\n<body>\\n` + `<div class=\"settify-contentcolumn\">${html}</div>` + `</body></html>`;\n        const uploadFilename = `${(0, _uuid.v4)()}.html`;\n        return {\n          name: uploadFilename,\n          contents: output\n        };\n      }).then(file => {\n        // upload html to temporary S3 location\n        const bucketName = this.get(\"config.settings.Buckets.clientdocuments\");\n        const firmPoolID = this.get(\"config.settings.adminIdentityPoolID\");\n        return this.uploadRawFileData(bucketName, `tmp/${firmPoolID}/${file.name}`, file.contents, \"text/html\");\n      }).then(url => {\n        const pdfServerUrl = this.get(\"config.settings.PDFServer\");\n        let targetURL = `${pdfServerUrl}?format=A4&margin=2cm&orientation=portrait` + `&filename=${encodeURIComponent(filename)}&url=${encodeURIComponent(url)}`;\n        if (email) {\n          // email it to a receipient\n          targetURL += `&emailto=${encodeURIComponent(email)}`;\n          (0, _sendhttp.sendHTTP)(targetURL, \"GET\");\n        } else {\n          // download it ourselves\n          targetURL += \"&download=true\";\n          window.open(targetURL, \"_blank\");\n        }\n      }).catch(error => {\n        // TODO: handle errors here\n        this.eventLogging.logError(\"Couldn't download PDF\", error);\n        alert(\"An error occurred, and we were unable to generate the PDF for you. Please try again, and if that fails, please contact Settify Support. We apologise for any inconvenience\");\n      });\n    },\n    getDocumentCSS() {\n      let cssRules = \"\";\n      const sheets = document.styleSheets;\n      if (sheets) {\n        for (let i = 0; i < sheets.length; i++) {\n          if (sheets[i].href && sheets[i].href.match && sheets[i].href.match(/settify-mvp/)) {\n            const rules = sheets[i].cssRules ? sheets[i].cssRules : sheets[i].rules;\n            if (rules) {\n              for (let j = 0; j < rules.length; j++) {\n                // work around pesky IE bug that doesn't allow you to even access the rule text if it contains webkit keyframes\n                // https://connect.microsoft.com/IE/feedback/details/955703/accessing-csstext-of-a-keyframe-rule-that-contains-a-webkit-property-via-cssom-generates-exception\n                try {\n                  if (rules[j].cssText) {\n                    cssRules += `${rules[j].cssText}\\n`;\n                  }\n                } catch (e) {\n                  console.log(\"Unable to extract CSS text from the rule\");\n                }\n              }\n            }\n          }\n        }\n      }\n      return cssRules;\n    }\n  });\n});","define(\"settify-mvp/services/google-analytics\", [\"exports\", \"@ember/service\"], function (_exports, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _GoogleAnalyticsService_brand;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }\n  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let GoogleAnalyticsService = _exports.default = (_class = (_GoogleAnalyticsService_brand = /*#__PURE__*/new WeakSet(), class GoogleAnalyticsService extends _service.default {\n    constructor(...args) {\n      super(...args);\n      _classPrivateMethodInitSpec(this, _GoogleAnalyticsService_brand);\n      _initializerDefineProperty(this, \"firm\", _descriptor, this);\n      _defineProperty(this, \"key\", null);\n      _defineProperty(this, \"allowList\", null);\n      _defineProperty(this, \"blockList\", null);\n    }\n    embedScript() {\n      const settings = this.firm?.settings?.admin?.googleAnalytics || {};\n      if (!_assertClassBrand(_GoogleAnalyticsService_brand, this, _shouldEmbed).call(this, settings)) {\n        return Promise.resolve();\n      }\n      _assertClassBrand(_GoogleAnalyticsService_brand, this, _setupAnalyticsConfig).call(this, settings);\n      return this.appendScripts();\n    }\n    appendScripts() {\n      const isGoogleTagManager = this.key.startsWith(\"GTM-\");\n      if (isGoogleTagManager) {\n        return _assertClassBrand(_GoogleAnalyticsService_brand, this, _embedGTM).call(this);\n      }\n      return _assertClassBrand(_GoogleAnalyticsService_brand, this, _embedGA).call(this);\n    }\n  }), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n  function _shouldEmbed({\n    key,\n    enabled\n  }) {\n    return enabled && key && typeof document !== \"undefined\" && !window.gtag;\n  }\n  function _setupAnalyticsConfig({\n    key,\n    allowList,\n    blockList\n  }) {\n    this.key = key;\n    this.allowList = typeof allowList === \"string\" ? allowList.split(\",\").map(str => str.trim()) : [\"google\", \"customPixels\"];\n    this.blockList = typeof blockList === \"string\" ? blockList.split(\",\").map(str => str.trim()) : [\"customScripts\"];\n  }\n  async function _embedGA() {\n    await _assertClassBrand(_GoogleAnalyticsService_brand, this, _loadScript).call(this, `https://www.googletagmanager.com/gtag/js?id=${this.key}`, document.head);\n    const configScript = `\n      window.dataLayer = window.dataLayer || [];\n      dataLayer.push({\n        \"gtm.allowlist\": ${JSON.stringify(this.allowList)},\n        \"gtm.blocklist\": ${JSON.stringify(this.blockList)}\n      });\n      function gtag(){dataLayer.push(arguments);}\n      gtag('js', new Date());\n      gtag('config', '${this.key}');\n    `;\n    _assertClassBrand(_GoogleAnalyticsService_brand, this, _injectScript).call(this, configScript, document.body);\n    _assertClassBrand(_GoogleAnalyticsService_brand, this, _injectNoScript).call(this, `https://www.googletagmanager.com/ns.html?id=${this.key}`, document.body);\n  }\n  async function _embedGTM() {\n    const headScriptContent = `(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\n      new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\n      j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\n      'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\n      })(window,document,'script','dataLayer','${this.key}');`;\n    _assertClassBrand(_GoogleAnalyticsService_brand, this, _injectScript).call(this, headScriptContent, document.head);\n    _assertClassBrand(_GoogleAnalyticsService_brand, this, _injectNoScript).call(this, `https://www.googletagmanager.com/ns.html?id=${this.key}`, document.body);\n  }\n  async function _loadScript(src, parent) {\n    const script = document.createElement(\"script\");\n    script.src = src;\n    script.async = true;\n    parent.appendChild(script);\n    return new Promise((resolve, reject) => {\n      script.onload = resolve;\n      script.onerror = () => reject(new Error(`Failed to load script at ${src}`));\n    });\n  }\n  function _injectScript(content, parent) {\n    const script = document.createElement(\"script\");\n    script.textContent = content;\n    parent.appendChild(script);\n  }\n  function _injectNoScript(src, parent) {\n    const noscript = document.createElement(\"noscript\");\n    noscript.innerHTML = `<iframe src=\"${src}\" height=\"0\" width=\"0\" style=\"display:none;visibility:hidden;\"></iframe>`;\n    parent.appendChild(noscript);\n  }\n});","define(\"settify-mvp/services/induction-definitions/businessdetails\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  var _default = _exports.default = {\n    title: \"Business Details\",\n    description: \"Provide the key information and contact details about your business\",\n    id: \"businessdetails\",\n    icon: \"/assets/images/icons/034-mail-box.png\",\n    canBeRepeated: false,\n    alwaysSelected: true,\n    chapters: [{\n      id: \"businessdetails\",\n      title: \"Details of your business\",\n      shortTitle: \"Business details\",\n      pages: [\n      // {\n      //   title: \"Who will be the client?\",\n      //   id: \"client\",\n      //   includeInConflictCheck: true,\n      //   questions: [\n      //     {\n      //       type: \"radio\",\n      //       id: \"type\",\n      //       options: [\n      //         {\n      //           title: \"I will be the client in my personal capacity\",\n      //           id: \"person\"\n      //         },\n      //         {\n      //           title: \"My business, or the business I work for, will be the client\",\n      //           id: \"business\"\n      //         }\n      //       ]\n      //     }\n      //   ]\n      // },\n      {\n        title: \"Your structure\",\n        id: \"overview\",\n        canBeRepeated: false,\n        canBeRepeatedGlobalID: \"clientBusinessNameAndType\",\n        // displayIf: {\n        //   \"client.type\": \"business\"\n        // },\n        questions: [{\n          id: \"name\",\n          type: \"textline\",\n          title: \"What is the business's name?\",\n          shortTitle: \"Name\",\n          placeholder: \"Eg, Megabiz, Supercorp Pty Ltd\",\n          useAnswerAsBreadcrumb: true,\n          required: true,\n          includeInDisplayName: true,\n          includeInConflictCheck: true\n        }, {\n          id: \"structure\",\n          type: \"radio\",\n          title: \"What legal structure are you currently using, or do you plan to use, to operate your business?\",\n          shortTitle: \"Structure\",\n          unselectable: true,\n          options: [{\n            title: \"Sole Trader\",\n            id: \"soletrader\"\n          }, {\n            title: \"Partnership\",\n            id: \"partnership\"\n          }, {\n            title: \"Company\",\n            id: \"company\"\n          }, {\n            title: \"Discretionary Trust\",\n            id: \"discretionarytrust\"\n          }, {\n            title: \"Unit Trust\",\n            id: \"unittrust\"\n          }, {\n            title: \"Joint Venture\",\n            id: \"jointventure\"\n          }, {\n            title: \"Self Managed Super Fund (SMSF)\",\n            id: \"smsf\"\n          }, {\n            title: \"Not sure\",\n            id: \"notsure\",\n            feedback: \"That's not a problem at all. We will help you answer this question when we meet with you in person.\"\n          }]\n        }]\n      }, {\n        title: \"Government registrations\",\n        id: \"registrations\",\n        // displayIf: {\n        //   \"client.type\": \"business\"\n        // },\n        questions: [{\n          title: \"ACN\",\n          type: \"textline\",\n          displayIf: {\n            \"overview.structure\": \"company\"\n          }\n        }, {\n          title: \"ABN\",\n          type: \"textline\"\n        }]\n      }, {\n        title: \"Directors\",\n        id: \"directors\",\n        displayIf: {\n          and: {\n            // \"client.type\": \"business\",\n            \"overview.structure\": \"company\"\n          }\n        },\n        questions: [{\n          title: \"Who are the directors?\",\n          shortTitle: \"List of all directors\",\n          type: \"selectorcreate\",\n          id: \"list\",\n          itemName: \"director\",\n          includeInConflictCheck: true,\n          allowPeople: true,\n          multipleSelections: true\n        }]\n      }, {\n        title: \"Owners\",\n        id: \"owners\",\n        // displayIf: {\n        //   \"client.type\": \"business\"\n        // },\n        questions: [{\n          title: \"Who are the owners?\",\n          shortTitle: \"List of all owners\",\n          id: \"ownerlist\",\n          type: \"selectorcreate\",\n          itemName: \"owner\",\n          includeInConflictCheck: true,\n          allowPeople: true,\n          allowCorporations: true,\n          multipleSelections: true\n        }]\n      }, {\n        title: \"Addresses\",\n        id: \"addresses\",\n        // displayIf: {\n        //   \"client.type\": \"business\"\n        // },\n        questions: [{\n          title: \"Where is the registered office of the business?\",\n          shortTitle: \"Registered office\",\n          type: \"address\",\n          includeInConflictCheck: true\n        }, {\n          title: \"What is the busisness's trading address (also known as the principal place of business)\",\n          shortTitle: \"Trading address\",\n          type: \"address\",\n          includeInConflictCheck: true\n        }, {\n          title: \"What is the business's postal address?\",\n          shortTitle: \"Postal address\",\n          type: \"address\",\n          includeInConflictCheck: true\n        }]\n      }, {\n        title: \"Contact numbers\",\n        id: \"contactnumbers\",\n        // displayIf: {\n        //   \"client.type\": \"business\"\n        // },\n        questions: [{\n          title: \"Email address of the business\",\n          id: \"email\",\n          type: \"email\",\n          includeInConflictCheck: true\n        }, {\n          title: \"Phone number of the business\",\n          id: \"phone\",\n          type: \"phone\",\n          includeInConflictCheck: true\n        }, {\n          title: \"Fax number of the business\",\n          id: \"fax\",\n          type: \"phone\",\n          includeInConflictCheck: true\n        }, {\n          title: \"Secondary phone number for the business\",\n          type: \"phone\",\n          id: \"phone2\",\n          includeInConflictCheck: true\n        }]\n      }]\n    }, {\n      title: \"Key contact details\",\n      shortTitle: \"Key contact\",\n      id: \"keycontact\",\n      isContactDetails: true,\n      pages: [{\n        title: \"About you\",\n        id: \"keycontact\",\n        questions: [{\n          type: \"selectorcreate\",\n          id: \"contact\",\n          title: \"Who is the key contact person for this business? It is probably you, but if you're completing this induction on behalf of someone else, please provide their details below.\",\n          shortTitle: \"Key contact person\",\n          includeInConflictCheck: true,\n          includeInDisplayName: true,\n          allowPeople: true,\n          requiredFields: {\n            firstName: true,\n            surname: true,\n            email: true,\n            \"email-valid\": true,\n            phone: true\n          },\n          itemName: \"person\",\n          askFor: {\n            title: true,\n            middleName: true,\n            email: true,\n            address: true,\n            phone: true\n          },\n          content: [{\n            type: \"textline\",\n            id: \"position\",\n            title: \"Position\"\n          }, {\n            type: \"radio\",\n            id: \"preferredContact\",\n            title: \"What's your preferred method of communication?\",\n            shortTitle: \"Communication preference\",\n            options: [{\n              title: \"Email\",\n              id: \"email\"\n            }, {\n              title: \"Phone\",\n              id: \"phone\"\n            }]\n          }]\n        }]\n      }]\n    }, {\n      title: \"Other details\",\n      id: \"other\",\n      pages: [{\n        title: \"Coleman Greig and you\",\n        shortTitle: \"Referral information\",\n        id: \"referral\",\n        questions: [{\n          type: \"textline\",\n          title: \"Where did you find out about us? Please include the full name of any referrer, so we can be sure to say thanks!\",\n          shortTitle: \"Referral source\",\n          id: \"source\"\n        }, {\n          type: \"textarea\",\n          title: \"What made you choose Coleman Greig Lawyers?\",\n          id: \"whychoose\"\n        }, {\n          title: \"What are your initial impressions of our service?\",\n          type: \"textarea\",\n          id: \"initialimpressions\"\n        }]\n      }, {\n        title: \"Terms and Conditions\",\n        id: \"terms\",\n        questions: [{\n          type: \"paragraph\",\n          content: \"TODO: Provide a link to the terms & conditions, for the client/prospective client to read\"\n        }, {\n          type: \"checkbox\",\n          options: [{\n            title: \"I have read and accept Coleman Greig Lawyers' terms and conditions\",\n            shortTitle: \"Agreed terms and conditions\",\n            id: \"acceptedterms\",\n            required: true\n          }]\n        }]\n      }]\n    }]\n  };\n});","define(\"settify-mvp/services/induction-definitions/companyregistration\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  var _default = _exports.default = {\n    title: \"Register a Company\",\n    id: \"companyregistration\",\n    description: \"Create a company for a new business or special purpose vehicle\",\n    icon: \"/assets/images/icons/054-courthouse.png\",\n    iconOffset: 4,\n    canBeRepeated: true,\n    chapters: [{\n      id: \"company\",\n      title: \"About the company\",\n      pages: [{\n        id: \"name\",\n        title: \"The company's name\",\n        shortTitle: \"Name\",\n        questions: [{\n          id: \"preferredName\",\n          type: \"textline\",\n          title: \"What is your preferred name for the new company?\",\n          includeInDisplayName: true,\n          useAnswerAsBreadcrumb: true,\n          shortTitle: \"Preferred name\"\n        }, {\n          id: \"secondaryName\",\n          type: \"textline\",\n          title: \"If that name is unavailable, what would you like the company to be called?\",\n          shortTitle: \"Second preference\"\n        }, {\n          id: \"sameAsBusinessName\",\n          type: \"yesno\",\n          title: \"Is the company name identical to an existing business name?\",\n          shortTitle: \"Identical to existing business name?\"\n        }, {\n          id: \"occupyMoreInfo\",\n          type: \"textarea\",\n          title: \"Please tell us more about that\",\n          displayIf: {\n            sameAsBusinessName: \"yes\"\n          }\n        }]\n      }, {\n        id: \"domainname\",\n        title: \"Domain name\",\n        questions: [{\n          id: \"register\",\n          type: \"yesno\",\n          title: \"Would you like to register an internet domain name for your company?\",\n          shortTitle: \"Register a domain name?\"\n        }, {\n          id: \"primaryName\",\n          type: \"textline\",\n          title: \"What is your preferred domain name?\",\n          shortTitle: \"First preference\",\n          displayIf: {\n            register: \"yes\"\n          }\n        }, {\n          id: \"secondaryName\",\n          type: \"textline\",\n          title: \"If that domain name is unavailable, what is your second preference?\",\n          shortTitle: \"Second preference\",\n          displayIf: {\n            register: \"yes\"\n          }\n        }]\n      }, {\n        id: \"address\",\n        title: \"The company's addresses\",\n        shortTitle: \"Address\",\n        questions: [{\n          id: \"placeOfBusiness\",\n          type: \"address\",\n          title: \"Where will the company's place of business be?\"\n        }, {\n          id: \"registeredOffice\",\n          type: \"address\",\n          title: \"Where will the company's registered office be?\"\n        }, {\n          id: \"occupyRegisteredOffice\",\n          type: \"yesno\",\n          title: \"Will the company occupy this office?\"\n        }, {\n          id: \"occupyMoreInfo\",\n          type: \"textarea\",\n          title: \"Please tell us more about that\",\n          displayIf: {\n            occupyRegisteredOffice: \"no\"\n          }\n        }]\n      }, {\n        id: \"location\",\n        title: \"State of incorporation\",\n        questions: [{\n          id: \"state\",\n          type: \"radio\",\n          title: \"In what State or Territory should the company be incorporated?\",\n          shortTitle: \" \",\n          options: [{\n            title: \"ACT\"\n          }, {\n            title: \"New South Wales\"\n          }, {\n            title: \"Northern Territory\"\n          }, {\n            title: \"Queensland\"\n          }, {\n            title: \"South Australia\"\n          }, {\n            title: \"Tasmania\"\n          }, {\n            title: \"Victoria\"\n          }, {\n            title: \"Western Australia\"\n          }]\n        }]\n      }, {\n        id: \"purpose\",\n        title: \"Company purpose\",\n        questions: [{\n          id: \"purpose\",\n          type: \"radio\",\n          title: \"Finally, what is the purpose of this new company?\",\n          shortTitle: \" \",\n          options: [{\n            title: \"Starting an entirely new business\",\n            id: \"newbusiness\"\n          }, {\n            title: \"Restructuring an existing business\",\n            id: \"restructure\"\n          }, {\n            title: \"A new division of an existing business\",\n            id: \"new division\"\n          }, {\n            title: \"Acting as trustee of a self-managed super fund (SMSF)\",\n            id: \"smsftrustee\"\n          }, {\n            title: \"Acting as trustee of a trust\",\n            id: \"trusttrustee\"\n          }]\n        }]\n      }]\n    }, {\n      id: \"governance\",\n      title: \"Corporate governance\",\n      pages: [{\n        title: \"The Managing Director\",\n        id: \"managingdirector\",\n        questions: [{\n          type: \"textline\",\n          id: \"whoprepare\",\n          title: \"Who will prepare the Managing Director's contract?\"\n        }]\n      }, {\n        title: \"The auditor\",\n        id: \"auditor\",\n        questions: [{\n          type: \"yesno\",\n          title: \"Have you already selected an auditor?\",\n          id: \"alreadyselected\"\n        }, {\n          type: \"textline\",\n          title: \"What is the name of the auditing firm?\",\n          shortTitle: \"Firm\",\n          id: \"firm\",\n          displayIf: {\n            alreadyselected: \"yes\"\n          }\n        }, {\n          type: \"textline\",\n          title: \"And what is the name of the auditor?\",\n          shortTitle: \"Auditor\",\n          id: \"person\",\n          displayIf: {\n            alreadyselected: \"yes\"\n          }\n        }]\n      }, {\n        title: \"Voting\",\n        id: \"voting\",\n        questions: [{\n          title: \"How will the voting work?\",\n          shortTitle: \"Method\",\n          id: \"method\",\n          type: \"radio\",\n          options: [{\n            title: \"One vote per member\",\n            id: \"permember\"\n          }, {\n            title: \"One vote per share\",\n            id: \"pershare\"\n          }]\n        }]\n      }, {\n        title: \"Sale or issue of shares\",\n        id: \"saleorissue\",\n        questions: [{\n          title: \"If selling or issuing shares, do you require them to be offered to members first?\",\n          shortTitle: \"Offer to members first?\",\n          id: \"offerToMembers\",\n          type: \"yesno\"\n        }]\n      }]\n    }, {\n      id: \"firstmeeting\",\n      title: \"The first directors meeting\",\n      pages: [{\n        title: \"Mode of meeting\",\n        id: \"mode\",\n        questions: [{\n          type: \"radio\",\n          title: \"Will the first directors meeting be held by circulated resolution or a proper (in-person) meeting?\",\n          shortTitle: \"Type of meeting\",\n          id: \"mode\",\n          options: [{\n            title: \"Circulated resolution\",\n            id: \"resolution\"\n          }, {\n            title: \"Proper meeting\",\n            id: \"proper\"\n          }]\n        }, {\n          type: \"date\",\n          title: \"Date of meeting\",\n          id: \"date\",\n          displayIf: {\n            mode: \"proper\"\n          }\n        }, {\n          type: \"textline\",\n          title: \"Time of meeting\",\n          id: \"time\",\n          displayIf: {\n            mode: \"proper\"\n          }\n        }, {\n          type: \"address\",\n          title: \"Place of meeting\",\n          id: \"date\",\n          displayIf: {\n            mode: \"proper\"\n          }\n        }]\n      }, {\n        title: \"Bank account\",\n        id: \"bank\",\n        questions: [{\n          title: \"Will the bank account(s) be ready by the first directors meeting?\",\n          shortTitle: \"Accounts ready for first meeting\",\n          id: \"ready\",\n          type: \"yesno\"\n        }, {\n          type: \"textline\",\n          id: \"bank\",\n          title: \"Bank name\",\n          placeholder: \"Eg, ANZ, CBA, NAB, Westpac\",\n          displayIf: {\n            ready: \"yes\"\n          }\n        }, {\n          type: \"textline\",\n          id: \"name\",\n          title: \"Account name\",\n          placeholder: \"Eg, Company Name Pty Ltd\",\n          displayIf: {\n            ready: \"yes\"\n          }\n        }, {\n          type: \"textline\",\n          id: \"number\",\n          title: \"Account number\",\n          placeholder: \"Eg, 12341234\",\n          displayIf: {\n            ready: \"yes\"\n          }\n        }, {\n          type: \"textline\",\n          id: \"bsb\",\n          title: \"Account BSB\",\n          placeholder: \"Eg, 012-123\",\n          displayIf: {\n            ready: \"yes\"\n          }\n        }]\n      }, {\n        title: \"Mandate forms\",\n        id: \"mandateforms\",\n        questions: [{\n          type: \"yesno\",\n          id: \"ready\",\n          title: \"Will the mandate forms be ready by the first directors meeting?\",\n          shortTitle: \"Mandate forms ready for first meeting?\"\n        }]\n      }, {\n        title: \"Reimbursement\",\n        id: \"reimbursement\",\n        questions: [{\n          type: \"yesno\",\n          id: \"willreimburse\",\n          title: \"Will the first directors meeting determine the reimbursement for formation of the company?\",\n          shortTitle: \"Determine reimbursement at meeting?\"\n        }, {\n          type: \"money\",\n          id: \"amount\",\n          title: \"Amount\",\n          displayIf: {\n            willreimburse: \"yes\"\n          }\n        }, {\n          type: \"selectorcreate\",\n          id: \"to\",\n          title: \"Paid to\",\n          allowPeople: true,\n          itemName: \"person\",\n          displayIf: {\n            willreimburse: \"yes\"\n          }\n        }]\n      }]\n    }, {\n      title: \"Officers, members, and shareholders\",\n      id: \"stakeholders\",\n      pages: [{\n        title: \"Directors\",\n        id: \"directors\",\n        questions: [{\n          title: \"Who will be the company directors?\",\n          shortTitle: \" \",\n          type: \"selectorcreate\",\n          multipleSelections: true,\n          id: \"list\",\n          itemName: \"director\",\n          includeInConflictCheck: true,\n          allowPeople: true,\n          askFor: {\n            middleName: true,\n            phone: true,\n            fax: true,\n            mobile: true,\n            title: true,\n            dateOfBirth: true,\n            occupation: true,\n            placeOfBirth: true,\n            language: true\n          }\n        }]\n      }, {\n        title: \"Shareholders\",\n        id: \"shareholders\",\n        questions: [{\n          title: \"Who will be the company shareholders?\",\n          shortTitle: \" \",\n          type: \"selectorcreate\",\n          id: \"list\",\n          multipleSelections: true,\n          itemName: \"shareholder\",\n          includeInConflictCheck: true,\n          allowPeople: true,\n          allowCorporations: true,\n          askFor: {\n            middleName: true,\n            phone: true,\n            fax: true,\n            mobile: true,\n            title: true,\n            dateOfBirth: true,\n            occupation: true,\n            placeOfBirth: true,\n            language: true\n          },\n          content: [{\n            title: \"Number of shares\",\n            id: \"shareCount\",\n            type: \"number\"\n          }, {\n            title: \"Class of share\",\n            id: \"shareType\",\n            type: \"textline\"\n          }, {\n            title: \"Price per share\",\n            id: \"sharePrice\",\n            type: \"money\"\n          }]\n        }]\n      }, {\n        title: \"Company secretary\",\n        id: \"secretary\",\n        questions: [{\n          title: \"Who will be the company secretary?\",\n          type: \"selectorcreate\",\n          id: \"personID\",\n          itemName: \"person\",\n          includeInConflictCheck: true,\n          allowPeople: true,\n          askFor: {\n            middleName: true,\n            phone: true,\n            fax: true,\n            mobile: true,\n            title: true,\n            dateOfBirth: true,\n            occupation: true,\n            placeOfBirth: true,\n            language: true\n          }\n        }]\n      }]\n    }, {\n      title: \"Anything else we should know?\",\n      shortTitle: \"Anything else?\",\n      id: \"other\",\n      pages: [{\n        id: \"furtherdetails\",\n        title: \"Further details\",\n        questions: [{\n          type: \"textarea\",\n          id: \"details\",\n          title: \"Please provide any further or other details about the company to be registered\",\n          shortTitle: \" \"\n        }]\n      }]\n    }]\n  };\n});","define(\"settify-mvp/services/induction-definitions/legalrelationshipreview\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  var _default = _exports.default = {\n    title: \"Legal Relationship Review\",\n    description: \"Give your business a health check\",\n    id: \"legalrelationship\",\n    icon: \"/assets/images/icons/file.png\",\n    iconOffset: -14,\n    canBeRepeated: true,\n    chapters: [{\n      title: \"An overview of your business\",\n      shortTitle: \"Business overview\",\n      id: \"overview\",\n      pages: [{\n        id: \"structure\",\n        title: \"Your structure\",\n        canBeRepeated: false,\n        canBeRepeatedGlobalID: \"clientBusinessNameAndType\",\n        questions: [{\n          id: \"name\",\n          type: \"textline\",\n          title: \"What is the business's name?\",\n          shortTitle: \"Name\",\n          placeholder: \"Eg, Megabiz, Supercorp Pty Ltd\",\n          useAnswerAsBreadcrumb: true,\n          includeInConflictCheck: true,\n          required: true\n        }, {\n          id: \"structure\",\n          type: \"radio\",\n          title: \"What legal structure are you currently using, or do you plan to use, to operate your business?\",\n          shortTitle: \"Structure\",\n          required: true,\n          unselectable: true,\n          options: [{\n            title: \"Sole Trader\",\n            id: \"soletrader\"\n          }, {\n            title: \"Partnership\",\n            id: \"partnership\"\n          }, {\n            title: \"Company\",\n            id: \"company\",\n            documentsRequired: [{\n              title: \"company constitution\"\n            }]\n          }, {\n            title: \"Discretionary Trust\",\n            id: \"discretionarytrust\"\n          }, {\n            title: \"Unit Trust\",\n            id: \"unittrust\"\n          }, {\n            title: \"Joint Venture\"\n          }, {\n            title: \"Not sure\",\n            id: \"notsure\",\n            feedback: \"That's not a problem at all. We will help you answer this question when we meet with you in person.\"\n          }]\n        }, {\n          type: \"yesno\",\n          id: \"trustdeedawareness\",\n          displayIf: {\n            \"structure:any\": [\"unittrust\", \"discretionarytrust\"]\n          },\n          title: \"Do you know what trust deeds are?\",\n          onYes: {\n            title: \"Knows what trust deeds are\"\n          },\n          onNo: {\n            title: \"Does not know what trust deeds are\"\n          },\n          onNotSure: {\n            title: \"Unsure what trust deeds are\"\n          }\n        }]\n      }, {\n        title: \"The business owners\",\n        id: \"owners\",\n        displayIf: {\n          \"overview.structure.structure:not\": \"soletrader\"\n        },\n        questions: [{\n          type: \"yesno\",\n          id: \"ownershipagreement\",\n          title: \"Do you have a written shareholders agreement?\",\n          displayIf: {\n            \"overview.structure.structure\": \"company\"\n          },\n          onYes: {\n            title: \"A shareholders agreement is in place\",\n            documentsRequired: [{\n              title: \"shareholders agreement\"\n            }]\n          },\n          onNo: {\n            title: \"No shareholders agreement is in place\"\n          },\n          onNotSure: {\n            title: \"Not sure if there's a shareholders agreement in place\"\n          }\n        }, {\n          type: \"yesno\",\n          id: \"ownershipagreement\",\n          title: \"Do you have a written partnership agreement?\",\n          displayIf: {\n            \"overview.structure.structure\": \"partnership\"\n          },\n          onYes: {\n            title: \"A partnership agreement is in place\",\n            documentsRequired: [{\n              title: \"partnership agreement\"\n            }]\n          },\n          onNo: {\n            title: \"No partnership agreement is in place\"\n          },\n          onNotSure: {\n            title: \"Not sure if there's a partnership agreement in place\"\n          }\n        }, {\n          type: \"yesno\",\n          id: \"ownershipagreement\",\n          title: \"Do you have a written agreement between all the business owners?\",\n          displayIf: {\n            \"overview.structure.structure:notany\": [\"partnership\", \"company\"]\n          },\n          onYes: {\n            title: \"An ownership agreement is in place\",\n            documentsRequired: [{\n              title: \"ownership agreement\"\n            }]\n          },\n          onNo: {\n            title: \"No ownership agreement is in place\"\n          },\n          onNotSure: {\n            title: \"Not sure if there's an ownership agreement in place\"\n          }\n        }, {\n          type: \"yesno\",\n          id: \"recentreview\",\n          displayIf: {\n            ownershipagreement: \"yes\"\n          },\n          title: \"Has it been reviewed in the last 3 years?\",\n          onYes: {\n            title: \"Agreement has been reviewed in the last 3 years\"\n          },\n          onNo: {\n            title: \"Agreement has not been reviewed in the last 3 years\"\n          },\n          onNotSure: {\n            title: \"Not sure if the agreement has been reviewed in the last 3 years\"\n          }\n        }]\n      }]\n    }, {\n      title: \"Your clients and suppliers\",\n      shortTitle: \"Clients and suppliers\",\n      id: \"clientssuppliers\",\n      pages: [{\n        title: \"Your clients\",\n        id: \"clients\",\n        questions: [{\n          type: \"yesno\",\n          id: \"clientID\",\n          title: \"Do you use a client identification process?\",\n          onYes: {\n            title: \"A client identification process is used\"\n          },\n          onNo: {\n            title: \"No client identification process is used\"\n          },\n          onNotSure: {\n            title: \"Not sure whether a client identification process is used\"\n          }\n        }, {\n          type: \"yesno\",\n          id: \"clientcontracts\",\n          title: \"Do your clients read, acknowledge, or sign anything with your business before you do business with them?\",\n          onYes: {\n            title: \"Clients read, acknowledge, or sign something before doing business\"\n          },\n          onNo: {\n            title: \"Clients do not read, acknowledge, or sign something before doing business\"\n          },\n          onNotSure: {\n            title: \"Not sure whether clients read, acknowledge, or sign something before doing business\"\n          }\n        }]\n      }, {\n        title: \"Your suppliers\",\n        id: \"suppliers\",\n        questions: [{\n          type: \"yesno\",\n          id: \"suppliercontracts\",\n          title: \"Have you signed contract(s) with suppliers?\",\n          onYes: {\n            title: \"Has signed contracts with suppliers\"\n          },\n          onNo: {\n            title: \"Does not have signed contracts with suppliers\"\n          },\n          onNotSure: {\n            title: \"Unsure whether there are signed contracts with suppliers\"\n          }\n        }, {\n          type: \"yesno\",\n          id: \"suppliercontractguarantees\",\n          displayIf: {\n            suppliercontracts: \"yes\"\n          },\n          title: \"Do these contracts include you providing any guarantees?\",\n          onYes: {\n            title: \"Supplier contracts include guarantees in favour of the supplier\",\n            icon: \"warning\"\n          },\n          onNo: {\n            title: \"Supplier contracts do not include guarantees in favour of the supplier\",\n            icon: \"positive\"\n          },\n          onNotSure: {\n            title: \"Unsure whether supplier contracts include guarantees in favour of the supplier\"\n          }\n        }]\n      }]\n    }, {\n      title: \"Your personnel\",\n      shortTitle: \"Personnel\",\n      id: \"personnel\",\n      pages: [{\n        id: \"employees\",\n        title: \"Employees\",\n        questions: [{\n          type: \"yesno\",\n          id: \"hasemployees\",\n          title: \"Do you employ anyone in your business?\",\n          onYes: {\n            title: \"There are employees\"\n          },\n          onNo: {\n            title: \"There are no employees\",\n            icon: \"positive\"\n          },\n          onNotSure: {\n            title: \"Unsure whether there are employees\"\n          }\n        }, {\n          type: \"yesno\",\n          id: \"hascontracts\",\n          displayIf: {\n            hasemployees: \"yes\"\n          },\n          title: \"Do you issue them with a contract?\",\n          onYes: {\n            title: \"Employees are issued with a contract\"\n          },\n          onNo: {\n            title: \"Employees are not issued with a contract\"\n          },\n          onNotSure: {\n            title: \"Unsure whether employees are issued with a contract\"\n          }\n        }, {\n          type: \"yesno\",\n          id: \"recentlyreviewed\",\n          displayIf: {\n            and: {\n              hasemployees: \"yes\",\n              hascontracts: \"yes\"\n            }\n          },\n          title: \"Have your contracts been reviewed in the last 3 years?\",\n          onYes: {\n            title: \"Contracts have been reviewed in the last 3 years\"\n          },\n          onNo: {\n            title: \"Contracts have not been reviewed in the last 3 years\"\n          },\n          onNotSure: {\n            title: \"Unsure whether contracts have been reviewed in the last 3 years\"\n          }\n        }]\n      }, {\n        id: \"contractors\",\n        title: \"Contractors\",\n        questions: [{\n          type: \"yesno\",\n          id: \"hascontractors\",\n          title: \"Do you use independent contractors?\",\n          onYes: {\n            title: \"Independent contractors are used\"\n          },\n          onNo: {\n            title: \"No independent contractors are used\",\n            icon: \"positive\"\n          },\n          onNotSure: {\n            title: \"Unsure whether independent contractors are used\"\n          }\n        }, {\n          type: \"yesno\",\n          id: \"hascontracts\",\n          displayIf: {\n            hascontractors: \"yes\"\n          },\n          title: \"Do you engage those independent contractors using written contracts?\",\n          onYes: {\n            title: \"They are issued with a contract\"\n          },\n          onNo: {\n            title: \"They are not issued with a contract\"\n          },\n          onNotSure: {\n            title: \"Unsure whether they are issued with a contract\"\n          }\n        }, {\n          type: \"yesno\",\n          id: \"recentlyreviewed\",\n          displayIf: {\n            and: {\n              hascontracts: \"yes\",\n              hascontractors: \"yes\"\n            }\n          },\n          title: \"Have your contracts been reviewed in the last 3 years?\",\n          onYes: {\n            title: \"Contracts have been reviewed in the last 3 years\"\n          },\n          onNo: {\n            title: \"Contracts have not been reviewed in the last 3 years\"\n          },\n          onNotSure: {\n            title: \"Unsure whether contracts have been reviewed in the last 3 years\"\n          }\n        }]\n      }, {\n        id: \"policies\",\n        title: \"Workplace policies\",\n        questions: [{\n          type: \"yesno\",\n          id: \"haspolicies\",\n          title: \"Do you have any workplace policies in place?\",\n          onYes: {\n            title: \"Workplace policies are in place\"\n          },\n          onNo: {\n            title: \"No workplace policies are in place\"\n          },\n          onNotSure: {\n            title: \"Unsure whether workplace policies are in place\"\n          }\n        }, {\n          type: \"yesno\",\n          id: \"recentlyreviewed\",\n          displayIf: {\n            haspolicies: \"yes\"\n          },\n          title: \"Have your policies been reviewed in the last 3 years?\",\n          onYes: {\n            title: \"Policies have been reviewed in the last 3 years\"\n          },\n          onNo: {\n            title: \"Policies have not been reviewed in the last 3 years\"\n          },\n          onNotSure: {\n            title: \"Unsure whether policies have been reviewed in the last 3 years\"\n          }\n        }]\n      }]\n    }, {\n      title: \"Your business premises\",\n      shortTitle: \"Premises\",\n      id: \"premises\",\n      pages: [{\n        id: \"rent\",\n        title: \"Accommodation\",\n        questions: [{\n          type: \"yesno\",\n          id: \"leasedpremises\",\n          title: \"Do you rent your business premises?\",\n          onYes: {\n            title: \"Business rents premises\"\n          },\n          onNo: {\n            title: \"Business does not rent premises\",\n            icon: \"positive\"\n          },\n          onNotSure: {\n            title: \"Unsure whether business rents premises\"\n          }\n        }]\n      }, {\n        id: \"leaseinfo\",\n        title: \"About your lease\",\n        displayIf: {\n          \"rent.leasedpremises\": \"yes\"\n        },\n        questions: [{\n          type: \"yesno\",\n          id: \"recentlyreviewed\",\n          title: \"Has your lease been reviewed in the last 3 years?\",\n          onYes: {\n            title: \"Lease has been reviewed in the last 3 years\"\n          },\n          onNo: {\n            title: \"Lease has not been reviewed in the last 3 years\"\n          },\n          onNotSure: {\n            title: \"Unsure whether lease has been reviewed in the last 3 years\"\n          }\n        }, {\n          type: \"yesno\",\n          id: \"knowperiod\",\n          title: \"Do you know what period is left on the lease to run?\",\n          onYes: {\n            title: \"Knows what period is left on the lease\"\n          },\n          onNo: {\n            title: \"Does not know what period is left on the lease\"\n          },\n          onNotSure: {\n            title: \"Unsure what period is left on the lease\"\n          }\n        }, {\n          type: \"textline\",\n          id: \"periodremaining\",\n          displayIf: {\n            knowperiod: \"yes\"\n          },\n          title: \"How long is left on the lease?\",\n          shortTitle: \" \"\n        }, {\n          type: \"yesno\",\n          id: \"knowoptiondates\",\n          title: \"Do you know the dates within which you can exercise your option under the lease?\",\n          onYes: {\n            title: \"Knows the dates within which option under the lease can be exercised\"\n          },\n          onNo: {\n            title: \"Does not know the dates within which option under the lease can be exercised\"\n          },\n          onNotSure: {\n            title: \"Unsure when the option under the lease can be exercised\"\n          }\n        }, {\n          type: \"textarea\",\n          id: \"optiondates\",\n          displayIf: {\n            knowoptiondates: \"yes\"\n          },\n          title: \"What are those dates?\",\n          shortTitle: \" \"\n        }]\n      }, {\n        id: \"obligations\",\n        title: \"Your obligations\",\n        displayIf: {\n          \"rent.leasedpremises\": \"yes\"\n        },\n        questions: [{\n          type: \"yesno\",\n          id: \"knowmakegood\",\n          title: \"Do you know what your make good obligations are?\",\n          onYes: {\n            title: \"Knows what the make good obligations are\"\n          },\n          onNo: {\n            title: \"Does not know what the make good obligations are\"\n          },\n          onNotSure: {\n            title: \"Unsure what the make good obligations are\"\n          }\n        }, {\n          type: \"textarea\",\n          id: \"makegoodobligations\",\n          displayIf: {\n            knowmakegood: \"yes\"\n          },\n          title: \"What are those obligations?\",\n          shortTitle: \" \"\n        }, {\n          type: \"yesno\",\n          id: \"knowguarantees\",\n          title: \"Are there personal guarantees on the lease?\",\n          onYes: {\n            title: \"There are personal guarantees on the lease\",\n            icon: \"warning\"\n          },\n          onNo: {\n            title: \"There are no personal guarantees on the lease\",\n            icon: \"positive\"\n          },\n          onNotSure: {\n            title: \"Unsure whether there are personal guarantees on the lease\"\n          }\n        }, {\n          type: \"textarea\",\n          id: \"guarantees\",\n          displayIf: {\n            knowguarantees: \"yes\"\n          },\n          title: \"What are those guarantees?\",\n          shortTitle: \" \"\n        }]\n      }]\n    }, {\n      title: \"Your competitors and the marketplace\",\n      shortTitle: \"Competitors and the marketplace\",\n      id: \"competitors\",\n      pages: [{\n        id: \"branding\",\n        title: \"Your brand\",\n        questions: [{\n          type: \"yesno\",\n          id: \"important\",\n          title: \"Is brand identification a key element of business success?\",\n          onYes: {\n            title: \"Brand identification is a key element of business success\",\n            icon: \"warning\"\n          },\n          onNo: {\n            title: \"Brand identification is not a key element of business success\",\n            icon: \"warning\"\n          },\n          onNotSure: {\n            title: \"Unsure whether brand identification is a key element of business success\"\n          }\n        }, {\n          type: \"yesno\",\n          id: \"stepstosecure\",\n          displayIf: {\n            important: \"yes\"\n          },\n          title: \"Have you taken steps to secure your brand?\",\n          onYes: {\n            title: \"Steps have been taken to secure the brand\"\n          },\n          onNo: {\n            title: \"No steps have been taken to secure the brand\"\n          },\n          onNotSure: {\n            title: \"Unsure whether steps have been taken to secure the brand\"\n          }\n        }]\n      }, {\n        id: \"ip\",\n        title: \"Intellectual property\",\n        questions: [{\n          type: \"yesno\",\n          id: \"recentaudit\",\n          title: \"Have you performed an IP audit in the last 12 months?\",\n          onYes: {\n            title: \"IP audit has been performed in the last 12 months\"\n          },\n          onNo: {\n            title: \"IP audit has not been performed in the last 12 months\"\n          },\n          onNotSure: {\n            title: \"Unsure whether IP audit has been performed in the last 12 months\"\n          }\n        }]\n      }, {\n        id: \"licencesusing\",\n        title: \"Licenses you use\",\n        questions: [{\n          type: \"yesno\",\n          id: \"anylicensing\",\n          title: \"Do you operate under any licensing arrangements?\",\n          helpText: \"In a typical licensing agreement, the licensor grants the licensee the right to produce and sell goods, apply a brand name or trademark, or use patented technology owned by the licensor. Has anyone granted your business these sorts of rights?\",\n          onYes: {\n            title: \"Business operates under licensing arrangements\",\n            icon: \"warning\"\n          },\n          onNo: {\n            title: \"Business does not operate under licensing arrangements\",\n            icon: \"positive\"\n          },\n          onNotSure: {\n            title: \"Unsure whether the business operates under licensing arrangements\"\n          }\n        }, {\n          type: \"yesno\",\n          id: \"recentreview\",\n          displayIf: {\n            anylicensing: \"yes\"\n          },\n          title: \"Has the license agreement been reviewed in the last 3 years?\",\n          onYes: {\n            title: \"Licence agreement has been reviewed in the last 3 years\"\n          },\n          onNo: {\n            title: \"Licence agreement has not been reviewed in the last 3 years\"\n          },\n          onNotSure: {\n            title: \"Unsure whether licence agreement has been reviewed in the last 3 years\"\n          }\n        }]\n      }, {\n        id: \"licencesgranted\",\n        title: \"Licenses you grant to others\",\n        questions: [{\n          type: \"yesno\",\n          id: \"anylicensing\",\n          title: \"Do you grant any licensing rights?\",\n          onYes: {\n            title: \"Business grants licensing rights\",\n            icon: \"warning\"\n          },\n          onNo: {\n            title: \"Business does not grant licensing rights\",\n            icon: \"positive\"\n          },\n          onNotSure: {\n            title: \"Unsure whether business grants licensing rights\"\n          }\n        }, {\n          type: \"yesno\",\n          id: \"writtencontract\",\n          displayIf: {\n            anylicensing: \"yes\"\n          },\n          title: \"Is there a written contract in place for the licensing rights?\",\n          onYes: {\n            title: \"There is a written contract in place\"\n          },\n          onNo: {\n            title: \"There is no written contract in place\"\n          },\n          onNotSure: {\n            title: \"Unsure whether there is a written contract in place\"\n          }\n        }, {\n          type: \"yesno\",\n          id: \"recentreview\",\n          displayIf: {\n            and: {\n              anylicensing: \"yes\",\n              writtencontract: \"yes\"\n            }\n          },\n          title: \"Has the license agreement been reviewed in the last 3 years?\",\n          onYes: {\n            title: \"Licence agreement has been reviewed in the last 3 years\"\n          },\n          onNo: {\n            title: \"Licence agreement has not been reviewed in the last 3 years\"\n          },\n          onNotSure: {\n            title: \"Unsure whether licence agreement has been reviewed in the last 3 years\"\n          }\n        }]\n      }]\n    }, {\n      title: \"Your debtors\",\n      shortTitle: \"Debtors\",\n      id: \"debtors\",\n      pages: [{\n        id: \"credit\",\n        title: \"Credit terms\",\n        questions: [{\n          type: \"yesno\",\n          title: \"Do you provide any goods or services on credit?\",\n          id: \"offered\",\n          onYes: {\n            title: \"Services are provided on credit\",\n            icon: \"warning\"\n          },\n          onNo: {\n            title: \"Services are not provided on credit\",\n            icon: \"positive\"\n          },\n          onNotSure: {\n            title: \"Unsure whether services are provided on credit\"\n          }\n        }, {\n          type: \"yesno\",\n          title: \"Do you obtain any form of security from your clients?\",\n          displayIf: {\n            offered: \"yes\"\n          },\n          id: \"security\",\n          onYes: {\n            title: \"Security is obtained from clients\"\n          },\n          onNo: {\n            title: \"Security is not obtained from clients\"\n          },\n          onNotSure: {\n            title: \"Unsure whether security is obtained from clients\"\n          }\n        }]\n      }, {\n        id: \"baddebt\",\n        title: \"Bad debt\",\n        questions: [{\n          type: \"yesno\",\n          title: \"Do you have trouble recovering your debts?\",\n          id: \"trouble\",\n          onYes: {\n            title: \"No trouble recovering debts\"\n          },\n          onNo: {\n            title: \"Business has trouble recovering debts\",\n            icon: \"warning\"\n          },\n          onNotSure: {\n            title: \"Unsure whether business has trouble recovering debts\"\n          }\n        }, {\n          type: \"yesno\",\n          title: \"Have you had to write off a bad debt in the last 3 years?\",\n          displayIf: {\n            trouble: \"yes\"\n          },\n          id: \"writeoff\",\n          onYes: {\n            title: \"Bad debts have been written off in the last 3 years\",\n            icon: \"warning\"\n          },\n          onNo: {\n            title: \"No bad debts have been written off in the last 3 years\",\n            icon: \"positive\"\n          },\n          onNotSure: {\n            title: \"Unsure whether bad debts have been written off in the last 3 years\"\n          }\n        }]\n      }]\n    }, {\n      title: \"Planning for the future\",\n      id: \"planning\",\n      pages: [{\n        title: \"Managing disputes in your business relationships\",\n        id: \"disputes\",\n        questions: [{\n          type: \"yesno\",\n          id: \"significantcontracts\",\n          title: \"Have you entered into any significant contracts in the last 3 years?\",\n          onYes: {\n            title: \"Significant contracts have been entered into in the last 3 years\",\n            icon: \"warning\"\n          },\n          onNo: {\n            title: \"No significant contracts have been entered into in the last 3 years\",\n            icon: \"positive\"\n          },\n          onNotSure: {\n            title: \"Unsure whether significant contracts have been entered into in the last 3 years\"\n          }\n        }, {\n          type: \"yesno\",\n          id: \"knowtermination\",\n          displayIf: {\n            significantcontracts: \"yes\"\n          },\n          title: \"Are you aware of the triggers for termination or the dispute resolution procedures in those contracts?\",\n          onYes: {\n            title: \"Knows the triggers for termination or the dispute resolution procedures in those contracts\"\n          },\n          onNo: {\n            title: \"Does not know the triggers for termination or the dispute resolution procedures in those contracts\"\n          },\n          onNotSure: {\n            title: \"Unsure what the triggers for termination or the dispute resolution procedures in those contracts are\"\n          }\n        }, {\n          type: \"yesno\",\n          id: \"fewmajorclients\",\n          title: \"Is your business dependent upon one or a few major clients or contractors?\",\n          onYes: {\n            title: \"Business is dependent upon one or a few major clients or contractors\",\n            icon: \"warning\"\n          },\n          onNo: {\n            title: \"Business is not dependent upon one or a few major clients or contractors\",\n            icon: \"positive\"\n          },\n          onNotSure: {\n            title: \"Unsure whether business is dependent upon one or a few major clients or contractors\"\n          }\n        }]\n      }, {\n        title: \"Succession planning\",\n        id: \"succession\",\n        questions: [{\n          id: \"wills\",\n          type: \"yesno\",\n          title: \"Does each business owner have a Will/ Enduring Guardianship/ Power of Attorney/ BDBN?\",\n          onYes: {\n            title: \"Each business owner has a Will/ Enduring Guardianship/ Power of Attorney/ BDBN\"\n          },\n          onNo: {\n            title: \"Business owners do not all have a Will/ Enduring Guardianship/ Power of Attorney/ BDBN\"\n          },\n          onNotSure: {\n            title: \"Unsure whether all business owners have a Will/ Enduring Guardianship/ Power of Attorney/ BDBN\"\n          }\n        }, {\n          id: \"willsreviewed\",\n          type: \"yesno\",\n          displayIf: {\n            wills: \"yes\"\n          },\n          title: \"Have they been reviewed in the last 3 years?\",\n          onYes: {\n            title: \"They have been reviewed in the last 3 years\"\n          },\n          onNo: {\n            title: \"They have not been reviewed in the last 3 years\"\n          },\n          onNotSure: {\n            title: \"Unsure whether they have been reviewed in the last 3 years\"\n          }\n        }, {\n          id: \"knowconsequences\",\n          type: \"yesno\",\n          title: \"Do you know what will happen in the event of the death of an owner?\",\n          onYes: {\n            title: \"Knows what will happen in the event of the death of an owner\"\n          },\n          onNo: {\n            title: \"Does not know what will happen in the event of the death of an owner\"\n          },\n          onNotSure: {\n            title: \"Unsure what will happen in the event of the death of an owner\"\n          }\n        }]\n      }, {\n        title: \"Succession risk management\",\n        id: \"successionrisk\",\n        questions: [{\n          id: \"poa\",\n          type: \"yesno\",\n          title: \"Do you have a Corporate Power of Attorney?\",\n          onYes: {\n            title: \"Corporate Power of Attorney is in place\"\n          },\n          onNo: {\n            title: \"Does not have a Corporate Power of Attorney\"\n          },\n          onNotSure: {\n            title: \"Unsure whether a Corporate Power of Attorney is in place\"\n          }\n        }, {\n          id: \"insurance\",\n          type: \"yesno\",\n          title: \"Do you have insurance policies in place for key persons?\",\n          onYes: {\n            title: \"Insurance policies are in place for key persons\"\n          },\n          onNo: {\n            title: \"Insurance policies are not in place for key persons\"\n          },\n          onNotSure: {\n            title: \"Unsure whether insurance policies are in place for key persons\"\n          }\n        }, {\n          id: \"principalappointor\",\n          type: \"yesno\",\n          displayIf: {\n            \"overview.structure.structure\": \"discretionarytrust\"\n          },\n          title: \"Do you know who the subsequent principal/appointer is?\",\n          onYes: {\n            title: \"Knows who the subsequent principal/appointer is\"\n          },\n          onNo: {\n            title: \"Does not know who the subsequent principal/appointer is\"\n          },\n          onNotSure: {\n            title: \"Unsure who the subsequent principal/appointer is\"\n          }\n        }]\n      }, {\n        title: \"Exit strategy\",\n        id: \"exit\",\n        questions: [{\n          id: \"desire\",\n          type: \"yesno\",\n          title: \"Do you want to retire or exit in the next 5 years?\",\n          onYes: {\n            title: \"Wants to retire or exit in the next 5 years\",\n            icon: \"warning\"\n          },\n          onNo: {\n            title: \"Does not want to retire or exit in the next 5 years\"\n          },\n          onNotSure: {\n            title: \"Unsure whether to retire or exit in the next 5 years\"\n          }\n        }, {\n          id: \"hasplans\",\n          type: \"yesno\",\n          displayIf: {\n            desire: \"yes\"\n          },\n          title: \"Have you identified how this can occur?\",\n          onYes: {\n            title: \"Has a plan for how this can occur\"\n          },\n          onNo: {\n            title: \"Does not have a plan for how this can occur\"\n          },\n          onNotSure: {\n            title: \"Unsure of how this could occur\"\n          }\n        }, {\n          id: \"plans\",\n          type: \"textarea\",\n          displayIf: {\n            and: {\n              desire: \"yes\",\n              hasplans: \"yes\"\n            }\n          },\n          title: \"And how is that?\",\n          shortTitle: \" \"\n        }, {\n          id: \"hasimpediments\",\n          type: \"yesno\",\n          displayIf: {\n            and: {\n              desire: \"yes\",\n              hasplans: \"is truthy\"\n            }\n          },\n          title: \"Have you identified any impediments to your exit?\",\n          onYes: {\n            title: \"Impediments to exit have been identified\",\n            icon: \"warning\"\n          },\n          onNo: {\n            title: \"No impediments to exit have been identified\"\n          },\n          onNotSure: {\n            title: \"Unsure whether impediments to exit exist\"\n          }\n        }, {\n          id: \"impediments\",\n          type: \"textarea\",\n          displayIf: {\n            and: {\n              desire: \"yes\",\n              hasimpediments: \"yes\"\n            }\n          },\n          title: \"And what are they?\",\n          shortTitle: \" \"\n        }]\n      }]\n    }]\n  };\n});","define(\"settify-mvp/services/induction-definitions/saleofbusiness\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  var _default = _exports.default = {\n    title: \"Sale or purchase of a business\",\n    shortTitle: \"Business conveyancing\",\n    id: \"buysellbusiness\",\n    description: \"We'll help you buy or sell a business, or part of a business, to achieve the best outcome\",\n    icon: \"/assets/images/icons/029-loan.png\",\n    canBeRepeated: true,\n    chapters: [{\n      title: \"The business being sold\",\n      id: \"aboutthebusiness\",\n      pages: [{\n        id: \"overview\",\n        title: \"Overview\",\n        questions: [{\n          type: \"paragraph\",\n          content: \"In this chapter, we're going to ask a few questions about the business being bought or sold.\"\n        }, {\n          id: \"transactionType\",\n          title: \"Are you buying the business, or selling it?\",\n          shortTitle: \"Buying or selling?\",\n          type: \"radio\",\n          required: true,\n          options: [{\n            id: \"purchase\",\n            title: \"Buying\"\n          }, {\n            id: \"sale\",\n            title: \"Selling\"\n          }]\n        }, {\n          type: \"textline\",\n          id: \"name\",\n          title: \"What is the business's name?\",\n          shortTitle: \"Business name\",\n          includeInConflictCheck: true,\n          includeInDisplayName: true,\n          useAnswerAsBreadcrumb: true,\n          required: true,\n          displayIf: {\n            transactionType: \"is truthy\"\n          }\n        }, {\n          type: \"textline\",\n          id: \"industry\",\n          title: \"What industry does the business operate in?\",\n          shortTitle: \"Industry\",\n          placeholder: \"Eg, retail, manufacturing, professional services\",\n          displayIf: {\n            transactionType: \"is truthy\"\n          }\n        }, {\n          type: \"textline\",\n          id: \"type\",\n          title: \"What sort of business is it?\",\n          shortTitle: \"Business type\",\n          placeholder: \"Eg, ladies footwear, auto parts, accounting\",\n          displayIf: {\n            transactionType: \"is truthy\"\n          }\n        }, {\n          type: \"textline\",\n          id: \"numstaff\",\n          title: \"Roughly how many staff does the business employ?\",\n          shortTitle: \"Employees\",\n          displayIf: {\n            transactionType: \"is truthy\"\n          }\n        }]\n      }, {\n        id: \"structure\",\n        title: \"Business structure\",\n        questions: [{\n          id: \"structure\",\n          type: \"radio\",\n          title: \"What type of business is this?\",\n          shortTitle: \"Structure\",\n          unselectable: true,\n          options: [{\n            title: \"Sole Trader\",\n            id: \"soletrader\"\n          }, {\n            title: \"Partnership\",\n            id: \"partnership\"\n          }, {\n            title: \"Company\",\n            id: \"company\"\n          }, {\n            title: \"Discretionary Trust\",\n            id: \"discretionarytrust\"\n          }, {\n            title: \"Unit Trust\",\n            id: \"unittrust\"\n          }, {\n            title: \"Joint Venture\",\n            id: \"jointventure\"\n          }, {\n            title: \"Self Managed Super Fund (SMSF)\",\n            id: \"smsf\"\n          }, {\n            title: \"Not sure\",\n            id: \"notsure\"\n          }]\n        }, {\n          type: \"textline\",\n          title: \"What is the ABN?\",\n          shortTitle: \"ABN\",\n          id: \"abn\"\n        }, {\n          type: \"textline\",\n          title: \"What is the ACN?\",\n          shortTitle: \"ACN\",\n          id: \"acn\",\n          displayIf: {\n            structure: \"company\"\n          }\n        }, {\n          type: \"yesno\",\n          title: \"Have you performed a full ASIC search?\",\n          id: \"asicSearchPerformed\",\n          displayIf: {\n            structure: \"company\"\n          },\n          onYes: {\n            title: \"ASIC search performed\",\n            documentsRequired: [{\n              title: \"results of your ASIC search\"\n            }]\n          },\n          onNo: {\n            title: \"No ASIC search performed\"\n          },\n          onNotSure: {\n            title: \"Not sure whether ASIC search performed\"\n          }\n        }, {\n          type: \"yesno\",\n          title: \"It's a good idea to have this search performed. Would you like us to arrange it for you? (Additional costs and expenses of $55 (incl. GST) will apply.)\",\n          shortTitle: \"Authority to run a search?\",\n          id: \"authority\",\n          displayIf: {\n            and: {\n              structure: \"company\",\n              \"asicSearchPerformed:any\": [\"no\", \"notsure\"]\n            }\n          },\n          onYes: {\n            title: \"Authority granted to run an ASIC search\"\n          },\n          onNo: {\n            title: \"Do not run an ASIC search\"\n          },\n          onNotSure: {\n            title: \"Not sure whether to grant authority to run an ASIC search\"\n          }\n        }]\n      }, {\n        title: \"Directors\",\n        id: \"directors\",\n        displayIf: {\n          \"structure.structure\": \"company\"\n        },\n        questions: [{\n          title: \"Please list all the directors below\",\n          shortTitle: \"List of all directors\",\n          type: \"selectorcreate\",\n          multipleSelections: true,\n          id: \"list\",\n          itemName: \"director\",\n          includeInConflictCheck: true,\n          allowPeople: true\n        }]\n      }, {\n        title: \"Owners\",\n        id: \"owners\",\n        questions: [{\n          title: \"Please list all the owners below\",\n          shortTitle: \"List of all owners\",\n          id: \"ownerlist\",\n          type: \"selectorcreate\",\n          multipleSelections: true,\n          itemName: \"owner\",\n          includeInConflictCheck: true,\n          allowPeople: true,\n          allowCorporations: true\n        }]\n      }, {\n        title: \"Addresses\",\n        id: \"addresses\",\n        questions: [{\n          title: \"Where is the registered office of the business?\",\n          shortTitle: \"Registered office\",\n          type: \"address\",\n          includeInConflictCheck: true\n        }, {\n          title: \"What is the busisness's trading address (also known as the principal place of business)\",\n          shortTitle: \"Trading address\",\n          type: \"address\",\n          includeInConflictCheck: true\n        }, {\n          title: \"What is the business's postal address?\",\n          shortTitle: \"Postal address\",\n          type: \"address\",\n          includeInConflictCheck: true\n        }]\n      }, {\n        title: \"Contact numbers\",\n        id: \"contactnumbers\",\n        questions: [{\n          title: \"Email address of the business\",\n          id: \"email\",\n          type: \"email\",\n          includeInConflictCheck: true\n        }, {\n          title: \"Website of the business\",\n          id: \"website\",\n          type: \"textline\",\n          includeInConflictCheck: true\n        }, {\n          title: \"Phone number of the business\",\n          id: \"phone\",\n          type: \"phone\",\n          includeInConflictCheck: true\n        }, {\n          title: \"Fax number of the business\",\n          id: \"fax\",\n          type: \"phone\",\n          includeInConflictCheck: true\n        }, {\n          title: \"Secondary phone number for the business\",\n          type: \"phone\",\n          id: \"phone2\",\n          includeInConflictCheck: true\n        }]\n      }]\n    }, {\n      title: \"Sale price\",\n      id: \"price\",\n      pages: [{\n        id: \"components\",\n        title: \"Pricing elements\",\n        questions: [{\n          id: \"breakdown\",\n          type: \"grid\",\n          columns: [{\n            title: \"Name\",\n            type: \"textline\",\n            width: \"thin\"\n          }, {\n            title: \"Details\",\n            type: \"textline\"\n          }, {\n            title: \"Value\",\n            type: \"money\",\n            width: \"very-thin\",\n            autoTotal: true\n          }],\n          showColumnHeaders: false,\n          startingRows: [{\n            Name: \"Good will\",\n            NameReadOnly: true,\n            noDelete: true\n          }, {\n            Name: \"Equipment\",\n            NameReadOnly: true,\n            noDelete: true\n          }, {\n            Name: \"Stock\",\n            NameReadOnly: true,\n            noDelete: true\n          }]\n        }]\n      }, {\n        id: \"fixtures\",\n        title: \"Fixtures\",\n        questions: [{\n          type: \"checkbox\",\n          title: \"Are the following fixtures being sold with the business? These are also called 'inclusions'.\",\n          shortTitle: \" \",\n          options: [{\n            title: \"Good will\",\n            id: \"goowill\"\n          }, {\n            title: \"Equipment\",\n            id: \"equipment\"\n          }, {\n            title: \"Stock\",\n            id: \"stock\"\n          }, {\n            title: \"Customer records\",\n            id: \"customer records\"\n          }, {\n            title: \"Licences\",\n            id: \"licences\"\n          }, {\n            title: \"Intellectual property\",\n            id: \"ip\"\n          }, {\n            title: \"Other\",\n            id: \"other\"\n          }]\n        }, {\n          id: \"otherMoreInfo\",\n          type: \"textarea\",\n          title: \"Please tell us more\",\n          shortTitle: \"Other fixtures\",\n          displayIf: {\n            other: \"is truthy\"\n          }\n        }]\n      }, {\n        id: \"exclusions\",\n        title: \"Exclusions\",\n        questions: [{\n          type: \"paragraph\",\n          content: \"Is there anything not being sold with the business? These are also known as 'exclusions'.\",\n          shortTitle: \" \"\n        }, {\n          id: \"exclusionList\",\n          type: \"grid\",\n          title: \"Please list any exclusions below\",\n          shortTitle: \" \",\n          columns: [{\n            name: \"Description\",\n            type: \"textline\",\n            thin: true\n          }],\n          showColumnHeaders: false,\n          startingRows: [{\n            Description: \"\"\n          }]\n        }]\n      }, {\n        id: \"training\",\n        title: \"Training and consulting\",\n        questions: [{\n          title: \"Is there any training or consulting included?\",\n          id: \"included\",\n          type: \"yesno\",\n          onYes: {\n            title: \"Training or consulting included\",\n            icon: \"warning\"\n          },\n          onNo: {\n            title: \"No training or consulting included\",\n            icon: \"warning\"\n          },\n          onNotSure: {\n            title: \"Not sure whether training or consulting is included\"\n          }\n        }, {\n          type: \"textarea\",\n          id: \"moreInfo\",\n          title: \"Please tell us more\",\n          shortTitle: \"More information\",\n          displayIf: {\n            \"included:any\": [\"yes\", \"notsure\"]\n          }\n        }]\n      }]\n    }, {\n      title: \"Progress to date\",\n      id: \"progress\",\n      pages: [{\n        id: \"contract\",\n        title: \"Contract\",\n        questions: [{\n          id: \"prepared\",\n          type: \"yesno\",\n          title: \"Has a contract been prepared?\",\n          onYes: {\n            title: \"Contract has been prepared\",\n            icon: \"warning\",\n            documentsRequired: [{\n              title: \"contract of sale\"\n            }]\n          },\n          onNo: {\n            title: \"No contract prepared yet\",\n            icon: \"positive\"\n          },\n          onNotSure: {\n            title: \"Not sure whether a contract has been prepared\"\n          }\n        }, {\n          id: \"exchanged\",\n          type: \"yesno\",\n          title: \"Have contracts been exchanged yet?\",\n          displayIf: {\n            prepared: \"yes\"\n          },\n          onYes: {\n            title: \"No contracts exchanged yet\"\n          },\n          onNo: {\n            title: \"Contracts have been exchanged\",\n            icon: \"warning\"\n          },\n          onNotSure: {\n            title: \"Not sure whether contracts have been exchanged\"\n          }\n        }]\n      }, {\n        id: \"deposit\",\n        title: \"Deposit\",\n        questions: [{\n          id: \"paid\",\n          type: \"yesno\",\n          title: \"Has a deposit been paid?\",\n          onYes: {\n            title: \"Deposit has been paid\",\n            icon: \"warning\"\n          },\n          onNo: {\n            title: \"No deposite has been paid\",\n            icon: \"positive\"\n          },\n          onNotSure: {\n            title: \"Not sure whether a deposite has been paid\"\n          }\n        }, {\n          id: \"amount\",\n          type: \"money\",\n          title: \"How much was the deposit?\",\n          displayIf: {\n            paid: \"yes\"\n          }\n        }]\n      }]\n    }, {\n      title: \"Leased premises\",\n      id: \"leases\",\n      pages: [{\n        id: \"overview\",\n        title: \"About the lease\",\n        questions: [{\n          id: \"hasLease\",\n          type: \"yesno\",\n          title: \"Does the business lease premises?\",\n          shortTitle: \"Leased premises\",\n          onYes: {\n            title: \"Premises are leased\",\n            icon: \"warning\"\n          },\n          onNo: {\n            title: \"No premises are leased\",\n            icon: \"positive\"\n          },\n          onNotSure: {\n            title: \"Not sure whether premises are leased\"\n          }\n        }, {\n          id: \"transferred\",\n          type: \"yesno\",\n          title: \"Is the lease being transferred as part of the sale process?\",\n          shortTitle: \"Transfer required\",\n          displayIf: {\n            hasLease: \"yes\"\n          },\n          onYes: {\n            title: \"Lease is being transferred\"\n          },\n          onNo: {\n            title: \"Lease is not being transferred\"\n          },\n          onNotSure: {\n            title: \"Not sure whether lease is being transferred\"\n          }\n        }, {\n          id: \"consent\",\n          type: \"yesno\",\n          title: \"Has the consent of the landlord been obtained to transfer the lease?\",\n          displayIf: {\n            and: {\n              hasLease: \"yes\",\n              transferred: \"yes\"\n            }\n          },\n          onYes: {\n            title: \"Landlord consent has been obtained\"\n          },\n          onNo: {\n            title: \"Landlord consent has not been obtained\"\n          },\n          onNotSure: {\n            title: \"Not sure whether landlord consent has been obtained\"\n          }\n        }]\n      }, {\n        id: \"address\",\n        title: \"Address\",\n        displayIf: {\n          \"overview.hasLease\": \"yes\"\n        },\n        questions: [{\n          id: \"address\",\n          type: \"address\",\n          title: \"What is the address of the property subject to lease?\",\n          shortTitle: \" \"\n        }]\n      }]\n    }, {\n      title: \"Finance details\",\n      id: \"finance\",\n      displayIf: {\n        \"aboutthebusiness.overview.transactionType\": \"purchase\"\n      },\n      pages: [{\n        id: \"finance\",\n        title: \"Finance\",\n        questions: [{\n          id: \"hasFinance\",\n          title: \"Are you using external finance to pay for the purchase?\",\n          type: \"yesno\"\n        }, {\n          id: \"amount\",\n          title: \"What amount are you financing? This can be an approximate amount if you're not entirely sure.\",\n          shortTitle: \"Finance amount\",\n          type: \"money\",\n          displayIf: {\n            hasFinance: \"yes\"\n          }\n        }]\n      }, {\n        id: \"financier\",\n        title: \"Financier\",\n        displayIf: {\n          \"finance.hasFinance\": \"yes\"\n        },\n        questions: [{\n          id: \"financier\",\n          title: \"Which lender is providing the finance?\",\n          shortTitle: \" \",\n          type: \"selectorcreate\",\n          itemName: \"lender\",\n          allowPeople: true,\n          customContentFirst: true,\n          askFor: {\n            name: true,\n            email: true,\n            address: true,\n            title: true,\n            phone: true,\n            fax: true,\n            mobile: true\n          },\n          content: [{\n            type: \"textline\",\n            title: \"Lender's name\",\n            id: \"organisation\",\n            placeholder: \"Leave this blank if finance is provided in a personal capacity\"\n          }]\n        }]\n      }]\n    }, {\n      title: \"The other party\",\n      id: \"counterparty\",\n      pages: [{\n        id: \"about\",\n        title: \"About\",\n        questions: [{\n          type: \"paragraph\",\n          displayIf: {\n            \"aboutthebusiness.overview.transactionType\": \"purchase\"\n          },\n          content: \"Who is selling the business to you?\"\n        }, {\n          type: \"paragraph\",\n          displayIf: {\n            \"aboutthebusiness.overview.transactionType\": \"sale\"\n          },\n          content: \"Who is purchasing the business from you?\"\n        }, {\n          type: \"paragraph\",\n          displayIf: {\n            \"aboutthebusiness.overview.transactionType\": \"is falsey\"\n          },\n          content: \"Who is on the other side of this transaction?\"\n        }, {\n          id: \"details\",\n          title: \" \",\n          shortTitle: \" \",\n          type: \"selectorcreate\",\n          itemName: \"counterparty\",\n          allowPeople: true,\n          allowCorporations: true,\n          askFor: {\n            name: true,\n            email: true,\n            address: true,\n            title: true,\n            phone: true,\n            fax: true,\n            mobile: true\n          },\n          content: [{\n            id: \"structure\",\n            type: \"radio\",\n            title: \"What type of business is this?\",\n            shortTitle: \"Structure\",\n            unselectable: true,\n            options: [{\n              title: \"Sole Trader\",\n              id: \"soletrader\"\n            }, {\n              title: \"Partnership\",\n              id: \"partnership\"\n            }, {\n              title: \"Company\",\n              id: \"company\"\n            }, {\n              title: \"Discretionary Trust\",\n              id: \"discretionarytrust\"\n            }, {\n              title: \"Unit Trust\",\n              id: \"unittrust\"\n            }, {\n              title: \"Joint Venture\",\n              id: \"jointventure\"\n            }, {\n              title: \"Self Managed Super Fund (SMSF)\",\n              id: \"smsf\"\n            }, {\n              title: \"Not sure\",\n              id: \"notsure\"\n            }]\n          }]\n        }]\n      }, {\n        id: \"representation\",\n        title: \"Representation\",\n        questions: [{\n          id: \"hasRepresentation\",\n          type: \"yesno\",\n          title: \"Is the other party legally represented?\",\n          shortTitle: \"Legally represented\"\n        }, {\n          id: \"details\",\n          type: \"selectorcreate\",\n          allowPeople: true,\n          customContentFirst: true,\n          displayIf: {\n            hasRepresentation: \"yes\"\n          },\n          title: \"Who is representing them?\",\n          itemName: \"lawyer\",\n          shortTitle: \" \",\n          content: [{\n            type: \"textline\",\n            title: \"Firm name\",\n            id: \"organisation\"\n          }],\n          askFor: {\n            name: true,\n            email: true,\n            address: true,\n            title: true,\n            phone: true,\n            fax: true,\n            mobile: true\n          }\n        }]\n      }]\n    }, {\n      title: \"Broker details\",\n      id: \"broker\",\n      pages: [{\n        id: \"broker\",\n        title: \"Business broker\",\n        questions: [{\n          id: \"hasBroker\",\n          title: \"Are you using a business broker?\",\n          shortTitle: \"Business broker\",\n          type: \"yesno\"\n        }, {\n          id: \"broker\",\n          title: \"Who is it?\",\n          shortTitle: \" \",\n          type: \"selectorcreate\",\n          itemName: \"broker\",\n          allowPeople: true,\n          customContentFirst: true,\n          content: [{\n            type: \"textline\",\n            title: \"Firm name\",\n            id: \"organisation\"\n          }],\n          askFor: {\n            name: true,\n            email: true,\n            address: true,\n            title: true,\n            phone: true,\n            fax: true,\n            mobile: true\n          },\n          displayIf: {\n            hasBroker: \"yes\"\n          }\n        }]\n      }]\n    }, {\n      title: \"Anything else?\",\n      id: \"anythingelse\",\n      pages: [{\n        id: \"other\",\n        title: \"Other details\",\n        questions: [{\n          title: \"Are there any other details or things we should know?\",\n          shortTitle: \" \",\n          id: \"moreInfo\",\n          type: \"textarea\"\n        }]\n      }]\n    }]\n  };\n});","define(\"settify-mvp/services/induction-definitions/shareholdersagreement\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  var _default = _exports.default = {\n    title: \"Shareholder Agreement\",\n    id: \"shareholdersagreement\",\n    description: \"Consider all the essential matters that should be addressed in your shareholders agreement\",\n    icon: \"/assets/images/icons/041-partnership.png\",\n    iconOffset: 4,\n    canBeRepeated: true,\n    chapters: [{\n      id: \"overview\",\n      shortTitle: \"Overview\",\n      title: \"An overview of the company\",\n      pages: [{\n        id: \"name\",\n        title: \"Name\",\n        questions: [{\n          title: \"What is the company's name?\",\n          type: \"textline\",\n          id: \"name\",\n          useAnswerAsBreadcrumb: true,\n          includeInConflictCheck: true,\n          includeInDisplayName: true\n        }]\n      }, {\n        id: \"activities\",\n        shortTitle: \"Activities\",\n        title: \"Activities of the Company\",\n        questions: [{\n          title: \"What constitutes the “Business” to be conducted by the Company?\",\n          shortTitle: \" \",\n          id: \"business\",\n          type: \"textarea\"\n        }]\n      }, {\n        id: \"funding\",\n        title: \"Funding\",\n        questions: [{\n          title: \"What mechanisms can, or will, be used to fund the operations of the company?\",\n          shortTitle: \"Funding\",\n          type: \"checkbox\",\n          options: [{\n            title: \"Commercial debt\"\n          }, {\n            title: \"Loans from directors or shareholders\"\n          }, {\n            title: \"Capital from founders\"\n          }, {\n            title: \"Equity (venture capital, angel investment, etc)\"\n          }, {\n            title: \"Bootstrapped\"\n          }]\n        }]\n      }]\n    }, {\n      id: \"governance\",\n      title: \"Corporate governance\",\n      shortTitle: \"Governance\",\n      pages: [{\n        id: \"directors\",\n        title: \"Directors\",\n        questions: [{\n          title: \"Should there be any restrictions on who can be a director?\",\n          shortTitle: \"Eligibility restrictions\",\n          id: \"eligibility\",\n          type: \"textarea\"\n        }, {\n          title: \"How many directors should there be?\",\n          shortTitle: \"How many\",\n          id: \"howmany\",\n          type: \"textline\"\n        }, {\n          title: \"Should there be a maximum number of directors?\",\n          shortTitle: \"Maximum number\",\n          id: \"maximum\",\n          type: \"textline\"\n        }, {\n          title: \"How can directors take up and leave their office?\",\n          shortTitle: \"Appointment and removal\",\n          id: \"appointment\",\n          type: \"textarea\"\n        }]\n      }, {\n        id: \"managingdirector\",\n        title: \"Managing Director\",\n        questions: [{\n          title: \"Will there be a Managing Director?\",\n          id: \"hasMD\",\n          type: \"yesno\"\n        }, {\n          title: \"What will their role be?\",\n          id: \"role\",\n          type: \"textarea\",\n          displayIf: {\n            hasMD: \"yes\"\n          }\n        }]\n      }, {\n        id: \"voting\",\n        shortTitle: \"Voting\",\n        title: \"Voting rights (Directors and Shareholders)\",\n        questions: [{\n          title: \"For shareholders, is it one vote per member or one vote per share held?\",\n          shortTitle: \"Shareholder voting\",\n          id: \"shareholder\",\n          type: \"radio\",\n          options: [{\n            title: \"One vote per member\",\n            id: \"permember\"\n          }, {\n            title: \"One vote per share held\",\n            id: \"pershare\"\n          }]\n        }, {\n          title: \"Should each director have equal voting rights?\",\n          shortTitle: \"Director voting\",\n          id: \"director\",\n          type: \"yesno\"\n        }, {\n          title: \"How should they vote?\",\n          shortTitle: \"More information\",\n          id: \"directorMoreInfo\",\n          type: \"textarea\",\n          displayIf: {\n            director: \"no\"\n          }\n        }]\n      }, {\n        id: \"daytoday\",\n        title: \"Day to Day Control\",\n        questions: [{\n          type: \"textarea\",\n          title: \"Which matters are to be determined by the Managing Director?\",\n          id: \"md\",\n          displayIf: {\n            \"managingdirector.hasMD\": \"yes\"\n          }\n        }, {\n          type: \"textarea\",\n          title: \"Which matters are to be determined by the Board of Directors?\",\n          id: \"board\"\n        }, {\n          type: \"textarea\",\n          title: \"Which matters are to be determined by the Members (that is, the Shareholders)?\",\n          id: \"members\"\n        }]\n      }, {\n        id: \"boardmeetings\",\n        title: \"Board Meetings\",\n        questions: [{\n          title: \"How often should board meetings be held?\",\n          shortTitle: \"Frequency\",\n          id: \"how often\",\n          type: \"textline\"\n        }, {\n          title: \"How much notice required is required for a board meeting?\",\n          shortTitle: \"Notice\",\n          id: \"how much notice required\",\n          type: \"textline\"\n        }, {\n          title: \"What constitutes a quorum at a board meeting?\",\n          shortTitle: \"Quorum\",\n          id: \"what constitutes a quorum\",\n          type: \"textline\"\n        }]\n      }, {\n        id: \"membermeetings\",\n        title: \"Members Meetings\",\n        questions: [{\n          title: \"How often should meetings of the members be held?\",\n          shortTitle: \"Frequency\",\n          id: \"how often\",\n          type: \"textline\"\n        }, {\n          title: \"How much notice required is required for a meeting of the members?\",\n          shortTitle: \"Notice\",\n          id: \"how much notice required\",\n          type: \"textline\"\n        }, {\n          title: \"What constitutes a quorum at a meeting of the members?\",\n          shortTitle: \"Quorum\",\n          id: \"what constitutes a quorum\",\n          type: \"textline\"\n        }]\n      }, {\n        id: \"resolutions\",\n        shortTitle: \"Resolutions\",\n        title: \"Resolutions\",\n        questions: [{\n          title: \"Which matters require a special resolution?\",\n          id: \"special\",\n          type: \"textarea\"\n        }, {\n          title: \"And what should constitute a ‘special’ resolution?\",\n          id: \"specialdefinition\",\n          type: \"textarea\",\n          placeholder: \"For example, 75% majority, two-thirds majority, etc\"\n        }, {\n          title: \"Are there any matters that should require unanimous approval?\",\n          id: \"unanimous\",\n          type: \"textarea\"\n        }]\n      }, {\n        id: \"dividends\",\n        title: \"Dividend Policy\",\n        questions: [{\n          title: \"What it is the company's dividend policy?\",\n          id: \"what\",\n          type: \"textarea\"\n        }, {\n          title: \"How can this policy be changed?\",\n          id: \"howchange\",\n          type: \"textarea\"\n        }]\n      }]\n    }, {\n      id: \"shareholders\",\n      title: \"Shares and dealings with shares\",\n      pages: [{\n        id: \"keypersons\",\n        title: \"Key Persons\",\n        questions: [{\n          type: \"yesno\",\n          title: \"Is each shareholder required to have a “Key Person” working in the business?\",\n          id: \"required\"\n        }, {\n          type: \"textarea\",\n          title: \"What qualifications must that Key Person have?\",\n          id: \"qualifications\",\n          displayIf: {\n            required: \"yes\"\n          }\n        }, {\n          type: \"textarea\",\n          title: \"What are they required to do for the company?\",\n          id: \"obligations\",\n          displayIf: {\n            required: \"yes\"\n          }\n        }, {\n          type: \"textarea\",\n          title: \"What are the consequences if they leave or can no longer attend to their obligations as a key person?\",\n          id: \"consequences\",\n          displayIf: {\n            required: \"yes\"\n          }\n        }]\n      }, {\n        id: \"transfer\",\n        shortTitle: \"Transfer of shares\",\n        title: \"Transfer of shares and rights of pre-emption\",\n        questions: [{\n          type: \"yesno\",\n          id: \"existingoffer\",\n          title: \"Should the sale of any shares be offered to existing shareholders first?\"\n        }, {\n          type: \"yesno\",\n          id: \"deedofaccession\",\n          title: \"Should the sale or transfer of any shares to a third party be subject to that third party signing a Deed of Accession?\"\n        }]\n      }, {\n        id: \"grant\",\n        title: \"Grant of options\",\n        questions: [{\n          title: \"What circumstances will give rise to the other shareholders having the right to acquire (or sell) shares?\",\n          id: \"rights\",\n          type: \"textarea\"\n        }]\n      }, {\n        id: \"drag\",\n        title: \"Drag & Tag clauses\",\n        questions: [{\n          type: \"yesno\",\n          title: \"Do you want to include Drag & Tag clauses?\",\n          id: \"included\"\n        }, {\n          title: \"What will give rise to right to drag other shareholders?\",\n          type: \"textarea\",\n          id: \"drag\",\n          displayIf: {\n            included: \"yes\"\n          }\n        }, {\n          title: \"What will give rise to right to tag along with other shareholders?\",\n          type: \"textarea\",\n          id: \"tag\",\n          displayIf: {\n            included: \"yes\"\n          }\n        }, {\n          title: \"Should each shareholder be required hold ‘buy/sell’ or similar insurances?\",\n          type: \"yesno\",\n          id: \"insurance\",\n          displayIf: {\n            included: \"yes\"\n          }\n        }]\n      }]\n    }, {\n      id: \"dispute\",\n      title: \"Dispute resolution\",\n      pages: [{\n        id: \"dispute\",\n        title: \"Dispute resolution\",\n        questions: [{\n          type: \"textarea\",\n          title: \"What mechanisms will be used if a deadlock or dispute as to the affairs of the company arises?\",\n          id: \"mechanism\"\n        }, {\n          type: \"yesno\",\n          title: \"If a shareholder breaches the agreement, should the other shareholders have the right to buy the breaching shareholder's shares?\",\n          id: \"buyout\"\n        }, {\n          type: \"textarea\",\n          title: \"What impact will that have on the sale price of the shares of the bad leaver?\",\n          id: \"saleprice\",\n          displayIf: {\n            buyout: \"yes\"\n          }\n        }]\n      }, {\n        id: \"valuation\",\n        title: \"Valuation of shares\",\n        questions: [{\n          type: \"yesno\",\n          title: \"Should there be a mechanism to resolve disputes as to the price of shares for a departing shareholder?\",\n          id: \"includeMechanism\"\n        }, {\n          type: \"textarea\",\n          title: \"What should that mechanism be?\",\n          id: \"mechanism\",\n          displayIf: {\n            includeMechanism: \"yes\"\n          }\n        }]\n      }]\n    }, {\n      id: \"miscellaneous\",\n      title: \"Miscellaneous considerations\",\n      pages: [{\n        id: \"confidentiality\",\n        shortTitle: \"Confidentiality\",\n        title: \"Confidential information\",\n        questions: [{\n          type: \"textarea\",\n          title: \"What restrictions should exist on the use/disclosure of the company’s information?\",\n          shortTitle: \" \",\n          id: \"restrictions\"\n        }]\n      }, {\n        id: \"primacy\",\n        shortTitle: \"Primacy\",\n        title: \"Primacy of the agreement\",\n        questions: [{\n          type: \"paragraph\",\n          content: \"It is important that, as far as is possible, the shareholders agreement be stated to prevail over the constitution of the company.\"\n        }, {\n          type: \"textarea\",\n          title: \"If there are any special considerations in that regard that we should know about, please list them here.\",\n          shortTitle: \"Any special considerations?\",\n          id: \"considerations\"\n        }]\n      }, {\n        id: \"governing\",\n        title: \"Governing law and jurisdiction\",\n        questions: [{\n          title: \"What laws will govern the agreement?\",\n          id: \"law\",\n          shortTitle: \" \",\n          type: \"textline\",\n          placeholder: \"Eg, NSW, Victoria, New Zealand, Hong Kong, Singapore\"\n        }]\n      }, {\n        id: \"variation\",\n        title: \"Variation\",\n        questions: [{\n          title: \"When and how can the agreement be amended?\",\n          shortTitle: \" \",\n          type: \"textarea\",\n          id: \"whenhow\"\n        }]\n      }, {\n        id: \"nonsolicitation\",\n        title: \"Non solicitation & restriction on competition\",\n        questions: [{\n          title: \"What restrictions should be imposed on directors and the shareholders as to activities outside of the company, both during their involvement in the company, and for a period of time after?\",\n          shortTitle: \" \",\n          type: \"textarea\",\n          id: \"restrictions\"\n        }]\n      }]\n    }, {\n      id: \"other\",\n      title: \"Anything else?\",\n      pages: [{\n        id: \"other\",\n        title: \"Other matters\",\n        questions: [{\n          title: \"Are there any other matters which hav have not covered, but which are required for the proper and efficiency operation of the company and its business?\",\n          shortTitle: \" \",\n          type: \"textarea\",\n          id: \"other\"\n        }]\n      }]\n    }]\n  };\n});","define(\"settify-mvp/services/induction-definitions/simple\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  var _default = _exports.default = {\n    title: \"My simple questionnaire\",\n    id: \"simple\",\n    icon: \"/assets/images/icons/startup.png\",\n    displayIf: {},\n    documentsRequired: [],\n    canBeRepeated: true,\n    chapters: [{\n      title: \"Chapter One\",\n      id: \"chapterone\",\n      displayIf: {},\n      documentsRequired: [],\n      pages: [{\n        title: \"About you\",\n        shortTitle: \"Client\",\n        id: \"you\",\n        // icon: \"wills/wishes.png\",\n        displayIf: {},\n        documentsRequired: [],\n        questions: [{\n          type: \"firstname\",\n          title: \"Your first name\",\n          shortTitle: \"First name\",\n          id: \"firstName\",\n          displayIf: {},\n          documentsRequired: []\n        }, {\n          type: \"paragraph\",\n          content: \"Wow, cool name! Nice to meet you :)\",\n          displayIf: {\n            firstName: \"Athol\"\n          }\n        }, {\n          type: \"textline\",\n          title: \"Your surname\",\n          shortTitle: \"Surname\",\n          id: \"surname\"\n        }, {\n          type: \"radio\",\n          title: \"Your species\",\n          shortTitle: \"Species\",\n          id: \"species\",\n          options: [{\n            title: \"Human\"\n          }, {\n            title: \"Orc\"\n          }, {\n            title: \"Elf\",\n            id: \"elf\"\n          }, {\n            title: \"Gnome\"\n          }, {\n            title: \"Dwarf\",\n            id: \"dwarf\"\n          }]\n        }, {\n          type: \"checkbox\",\n          title: \"Your special skills\",\n          shortTitle: \"Skills\",\n          options: [{\n            title: \"Charisma\"\n          }, {\n            title: \"Strength\"\n          }, {\n            title: \"Health and Wellbeing\",\n            id: \"Healthy\"\n          }, {\n            title: \"Brains\"\n          }, {\n            title: \"Brawn\"\n          }]\n        }, {\n          type: \"checkbox\",\n          options: [{\n            title: \"Do you want to receive marketing materials?\",\n            shortTitle: \"Opted into marketing materials?\",\n            id: \"marketingOptIn\"\n          }]\n        }]\n      }, {\n        title: \"Athol's secret questions!\",\n        shortTitle: \"Athol questions\",\n        id: \"athol\",\n        displayIf: {\n          \"you.firstName\": \"Athol\"\n        },\n        documentsRequired: [],\n        questions: [{\n          type: \"textline\",\n          title: \"How cool is it to be an Athol?\",\n          shortTitle: \"Cool factor\",\n          id: \"coolfactor\"\n        }]\n      }, {\n        title: \"We'll only ask this once\",\n        shortTitle: \"Asked once only\",\n        id: \"onceonly\",\n        // icon: \"wills/wishes.png\",\n        displayIf: {},\n        documentsRequired: [],\n        canBeRepeated: false,\n        questions: [{\n          type: \"textline\",\n          title: \"Tell us something cool about yourself\",\n          shortTitle: \"Cool fact\",\n          id: \"somethingCool\",\n          displayIf: {},\n          documentsRequired: []\n        }]\n      }, {\n        // icon: \"wills/home.png\",\n        title: \"About us\",\n        shortTitle: \"Our firm\",\n        id: \"us\",\n        questions: [{\n          type: \"textarea\",\n          title: \"What are you hoping to achieve today?\",\n          shortTitle: \"Help wanted\",\n          id: \"helpWanted\"\n        }]\n      }]\n    }, {\n      title: \"Chapter Two\",\n      id: \"chaptertwo\",\n      pages: [{\n        title: \"About the company\",\n        shortTitle: \"Company\",\n        id: \"company\",\n        questions: [{\n          type: \"textline\",\n          title: \"What is the company's full name? (This will usually end in Ltd or Pty Ltd)\",\n          shortTitle: \"Name\",\n          id: \"companyName\"\n        }, {\n          type: \"date\",\n          title: \"When was it incorporated?\",\n          shortTitle: \"Incorporation date\",\n          id: \"incorporationDate\"\n        }]\n      }]\n    }, {\n      title: \"Chapter Three (Only show this once)\",\n      id: \"chapterthree\",\n      canBeRepeated: false,\n      pages: [{\n        title: \"Just tell me this once\",\n        id: \"justonce\",\n        questions: [{\n          type: \"textline\",\n          title: \"Are you feeling lucky, punk?\",\n          shortTitle: \"Feeling lucky\",\n          id: \"feelingLucky\"\n        }]\n      }]\n    }]\n  };\n});","define(\"settify-mvp/services/induction-definitions/trustestablishment\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  var _default = _exports.default = {\n    title: \"Establish a Trust\",\n    id: \"trustestablishment\",\n    description: \"Trusts are versatile structures that can assist in business or in your personal life\",\n    icon: \"/assets/images/icons/027-assets.png\",\n    iconOffset: 0,\n    canBeRepeated: true,\n    chapters: [{\n      id: \"trust\",\n      title: \"About the trust\",\n      pages: [{\n        id: \"name\",\n        title: \"The trust's name\",\n        shortTitle: \"Name\",\n        questions: [{\n          id: \"preferredName\",\n          type: \"textline\",\n          title: \"What is your preferred name for the trust?\",\n          includeInDisplayName: true,\n          useAnswerAsBreadcrumb: true,\n          shortTitle: \"Preferred name\"\n        }, {\n          id: \"secondaryName\",\n          type: \"textline\",\n          title: \"If that name is unavailable, what would you like the trust to be called?\",\n          shortTitle: \"Second preference\"\n        }]\n      }, {\n        id: \"trusttype\",\n        title: \"Trust type\",\n        questions: [{\n          id: \"type\",\n          type: \"radio\",\n          title: \"What type of trust do you want to set up?\",\n          shortTitle: \" \",\n          options: [{\n            id: \"discretionary\",\n            title: \"Discretionary trust\"\n          }, {\n            id: \"unit\",\n            title: \"Unit trust\"\n          }, {\n            id: \"hybrid\",\n            title: \"Hybrid trust\"\n          }]\n        }]\n      }, {\n        id: \"establishment\",\n        title: \"Establishment\",\n        questions: [{\n          id: \"establishmentState\",\n          title: \"In which State should the trust be established?\",\n          shortTitle: \"State of establishment\",\n          type: \"radio\",\n          unselectable: true,\n          options: [{\n            title: \"ACT\"\n          }, {\n            title: \"New South Wales\"\n          }, {\n            title: \"Northern Territory\"\n          }, {\n            title: \"Queensland\"\n          }, {\n            title: \"South Australia\"\n          }, {\n            title: \"Tasmania\"\n          }, {\n            title: \"Victoria\"\n          }, {\n            title: \"Western Australia\"\n          }]\n        }, {\n          id: \"establishmentDate\",\n          type: \"date\",\n          title: \"On what date will the Trust Deed be established?\",\n          shortTitle: \"Establishment date\"\n        }, {\n          id: \"excludeTrustee\",\n          type: \"yesno\",\n          title: \"Should the trustee be excluded from being a beneficiary?\",\n          shortTitle: \"Trustee excluded from being a beneficiary\"\n        }]\n      }]\n    }, {\n      id: \"keypeople\",\n      title: \"Key people\",\n      pages: [{\n        title: \"Settlor\",\n        id: \"settlor\",\n        questions: [{\n          type: \"selectorcreate\",\n          id: \"settlor\",\n          title: \"Who will be the settlor? Note that the settlor must not be a beneficiary\",\n          shortTitle: \" \",\n          allowPeople: true,\n          allowCorporations: true,\n          itemName: \"settlor\",\n          askFor: {\n            address: true,\n            phone: true,\n            fax: true,\n            mobile: true\n          },\n          content: [{\n            type: \"money\",\n            id: \"settledSum\",\n            title: \"Settled sum\"\n          }]\n        }]\n      }, {\n        title: \"Trustee(s)\",\n        id: \"trustee\",\n        questions: [{\n          type: \"selectorcreate\",\n          id: \"settlor\",\n          title: \"Who will be the trustee(s)?\",\n          shortTitle: \" \",\n          itemName: \"trustee\",\n          allowPeople: true,\n          allowCorporations: true,\n          multipleSelections: true,\n          askFor: {\n            address: true,\n            phone: true,\n            fax: true,\n            mobile: true,\n            authorisedRepresentative: true,\n            chairman: true\n          }\n        }]\n      }, {\n        title: \"Beneficiaries\",\n        id: \"beneficiary\",\n        questions: [{\n          type: \"selectorcreate\",\n          id: \"beneficiary\",\n          title: \"Who will be the beneficiaries?\",\n          shortTitle: \" \",\n          itemName: \"beneficiary\",\n          allowPeople: true,\n          allowCorporations: true,\n          multipleSelections: true,\n          askFor: {\n            address: true,\n            phone: true,\n            fax: true,\n            mobile: true\n          }\n        }]\n      }, {\n        title: \"Unit holders\",\n        id: \"unitholders\",\n        displayIf: {\n          \"trust.trusttype.type:any\": [\"unit\", \"hybrid\"]\n        },\n        questions: [{\n          type: \"selectorcreate\",\n          id: \"unitholder\",\n          title: \"Who will be the unit holders?\",\n          shortTitle: \" \",\n          itemName: \"unit holder\",\n          allowPeople: true,\n          allowCorporations: true,\n          multipleSelections: true,\n          askFor: {\n            address: true,\n            phone: true,\n            fax: true,\n            mobile: true,\n            chairman: true\n          },\n          content: [{\n            id: \"unitprice\",\n            type: \"money\",\n            title: \"Unit price\"\n          }, {\n            id: \"unittype\",\n            type: \"textline\",\n            title: \"Unit type\"\n          }, {\n            id: \"unitcount\",\n            type: \"number\",\n            title: \"Number of units\"\n          }, {\n            id: \"amoundpaid\",\n            type: \"money\",\n            title: \"Amount paid\"\n          }, {\n            id: \"amoundowing\",\n            type: \"money\",\n            title: \"Amount owing\"\n          }, {\n            id: \"heldontrust\",\n            type: \"yesno\",\n            title: \"Are units being held on trust for someone else?\",\n            shortTitle: \"Held on trust\"\n          }, {\n            id: \"heldontrustMoreinfo\",\n            type: \"textarea\",\n            title: \"Please provide more details below\",\n            shortTitle: \"More details\",\n            displayIf: {\n              heldontrust: \"yes\"\n            }\n          }]\n        }]\n      }, {\n        title: \"Appointer\",\n        id: \"appointer\",\n        displayIf: {\n          \"trust.trusttype.type\": \"discretionary\"\n        },\n        questions: [{\n          type: \"selectorcreate\",\n          id: \"appointer\",\n          title: \"Who will be the appointer?\",\n          shortTitle: \" \",\n          itemName: \"appointer\",\n          allowPeople: true,\n          allowCorporations: true,\n          multipleSelections: true,\n          askFor: {\n            address: true,\n            phone: true,\n            fax: true,\n            mobile: true,\n            authorisedRepresentative: true\n          }\n        }]\n      }]\n    }, {\n      id: \"firstmeeting\",\n      title: \"The first meeting\",\n      pages: [{\n        title: \"Meeting to establish the trust\",\n        id: \"details\",\n        questions: [{\n          type: \"selectorcreate\",\n          id: \"execute\",\n          title: \"Who will execute the trust Deed, by affixing the seal?\",\n          itemName: \"person\",\n          allowPeople: true\n        }, {\n          type: \"selectorcreate\",\n          id: \"chair\",\n          title: \"Who will chair the meeting?\",\n          itemName: \"person\",\n          allowPeople: true\n        }, {\n          type: \"selectorcreate\",\n          id: \"attendees\",\n          title: \"Who will attend the meeting?\",\n          itemName: \"person\",\n          allowPeople: true,\n          multipleSelections: true\n        }, {\n          type: \"date\",\n          title: \"Date of meeting\",\n          id: \"date\"\n        }]\n      }]\n    }, {\n      title: \"Anything else we should know?\",\n      shortTitle: \"Anything else?\",\n      id: \"other\",\n      pages: [{\n        id: \"furtherdetails\",\n        title: \"Further details\",\n        questions: [{\n          type: \"textarea\",\n          id: \"details\",\n          title: \"Please provide any further details or instructions about the trust establishment\",\n          shortTitle: \" \"\n        }]\n      }]\n    }]\n  };\n});","define(\"settify-mvp/services/invoice\", [\"exports\", \"@ember/service\"], function (_exports, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let InvoiceService = _exports.default = (_class = class InvoiceService extends _service.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"store\", _descriptor, this);\n    }\n    async getAllInvoices() {\n      // Get cached invoices\n      const invoices = this.store.peekAll(\"invoice\");\n      if (invoices.length) {\n        // If we have cached invoices return them\n        return invoices;\n      }\n\n      // Fetch and return invoices from AWS\n      return this.store.findAll(\"invoice\");\n    }\n\n    // Check if there is at least one overdue invoice\n    async hasOverdueInvoices() {\n      const invoices = await this.getAllInvoices();\n      return invoices.some(invoice => invoice.status === \"overdue\");\n    }\n\n    // Return all overdue invoices\n    async getOverdueInvoices() {\n      const invoices = await this.getAllInvoices();\n      return invoices.filter(invoice => invoice.status === \"overdue\");\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"store\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/services/json-export\", [\"exports\", \"@ember/service\"], function (_exports, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _service.default.extend({\n    generate(client) {\n      const output = {};\n      if (!client || !client.attributes) {\n        return output;\n      }\n      const src = client.attributes;\n\n      // IDs\n      output.clientID = src[\"client-id\"];\n      output.firmID = src[\"firm-id\"];\n      this.addIfExists(src[\"firm-practice-management\"], \"firmPracticeManagement\", output);\n      output.overview = this.generateOverview(src);\n      output.relationshipDates = this.generateRelationshipDates(src);\n      output.assets = this.generateAssets(src);\n      output.hasUnknownAssets = !!src[\"asset-has-other-unknown-assets\"];\n      output.liabilities = this.generateLiabilities(src);\n      output.hasUnknownLiabilities = !!src[\"liability-has-other-unknown-liabilities\"];\n      output.children = this.generateChildrenList(src);\n      output.otherChildren = this.generateOtherChildrenList(src);\n      if (src[\"has-children\"] === \"complicated\") {\n        output.childrenComplications = src[\"children-complications\"];\n      }\n      if (this.includeParenting(output)) {\n        output.parenting = this.generateParenting(src);\n        output.currentLivingArrangements = this.generateCurrentLivingArrangements(src);\n      }\n      output.contributrionsDuringRelationship = this.generateContributrionsDuringRelationship(src);\n      output.initialContributions = this.generateInitialContributions(src);\n      output.initialLiabilities = this.generateInitialLiabilities(src);\n      output.moreInfo = this.generateMoreInfo(src);\n      output.spouse = this.generateSpouse(src);\n      output.user = this.generateUser(src);\n      if (src[\"anything-else\"]) {\n        output.anythingElse = src[\"anything-else-info\"];\n      }\n      if (src[\"specific-questions\"]) {\n        output.specificQuestions = src[\"specific-questions\"];\n      }\n      return output;\n    },\n    isDefined(val) {\n      if (val === null) {\n        return false;\n      }\n      if (typeof val === \"undefined\") {\n        return false;\n      }\n      return true;\n    },\n    addIfExists(src, propName, output) {\n      if (this.isDefined(src)) {\n        output[propName] = src;\n        return true;\n      }\n      return false;\n    },\n    addIfTruthy(src, propName, output) {\n      if (src) {\n        output[propName] = src;\n        return true;\n      }\n      return false;\n    },\n    removeEmptiesFrom(list) {\n      for (let j = 0; list && j < list.length;) {\n        if (JSON.stringify(list[j]) === \"{}\") {\n          list.splice(j, 1);\n        } else {\n          j++;\n        }\n      }\n    },\n    safeParseInt(val) {\n      let x = parseInt(val, 10);\n      if (isNaN(x)) {\n        x = 0;\n      }\n      return x;\n    },\n    convert(s) {\n      return s.replace(/([A-Z])/g, function (match) {\n        return `-${match.toLowerCase()}`;\n      });\n    },\n    generateOverview(src) {\n      const overview = {};\n      this.addIfExists(src[\"marriage-status\"], \"marriageStatus\", overview);\n      this.addIfExists(src[\"asset-knowledge\"], \"assetKnowledge\", overview);\n      this.addIfExists(src[\"callback-times\"], \"callbackTimes\", overview);\n      this.addIfExists(src[\"current-situation\"], \"currentSituation\", overview);\n      this.addIfExists(src[\"court-orders-in-place\"], \"courtOrdersInPlace\", overview);\n      this.addIfExists(src[\"desired-outcomes\"], \"desiredOutcomes\", overview);\n      this.addIfTruthy(src[\"invited-by-law-firm\"], \"invitedByLawFirm\", overview);\n      if (src[\"invited-by-law-firm\"]) {\n        this.addIfTruthy(src[\"firm-partner-name\"], \"invitedByLawyer\", overview);\n      }\n      this.addIfTruthy(src[\"referral-source\"], \"referralSource\", overview);\n      this.addIfTruthy(src[\"referral-source-more-info\"], \"referralSourceMoreInfo\", overview);\n      this.addIfTruthy(src[\"preferred-lawyer\"], \"preferredLawyer\", overview);\n      if (src[\"family-violence\"] === \"yes\") {\n        const violence = {\n          concerns: []\n        };\n        if (src[\"family-violence-assault\"]) {\n          violence.concerns.push(\"Assault\");\n        }\n        if (src[\"family-violence-sexual\"]) {\n          violence.concerns.push(\"Sexual assault or other sexual abuse\");\n        }\n        if (src[\"family-violence-stalking\"]) {\n          violence.concerns.push(\"Stalking\");\n        }\n        if (src[\"family-violence-taunts\"]) {\n          violence.concerns.push(\"Repeated derogatory taunts\");\n        }\n        if (src[\"family-violence-damage\"]) {\n          violence.concerns.push(\"Intentionally damaging property, or hurting a pet\");\n        }\n        if (src[\"family-violence-financial\"]) {\n          violence.concerns.push(\"Denying a family member their financial autonomy, or the financial support they need\");\n        }\n        if (src[\"family-violence-liberty\"]) {\n          violence.concerns.push(\"Preventing a family member from keeping connections with their family, or depriving them of their liberty\");\n        }\n        if (src[\"family-violence-safety\"]) {\n          violence.concerns.push(\"Current risk to safety\");\n        }\n        if (src[\"family-violence-substance-abuse\"]) {\n          violence.concerns.push(\"Use of drugs or alcohol, or other substance abuse\");\n        }\n        if (src[\"family-violence-mental-health\"]) {\n          violence.concerns.push(\"Known or suspected mental health concerns\");\n        }\n        if (src[\"family-violence-orders\"]) {\n          violence.concerns.push(\"A Violence or Restraining Order has been sought\");\n        }\n        if (src[\"family-violence-police\"]) {\n          violence.concerns.push(\"The police have been called\");\n        }\n        this.addIfTruthy(src[\"family-violence-more-info\"], \"moreInfo\", violence);\n        overview.familyViolence = violence;\n      }\n      if (overview.currentSituation !== \"wanttoprotectmyself\") {\n        overview.amicability = src.amicability;\n        this.addIfExists(src[\"financial-assets\"], \"financialAssets\", overview);\n        if (src[\"wants-help-with-issues\"]) {\n          this.addIfTruthy(src[\"needs-order-for-safety\"], \"needsOrderForSafety\", overview);\n          this.addIfTruthy(src[\"wants-emotional-support\"], \"wantsEmotionalSupport\", overview);\n          this.addIfTruthy(src[\"wants-help-deciding-family-home\"], \"wantsHelpDecidingFamilyHome\", overview);\n          this.addIfTruthy(src[\"wants-help-talking-to-spouse-or-children\"], \"wantsHelpTalkingToSpouseOrChildren\", overview);\n        }\n        this.addIfTruthy(src[\"wants-circuit-breaker\"], \"wantsCircuitBreaker\", overview);\n        this.addIfTruthy(src[\"wants-speedy-resolution\"], \"wantsSpeedyResolution\", overview);\n        this.addIfTruthy(src[\"needs-short-term-financial-security\"], \"needsShortTermFinancialSecurity\", overview);\n      } else {\n        overview.wantsBFA = true;\n      }\n      if (overview.marriageStatus === \"notsure\") {\n        this.addIfExists(src[\"unusual-marriage-info\"], \"unusualMarriageInfo\", overview);\n        this.addIfExists(src[\"unusual-marriage-type\"], \"unusualMarriageType\", overview);\n      }\n      return overview;\n    },\n    generateRelationshipDates(src) {\n      const relationshipDates = {\n        relationshipStartDate: {}\n      };\n      let added = false;\n      added = this.addIfExists(src[\"relationship-start-day\"], \"day\", relationshipDates.relationshipStartDate);\n      added = this.addIfExists(src[\"relationship-start-month\"], \"month\", relationshipDates.relationshipStartDate) || added;\n      added = this.addIfExists(src[\"relationship-start-year\"], \"year\", relationshipDates.relationshipStartDate) || added;\n      if (!added) {\n        this.addIfTruthy(src[\"relationship-start-date-not-sure\"], \"notsure\", relationshipDates.relationshipStartDate);\n      }\n      if (!src[\"cohabitation-never-lived-together\"]) {\n        relationshipDates.cohabitationStartDate = {};\n        added = this.addIfExists(src[\"cohabitation-start-day\"], \"day\", relationshipDates.cohabitationStartDate);\n        added = this.addIfExists(src[\"cohabitation-start-month\"], \"month\", relationshipDates.cohabitationStartDate) || added;\n        added = this.addIfExists(src[\"cohabitation-start-year\"], \"year\", relationshipDates.cohabitationStartDate) || added;\n        if (!added) {\n          this.addIfTruthy(src[\"cohabitation-start-date-not-sure\"], \"notsure\", relationshipDates.cohabitationStartDate);\n        }\n      }\n      if (src[\"marriage-status\"] === \"married\" || src[\"marriage-status\"] === \"divorced\" || src[\"marriage-status\"] === \"notsure\") {\n        relationshipDates.marriageDate = {};\n        added = this.addIfExists(src[\"marriage-day\"], \"day\", relationshipDates.marriageDate);\n        added = this.addIfExists(src[\"marriage-month\"], \"month\", relationshipDates.marriageDate) || added;\n        added = this.addIfExists(src[\"marriage-year\"], \"year\", relationshipDates.marriageDate) || added;\n        if (!added) {\n          this.addIfTruthy(src[\"marriage-date-not-sure\"], \"notsure\", relationshipDates.marriageDate);\n        }\n      }\n      if (!src[\"separation-not-yet-separated\"] && src[\"current-situation\"] !== \"wanttoprotectmyself\") {\n        relationshipDates.separationDate = {};\n        added = this.addIfExists(src[\"separation-day\"], \"day\", relationshipDates.separationDate);\n        added = this.addIfExists(src[\"separation-month\"], \"month\", relationshipDates.separationDate) || added;\n        added = this.addIfExists(src[\"separation-year\"], \"year\", relationshipDates.separationDate) || added;\n        if (!added) {\n          this.addIfTruthy(src[\"separation-date-not-sure\"], \"notsure\", relationshipDates.separationDate);\n        }\n        this.addIfTruthy(src[\"separation-under-one-roof\"], \"underOneRoof\", relationshipDates.separationDate);\n      }\n      return relationshipDates;\n    },\n    generateAssets(src) {\n      const assets = [];\n      this.addRealEstateTo(src[\"asset-has-other-real-estate\"], src[\"asset-other-real-estate-list\"], src, assets);\n      this.addMotorVehiclesTo(src[\"asset-has-motor-vehicles\"], src[\"asset-motor-vehicles-list\"], assets);\n      this.addMoneyTo(src, assets);\n      this.addSharesTo(src, assets);\n      this.addTrustsTo(src[\"asset-has-trusts\"], src[\"asset-trust-list\"], assets);\n      this.addBusinessesTo(src[\"asset-has-business-interests\"], src[\"asset-all-businesses\"], assets);\n      this.addInvestmentsTo(src[\"asset-has-other-investments\"], src[\"asset-other-investment-list\"], assets);\n      this.addMoneyOwedTo(src[\"asset-has-money-owed\"], src[\"asset-money-owed-list\"], assets);\n      this.addPersonalPropertyTo(src, assets);\n      this.addSMSFsTo(src[\"asset-has-smsf\"], src[\"asset-smsflist\"], assets);\n      this.addOtherAssetsTo(src, assets);\n      return assets;\n    },\n    addMoneyOwedTo(test, list, assets) {\n      if (!test) {\n        return;\n      }\n      if (!list) {\n        return;\n      }\n      for (let i = 0; i < list.length; i++) {\n        const b = {\n          type: \"moneyowed\"\n        };\n        Object.assign(b, list[i]);\n        if (b.owner === \"bothnames\") {\n          b.owner = \"joint\";\n        }\n        if (this.isDefined(b.valueConfidence)) {\n          b.valueConfidence = parseInt(b.valueConfidence, 10);\n        } else {\n          b.valueConfidence = 0;\n        }\n        if (this.isDefined(b.value)) {\n          b.value = parseInt(b.value, 10);\n        } else {\n          delete b.value;\n          delete b.valueConfidence;\n        }\n        assets.push(b);\n      }\n    },\n    addBusinessesTo(test, list, assets) {\n      if (!test) {\n        return;\n      }\n      if (!list) {\n        return;\n      }\n      for (let i = 0; i < list.length; i++) {\n        const b = {\n          type: \"business\"\n        };\n        Object.assign(b, list[i]);\n        this.removeEmptiesFrom(b.personalLiabilities);\n        this.removeEmptiesFrom(b.plantStockEquipment);\n        if (this.isDefined(b.valueConfidence)) {\n          b.valueConfidence = parseInt(b.valueConfidence, 10);\n        } else {\n          b.valueConfidence = 0;\n        }\n        if (this.isDefined(b.value)) {\n          b.value = parseInt(b.value, 10);\n          delete b.valueUnknown;\n        } else {\n          delete b.value;\n          delete b.valueConfidence;\n        }\n\n        // b.name = businessName([b]);\n\n        if (b.businessType === \"farming\") {\n          b.value = b.value * b.area;\n        } else {\n          delete b.acresOrHectares;\n          delete b.address;\n        }\n        if (b.plantStockEquipment) {\n          for (let j = 0; j < b.plantStockEquipment.length; j++) {\n            if (this.isDefined(b.plantStockEquipment[j])) {\n              b.plantStockEquipment[j].value = parseInt(b.plantStockEquipment[j].value, 10);\n              b.value += b.plantStockEquipment[j].value;\n            }\n          }\n        }\n        if (b.businessType === \"assetholding\") {\n          if (!b.assetHoldings) {\n            b.assetHoldings = [];\n          }\n          if (b.holdsProperty) {\n            b.assetHoldings.push(\"property\");\n          }\n          if (b.holdsShares) {\n            b.assetHoldings.push(\"shares\");\n          }\n          if (b.holdsFinancialInvestments) {\n            b.assetHoldings.push(\"investments\");\n          }\n          if (b.holdsFarmland) {\n            b.assetHoldings.push(\"farmland\");\n          }\n          if (b.holdsIP) {\n            b.assetHoldings.push(\"ip\");\n          }\n          if (b.holdsOther) {\n            b.assetHoldings.push(\"other\");\n          }\n        }\n        delete b.holdsProperty;\n        delete b.holdsShares;\n        delete b.holdsFinancialInvestments;\n        delete b.holdsFarmland;\n        delete b.holdsIP;\n        delete b.holdsOther;\n        if (b.anyOtherInformation) {\n          b.moreInfo = b.anyOtherInformation;\n        }\n        delete b.anyOtherInformation;\n        assets.push(b);\n      }\n    },\n    addRealEstateTo(test, list, src, assets) {\n      if (!list || !test) {\n        list = [];\n      }\n      for (let i = -1; i < list.length; i++) {\n        const b = {\n          type: \"realestate\"\n        };\n        if (i < 0) {\n          // check family home\n          if (src && src[\"owns-own-home\"] === \"yes\") {\n            b.familyHome = true;\n            this.addIfExists(src[\"own-home-mortgage-amount\"], \"mortgageAmount\", b);\n            this.addIfExists(src[\"own-home-mortgage-amount-unknown\"], \"mortgageUnknown\", b);\n            this.addIfExists(src[\"own-home-mortgage-confidence\"], \"mortgageConfidence\", b);\n            this.addIfExists(src[\"own-home-owned-outright\"], \"ownedOutright\", b);\n            this.addIfExists(src[\"own-home-value\"], \"value\", b);\n            this.addIfExists(src[\"own-home-value-confidence\"], \"valueConfidence\", b);\n            if (src[\"own-home-bedroom-count\"] > 0 && !src[\"own-home-value\"]) {\n              b.valueUnknown = true;\n            }\n            this.addIfExists(src[\"home-whose-name\"], \"owner\", b);\n            this.addIfExists(src[\"home-whose-name-more-detail\"], \"moreInfo\", b);\n            b.address = {};\n            Object.assign(b.address, src[\"own-home-address\"]);\n          } else {\n            continue;\n          }\n        } else {\n          Object.assign(b, list[i]);\n        }\n        if (this.isDefined(b.valueConfidence)) {\n          b.valueConfidence = parseInt(b.valueConfidence, 10);\n        } else {\n          b.valueConfidence = 0;\n        }\n        if (this.isDefined(b.value)) {\n          b.value = parseInt(b.value, 10);\n          delete b.valueUnknown;\n        } else {\n          delete b.valueConfidence;\n        }\n        if (!b.valueUnknown) {\n          delete b.valueUnknown;\n        }\n        if (this.isDefined(b.mortgageConfidence)) {\n          b.mortgageConfidence = parseInt(b.mortgageConfidence, 10);\n        } else {\n          b.mortgageConfidence = 0;\n        }\n        if (this.isDefined(b.mortgageAmount)) {\n          b.mortgageAmount = parseInt(b.mortgageAmount, 10);\n          delete b.mortgageUnknown;\n        } else {\n          delete b.mortgageConfidence;\n        }\n        if (b.ownedOutright) {\n          delete b.mortgageAmount;\n          delete b.mortgageConfidence;\n          delete b.mortgageUnknown;\n        } else {\n          delete b.ownedOutright;\n        }\n        if (b.owner !== \"other\") {\n          delete b.spouseOwnershipPercentage;\n          delete b.userOwnershipPercentage;\n        }\n        if (b.owner === \"bothnames\") {\n          b.owner = \"joint\";\n        }\n        assets.push(b);\n      }\n    },\n    addBankAccount(value, owner, confidence, assets) {\n      const a = {\n        type: \"money\",\n        owner: owner,\n        value: this.safeParseInt(value),\n        valueConfidence: this.safeParseInt(confidence)\n      };\n      if (a.value) {\n        assets.push(a);\n      }\n    },\n    addMoneyTo(src, assets) {\n      if (!src[\"asset-has-money-in-bank\"]) {\n        return;\n      }\n      this.addBankAccount(src[\"asset-user-bank-balance\"], \"user\", src[\"asset-user-bank-balance-confidence\"], assets);\n      this.addBankAccount(src[\"asset-spouse-bank-balance\"], \"spouse\", src[\"asset-spouse-bank-balance-confidence\"], assets);\n      this.addBankAccount(src[\"asset-joint-bank-balance\"], \"joint\", src[\"asset-joint-bank-balance-confidence\"], assets);\n    },\n    addShareholding(params, assets) {\n      if (params.moreInfo === \"individualshareholdings\") {\n        // process individual shareholding listings\n        for (let i = 0; params.holdings && i < params.holdings.length; i++) {\n          assets.push({\n            type: \"individualShareholding\",\n            owner: params.owner,\n            name: params.holdings[i].company,\n            company: params.holdings[i].company,\n            quantity: this.safeParseInt(params.holdings[i].quantity),\n            value: this.safeParseInt(params.holdings[i].value)\n          });\n        }\n      } else if (this.safeParseInt(params.value)) {\n        // we have an actual value - ignore anything like \"i don't know\"\n        assets.push({\n          type: \"aggregateShareholding\",\n          owner: params.owner,\n          value: this.safeParseInt(params.value),\n          confidence: this.safeParseInt(params.confidence)\n        });\n      } else if (params.moreInfo === \"dontknow\") {\n        assets.push({\n          type: \"aggregateShareholding\",\n          owner: params.owner,\n          valueUnknown: true\n        });\n      } else if (params.moreInfo === \"noshares\") {\n        return;\n      }\n    },\n    addSharesTo(src, assets) {\n      if (!src[\"asset-has-shares\"]) {\n        return;\n      }\n      this.addShareholding({\n        value: src[\"asset-user-shares-value\"],\n        confidence: src[\"asset-user-shares-value-confidence\"],\n        moreInfo: src[\"asset-user-shares-value-more-info\"],\n        holdings: src[\"asset-user-shares-all-holdings\"],\n        owner: \"user\"\n      }, assets);\n      this.addShareholding({\n        value: src[\"asset-spouse-shares-value\"],\n        confidence: src[\"asset-spouse-shares-value-confidence\"],\n        moreInfo: src[\"asset-spouse-shares-value-more-info\"],\n        holdings: src[\"asset-spouse-shares-all-holdings\"],\n        owner: \"spouse\"\n      }, assets);\n      this.addShareholding({\n        value: src[\"asset-joint-shares-value\"],\n        confidence: src[\"asset-joint-shares-value-confidence\"],\n        moreInfo: src[\"asset-joint-shares-value-more-info\"],\n        holdings: src[\"asset-joint-shares-all-holdings\"],\n        owner: \"joint\"\n      }, assets);\n    },\n    addMotorVehiclesTo(test, list, assets) {\n      if (!test) {\n        return;\n      }\n      if (!list) {\n        return;\n      }\n      for (let i = 0; i < list.length; i++) {\n        const b = {\n          type: \"motorvehicle\"\n        };\n        Object.assign(b, list[i]);\n        b.valueConfidence = this.safeParseInt(b.valueConfidence);\n        b.value = parseInt(b.value, 10);\n        if (isNaN(b.value)) {\n          delete b.value;\n          delete b.valueConfidence;\n        } else if (b.value) {\n          delete b.valueUnknown;\n        }\n        if (!b.make) {\n          delete b.make;\n        }\n        if (!b.model) {\n          delete b.model;\n        }\n        if (b.make || b.model || !b.makemodelUnknown) {\n          delete b.makemodelUnknown;\n        }\n        b.name = `${b.make} ${b.model}`.trim();\n        if (!b.valueUnknown) {\n          delete b.valueUnknown;\n        }\n        assets.push(b);\n      }\n    },\n    addInvestmentsTo(test, list, assets) {\n      if (!test) {\n        return;\n      }\n      if (!list) {\n        return;\n      }\n      for (let i = 0; i < list.length; i++) {\n        const b = {\n          type: \"investment\"\n        };\n        Object.assign(b, list[i]);\n        b.valueConfidence = this.safeParseInt(b.valueConfidence);\n        b.value = parseInt(b.value);\n        if (isNaN(b.value)) {\n          delete b.value;\n          delete b.valueConfidence;\n        } else if (b.value) {\n          delete b.valueUnknown;\n        }\n        if (!b.valueUnknown) {\n          delete b.valueUnknown;\n        }\n        b.ownershipPercentage = parseInt(b.ownershipPercentage, 10);\n        b.ownershipNumShares = parseInt(b.ownershipNumShares, 10);\n        if (isNaN(b.ownershipPercentage)) {\n          delete b.ownershipPercentage;\n        }\n        if (isNaN(b.ownershipNumShares)) {\n          delete b.ownershipNumShares;\n        }\n        if (b.ownershipPercentage && !b.ownershipNumShares) {\n          delete b.ownershipNumShares;\n        }\n        if (!b.ownershipPercentage && b.ownershipNumShares) {\n          delete b.ownershipPercentage;\n        }\n        assets.push(b);\n      }\n    },\n    addPersonalPropertyTo(src, assets) {\n      if (!src[\"asset-has-other-personal-property\"]) {\n        return;\n      }\n      const list = src[\"asset-other-personal-property-list\"];\n      if (!list) {\n        return;\n      }\n      for (let i = 0; i < list.length; i++) {\n        const b = {\n          type: \"personalproperty\"\n        };\n        Object.assign(b, list[i]);\n        b.value = parseInt(b.value);\n        if (isNaN(b.value)) {\n          delete b.value;\n        }\n        if (!this.isDefined(b.name) || b.name === \"\") {\n          delete b.name;\n        }\n        if (!this.isDefined(b.owner) || b.owner === \"\") {\n          delete b.owner;\n        }\n        if (b.otherInfo) {\n          b.moreInfo = b.otherInfo;\n        }\n        delete b.otherInfo;\n        assets.push(b);\n      }\n    },\n    addSMSFsTo(test, list, assets) {\n      if (!test) {\n        return;\n      }\n      if (!list) {\n        return;\n      }\n      for (let i = 0; i < list.length; i++) {\n        const b = {\n          type: \"smsf\"\n        };\n        Object.assign(b, list[i]);\n        b.valueConfidence = this.safeParseInt(b.valueConfidence);\n        b.value = parseInt(b.value);\n        if (isNaN(b.value)) {\n          delete b.value;\n          delete b.valueConfidence;\n        } else if (b.value) {\n          delete b.valueUnknown;\n        }\n        if (!b.valueUnknown) {\n          delete b.valueUnknown;\n        }\n        if (!this.isDefined(b.name) || b.name === \"\") {\n          delete b.name;\n        }\n        if (!this.isDefined(b.beneficiaries) || b.beneficiaries === \"\") {\n          delete b.beneficiaries;\n        }\n        if (!this.isDefined(b.trustee) || b.trustee === \"\") {\n          delete b.trustee;\n        }\n        if (b.otherInfo) {\n          b.moreInfo = b.otherInfo;\n        }\n        delete b.otherInfo;\n        assets.push(b);\n      }\n    },\n    addTrustsTo(test, list, assets) {\n      if (!test) {\n        return;\n      }\n      if (!list) {\n        return;\n      }\n      for (let i = 0; i < list.length; i++) {\n        const b = {\n          type: \"trust\"\n        };\n        Object.assign(b, list[i]);\n        if (!this.isDefined(b.name)) {\n          b.name = \"Trust\";\n        }\n        assets.push(b);\n      }\n    },\n    addOtherAssetsTo(src, assets) {\n      if (src[\"asset-has-other-type-of-assets\"]) {\n        assets.push({\n          type: \"other\",\n          description: src[\"asset-other-type-of-assets-more-info\"]\n        });\n      }\n    },\n    addLiabilitiesFromList(enabled, list, type, liabilities) {\n      if (!enabled || !list || !list.length) {\n        return;\n      }\n      for (let i = 0; i < list.length; i++) {\n        const b = {\n          type: type\n        };\n        Object.assign(b, list[i]);\n        b.debtConfidence = this.safeParseInt(b.debtConfidence);\n        b.debt = parseInt(b.debt);\n        if (isNaN(b.debt)) {\n          delete b.debt;\n          delete b.debtConfidence;\n        } else if (b.debt) {\n          delete b.debtUnknown;\n        }\n        if (!b.debtUnknown) {\n          delete b.debtUnknown;\n        }\n        if (b.owner === \"other\") {\n          b.userOwnershipPercentage = this.safeParseInt(b.otherUserPercentage);\n          b.spouseOwnershipPercentage = this.safeParseInt(b.otherSpousePercentage);\n        } else {\n          delete b.otherBorrowers;\n        }\n        delete b.otherUserPercentage;\n        delete b.otherSpousePercentage;\n        if (b.provider) {\n          b.lender = b.provider;\n        }\n        delete b.provider;\n        if (b.asset) {\n          b.name = b.asset;\n        }\n        delete b.asset;\n        if (b.owner === \"other\") {\n          if (b.ownerOther) {\n            b.otherBorrowers = b.ownerOther;\n          }\n          delete b.ownerOther;\n        }\n        if (b.owner === \"unknown\") {\n          if (b.anyInfo) {\n            b.moreInfo = b.anyInfo;\n          }\n        }\n        delete b.anyInfo;\n        if (type === \"hirepurchase\") {\n          b.finalPaymentDate = {\n            day: this.safeParseInt(b.finalPaymentDay),\n            month: this.safeParseInt(b.finalPaymentMonth),\n            year: this.safeParseInt(b.finalPaymentYear)\n          };\n          if (!b.finalPaymentDate.day) {\n            delete b.finalPaymentDate.day;\n          }\n          if (!b.finalPaymentDate.month) {\n            delete b.finalPaymentDate.month;\n          }\n          if (!b.finalPaymentDate.year) {\n            delete b.finalPaymentDate.year;\n          }\n          delete b.finalPaymentDay;\n          delete b.finalPaymentMonth;\n          delete b.finalPaymentYear;\n        }\n        if (type === \"taxdebt\") {\n          b.lastFinancialYear = {\n            debt: this.safeParseInt(b.lastFinancialYear),\n            debtConfidence: this.safeParseInt(b.lastFinancialYearConfidence),\n            debtUnknown: b.lastFinancialYearUnknown\n          };\n          b.previousFinancialYear = {\n            debt: this.safeParseInt(b.previousFinancialYear),\n            debtConfidence: this.safeParseInt(b.previousFinancialYearConfidence),\n            debtUnknown: b.previousFinancialYearUnknown\n          };\n          if (b.lastFinancialYear.debt) {\n            delete b.lastFinancialYear.debtUnknown;\n          }\n          if (b.previousFinancialYear.debt) {\n            delete b.previousFinancialYear.debtUnknown;\n          }\n          if (b.lastFinancialYear.debtUnknown) {\n            delete b.lastFinancialYear.debt;\n            delete b.lastFinancialYear.debtConfidence;\n          }\n          if (b.previousFinancialYear.debtUnknown) {\n            delete b.previousFinancialYear.debt;\n            delete b.previousFinancialYear.debtConfidence;\n          }\n          if (!b.lastFinancialYear.debtUnknown) {\n            delete b.lastFinancialYear.debtUnknown;\n          }\n          if (!b.previousFinancialYear.debtUnknown) {\n            delete b.previousFinancialYear.debtUnknown;\n          }\n          let debt = 0;\n          let confidence = 0;\n          if (b.lastFinancialYear.debt) {\n            debt += b.lastFinancialYear.debt;\n            confidence = b.lastFinancialYear.debtConfidence;\n          }\n          if (b.previousFinancialYear.debt) {\n            debt += b.previousFinancialYear.debt;\n            confidence += b.previousFinancialYear.debtConfidence;\n            confidence /= 2;\n            confidence = Math.round(confidence);\n          }\n          b.debt = debt;\n          b.debtConfidence = confidence;\n          b.debtUnknown = !!b.previousFinancialYear.debtUnknown || !!b.lastFinancialYear.debtUnknown;\n          if (!b.debtUnknown) {\n            delete b.debtUnknown;\n          }\n          delete b.lastFinancialYearConfidence;\n          delete b.lastFinancialYearUnknown;\n          delete b.previousFinancialYearConfidence;\n          delete b.previousFinancialYearUnknown;\n        }\n        if (!this.isDefined(b.name) || b.name === \"\") {\n          delete b.name;\n        }\n        if (!this.isDefined(b.owner) || b.owner === \"\") {\n          delete b.owner;\n        }\n        if (!this.isDefined(b.lender) || b.lender === \"\") {\n          delete b.lender;\n        }\n        if (!this.isDefined(b.otherBorrowers) || b.otherBorrowers === \"\") {\n          delete b.otherBorrowers;\n        }\n        liabilities.push(b);\n      }\n    },\n    generateLiabilities(src) {\n      const liabilities = [];\n      this.addLiabilitiesFromList(src[\"liability-has-credit-card-debts\"], src[\"liability-credit-card-list\"], \"creditcard\", liabilities);\n      this.addLiabilitiesFromList(src[\"liability-has-personal-loans\"], src[\"liability-personal-loan-list\"], \"personalloan\", liabilities);\n      this.addLiabilitiesFromList(src[\"liability-has-hire-purchase-lease-debts\"], src[\"liability-hire-purchase-lease-list\"], \"hirepurchase\", liabilities);\n      this.addLiabilitiesFromList(src[\"liability-has-tax-debts\"], src[\"liability-tax-debt-list\"], \"taxdebt\", liabilities);\n      this.addLiabilitiesFromList(src[\"liability-has-student-loans\"], src[\"liability-student-loan-list\"], \"studentloan\", liabilities);\n      this.addLiabilitiesFromList(src[\"liability-has-other-liabilities\"], src[\"liability-other-liabilities-list\"], \"other\", liabilities);\n      return liabilities;\n    },\n    generateParenting(src) {\n      const parenting = {\n        arrangementsDuringRelationship: {\n          arrangement: src[\"childcare-arrangements-during-relationship\"]\n        },\n        currentArrangements: {\n          arrangement: src[this.convert(\"childrenCurrentArrangement\")]\n        },\n        desiredArrangements: src[this.convert(\"childcareDesiredArrangements\")],\n        currentAgreement: {\n          discussions: src[this.convert(\"currentChildrenDiscussions\")]\n        }\n      };\n      this.addIfExists(src[\"child-support-assessment-in-place\"], \"childSupportAssessmentInPlace\", parenting);\n      if (src[\"future-children-needs\"] === \"yes\") {\n        this.addIfTruthy(src[\"future-children-needs-more-info\"], \"futureNeeds\", parenting);\n      }\n      if (parenting.arrangementsDuringRelationship.arrangement !== \"even\") {\n        parenting.arrangementsDuringRelationship.whoSpentMoreTime = src[this.convert(\"childcareWhoSpentMoreTime\")];\n        parenting.arrangementsDuringRelationship.nonPrimaryCaregiverContributions = {\n          childcareBathing: src[this.convert(\"childcareBathing\")],\n          childcareDriving: src[this.convert(\"childcareDriving\")],\n          childcareHomework: src[this.convert(\"childcareHomework\")],\n          childcarePlanning: src[this.convert(\"childcarePlanning\")],\n          childcarePlaying: src[this.convert(\"childcarePlaying\")],\n          childcarePreparingMeals: src[this.convert(\"childcarePreparingMeals\")],\n          childcareReading: src[this.convert(\"childcareReading\")],\n          childcareSchoolTransport: src[this.convert(\"childcareSchoolTransport\")],\n          childcareSports: src[this.convert(\"childcareSports\")]\n        };\n      }\n      switch (parenting.currentArrangements.arrangement) {\n        case \"equaltime\":\n          parenting.currentArrangements.moreInfo = src[this.convert(\"childrenCurrentEqualTimeArrangement\")];\n          break;\n        case \"primarilywithoneperson\":\n          parenting.currentArrangements.primaryParent = src[this.convert(\"childrenCurrentPrimaryParent\")];\n          parenting.currentArrangements.nonPrimaryParentNightsPer = this.safeParseInt(src[this.convert(\"childrenNonPrimaryParentNightsPer\")]);\n          parenting.currentArrangements.nonPrimaryParentNightsTimePeriod = src[this.convert(\"childrenNonPrimaryParentNightsTimePeriod\")];\n          if (parenting.currentArrangements.nonPrimaryParentNightsPer === 0) {\n            parenting.currentArrangements.moreInfo = src[this.convert(\"childrenNonPrimaryParentContact\")];\n          }\n          break;\n        case \"anotherarrangement\":\n          parenting.currentArrangements.moreInfo = src[this.convert(\"childrenOtherArrangementMoreInfo\")];\n          break;\n      }\n      switch (parenting.currentAgreement.discussions) {\n        case \"hadsomediscussions\":\n          parenting.currentAgreement.moreInfo = src[this.convert(\"childrenDiscussionsMoreInfo\")];\n          break;\n        case \"agreedonsomethings\":\n          parenting.currentAgreement.moreInfo = src[this.convert(\"childrenSomeAgreementMoreInfo\")];\n          break;\n        case \"madeanagreement\":\n          parenting.currentAgreement.moreInfo = src[this.convert(\"childrenAgreementType\")];\n          if (parenting.currentAgreement.moreInfo === \"onewantstochangeplan\") {\n            parenting.currentAgreement.whoWantsToChangeOrders = src[this.convert(\"childrenWhoWantsToChangeOrders\")];\n            parenting.currentAgreement.reasonForChangingOrders = src[this.convert(\"childrenReasonForChangingOrders\")];\n          }\n          break;\n      }\n      return parenting;\n    },\n    generateChildrenList(src) {\n      const children = [];\n      if (src[\"has-children\"] === \"yes\") {\n        for (let i = 0; src.children && i < src.children.length; i++) {\n          const c = {};\n          Object.assign(c, src.children[i]);\n          children.push(c);\n        }\n      }\n      return children;\n    },\n    generateOtherChildrenList(src) {\n      const children = [];\n      if (src[this.convert(\"anyOtherChildren\")] === \"yes\") {\n        const list = src[\"other-children\"];\n        for (let i = 0; list && i < list.length; i++) {\n          const c = {};\n          Object.assign(c, list[i]);\n          children.push(c);\n        }\n      }\n      return children;\n    },\n    includeParenting(record) {\n      let count = record.children.length;\n      for (let i = 0; record.children && i < record.children.length; i++) {\n        if (record.children[i].age >= 18) {\n          // we test it this way because age might be undefined, and we want them to count as children\n          count--;\n        }\n      }\n      return count > 0;\n    },\n    generateCurrentLivingArrangements(src) {\n      const currentLivingArrangements = {\n        arrangement: src[this.convert(\"currentLivingArrangements\")]\n      };\n      if (currentLivingArrangements.arrangement === \"onemovedout\") {\n        const stayed = {\n          whereLiving: \"familyhome\"\n        };\n        const went = {\n          whereLiving: src[this.convert(\"whereNonHomeliverLiving\")]\n        };\n        went.accommodationDescription = src[this.convert(\"nonHomeliverAccommodationDescription\")];\n        if (went.whereLiving === \"other\") {\n          went.moreInfo = src[this.convert(\"nonHomeLiverOtherArrangement\")];\n        }\n        if (src[this.convert(\"whoHasRemainedInHome\")] === \"user\") {\n          currentLivingArrangements.user = stayed;\n          currentLivingArrangements.spouse = went;\n        } else {\n          currentLivingArrangements.user = went;\n          currentLivingArrangements.spouse = stayed;\n        }\n      } else if (currentLivingArrangements.arrangement === \"bothmovedout\") {\n        currentLivingArrangements.user = {\n          whereLiving: src[this.convert(\"whereUserLiving\")]\n        };\n        currentLivingArrangements.user.accommodationDescription = src[this.convert(\"userAccommodationDescription\")];\n        if (currentLivingArrangements.user.whereLiving === \"other\") {\n          currentLivingArrangements.user.moreInfo = src[this.convert(\"userOtherLivingArrangement\")];\n        }\n        currentLivingArrangements.spouse = {\n          whereLiving: src[this.convert(\"whereSpouseLiving\")]\n        };\n        currentLivingArrangements.spouse.accommodationDescription = src[this.convert(\"spouseAccommodationDescription\")];\n        if (currentLivingArrangements.spouse.whereLiving === \"other\") {\n          currentLivingArrangements.spouse.moreInfo = src[this.convert(\"spouseOtherLivingArrangement\")];\n        }\n      } else if (currentLivingArrangements.arrangement === \"other\") {\n        currentLivingArrangements.moreInfo = src[this.convert(\"currentLivingArrangementsOtherInfo\")];\n      }\n      return currentLivingArrangements;\n    },\n    processExternalContributions(src, contributions) {\n      const list = src[this.convert(\"duringContributionsExternalList\")];\n      if (!list || !list.length) {\n        return;\n      }\n      for (let i = 0; i < list.length; i++) {\n        const b = {\n          type: list[i].type,\n          recipient: list[i].recipient,\n          value: parseInt(list[i].value, 10),\n          year: parseInt(list[i].year, 10)\n        };\n        switch (b.type) {\n          case \"moneyfromfamily\":\n          case \"inheritance\":\n            b.fromWhom = list[i].fromWhom;\n            b.fromWhomRelationship = list[i].fromWhomRelationship;\n            break;\n          case \"helpfromfamily\":\n            b.fromWhomRelationship = list[i].fromWhomRelationship;\n            b.details = list[i].inKindType;\n            if (b.details === \"livingrentfree\") {\n              b.fromWhom = list[i].fromWhom;\n              b.moreInfo = `${list[i].livingRentFreePeriods}\\n${list[i].contributionMoreInfo}`;\n            } else {\n              b.moreInfo = list[i].contributionMoreInfo;\n            }\n            break;\n          case \"compensation\":\n          case \"employmentlumpsum\":\n          case \"personalinjury\":\n            b.moreInfo = list[i].contributionMoreInfo;\n            break;\n          case \"gift\":\n          case \"other\":\n            b.moreInfo = list[i].contributionMoreInfo;\n            b.fromWhomRelationship = list[i].fromWhomRelationship;\n            break;\n        }\n        if (isNaN(b.value)) {\n          delete b.value;\n        }\n        if (isNaN(b.year)) {\n          delete b.year;\n        }\n        contributions.push(b);\n      }\n    },\n    processHouseholdContributions(src, contributions) {\n      let c;\n      if (src[\"has-children\"]) {\n        if (src[\"household-childcare\"] === \"equal\") {\n          contributions.push({\n            type: \"childcare\",\n            split: \"equal\"\n          });\n        } else if (src[\"household-childcare\"] === \"unequal\") {\n          c = {\n            type: \"childcare\",\n            split: \"unequal\",\n            greaterContributor: src[\"household-greater-childcare-contributor\"],\n            moreInfo: src[\"household-greater-childcare-more-info\"]\n          };\n          if (!c.greaterChildcareContributor) {\n            delete c.greaterChildcareContributor;\n          }\n          if (!c.moreInfo) {\n            delete c.moreInfo;\n          }\n          contributions.push(c);\n        }\n      }\n      if (src[\"household-contributions\"] === \"equal\") {\n        contributions.push({\n          type: \"housework\",\n          split: \"equal\"\n        });\n      } else if (src[\"household-contributions\"] === \"unequal\") {\n        c = {\n          type: \"housework\",\n          split: \"unequal\",\n          greaterContributor: src[\"household-greater-contributor\"]\n        };\n        if (!c.greaterContributor) {\n          delete c.greaterContributor;\n        }\n        contributions.push(c);\n      }\n    },\n    processMiscContributions(src, contributions) {\n      if (src[this.convert(\"otherContributionAssetMaintenance\")]) {\n        contributions.push({\n          type: \"assetmaintenance\",\n          moreInfo: src[this.convert(\"otherContributionAssetMaintenanceInfo\")]\n        });\n      }\n      if (src[this.convert(\"otherContributionElderCare\")]) {\n        contributions.push({\n          type: \"eldercare\",\n          moreInfo: src[this.convert(\"otherContributionElderCareInfo\")]\n        });\n      }\n      if (src[this.convert(\"otherContributionFavourableLoanTerms\")]) {\n        contributions.push({\n          type: \"favourableloanterms\",\n          moreInfo: src[this.convert(\"otherContributionFavourableLoanTermsInfo\")]\n        });\n      }\n      if (src[this.convert(\"otherContributionOther\")]) {\n        contributions.push({\n          type: \"other\",\n          moreInfo: src[this.convert(\"otherContributionOtherInfo\")]\n        });\n      }\n      if (src[this.convert(\"otherContributionOtherChildcare\")]) {\n        contributions.push({\n          type: \"otherchildcare\",\n          moreInfo: src[this.convert(\"otherContributionOtherChildcareInfo\")]\n        });\n      }\n      if (src[this.convert(\"otherContributionSpousalCare\")]) {\n        contributions.push({\n          type: \"spousalcare\",\n          moreInfo: src[this.convert(\"otherContributionSpousalCareInfo\")]\n        });\n      }\n    },\n    generateContributrionsDuringRelationship(src) {\n      const contributions = [];\n      this.processExternalContributions(src, contributions);\n      this.processHouseholdContributions(src, contributions);\n      this.processMiscContributions(src, contributions);\n      return contributions;\n    },\n    addInitialContributionTo(test, value, type, contributor, list) {\n      if (!test) {\n        return;\n      }\n      list.push({\n        type: type,\n        value: value,\n        contributor: contributor\n      });\n    },\n    addOtherAssetListTo(test, list, contributions) {\n      if (!test) {\n        return;\n      }\n      if (!list) {\n        return;\n      }\n      for (let i = 0; i < list.length; i++) {\n        const b = {\n          type: \"other\",\n          name: list[i].name,\n          value: parseInt(list[i].value)\n        };\n        if (isNaN(b.value)) {\n          delete b.value;\n        }\n        if (!b.name) {\n          delete b.name;\n        }\n        contributions.push(b);\n      }\n    },\n    cleanContributionRecord(r) {\n      // delete things that aren't relevant for contributions\n      delete r.valueConfidence;\n      delete r.valueUnknown;\n      delete r.mortgageConfidence;\n      delete r.mortgageUnknown;\n      delete r.ownedOutright;\n      delete r.owner;\n      delete r.userOwnershipPercentage;\n      delete r.spouseOwnershipPercentage;\n      delete r.moreInfo;\n      delete r.personalLiabilities;\n      delete r.plantStockEquipment;\n      delete r.area;\n      delete r.acresOrHectares;\n      if (!r.make) {\n        delete r.make;\n      }\n      if (!r.model) {\n        delete r.model;\n      }\n    },\n    generateInitialContributions(src) {\n      const spouse = [];\n      const user = [];\n      let i;\n      if (!src[this.convert(\"initialContributionsUserNone\")]) {\n        this.addBusinessesTo(src[this.convert(\"initialContributionsUserBusinesses\")], src[this.convert(\"initialContributionsUserBusinessList\")], user);\n        this.addRealEstateTo(src[this.convert(\"initialContributionsUserRealEstate\")], src[this.convert(\"initialContributionsUserRealEstateList\")], null, user);\n        this.addInitialContributionTo(src[this.convert(\"initialContributionsUserMoney\")], src[this.convert(\"initialContributionsUserMoneyAmount\")], \"money\", \"user\", user);\n        this.addInitialContributionTo(src[this.convert(\"initialContributionsUserShares\")], src[this.convert(\"initialContributionsUserSharesValue\")], \"shares\", \"user\", user);\n        this.addInitialContributionTo(src[this.convert(\"initialContributionsUserSuper\")], src[this.convert(\"initialContributionsUserSuperValue\")], \"super\", \"user\", user);\n        this.addMotorVehiclesTo(src[this.convert(\"initialContributionsUserMotorVehicles\")], src[this.convert(\"initialContributionsUserMotorVehicleList\")], user);\n        this.addOtherAssetListTo(src[this.convert(\"initialContributionsUserOther\")], src[this.convert(\"initialContributionsUserOtherList\")], user);\n        for (i = 0; i < user.length; i++) {\n          user[i].contributor = \"user\";\n          this.cleanContributionRecord(user[i]);\n        }\n      }\n      if (!src[this.convert(\"initialContributionsSpouseNone\")]) {\n        this.addBusinessesTo(src[this.convert(\"initialContributionsSpouseBusinesses\")], src[this.convert(\"initialContributionsSpouseBusinessList\")], spouse);\n        this.addRealEstateTo(src[this.convert(\"initialContributionsSpouseRealEstate\")], src[this.convert(\"initialContributionsSpouseRealEstateList\")], null, spouse);\n        this.addInitialContributionTo(src[this.convert(\"initialContributionsSpouseMoney\")], src[this.convert(\"initialContributionsSpouseMoneyAmount\")], \"money\", \"spouse\", spouse);\n        this.addInitialContributionTo(src[this.convert(\"initialContributionsSpouseShares\")], src[this.convert(\"initialContributionsSpouseSharesValue\")], \"shares\", \"spouse\", spouse);\n        this.addInitialContributionTo(src[this.convert(\"initialContributionsSpouseSuper\")], src[this.convert(\"initialContributionsSpouseSuperValue\")], \"super\", \"spouse\", spouse);\n        this.addMotorVehiclesTo(src[this.convert(\"initialContributionsSpouseMotorVehicles\")], src[this.convert(\"initialContributionsSpouseMotorVehicleList\")], spouse);\n        this.addOtherAssetListTo(src[this.convert(\"initialContributionsSpouseOther\")], src[this.convert(\"initialContributionsSpouseOtherList\")], spouse);\n        for (i = 0; i < spouse.length; i++) {\n          spouse[i].contributor = \"spouse\";\n          this.cleanContributionRecord(spouse[i]);\n        }\n      }\n      return user.concat(spouse);\n    },\n    addInitialLiabilityTo(test, value, type, contributor, list, moreInfo) {\n      if (!test) {\n        return;\n      }\n      const x = {\n        type: type,\n        debt: this.safeParseInt(value),\n        contributor: contributor\n      };\n      if (moreInfo) {\n        x.moreInfo = moreInfo;\n      }\n      list.push(x);\n    },\n    addOtherLiabilityListTo(test, list, contributor, liabilities) {\n      if (!test) {\n        return;\n      }\n      if (!list) {\n        return;\n      }\n      for (let i = 0; i < list.length; i++) {\n        const b = {\n          type: \"other\",\n          name: list[i].name,\n          debt: this.safeParseInt(list[i].debt),\n          contributor: contributor\n        };\n        if (isNaN(b.value)) {\n          delete b.value;\n        }\n        if (!b.name) {\n          delete b.name;\n        }\n        liabilities.push(b);\n      }\n    },\n    generateInitialLiabilities(src) {\n      const liabilities = [];\n      if (!src[this.convert(\"initialLiabilitiesUserNone\")]) {\n        this.addInitialLiabilityTo(src[this.convert(\"initialLiabilitiesUserCreditCards\")], src[this.convert(\"initialLiabilitiesUserTotalCreditCardDebt\")], \"creditcard\", \"user\", liabilities);\n        this.addInitialLiabilityTo(src[this.convert(\"initialLiabilitiesUserPersonalLoans\")], src[this.convert(\"initialLiabilitiesUserTotalPersonalLoanDebt\")], \"loan\", \"user\", liabilities, src[this.convert(\"initialLiabilitiesUserPersonalLoanLenders\")]);\n        this.addInitialLiabilityTo(src[this.convert(\"initialLiabilitiesUserHirePurchase\")], src[this.convert(\"initialLiabilitiesUserTotalHirePurchaseDebt\")], \"hirepurchase\", \"user\", liabilities, src[this.convert(\"initialLiabilitiesUserHirePurchaseAssets\")]);\n        this.addInitialLiabilityTo(src[this.convert(\"initialLiabilitiesUserTaxDebts\")], src[this.convert(\"initialLiabilitiesUserTotalTaxDebt\")], \"taxdebt\", \"user\", liabilities);\n        this.addInitialLiabilityTo(src[this.convert(\"initialLiabilitiesUserStudentLoans\")], src[this.convert(\"initialLiabilitiesUserTotalStudentLoanDebt\")], \"studentloan\", \"user\", liabilities);\n        this.addOtherLiabilityListTo(src[this.convert(\"initialLiabilitiesUserOther\")], src[this.convert(\"initialLiabilitiesUserOtherList\")], \"user\", liabilities);\n      }\n      if (!src[this.convert(\"initialLiabilitiesSpouseNone\")]) {\n        this.addInitialLiabilityTo(src[this.convert(\"initialLiabilitiesSpouseCreditCards\")], src[this.convert(\"initialLiabilitiesSpouseTotalCreditCardDebt\")], \"creditcard\", \"spouse\", liabilities);\n        this.addInitialLiabilityTo(src[this.convert(\"initialLiabilitiesSpousePersonalLoans\")], src[this.convert(\"initialLiabilitiesSpouseTotalPersonalLoanDebt\")], \"loan\", \"spouse\", liabilities, src[this.convert(\"initialLiabilitiesSpousePersonalLoanLenders\")]);\n        this.addInitialLiabilityTo(src[this.convert(\"initialLiabilitiesSpouseHirePurchase\")], src[this.convert(\"initialLiabilitiesSpouseTotalHirePurchaseDebt\")], \"hirepurchase\", \"spouse\", liabilities, src[this.convert(\"initialLiabilitiesSpouseHirePurchaseAssets\")]);\n        this.addInitialLiabilityTo(src[this.convert(\"initialLiabilitiesSpouseTaxDebts\")], src[this.convert(\"initialLiabilitiesSpouseTotalTaxDebt\")], \"taxdebt\", \"spouse\", liabilities);\n        this.addInitialLiabilityTo(src[this.convert(\"initialLiabilitiesSpouseStudentLoans\")], src[this.convert(\"initialLiabilitiesSpouseTotalStudentLoanDebt\")], \"studentloan\", \"spouse\", liabilities);\n        this.addOtherLiabilityListTo(src[this.convert(\"initialLiabilitiesSpouseOther\")], src[this.convert(\"initialLiabilitiesSpouseOtherList\")], \"spouse\", liabilities);\n      }\n      return liabilities;\n    },\n    generateMoreInfo(src) {\n      const moreInfo = [];\n      const map = src[\"more-info-strings\"];\n      for (const name in map) {\n        const matches = name.match(/[ad]-([a-z]+)/);\n        if (matches) {\n          moreInfo.push({\n            topic: matches[1],\n            info: map[name]\n          });\n        }\n      }\n      return moreInfo;\n    },\n    generatePersonRecord(src, type) {\n      const record = {};\n      let s = \"\";\n      s = type === \"spouse\" ? \"partner-\" : \"\";\n      const dob = {\n        day: src[`${s}dob-day`],\n        month: src[`${s}dob-month`],\n        year: src[`${s}dob-year`]\n      };\n      if (dob.day || dob.month || dob.year) {\n        record.dateOfBirth = dob;\n      }\n      const email = src[`${s}email`];\n      if (email) {\n        record.email = email;\n      }\n      const title = src[`${s}title`];\n      if (title) {\n        record.title = title;\n      }\n      const firstName = src[`${s}first-name`];\n      if (firstName) {\n        record.firstName = firstName;\n      }\n      const middleName = src[`${s}middle-name`];\n      if (middleName) {\n        record.middleName = middleName;\n      }\n      const surname = src[`${s}surname`];\n      if (surname) {\n        record.surname = surname;\n      }\n      if (src[`${s}has-other-names`]) {\n        const otherNames = src[`${s}other-names`];\n        if (otherNames) {\n          record.otherNames = otherNames;\n        }\n      }\n      const phone = src[`${s}phone`];\n      if (phone) {\n        record.phone = phone;\n      }\n      const postalAddress = src[`${s}postal-address`];\n      if (postalAddress) {\n        record.postalAddress = postalAddress;\n      }\n      s = type === \"spouse\" ? \"spouse\" : \"user\";\n      const health = {};\n      if (this.isDefined(src[`${s}-poor-health`])) {\n        health.poorHealth = !!src[`${s}-poor-health`];\n      }\n      if (health.poorHealth) {\n        health.poorHealthInfo = src[`${s}-poor-health-info`];\n        this.addIfExists(src[`${s}-prevented-from-working-now`], \"preventedFromWorkingNow\", health);\n        this.addIfExists(src[`${s}-prevented-from-working-future`], \"preventedFromWorkingFuture\", health);\n        this.addIfExists(src[`${s}-requires-living-assistance`], \"requiresLivingAssistance\", health);\n      }\n      record.health = health;\n      if (src[`${s}-repartnered`]) {\n        record.repartnered = src[`${s}-repartnered`];\n      }\n      if (record.repartnered === \"yes\" || record.repartnered === \"complicated\") {\n        if (src[`${s}-repartnered-more-info`]) {\n          record.repartneredMoreInfo = src[`${s}-repartnered-more-info`];\n        }\n      }\n      const employment = {};\n      if (src[`${s}-employment-situation`]) {\n        employment.situation = src[`${s}-employment-situation`];\n      }\n      if (src[`${s}-work-commitments`]) {\n        employment.workCommitments = src[`${s}-work-commitments`];\n      }\n      if (employment.workCommitments === \"parttime\") {\n        if (src[`${s}-work-part-time-hours`]) {\n          employment.workCommitmentsMoreInfo = src[`${s}-work-part-time-hours`];\n        }\n      } else if (employment.workCommitments === \"extendedofficehours\") {\n        if (src[`${s}-work-extended-office-hours`]) {\n          employment.workCommitmentsMoreInfo = src[`${s}-work-extended-office-hours`];\n        }\n      } else if (employment.workCommitments === \"other\") {\n        if (src[`${s}-other-work-commitments-type`]) {\n          employment.otherWorkCommitmentsType = src[`${s}-other-work-commitments-type`];\n        }\n        if (employment.otherWorkCommitmentsType === \"flexiblehours\") {\n          if (src[`${s}-flexible-hours-description`]) {\n            employment.workCommitmentsMoreInfo = src[`${s}-flexible-hours-description`];\n          }\n        } else if (employment.otherWorkCommitmentsType === \"regularshiftwork\") {\n          if (src[`${s}-shift-work-description`]) {\n            employment.workCommitmentsMoreInfo = src[`${s}-shift-work-description`];\n          }\n        } else if (employment.otherWorkCommitmentsType === \"irregularshiftwork\") {\n          if (src[`${s}-shift-work-description`]) {\n            employment.workCommitmentsMoreInfo = src[`${s}-shift-work-description`];\n          }\n        }\n      }\n      if (src[`${s}-occupation`]) {\n        employment.occupation = src[`${s}-occupation`];\n      }\n      if (src[`${s}-could-be-earning-more`]) {\n        employment.couldBeEarningMore = src[`${s}-could-be-earning-more`];\n      }\n      if (employment.couldBeEarningMore) {\n        if (src[`${s}-could-be-earning-more-info`]) {\n          employment.couldBeEarningMoreInfo = src[`${s}-could-be-earning-more-info`];\n        }\n      }\n      record.employment = employment;\n      const income = {\n        otherIncome: []\n      };\n      if (this.isDefined(src[`${s}-annual-income`])) {\n        income.baseIncome = this.safeParseInt(src[`${s}-annual-income`]);\n      }\n      let x, i, list;\n      if (src[`${s}-has-investment-income`]) {\n        if (src[`${s}-investment-income-individual-listings`]) {\n          list = src[`${s}-investment-income-list`];\n          for (i = 0; list && i < list.length; i++) {\n            income.otherIncome.push({\n              type: \"investment\",\n              amount: this.safeParseInt(list[i].amount),\n              period: list[i].timeperiod,\n              moreInfo: list[i].description\n            });\n          }\n        } else {\n          x = {\n            type: \"investment\",\n            amount: this.safeParseInt(src[`${s}-total-investment-income-amount`]),\n            period: src[`${s}-total-investment-income-period`]\n          };\n          if (!x.amount && src[`${s}-total-investment-income-unknown`]) {\n            delete x.amount;\n            delete x.period;\n            x.amountUnknown = true;\n          }\n          income.otherIncome.push(x);\n        }\n      }\n      if (src[`${s}-has-government-benefits`]) {\n        if (src[`${s}-government-benefit-individual-listings`]) {\n          list = src[`${s}-government-benefit-list`];\n          for (i = 0; list && i < list.length; i++) {\n            income.otherIncome.push({\n              type: \"government\",\n              amount: this.safeParseInt(list[i].amount),\n              period: list[i].timeperiod,\n              moreInfo: list[i].description\n            });\n          }\n        } else {\n          x = {\n            type: \"government\",\n            amount: this.safeParseInt(src[`${s}-total-government-benefit-amount`]),\n            period: src[`${s}-total-government-benefit-period`]\n          };\n          if (!x.amount && src[`${s}-total-government-benefit-unknown`]) {\n            delete x.amount;\n            delete x.period;\n            x.amountUnknown = true;\n          }\n          income.otherIncome.push(x);\n        }\n      }\n      if (src[`${s}-has-other-income`]) {\n        x = {\n          type: \"other\",\n          amount: this.safeParseInt(src[`${s}-other-income-total-amount`]),\n          period: src[`${s}-other-income-period`],\n          moreInfo: src[`${s}-other-income-more-info`]\n        };\n        if (x.amount || x.moreInfo) {\n          income.otherIncome.push(x);\n        }\n      }\n      const duringRelationship = [];\n      if (src[`${s}-income-during-relationship-varied`]) {\n        list = src[`${s}-income-during-relationship-list`];\n        for (i = 0; list && i < list.length; i++) {\n          duringRelationship.push({\n            startYear: list[i].startYear,\n            endYear: list[i].endYear,\n            income: this.safeParseInt(list[i].income)\n          });\n        }\n      } else if (src[`${s}-income-during-relationship`]) {\n        duringRelationship.push({\n          income: src[`${s}-income-during-relationship`]\n        });\n      }\n      income.duringRelationship = duringRelationship;\n      record.income = income;\n      const ad = [\"acquisition\", \"disposal\"];\n      const ad_outputs = [[], []];\n      for (i = 0; i < ad.length; i++) {\n        if (src[`${s}-post-relationship-${ad[i]}s`]) {\n          list = src[`${s}-post-relationship-${ad[i]}-list`];\n          for (let j = 0; j < list.length; j++) {\n            x = {};\n            if (list[j].description) {\n              x.description = list[j].description;\n            }\n            if (list[j].name) {\n              x.description = list[j].name;\n            }\n            if (this.isDefined(list[j].value)) {\n              x.value = this.safeParseInt(list[j].value);\n            }\n            if (list[j].moreInfo) {\n              x.moreInfo = list[j].moreInfo;\n            }\n            if (list[j].acquisitionDay || list[j].acquisitionMonth || list[j].acquisitionYear) {\n              x.acquisitionDate = {\n                day: list[j].acquisitionDay,\n                month: list[j].acquisitionMonth,\n                year: list[j].acquisitionYear\n              };\n            }\n            ad_outputs[i].push(x);\n          }\n        }\n      }\n      record.postRelationshipAcquisitions = ad_outputs[0];\n      record.postRelationshipDisposals = ad_outputs[1];\n      const superannuation = [];\n      switch (src[`super-${s}-value-more-info`]) {\n        case \"individualaccounts\":\n          list = src[`super-${s}-all-accounts`];\n          for (i = 0; list && i < list.length; i++) {\n            superannuation.push({\n              type: list[i].type,\n              name: list[i].name,\n              value: this.safeParseInt(list[i].value)\n            });\n          }\n          break;\n        case \"nosuper\":\n          superannuation.push({\n            type: \"total\",\n            value: 0\n          });\n          break;\n        case \"dontknow\":\n          superannuation.push({\n            type: \"total\",\n            valueUnknown: true\n          });\n          break;\n        default:\n          if (this.isDefined(src[`super-${s}-total`])) {\n            superannuation.push({\n              type: \"total\",\n              value: this.safeParseInt(src[`super-${s}-total`]),\n              valueConfidence: src[`super-${s}-confidence`]\n            });\n          }\n          break;\n      }\n      record.superannuation = superannuation;\n      return record;\n    },\n    generateSpouse(src) {\n      const s = this.generatePersonRecord(src, \"spouse\");\n      this.addIfExists(src[\"spouse-seen-lawyer\"], \"seenLawyer\", s);\n      if (src[\"spouse-seen-lawyer\"]) {\n        this.addIfTruthy(src[\"spouse-seen-lawyer-more-info\"], \"seenLawyerMoreInfo\", s);\n      }\n      return s;\n    },\n    generateUser(src) {\n      const u = this.generatePersonRecord(src, \"user\");\n      this.addIfExists(src[\"has-accountant\"], \"hasAccountant\", u);\n      if (src[\"has-accountant\"]) {\n        this.addIfTruthy(src[\"accountant-details\"], \"accountantDetails\", u);\n      }\n      this.addIfExists(src[\"user-seeing-psychiatrist\"], \"seeingPsychiatrist\", u);\n      return u;\n    }\n  });\n});","define(\"settify-mvp/services/lambda-functions\", [\"exports\", \"@ember/service\", \"@ember/object/mixin\"], function (_exports, _service, _mixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@ember/object/mixin\"eaimeta@70e063a35619d71f\n  /**\n   * NOTE: Changes to this file MUST be made at the `master` level to this file (never branch specific). Also keep this file in-sync with tests/helpers/stubs/lambda-functions.js\n   *\n   * It contains a full list of our functions across all practice area, region and firm branches\n   *\n   * TODO: Move away from using these properties and find a better way (these properties can't be stubbed easily for tests)\n   */\n  // eslint-disable-next-line ember/no-new-mixins\n  var _default = _exports.default = _mixin.default.create({\n    config: (0, _service.inject)(\"dynamic-config\"),\n    // pathway functions\n    emailPathwayLambda: `als-public-emailpathway2`,\n    generatePathwayLambda: `als-public-generatepathway2`,\n    // email functions\n    emailBookingNotificationLambda: `als-public-emailbookingnotification2`,\n    emailResumeLinkLambda: `als-public-emailresumelink`,\n    emailSettify: `als-public-emailsettify`,\n    emailSettifyDocuments: `als-public-sendsettifydocuments`,\n    // conflict check functions\n    getInformationForConflictCheckLambda: `als-lawfirm-getminimalinformation3`,\n    getPreviousEnquiriesLambda: `als-public-getpreviousenquiries`,\n    sendConflictEmailLambda: `als-lawfirm-sendconflictemail`,\n    setRecordConflictStateLambda: `als-lawfirm-setrecordconflictstate`,\n    undoConflictLambda: `als-lawfirm-undoconflict`,\n    // settify admin functions\n    createInvoiceLambda: `als-admin-createinvoice2`,\n    createLineItemsLambda: `als-admin-createlineitems2`,\n    displayEmailTemplateLambda: `als-admin-displayemailtemplate`,\n    emailFromSettifyLambda: `als-emailfromsettify`,\n    getAdhocPaymentsLambda: `als-getadhocpayments`,\n    getAllClientRecordsLambda: `als-getallclientrecords`,\n    getBillingInformationLambda: `als-getbillinginformation`,\n    getConversionGroupDetailsLambda: `als-getconversiongroupdetails`,\n    getFirmsLambda: `als-admin-getfirms`,\n    getFirmUsageHistoryLambda: `als-analytics-getfirmusagehistory`,\n    getFirmUserEventsLambda: `als-admin-getfirmuserevents`,\n    gitlabNewIssueLambda: `als-admin-gitlabnewissue`,\n    sendBillingEmailLambda: `als-sendbillingemail`,\n    sendPracticeClientLambda: `als-admin-sendpracticeclient`,\n    storeCommissionLambda: `als-admin-storecommission`,\n    updateAdhocPaymentLambda: `als-updateadhocpayment`,\n    updateMonthlyLicenceFeeLambda: `als-admin-updatemonthlylicencefee`,\n    // integration functions\n    getSendToPmsMetadata: `als-lawfirm-getsendtopmsmetadata`,\n    getLeadsAndClients: \"als-lawfirm-getleadsandclients\",\n    listPmsMetadata: `als-lawfirm-listpmsmetadata`,\n    initialiseClientFromPmsMatter: \"als-lawfirm-initialiseclientfrompmsmatter\",\n    sendNewClientRecordToIntegrations: \"als-lawfirm-sendnewclientrecordtointegrations\",\n    getIntegrationStatus: \"als-lawfirm-pms-getauthenticationstatus\",\n    authenticateLambda: \"als-lawfirm-pms-authenticate\",\n    disconnectLambda: \"als-lawfirm-pms-disconnect\",\n    // client lists\n    getAugmentedLeadListLambda: `als-lawfirm-getaugmentedleadlist`,\n    getInvitationListLambda: `als-lawfirm-getinvitationlist`,\n    getLeadListLambda: `als-lawfirm-getleadlist`,\n    // invitations\n    inviteClientLambda: `als-lawfirm-inviteclient5`,\n    sendCalendarInviteLambda: `als-public-sendcalendarinvite`,\n    // files and uploads\n    fileGetSendInfoLambda: `als-filegetsendinfo`,\n    fileInviteLambda: `als-fileinvite`,\n    fileSendLambda: `als-filestartsendprocess`,\n    fileUnsubscribeLambda: `als-fileunsubscribe`,\n    getFileUploadVirusStatusLambda: `als-public-getfileuploadvirusscanstatus`,\n    // lawyer details\n    createLawyerLambda: `als-lawfirm-createlawyer`,\n    deleteLawyerLambda: `als-lawfirm-deletelawyer`,\n    getLawyerListLambda: `als-public-getlawyerlist`,\n    scrapeLawyerPageLambda: `als-lawfirm-scrapelawyerpage`,\n    updateLawyerDetailsLambda: `als-lawfirm-updatelawyerdetails`,\n    // firm details\n    initFirmLambda: `als-public-initialisefirm`,\n    getFirmDetailsLambda: `als-lawfirm-getfirmdetails`,\n    getFirmOfficesLambda: `als-public-getfirmoffices`,\n    getFirmSettingsHelpLambda: `als-lawfirm-getfirmsettingshelp`,\n    getFirmSettingsLambda: `als-public-getfirmsettings`,\n    updateFirmDetailsLambda: `als-lawfirm-updatefirmdetails`,\n    updateFirmOfficesLambda: `als-lawfirm-updatefirmoffices`,\n    updateFirmSettingsLambda: `als-lawfirm-updatefirmsettings`,\n    // rollouts\n    createRolloutLambda: `als-admin-createrollout`,\n    globalRolloutLambda: `als-admin-globalrollouts`,\n    processRolloutLambda: `als-admin-processrolloutrequest`,\n    firmDomainExistsLambda: `als-public-firmdomainexists`,\n    selfSignupLambda: `als-public-selfsignup`,\n    // firm users\n    createFirmUserLambda: `als-lawfirm-createfirmuser`,\n    deleteFirmUserLambda: `als-lawfirm-deletefirmuser`,\n    getFirmUsersLambda: `als-lawfirm-getfirmusers`,\n    recreateFirmUserLambda: `als-public-recreatefirmuser`,\n    updateFirmUserLambda: `als-lawfirm-updatefirmuser`,\n    // search\n    searchClientsLambda: `als-lawfirm-searchclients`,\n    // gender check\n    nameCheckLambda: `als-public-namecheck`,\n    // billing\n    confirmInvoiceDetailsLambda: `als-lawfirm-confirmclientsforinvoice`,\n    deleteLineItemLambda: `als-admin-deletelineitem`,\n    getClientsForInvoiceReviewLambda: `als-lawfirm-getclientsforbillingportal`,\n    getInvoiceRequestsLambda: `als-lawfirm-getinvoicerequests`,\n    getStripePortalUrlLambda: `als-lawfirm-getstripeportalurl`,\n    getUnbilledLineItemsLambda: `als-admin-getunbilledlineitems`,\n    setBillingInformationLambda: `als-lawfirm-setclientbillinginformation`,\n    stripeCheckoutLambda: `als-public-stripecheckout`,\n    updateFirmNotesLambda: `als-lawfirm-updatefirmnotes`,\n    voidXeroInvoiceLambda: `als-lawfirm-voidxeroinvoice`,\n    disbursementReportLambda: `als-lawfirm-disbursementreport`,\n    // surveys\n    createQRCode: `als-lawfirm-createqrcode`,\n    logSurveyResponse: `als-public-logsurveyresponse`,\n    saveCatalyticFeedback: `als-public-savecatalyticfeedback`,\n    // client brief\n    getClientMetadataLambda: `als-lawfirm-getclientmetadata`,\n    // client CRUD\n    addRecordToAccountLambda: `als-public-addrecordtoaccount`,\n    allowFirmAccessLambda: `als-lawfirm-allowfirmaccess`,\n    clientExistsLambda: `als-public-clientexists`,\n    createClientLambda: `als-public-createclient`,\n    deleteClientLambda: `als-admin-deleteclient`,\n    getClientLambda: `als-public-getclient`,\n    getClientLastModifiedLambda: `als-public-getclientlastmodified`,\n    getRecordsInAccountLambda: `als-public-getrecordsinaccount`,\n    protectRecordLambda: `als-public-protectrecord`,\n    updateClientLambda: `als-public-updateclient2`,\n    // client record repair\n    getCognitoDetailsLambda: `als-admin-getcognitodetails`,\n    repairClientRecordLambda: `als-admin-repairclientrecord`,\n    // client Snapshots\n    compareHtmlLambda: `als-lawfirm-comparehtml`,\n    createSnapshotLambda: `als-lawfirm-createsnapshot`,\n    getClientSnapshotsLambda: `als-lawfirm-getclientsnapshots`,\n    // unfreeze\n    sendUnfreezeEmailLambda: `als-public-sendunfreezeemail`,\n    unfreezeClientLambda: `als-public-unfreezeclient`,\n    // logging\n    logABTest: `als-public-logabtest`,\n    logEvent: `als-public-logevent`,\n    // ui backend helpers\n    getExchangeRateLambda: `als-public-getexchangerate`,\n    postcodeLookupLambda: `als-public-postcodelookup`,\n    // automation\n    docxTemplaterLambda: `als-lawfirm-docxtemplater`,\n    // output to various file formats\n    createcsvLambda: `als-lawfirm-createcsv`,\n    createspreadsheetLambda: `als-lawfirm-createspreadsheet`,\n    htmltodocxLambda: `als-lawfirm-htmltodocx`,\n    htmltopdfLambda: `als-public-htmltopdf`,\n    // integration functions\n    postFormDataLambda: `als-lawfirm-postformdata`,\n    sendToFormily: `als-lawfirm-sendtoformily`,\n    sendToOntraport: `als-lawfirm-sendtoontraport`,\n    sendClientToSyntaqLambda: `als-sendclienttosyntaq`,\n    // settify forms\n    createFormLambda: `als-lawfirm-createform`,\n    deleteFormLambda: `als-lawfirm-deleteform`,\n    getFormLambda: `als-public-getform`,\n    getFormListLambda: `als-public-getformlist`,\n    lockFormLambda: `als-lawfirm-lockform`,\n    logFormEventLambda: `als-public-logformevent`,\n    unlockFormLambda: `als-lawfirm-unlockform`,\n    updateFormLambda: `als-lawfirm-updateform`,\n    // settify documents\n    createDocumentLambda: `als-public-createdocument`,\n    deleteDocumentLambda: `als-public-deletedocument`,\n    getCatalogueLambda: `als-public-getcatalogue`,\n    updateDocumentLambda: `als-lawfirm-updatedocument`,\n    // tech support\n    techSupportRequestLambda: `als-public-techsupportrequest`,\n    // other functions\n    createVerificationCodeLambda: `als-public-createverificationcode`,\n    inviteFriendLambda: `als-public-invitefriend`,\n    inviteSpouseLambda: `als-public-invitespouse`,\n    requestAccountantHelpLambda: `als-public-requestaccountanthelp`,\n    sendAccountantInviteLambda: `als-public-sendaccountantinvite`,\n    sendWillsReminderInviteLambda: `als-public-sendwillsreminderinvite`,\n    _lambdaUrl(functionName) {\n      if (functionName.startsWith(\"arn:aws:lambda:\")) {\n        console.error(\"WARNING: fully qualified ARN call detected\", functionName);\n        return functionName;\n      }\n      const settings = this.get(\"config.settings\");\n      const alias = this._lambdaAlias(settings.Firm.id);\n      return `arn:aws:lambda:${settings.Region}:${settings.Account}:function:${functionName}:${alias}`;\n    },\n    // alias is also known as stage name in serverless\n    _lambdaAlias(firmID) {\n      if (firmID && firmID.match(/^000000000-*/)) {\n        return \"master\";\n      }\n      return \"production\";\n    }\n  });\n});","define(\"settify-mvp/services/lambda\", [\"exports\", \"@ember/runloop\", \"@ember/test-waiters\", \"rsvp\", \"@ember/service\", \"settify-mvp/services/lambda-functions\"], function (_exports, _runloop, _testWaiters, _rsvp, _service, _lambdaFunctions) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/test-waiters\",0,\"rsvp\",0,\"@ember/service\",0,\"settify-mvp/services/lambda-functions\"eaimeta@70e063a35619d71f\n  const waiter = (0, _testWaiters.buildWaiter)(\"lambda-waiter\");\n  var _default = _exports.default = _service.default.extend({\n    session: (0, _service.inject)(),\n    awsService: (0, _service.inject)(),\n    config: (0, _service.inject)(\"dynamic-config\"),\n    invokeWithRetry(arn, payload, session, maximumNumberOfAttempts = 1, successConditionFunc = () => true, numberOfAttempts = 0) {\n      try {\n        return this.invoke(arn, payload, session).then(this.processResponse).then(response => {\n          // The response has now been processed\n          if (successConditionFunc(response)) {\n            return response;\n          }\n          throw \"Error! Attempting retry\";\n        });\n      } catch (e) {\n        if (numberOfAttempts < maximumNumberOfAttempts - 1) {\n          return this.invokeWithRetry(arn, payload, session, maximumNumberOfAttempts, successConditionFunc, numberOfAttempts + 1);\n        }\n        throw e;\n      }\n    },\n    invoke(functionName, payload, session = this.session, alreadyRetried) {\n      if (!this.config.loaded) {\n        // Defensive coding: If config is not loaded, we should not try to load the firm settings\n        return (0, _rsvp.reject)(new Error(\"The configuration has not been loaded yet.\"));\n      }\n      this._addOriginDetailsToPayload(payload);\n      const arn = this._lambdaUrl(functionName);\n      const waitToken = waiter.beginAsync(); // wait token for tests\n      return this.awsService.getLambdaClient().then(lambda => {\n        return new Promise((resolve, reject) => {\n          (0, _runloop.run)(() => {\n            lambda.invoke({\n              FunctionName: arn,\n              Payload: JSON.stringify(payload)\n            }, (err, data) => {\n              if (err) {\n                reject(err);\n              } else {\n                resolve(data);\n              }\n            });\n          });\n        });\n      }).catch(error => {\n        if (!alreadyRetried && error.retryable) {\n          // something else, but we can retry\n          console.log(`Lambda error: ${error.message}. Retrying.`);\n          return this.invoke(arn, payload, session, true);\n        }\n        if (error.retryable) {\n          console.log(`Lambda error: ${error.message}. Already retried, now failing.`);\n        }\n        throw error;\n      }).finally(() => waiter.endAsync(waitToken));\n    },\n    _addOriginDetailsToPayload(payload) {\n      // only append origin if payload is an object\n      if (payload && typeof payload === \"object\" && !payload.origin) {\n        const location = window.location || new URL(\"http://localhost\");\n        payload.origin = {\n          clientname: \"webapp\",\n          projectUno: true,\n          hostname: location.hostname || \"unknown\",\n          pathname: location.pathname || \"\",\n          sub: this.session?.data?.authenticated?.attributes?.sub\n        };\n      }\n    },\n    processResponse(data) {\n      if (!data) {\n        throw new Error(\"The server returned an empty response, but no error code.\");\n      } else if (data.FunctionError) {\n        throw new Error(`Error invoking function - ${JSON.stringify(data)}`);\n      } else if (!data.Payload) {\n        throw new Error(\"The server response did not include a payload as expected.\");\n      } else {\n        const payload = JSON.parse(data.Payload);\n        if (!payload) {\n          throw new Error(\"The response payload was not a valid JSON object.\");\n        } else if (payload.errorMessage) {\n          throw new Error(`The server returned an error: ${payload.errorMessage}`);\n        } else if (payload.type === \"Buffer\" && payload.data) {\n          // convert the array of bytes into something usable before sending it back to the invoking function\n          return new Uint8Array(payload.data);\n        } else if (payload.data) {\n          return payload.data;\n        } else {\n          return payload;\n        }\n      }\n    }\n  }, _lambdaFunctions.default); // LambdaFunctions is purposely added here to override the functions defined inside this object (thus avoiding conflicts)\n  // TODO: Once we confirm LambdaFunctions is working we can safely remove all the arn:aws:lambda properties from this object\n});","define(\"settify-mvp/services/latte-ai-summary\", [\"exports\", \"settify-mvp/services/latte\", \"@settify/latte-sdk\"], function (_exports, _latte, _latteSdk) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/services/latte\",0,\"@settify/latte-sdk\"eaimeta@70e063a35619d71f\n  /**\n   * This service provides the binding between Ember and the generic LatteApi functionality.\n   */\n  class LatteAISummaryService extends _latte.default {\n    async getAiSummary(clientID) {\n      const api = await this.buildApi(_latteSdk.LatteAiApi);\n      return await api.getAISummary(clientID);\n    }\n  }\n  _exports.default = LatteAISummaryService;\n});","define(\"settify-mvp/services/latte-echo\", [\"exports\", \"settify-mvp/services/latte\", \"@settify/latte-sdk\"], function (_exports, _latte, _latteSdk) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/services/latte\",0,\"@settify/latte-sdk\"eaimeta@70e063a35619d71f\n  /**\n   * This service provides the binding between Ember and the generic LatteApi functionality.\n   */\n  class LatteEchoService extends _latte.default {\n    async echo({\n      payload\n    }) {\n      const api = await this.buildApi(_latteSdk.LatteEchoApi);\n      return await api.echo({\n        payload\n      });\n    }\n  }\n  _exports.default = LatteEchoService;\n});","define(\"settify-mvp/services/latte-firm-client-records\", [\"exports\", \"settify-mvp/services/latte\", \"@settify/latte-sdk\", \"@ember/service\"], function (_exports, _latte, _latteSdk, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/services/latte\",0,\"@settify/latte-sdk\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  /**\n   * This service provides the binding between Ember and the generic LatteApi functionality.\n   */\n  let LatteFirmClientRecordsService = _exports.default = (_class = class LatteFirmClientRecordsService extends _latte.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"cache\", _descriptor, this);\n    }\n    async listFirmClientRecords({\n      filter = \"\"\n    } = {}) {\n      const currentFirmId = this.cache.read({\n        namespace: \"current\",\n        key: \"firmId\"\n      });\n      const cachedRecords = this.cache.read({\n        namespace: \"current\",\n        key: \"clientRecords\"\n      });\n      if (cachedRecords) {\n        if (cachedRecords?.data?.items?.[0]?.metadata?.firmID === currentFirmId) {\n          return cachedRecords;\n        }\n      }\n      const api = await this.buildApi(_latteSdk.LatteFirmClientRecordsApi);\n      const clientRecords = await api.listFirmClientRecords({\n        expand: \"metadata\",\n        filter\n      });\n      this.cache.write({\n        namespace: \"current\",\n        key: \"clientRecords\",\n        value: clientRecords\n      });\n      return clientRecords;\n    }\n    async getClientRecord({\n      clientRecordId,\n      format = \"json\"\n    }) {\n      const api = await this.buildApi(_latteSdk.LatteFirmClientRecordsApi);\n      return await api.getFirmClientRecord({\n        clientRecordId,\n        expand: \"metadata,record\",\n        format\n      });\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"cache\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/services/latte-firm-files\", [\"exports\", \"settify-mvp/services/latte\", \"@settify/latte-sdk\"], function (_exports, _latte, _latteSdk) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/services/latte\",0,\"@settify/latte-sdk\"eaimeta@70e063a35619d71f\n  /**\n   * This service provides the binding between Ember and the generic LatteApi functionality.\n   */\n  class LatteFirmFilesService extends _latte.default {\n    async listFirmFiles({\n      category,\n      subPath\n    }) {\n      const api = await this.buildApi(_latteSdk.LatteFirmFilesApi);\n      return await api.listFirmFiles({\n        category,\n        subPath\n      });\n    }\n    async uploadFirmFile({\n      category,\n      subPath,\n      uploadFileName,\n      uploadFileSize\n    }) {\n      const api = await this.buildApi(_latteSdk.LatteFirmFilesApi);\n      return await api.uploadFirmFile({\n        category,\n        subPath,\n        uploadFileName,\n        uploadFileSize\n      });\n    }\n    async deleteFirmFile({\n      category,\n      subPath\n    }) {\n      const api = await this.buildApi(_latteSdk.LatteFirmFilesApi);\n      return await api.deleteFirmFile({\n        category,\n        subPath\n      });\n    }\n  }\n  _exports.default = LatteFirmFilesService;\n});","define(\"settify-mvp/services/latte-firm-user\", [\"exports\", \"settify-mvp/services/latte\", \"@settify/latte-sdk/src/fetchInvoker\", \"@settify/latte-sdk\"], function (_exports, _latte, _fetchInvoker, _latteSdk) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/services/latte\",0,\"@settify/latte-sdk/src/fetchInvoker\",0,\"@settify/latte-sdk\"eaimeta@70e063a35619d71f\n  class LatteFirmUserService extends _latte.default {\n    /**\n     * Override buildInvoker to add `Content-Type: application/json`. The SDK's\n     * FetchInvoker doesn't set it (and overrides per-request headers with its\n     * own), so the body goes out as `text/plain;charset=UTF-8`. Latte's\n     * `bodyParser.json()` only parses bodies whose Content-Type matches\n     * `application/json` — anything else is dropped, leaving `req.body` empty\n     * and resetMfa failing with 400 \"Missing or invalid 'username' in the body\".\n     * Remove once @settify/latte-sdk's FetchInvoker auto-sets Content-Type\n     * (or merges input headers) for JSON bodies.\n     */\n    async buildInvoker() {\n      const headers = {\n        \"Content-Type\": \"application/json\",\n        \"x-firm-id\": this.cache.read({\n          namespace: \"current\",\n          key: \"firmId\"\n        })\n      };\n      const cognitoUser = this.cognitoUser?.user;\n      if (cognitoUser) {\n        const idJwt = await new Promise(resolve => {\n          cognitoUser.getSession((err, session) => {\n            resolve(session?.getIdToken()?.getJwtToken());\n          });\n        });\n        if (idJwt) {\n          headers.Authorization = `Bearer ${idJwt}`;\n        }\n      }\n      return new _fetchInvoker.FetchInvoker({\n        headers\n      });\n    }\n    async resetMfa({\n      username\n    }) {\n      const api = await this.buildApi(_latteSdk.LatteFirmUserApi);\n      return api.resetMfa({\n        username\n      });\n    }\n  }\n  _exports.default = LatteFirmUserService;\n});","define(\"settify-mvp/services/latte-firm\", [\"exports\", \"settify-mvp/services/latte\", \"@settify/latte-sdk\", \"@ember/service\", \"tracked-built-ins\"], function (_exports, _latte, _latteSdk, _service, _trackedBuiltIns) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _LatteFirmService_brand;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/services/latte\",0,\"@settify/latte-sdk\",0,\"@ember/service\",0,\"tracked-built-ins\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }\n  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  /**\n   * This service provides the binding between Ember and the generic LatteApi functionality.\n   */\n  let LatteFirmService = _exports.default = (_class = (_LatteFirmService_brand = /*#__PURE__*/new WeakSet(), class LatteFirmService extends _latte.default {\n    constructor(...args) {\n      super(...args);\n      _classPrivateMethodInitSpec(this, _LatteFirmService_brand);\n      _initializerDefineProperty(this, \"cache\", _descriptor, this);\n    }\n    async refreshFirms() {\n      const api = await this.buildApi(_latteSdk.LatteFirmApi);\n      const {\n        error,\n        data\n      } = await api.listFirms();\n      if (error) {\n        return;\n      }\n      const {\n        items: firms\n      } = data ?? {\n        items: []\n      };\n      firms.sort((a, b) => a.status.localeCompare(b.status) || (a.name ? a.name.localeCompare(b.name) : -1));\n      const cachedFirms = new _trackedBuiltIns.TrackedArray();\n      const cachedById = new _trackedBuiltIns.TrackedObject();\n      for (const firm of firms) {\n        // NB it is important to make this a TrackedObject so that any changes to it are dynamically reflected in the UI\n        // Be aware that only first level changes are tracked, not changes to nested objects.\n        // https://guides.emberjs.com/v5.12.0/in-depth-topics/autotracking-in-depth/\n        const o = new _trackedBuiltIns.TrackedObject(firm);\n        cachedFirms.push(o);\n        cachedById[firm.firmID] = o;\n      }\n      _assertClassBrand(_LatteFirmService_brand, this, _cacheWrite).call(this, {\n        key: \"firms\",\n        value: cachedFirms\n      });\n      _assertClassBrand(_LatteFirmService_brand, this, _cacheWrite).call(this, {\n        key: \"byId\",\n        value: cachedById\n      });\n    }\n    async listFirms() {\n      await _assertClassBrand(_LatteFirmService_brand, this, _ensureCached).call(this);\n      return _assertClassBrand(_LatteFirmService_brand, this, _cacheRead).call(this, {\n        key: \"firms\"\n      });\n    }\n    async getFirm({\n      firmID\n    }) {\n      await _assertClassBrand(_LatteFirmService_brand, this, _ensureCached).call(this);\n      return _assertClassBrand(_LatteFirmService_brand, this, _cacheRead).call(this, {\n        key: \"byId\"\n      })[firmID] ?? null;\n    }\n  }), _descriptor = _applyDecoratedDescriptor(_class.prototype, \"cache\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n  function _cacheRead({\n    key\n  }) {\n    return this.cache.read({\n      namespace: \"firms\",\n      key\n    });\n  }\n  function _cacheWrite({\n    key,\n    value\n  }) {\n    return this.cache.write({\n      namespace: \"firms\",\n      key,\n      value\n    });\n  }\n  async function _ensureCached() {\n    const cachedFirms = _assertClassBrand(_LatteFirmService_brand, this, _cacheRead).call(this, {\n      key: \"firms\"\n    });\n    if (!cachedFirms) {\n      await this.refreshFirms();\n    }\n  }\n});","define(\"settify-mvp/services/latte-prediction\", [\"exports\", \"settify-mvp/services/latte\", \"@settify/latte-sdk\"], function (_exports, _latte, _latteSdk) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/services/latte\",0,\"@settify/latte-sdk\"eaimeta@70e063a35619d71f\n  /**\n   * This service provides the binding between Ember and the LattePredictionApi functionality.\n   */\n  class LattePredictionService extends _latte.default {\n    async predict({\n      clientRecordId,\n      expand\n    } = {}) {\n      const api = await this.buildApi(_latteSdk.LattePredictionApi);\n      return await api.predict({\n        clientRecordId,\n        expand\n      });\n    }\n  }\n  _exports.default = LattePredictionService;\n});","define(\"settify-mvp/services/latte-reports\", [\"exports\", \"settify-mvp/services/latte\", \"@settify/latte-sdk/src/api/latteReportsApi\"], function (_exports, _latte, _latteReportsApi) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/services/latte\",0,\"@settify/latte-sdk/src/api/latteReportsApi\"eaimeta@70e063a35619d71f\n  /**\n   * This service provides the binding between Ember and the generic LatteApi functionality.\n   */\n  class LatteReportsService extends _latte.default {\n    async listReportNames() {\n      const api = await this.buildApi(_latteReportsApi.LatteReportsApi);\n      const {\n        error,\n        data\n      } = await api.listReportNames();\n      if (error) {\n        return;\n      }\n      const {\n        items\n      } = data ?? {\n        items: []\n      };\n      items.sort((a, b) => a.localeCompare(b));\n      return items;\n    }\n    async listReportDates({\n      reportName\n    }) {\n      const api = await this.buildApi(_latteReportsApi.LatteReportsApi);\n      const {\n        error,\n        data\n      } = await api.listReportDates({\n        reportName\n      });\n      if (error) {\n        return;\n      }\n      const {\n        items\n      } = data ?? {\n        items: []\n      };\n      items.sort((a, b) => a.localeCompare(b));\n      return items;\n    }\n    async listReportFiles({\n      reportName,\n      reportDate\n    }) {\n      const api = await this.buildApi(_latteReportsApi.LatteReportsApi);\n      const {\n        error,\n        data\n      } = await api.listReportFiles({\n        reportName,\n        reportDate\n      });\n      if (error) {\n        return;\n      }\n      const {\n        items\n      } = data ?? {\n        items: []\n      };\n      items.sort((a, b) => a.path.localeCompare(b.path));\n      return items;\n    }\n    async getReportFile({\n      reportName,\n      reportDate,\n      reportFile\n    }) {\n      const api = await this.buildApi(_latteReportsApi.LatteReportsApi);\n      return await api.getReportFile({\n        reportName,\n        reportDate,\n        reportFile\n      });\n    }\n  }\n  _exports.default = LatteReportsService;\n});","define(\"settify-mvp/services/latte\", [\"exports\", \"@ember/service\", \"@settify/latte-sdk/src/fetchInvoker\"], function (_exports, _service, _fetchInvoker) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@settify/latte-sdk/src/fetchInvoker\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  /**\n   * This service provides the binding between Ember and the generic LatteApi functionality.\n   *\n   * @abstract\n   */\n  let LatteService = _exports.default = (_dec = (0, _service.service)(\"dynamic-config\"), _class = class LatteService extends _service.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"config\", _descriptor, this);\n      _initializerDefineProperty(this, \"requestManager\", _descriptor2, this);\n      _initializerDefineProperty(this, \"cognitoUser\", _descriptor3, this);\n      _initializerDefineProperty(this, \"cache\", _descriptor4, this);\n    }\n    /**\n     * Answer the base url to use for making Latte requests.\n     *\n     * e.g.\n     *  const url = `${this.baseUrl}/v1/echo`;\n     *\n     * @protected\n     * @return {string}\n     */\n    get baseUrl() {\n      // TODO move \"alias/stage\" from url into config and support dynamic switching (latest, stage, stable)\n      // gets endpoint based on detected domain (see dynamic-config.js and settings.js)\n      return this.config?.settings?.LatteEndpoint;\n    }\n\n    /**\n     * Construct a FetchInvoker that includes the Latte necessary configuration.\n     *\n     * e.g.\n     *  const invoker = this.buildInvoker();\n     *  invoker.fetch({ ... });\n     *\n     * @protected\n     * @return {Promise<FetchInvoker>}\n     */\n    async buildInvoker() {\n      // always add the x-firm-id header so the backend knows what firm we are operating on\n      const headers = {\n        \"Content-Type\": \"application/json\",\n        \"x-firm-id\": this.cache.read({\n          namespace: \"current\",\n          key: \"firmId\"\n        })\n      };\n\n      // provide the cognito id JWT if we are dealing with an authenticated user\n      const cognitoUser = this.cognitoUser?.user;\n      if (cognitoUser) {\n        const idJwt = await new Promise(resolve => {\n          cognitoUser.getSession((err, session) => {\n            resolve(session?.getIdToken()?.getJwtToken());\n          });\n        });\n        if (idJwt) {\n          headers.Authorization = `Bearer ${idJwt}`;\n        }\n      }\n\n      // TODO add a mechanism such that we know when a fetch call is made and when it is completed\n      //  then hook that mechanism up to RequestManager service\n      return new _fetchInvoker.FetchInvoker({\n        headers\n      });\n    }\n\n    /**\n     * Construct a Latte related Api instance used to communicate with the backend.\n     *\n     * e.g.\n     *  const api = this.buildApi(LatteEchoApi);\n     *  api.echo({ payload: {hello: \"world\" } });\n     *\n     * @protected\n     * @param constructorFunc\n     * @return {Promise<*>}\n     */\n    async buildApi(constructorFunc) {\n      const fetchInvoker = await this.buildInvoker();\n      // eslint-disable-next-line new-cap\n      return new constructorFunc({\n        baseUrl: this.baseUrl,\n        fetchInvoker\n      });\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"config\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"requestManager\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"cognitoUser\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"cache\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/services/lawyer-list\", [\"exports\", \"@ember/service\", \"@glimmer/tracking\"], function (_exports, _service, _tracking) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@glimmer/tracking\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  let StaffListService = _exports.default = (_class = class StaffListService extends _service.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"store\", _descriptor, this);\n      _initializerDefineProperty(this, \"lambda\", _descriptor2, this);\n      _initializerDefineProperty(this, \"session\", _descriptor3, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor4, this);\n      _initializerDefineProperty(this, \"byID\", _descriptor5, this);\n      _initializerDefineProperty(this, \"byName\", _descriptor6, this);\n      _initializerDefineProperty(this, \"list\", _descriptor7, this);\n      _initializerDefineProperty(this, \"loading\", _descriptor8, this);\n    }\n    async load(forceReload, firmID) {\n      this.loading = true;\n      this.firmID = firmID;\n      try {\n        const staffList = await this.lambda.invoke(this.lambda.getLawyerListLambda, {\n          firmID\n        }).then(this.lambda.processResponse);\n\n        // build a lookup object based on person ID\n        if (staffList) {\n          this.list = staffList;\n          staffList.forEach(staffMember => {\n            this.byID[staffMember.personID] = staffMember;\n            if (staffMember.name) {\n              this.byName[staffMember.name] = staffMember;\n            }\n          });\n        }\n        return staffList;\n      } catch (error) {\n        this.eventLogging.logError(\"Error loading staff list\", error);\n        return [];\n      } finally {\n        this.loading = false;\n      }\n    }\n    async getStaffByID(id) {\n      const staffMember = this.byID[id];\n      return staffMember;\n    }\n    saveStaff(staff) {\n      this.byID[staff.personID] = staff;\n      if (staff?.name) {\n        this.byName[staff.name] = staff;\n      }\n      const payload = {\n        firmID: this.firmID,\n        personID: staff.personID,\n        userEmail: this.session.data.authenticated.username,\n        details: staff\n      };\n      return this.lambda.invoke(this.lambda.updateLawyerDetailsLambda, payload).then(this.lambda.processResponse).then(() => {\n        return this.load(true, this.firmID);\n      });\n    }\n    createStaff(staff) {\n      const payload = {\n        firmID: this.firmID,\n        personID: staff.personID,\n        userEmail: this.session.data.authenticated.username,\n        details: staff\n      };\n      return this.lambda.invoke(this.lambda.createLawyerLambda, payload).then(this.lambda.processResponse).then(() => {\n        return this.load(true, this.firmID);\n      });\n    }\n    async deleteStaff(staff) {\n      const payload = {\n        firmID: this.firmID,\n        personID: staff.personID,\n        userEmail: this.session.data.authenticated.username\n      };\n      return this.lambda.invoke(this.lambda.deleteLawyerLambda, payload).then(this.lambda.processResponse).then(() => {\n        return this.load(true, this.firmID);\n      });\n    }\n\n    /*\n      Legacy functions\n      TODO: remove in the future once all points to these functions have been renamed\n    */\n    saveLawyer(lawyer) {\n      return this.saveStaff(lawyer);\n    }\n    createLawyer(lawyer) {\n      return this.createStaff(lawyer);\n    }\n    deleteLawyer(lawyer) {\n      return this.deleteStaff(lawyer);\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"store\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"session\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.inject], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"byID\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return {};\n    }\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"byName\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return {};\n    }\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"list\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"loading\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _class);\n});","define(\"settify-mvp/services/liquid-fire-children\", [\"exports\", \"liquid-fire/services/liquid-fire-children\"], function (_exports, _liquidFireChildren) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _liquidFireChildren.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/services/liquid-fire-children\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/services/liquid-fire-transitions\", [\"exports\", \"liquid-fire/services/liquid-fire-transitions\"], function (_exports, _liquidFireTransitions) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _liquidFireTransitions.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/services/liquid-fire-transitions\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/services/local-storage\", [\"exports\", \"@ember/service\", \"settify-mvp/config/environment\"], function (_exports, _service, _environment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"settify-mvp/config/environment\"eaimeta@70e063a35619d71f\n  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }\n  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }\n  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\n  function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }\n  function _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n  const STORAGE_PREFIX = \"settify\";\n  const TEST_STORAGE_PREFIX = \"settify-test\";\n  var _storagePrefix = /*#__PURE__*/new WeakMap();\n  var _LocalStorageService_brand = /*#__PURE__*/new WeakSet();\n  class LocalStorageService extends _service.default {\n    constructor(...args) {\n      super(...args);\n      /**\n       * Get or create a namespace from localStorage\n       * @param {string} namespace - The namespace name\n       * @returns {Object} - The namespace data object\n       */\n      _classPrivateMethodInitSpec(this, _LocalStorageService_brand);\n      /**\n       * Storage key prefix based on environment\n       * @type {string}\n       */\n      _classPrivateFieldInitSpec(this, _storagePrefix, _assertClassBrand(_LocalStorageService_brand, this, _getStoragePrefix).call(this));\n    }\n    /**\n     * Write a value to localStorage under a namespace and key\n     * @param {Object} params - Parameters object\n     * @param {string} params.namespace - The namespace to store under\n     * @param {string} params.key - The key within the namespace\n     * @param {any} params.value - The value to store\n     * @throws {Error} If namespace or key is missing\n     */\n    write({\n      namespace,\n      key,\n      value\n    }) {\n      _assertClassBrand(_LocalStorageService_brand, this, _validateParams).call(this, namespace, key);\n      const namespaceData = _assertClassBrand(_LocalStorageService_brand, this, _getNamespace).call(this, namespace);\n      namespaceData[key] = value;\n      _assertClassBrand(_LocalStorageService_brand, this, _saveNamespace).call(this, namespace, namespaceData);\n    }\n\n    /**\n     * Read a value from localStorage\n     * @param {Object} params - Parameters object\n     * @param {string} params.namespace - The namespace to read from\n     * @param {string} params.key - The key within the namespace\n     * @returns {any} - The stored value or null if not found\n     * @throws {Error} If namespace or key is missing\n     */\n    read({\n      namespace,\n      key\n    }) {\n      _assertClassBrand(_LocalStorageService_brand, this, _validateParams).call(this, namespace, key);\n      return _assertClassBrand(_LocalStorageService_brand, this, _getNamespace).call(this, namespace)[key] ?? null;\n    }\n\n    /**\n     * Remove a key from localStorage\n     * @param {Object} params - Parameters object\n     * @param {string} params.namespace - The namespace\n     * @param {string} params.key - The key to remove\n     * @throws {Error} If namespace or key is missing\n     */\n    remove({\n      namespace,\n      key\n    }) {\n      _assertClassBrand(_LocalStorageService_brand, this, _validateParams).call(this, namespace, key);\n      const namespaceData = _assertClassBrand(_LocalStorageService_brand, this, _getNamespace).call(this, namespace);\n      delete namespaceData[key];\n      _assertClassBrand(_LocalStorageService_brand, this, _saveNamespace).call(this, namespace, namespaceData);\n    }\n  }\n  _exports.default = LocalStorageService;\n  function _getNamespace(namespace) {\n    const storageKey = _assertClassBrand(_LocalStorageService_brand, this, _getStorageKey).call(this, namespace);\n    try {\n      const stored = localStorage.getItem(storageKey);\n      return stored ? JSON.parse(stored) : {};\n    } catch (error) {\n      console.error(`Error loading localStorage ${namespace}:`, error);\n      return {};\n    }\n  }\n  /**\n   * Save a namespace to localStorage\n   * @param {string} namespace - The namespace name\n   * @param {Object} data - The data to save\n   */\n  function _saveNamespace(namespace, data) {\n    const storageKey = _assertClassBrand(_LocalStorageService_brand, this, _getStorageKey).call(this, namespace);\n    try {\n      localStorage.setItem(storageKey, JSON.stringify(data));\n    } catch (error) {\n      console.error(`Error saving localStorage ${namespace}:`, error);\n    }\n  }\n  /**\n   * Generate the storage key for a namespace\n   * @param {string} namespace - The namespace name\n   * @returns {string} - The storage key\n   */\n  function _getStorageKey(namespace) {\n    return `${_classPrivateFieldGet(_storagePrefix, this)}:${namespace}`;\n  }\n  /**\n   * Get the storage prefix for the current environment\n   * @returns {string} - The storage prefix\n   */\n  function _getStoragePrefix() {\n    return _environment.default.environment === \"test\" ? TEST_STORAGE_PREFIX : STORAGE_PREFIX;\n  }\n  /**\n   * Validate namespace and key parameters\n   * @param {string} namespace - The namespace to validate\n   * @param {string} key - The key to validate\n   * @throws {Error} If validation fails\n   */\n  function _validateParams(namespace, key) {\n    if (typeof namespace !== \"string\" || namespace.trim() === \"\") {\n      throw new Error(\"Missing or invalid namespace, must be a non-empty string\");\n    }\n    if (typeof key !== \"string\" || key.trim() === \"\") {\n      throw new Error(\"Missing or invalid Key, must be a non-empty string\");\n    }\n  }\n});","define(\"settify-mvp/services/master-form\", [\"exports\", \"@ember/service\"], function (_exports, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _class, _descriptor;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  /**\n   * This service replaces legacy master-form-mixin class\n   * NOTE: Not all functions are moved here, if something is missing make sure to add it\n   */\n  let MasterFormService = _exports.default = (_dec = (0, _service.inject)(\"dynamic-config\"), _class = class MasterFormService extends _service.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"config\", _descriptor, this);\n    }\n    get masterFormID() {\n      switch (this.config.settings.Firm.practiceArea) {\n        case \"Probate\":\n          return \"8ded4171-dc1c-4804-baf0-b4380e9fafdf\";\n        case \"Estates\":\n          return \"b03922a6-b8f2-4078-8312-4d7afcfd61b9\";\n        case \"Family\":\n          return \"574989d9-72f6-4a76-973f-f41a8013435e\";\n      }\n      return \"\";\n    }\n    staticReferences(clientRecord, context) {\n      const practiceArea = context.practiceArea || clientRecord?.practiceArea || this.config?.settings?.Firm?.practiceArea;\n      switch (practiceArea) {\n        case \"Probate\":\n          return {\n            didPrepareWillQuestion: {\n              chapter: \"deceased\",\n              page: \"willPrepared\",\n              question: \"willPrepared\"\n            },\n            instructorQuestion: {\n              chapter: \"deceased\",\n              page: \"instructor\",\n              question: \"firstName\"\n            },\n            deceasedQuestion: {\n              chapter: \"deceased\",\n              page: \"deceased\",\n              question: \"deceased\"\n            },\n            isExecutorQuestion: {\n              chapter: \"deceased\",\n              page: \"executor\",\n              question: \"isExecutor\"\n            },\n            deceasedAssetsPage: {\n              chapter: \"deceased\",\n              page: \"assetTypes\"\n            },\n            executorListQuestion: {\n              chapter: \"theWill\",\n              page: \"executors\",\n              question: \"executorsBasicDetails\"\n            },\n            knowsWillLocationQuestion: {\n              chapter: \"theWill\",\n              page: \"willLocation\",\n              question: \"knowsWillLocation\"\n            },\n            willLocationQuestion: {\n              chapter: \"theWill\",\n              page: \"willLocation\",\n              question: \"willLocation\"\n            },\n            hadAccountantQuestion: {\n              chapter: \"assets\",\n              page: \"accountant\",\n              question: \"hadAccountant\"\n            },\n            accountantDetailsQuestion: {\n              chapter: \"assets\",\n              page: \"accountant\",\n              question: \"accountant\"\n            },\n            hadFinancialAdvisorQuestion: {\n              chapter: \"assets\",\n              page: \"financialAdvisor\",\n              question: \"hadFinancialAdvisor\"\n            },\n            financialAdvisorDetailsQuestion: {\n              chapter: \"assets\",\n              page: \"financialAdvisor\",\n              question: \"financialAdvisor\"\n            },\n            assetsLocations: [{\n              page: \"business\",\n              question: \"business\",\n              assetType: \"business\"\n            }, {\n              page: \"cashInTheBank\",\n              question: \"banks\",\n              assetType: \"bank\"\n            }, {\n              page: \"chattels\",\n              question: \"chattels\",\n              assetType: \"chattel\"\n            }, {\n              page: \"realestate\",\n              question: \"properties\",\n              assetType: \"property\"\n            }, {\n              page: \"shares\",\n              question: \"shares\",\n              assetType: \"share\"\n            }, {\n              page: \"trusts\",\n              question: \"trusts\",\n              assetType: \"trust\"\n            }]\n          };\n        case \"Estates\":\n          return {\n            didPrepareWillQuestion: {\n              chapter: \"howCanWeHelp\",\n              page: \"willPrepared\",\n              question: \"willPrepared\"\n            },\n            instructorQuestion: {\n              chapter: \"howCanWeHelp\",\n              page: \"instructor\",\n              question: \"instructor\"\n            },\n            deceasedQuestion: {\n              chapter: \"howCanWeHelp\",\n              page: \"deceased\",\n              question: \"deceased\"\n            },\n            isExecutorQuestion: {\n              chapter: \"howCanWeHelp\",\n              page: \"executor\",\n              question: \"isExecutor\"\n            },\n            claimantQuestion: {\n              chapter: \"howCanWeHelp\",\n              page: \"otherSide\",\n              question: \"otherSide\"\n            },\n            matterTypeQuestion: {\n              chapter: \"howCanWeHelp\",\n              page: \"matterType\",\n              question: \"matterType\"\n            },\n            lastPlaceOfResidenceQuestion: {\n              chapter: \"howCanWeHelp\",\n              page: \"deceasedDeathState\",\n              question: \"state\"\n            },\n            probateGrantedStateQuestion: {\n              chapter: \"howCanWeHelp\",\n              page: \"adminGrantedInDeceasedState\",\n              question: \"adminGrantedLocation\"\n            },\n            dateOfProbateQuestion: {\n              chapter: \"howCanWeHelp\",\n              page: \"dateOfProbate\",\n              question: \"dateOfProbate\"\n            },\n            dateOfProbateQuestion2: {\n              chapter: \"will\",\n              page: \"grantDate\",\n              question: \"grantDate\"\n            },\n            dateOfDeathQuestion: {\n              chapter: \"howCanWeHelp\",\n              page: \"deceasedPassedDate\",\n              question: \"deceasedPassedDate\"\n            },\n            secondDateOfDeathQuestion: {\n              chapter: \"deceased\",\n              page: \"dateOfDeath\",\n              question: \"date\"\n            },\n            notSureAboutWillQuestion: {\n              chapter: \"howCanWeHelp\",\n              page: \"willPrepared\",\n              question: \"notSureReason\"\n            }\n          };\n        case \"Family\":\n          return {\n            clientDetailsQuestion: {\n              chapter: \"contactDetails\",\n              page: \"client\",\n              question: \"client\"\n            },\n            preferredLawyerQuestion: {\n              chapter: \"contactDetails\",\n              page: \"referralSource\",\n              question: \"referralSourcePreferredLawyer\"\n            }\n          };\n      }\n\n      // If not practiceArea, return safe value\n      return {};\n    }\n    getInduction(inductions) {\n      if (!inductions) {\n        return;\n      }\n      return inductions.length > 1 && this?.masterFormID ? inductions.filter(f => f.id === this.masterFormID || f.formID === this.masterFormID)[0] : inductions[0];\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"config\", [_dec], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _class);\n});","define(\"settify-mvp/services/mock-inductions\", [\"exports\", \"settify-mvp/services/induction-definitions/legalrelationshipreview\", \"settify-mvp/services/induction-definitions/businessdetails\", \"settify-mvp/services/induction-definitions/companyregistration\", \"settify-mvp/services/induction-definitions/shareholdersagreement\", \"settify-mvp/services/induction-definitions/saleofbusiness\", \"settify-mvp/services/induction-definitions/trustestablishment\"], function (_exports, _legalrelationshipreview, _businessdetails, _companyregistration, _shareholdersagreement, _saleofbusiness, _trustestablishment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"settify-mvp/services/induction-definitions/legalrelationshipreview\",0,\"settify-mvp/services/induction-definitions/businessdetails\",0,\"settify-mvp/services/induction-definitions/companyregistration\",0,\"settify-mvp/services/induction-definitions/shareholdersagreement\",0,\"settify-mvp/services/induction-definitions/saleofbusiness\",0,\"settify-mvp/services/induction-definitions/trustestablishment\"eaimeta@70e063a35619d71f\n  // import simple from './induction-definitions/simple';\n  var _default = _exports.default = {\n    inductions: [_legalrelationshipreview.default, _companyregistration.default, _shareholdersagreement.default, _trustestablishment.default, _saleofbusiness.default, _businessdetails.default\n    // {\n    //   title: \"Establish a Trust\",\n    //   id: \"newtrust\",\n    //   description: \"Trusts are versatile structures that can assist your business in numerous ways\"\n    // },\n    // {\n    //   title: \"Purchase a Business\",\n    //   id: \"purchasebusiness\",\n    //   description: \"Looking to acquire a business? We've got you covered\"\n    // },\n    // {\n    //   title: \"Sell a Business\",\n    //   id: \"sellbusiness\",\n    //   description: \"We'll help you sell your business, or a division of your business, to achieve the best outcome\"\n    // },\n    // {\n    //   title: \"Confidentiality Agreement\",\n    //   id: \"nda\",\n    //   description: \"Need to exchange confidential information? You'll need an NDA.\"\n    // },\n    // simple\n    ]\n  };\n});","define(\"settify-mvp/services/notifications\", [\"exports\", \"@ember/service\", \"@ember/array\"], function (_exports, _service, _array) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@ember/array\"eaimeta@70e063a35619d71f\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  /**\n   * TODO: Build a better notification service for our platform\n   */\n  class Notifications extends _service.default {\n    constructor(...args) {\n      super(...args);\n      _defineProperty(this, \"notifications\", (0, _array.A)([]));\n    }\n    add(notification) {\n      this.notifications.pushObject(notification);\n    }\n    remove(notification) {\n      this.notifications.removeObject(notification);\n    }\n\n    /**\n     * Used to perform a simple toast style notification, adds and removes itself\n     */\n    async notify(notification, timeout = 3000) {\n      this.add(notification);\n      await new Promise(r => setTimeout(r, timeout));\n      this.remove(notification);\n    }\n    empty() {\n      this.notifications.clear();\n    }\n  }\n  _exports.default = Notifications;\n});","define(\"settify-mvp/services/page-title\", [\"exports\", \"ember-page-title/services/page-title\"], function (_exports, _pageTitle) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _pageTitle.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-page-title/services/page-title\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/services/questionnaire-logic\", [\"exports\", \"rsvp\", \"@ember/service\", \"@glimmer/tracking\", \"settify-mvp/helpers/age-from-object\", \"settify-mvp/helpers/years-since\"], function (_exports, _rsvp, _service, _tracking, _ageFromObject, _yearsSince) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n  0; //eaimeta@70e063a35619d71f0,\"rsvp\",0,\"@ember/service\",0,\"@glimmer/tracking\",0,\"settify-mvp/helpers/age-from-object\",0,\"settify-mvp/helpers/years-since\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  function getMetadataFrom(chapterAnswers, visiblePages) {\n    let count = 0,\n      visited = 0,\n      completed = 0,\n      skipped = 0;\n    for (const key in chapterAnswers) {\n      if (Object.prototype.hasOwnProperty.call(chapterAnswers, key) && visiblePages.some(p => p.id === key)) {\n        const page = chapterAnswers[key];\n        count++;\n        if (page.visited) {\n          visited++;\n        }\n        if (page.completed) {\n          completed++;\n        }\n        if (page.skipped) {\n          skipped++;\n        }\n      }\n    }\n    const isCompleted = completed && completed === count && count === visiblePages.length;\n    return {\n      visited: !!visited,\n      completed: isCompleted,\n      skipped: !isCompleted && !!skipped\n    };\n  }\n  let QuestionnaireLogicService = _exports.default = (_class = class QuestionnaireLogicService extends _service.default {\n    constructor(...args) {\n      super(...args);\n      _initializerDefineProperty(this, \"lambda\", _descriptor, this);\n      _initializerDefineProperty(this, \"firm\", _descriptor2, this);\n      _initializerDefineProperty(this, \"questionnaireSummaryList\", _descriptor3, this);\n      _initializerDefineProperty(this, \"questionnaireList\", _descriptor4, this);\n    }\n    load(forceRefresh, options = {}) {\n      if (this.questionnaireSummaryList.length && !forceRefresh) {\n        return (0, _rsvp.resolve)(this.questionnaireSummaryList);\n      }\n      return this.lambda.invoke(this.lambda.getFormListLambda, {\n        firmID: options.firmID\n      }).then(this.lambda.processResponse).then(data => {\n        this.questionnaireSummaryList = data;\n        return data;\n      });\n    }\n    getInductionObject(id, forceReload, options = {}) {\n      const questionnaire = this.peekInductionObject(id);\n      if (questionnaire && !forceReload) {\n        return (0, _rsvp.resolve)(questionnaire);\n      }\n      return this.lambda.invoke(this.lambda.getFormLambda, {\n        firmID: options.firmID,\n        formID: id,\n        masterFormOnly: options.masterFormOnly\n      }).then(this.lambda.processResponse).then(form => {\n        this.questionnaireList.pushObject(form);\n        return form;\n      });\n    }\n    peekInductionObject(id) {\n      return this.questionnaireList.find(questionnaire => questionnaire.id === id);\n    }\n    getAvailableInductions() {\n      return this.questionnaireSummaryList.map(questionnaireSummary => ({\n        formID: questionnaireSummary.formID,\n        title: questionnaireSummary.title,\n        practiceArea: questionnaireSummary.practiceArea,\n        canBeRepeated: questionnaireSummary.canBeRepeated,\n        alwaysSelected: questionnaireSummary.alwaysSelected,\n        blurb: questionnaireSummary.blurb\n      }));\n    }\n    getInductions(savedData = null, nextInduction = \"-\", nextChapter = \"-\", repeatToken = null) {\n      return this.load().then(() => {\n        // load all required inductions into memory before we try to process them\n        const inductionList = savedData ? savedData.inductions : this.questionnaireSummaryList;\n        const promises = inductionList.map(summary => this.getInductionObject(summary.id || summary.formID));\n        return (0, _rsvp.all)(promises);\n      }).then(() => {\n        const inductionList = savedData ? savedData.inductions : this.questionnaireSummaryList;\n        repeatToken = parseInt(repeatToken);\n        const inductions = inductionList.map(summary => {\n          const induction = this.peekInductionObject(summary.id || summary.formID);\n          return {\n            title: induction.title,\n            shortTitle: `${induction.shortTitle || \"\"}`,\n            breadcrumbText: summary.repeatBreadcrumb || (summary.repeatToken > 1 ? summary.repeatToken : \"\"),\n            id: induction.id,\n            icon: induction.icon,\n            description: induction.description,\n            isContactDetails: induction.isContactDetails,\n            displayIf: induction.displayIf,\n            canBeDeleted: summary.canBeDeleted,\n            hideFromFirm: induction.hideFromFirm,\n            firmSummary: induction.firmSummary,\n            integrationInformation: induction.integrationInformation,\n            useCustomDefinition: induction.useCustomDefinition,\n            chapters: induction.chapters.filter(chapter => this.validPageOrChapter({\n              inductionObject: induction,\n              repeat: summary.repeatToken,\n              chapterObject: chapter,\n              pageObject: {}\n            }, savedData)).map(chapter => ({\n              title: chapter.title,\n              shortTitle: chapter.shortTitle,\n              id: chapter.id,\n              isContactDetails: chapter.isContactDetails,\n              displayIf: chapter.displayIf,\n              hideFromFirm: chapter.hideFromFirm,\n              icon: chapter.icon,\n              pages: chapter.pages.filter(page => this.validPageOrChapter({\n                inductionObject: induction,\n                repeat: summary.repeatToken,\n                chapterObject: chapter,\n                pageObject: page\n              }, savedData)).map(page => JSON.parse(JSON.stringify(page)))\n            })).filter(chapter => chapter.pages.length > 0),\n            repeatToken: summary.repeatToken,\n            repeatBreadcrumb: summary.repeatBreadcrumb\n          };\n        });\n\n        // 'complete' the previous ones\n        // 'next' the immediately next one\n        // 'future' the later ones\n        let next;\n        let inductionCompleteCount = 0;\n        let hasInferredNextInduction = false;\n        for (const induction of inductions) {\n          let isNextInduction = induction.id === nextInduction && (induction.repeatToken || \"-\").toString() === (repeatToken || \"-\").toString();\n          let chapter_next = \"-\";\n          let completedChapterCount = 0;\n          for (let j = 0; j < induction.chapters.length; j++) {\n            const chapter = induction.chapters[j];\n            if (isNextInduction) {\n              if (chapter.id === nextChapter || nextChapter === \"-\" && j === 0) {\n                chapter.next = true;\n                chapter_next = chapter.id;\n              }\n            }\n            if (savedData) {\n              const chapterAnswers = savedData.getAnswersFor(induction.id, chapter.id, null, induction.repeatToken);\n              const {\n                visited,\n                completed,\n                skipped\n              } = getMetadataFrom(chapterAnswers, chapter.pages);\n              if (completed || skipped) {\n                completedChapterCount++;\n                chapter.completed = true;\n              }\n              if (visited) {\n                chapter.visited = true;\n                induction.visited = true;\n              }\n              if (skipped) {\n                chapter.skipped = true;\n                induction.skipped = true;\n              }\n            }\n          }\n          if (completedChapterCount === induction.chapters.length) {\n            induction.completed = true;\n            inductionCompleteCount++;\n          }\n          if (!hasInferredNextInduction && nextInduction === \"-\" && completedChapterCount < induction.chapters.length) {\n            hasInferredNextInduction = true;\n            isNextInduction = true;\n            for (const chapter of induction.chapters) {\n              if (!chapter.completed) {\n                chapter.next = true;\n                chapter_next = chapter.id;\n                break;\n              }\n            }\n          }\n          if (isNextInduction) {\n            induction.next = true;\n            next = {\n              induction: induction.id,\n              chapter: chapter_next,\n              page: \"-\"\n            };\n            if (induction.repeatToken) {\n              next.repeat = induction.repeatToken;\n            }\n          }\n        }\n        return {\n          next,\n          inductions,\n          complete: inductionCompleteCount === inductions.length,\n          potentialRepeats: this.questionnaireSummaryList.filter(i => {\n            if (i.canBeRepeated !== false) {\n              return true;\n            }\n            // see if we've already done this before. If we have, we can't do it again\n            return inductionList.filter(l => l.id === i.id).length === 0;\n          })\n        };\n      });\n    }\n    getPage(savedData, induction = \"-\", chapter = \"-\", page = \"-\", repeatToken = null) {\n      const {\n        inductions\n      } = savedData;\n      return this.getInductions(savedData).then(() => this.getInductionObject(induction === \"-\" ? inductions[0].id : induction)).then(inductionObject => {\n        repeatToken = parseInt(repeatToken) || inductionObject?.repeatToken || 1;\n        const chapterObject = chapter === \"-\" ? inductionObject.chapters[0] : inductionObject.chapters.find(i => i.id === chapter);\n        let pageObject;\n        if (page === \"-\") {\n          // find the first valid page in this chapter\n          for (let i = 0; i < chapterObject.pages.length; i++) {\n            const p = chapterObject.pages[i];\n            if (this.validPageOrChapter({\n              inductionObject: inductionObject,\n              repeat: repeatToken,\n              chapterObject: chapterObject,\n              pageObject: p\n            }, savedData)) {\n              pageObject = p;\n              break;\n            }\n          }\n        } else {\n          pageObject = chapterObject.pages.find(i => i.id === page);\n        }\n\n        // find the 'next' and 'previous' links\n        let inductionIndex = 0;\n        for (let i = 0; i < inductions.length; i++) {\n          const element = inductions[i];\n          if (element.id === induction && (isNaN(repeatToken) || element.repeatToken === repeatToken)) {\n            inductionIndex = i;\n            break;\n          }\n        }\n        const chapterIndex = inductionObject.chapters.indexOf(chapterObject);\n        const pageIndex = chapterObject.pages.indexOf(pageObject);\n        let next;\n        let nextI = inductionIndex,\n          nextC = chapterIndex,\n          nextP = pageIndex;\n        let nextIObject = inductionObject;\n        let nextCObject = chapterObject;\n        while (!this.validPageOrChapter(next, savedData)) {\n          if (nextP + 1 < nextCObject.pages.length) {\n            nextP++;\n          } else {\n            // tick over to the next chapter\n            if (nextC + 1 < nextIObject.chapters.length) {\n              nextC++;\n              nextP = 0;\n            } else {\n              // tick over to the next induction\n              if (nextI + 1 < inductions.length) {\n                // simple, just go to the next induction\n                nextP = 0;\n                nextC = 0;\n                nextI++;\n              } else {\n                // we're at the very end\n                nextI = null;\n              }\n            }\n          }\n          if (typeof nextI === \"number\") {\n            nextIObject = this.peekInductionObject(inductions[nextI].id);\n            nextCObject = nextIObject.chapters[nextC];\n            next = {\n              induction: nextIObject.id,\n              inductionIndex: nextI,\n              chapter: nextCObject.id,\n              chapterIndex: nextC,\n              page: nextCObject.pages[nextP].id,\n              pageIndex: nextP,\n              repeat: inductions[nextI].repeatToken,\n              repeatBreadcrumb: inductions[nextI].repeatBreadcrumb,\n              endOfChapter: nextC !== chapterIndex,\n              endOfInduction: nextI !== inductionIndex\n            };\n          } else {\n            next = null;\n            nextCObject = null;\n            nextIObject = null;\n          }\n        }\n        let prev;\n        let prevI = inductionIndex,\n          prevC = chapterIndex,\n          prevP = pageIndex;\n        while (!this.validPageOrChapter(prev, savedData)) {\n          if (prevP > 0) {\n            prevP--;\n          } else {\n            // tick back to the previous chapter\n            if (prevC > 0) {\n              prevC--;\n              prevP = \"max\";\n            } else {\n              // tick back to the previous induction\n              if (prevI > 0) {\n                // simple - just go backwards\n                prevI--;\n                prevC = \"max\";\n                prevP = \"max\";\n              } else {\n                // we're at the very end - nothing left\n                prevI = null;\n              }\n            }\n          }\n          if (prevI === \"max\") {\n            prevI = savedData.inductions.length - 1;\n          }\n          if (prevC === \"max\") {\n            prevC = this.peekInductionObject(inductions[prevI].id).chapters.length - 1;\n          }\n          if (prevP === \"max\") {\n            prevP = this.peekInductionObject(inductions[prevI].id).chapters[prevC].pages.length - 1;\n          }\n          if (typeof prevI === \"number\") {\n            prev = {\n              induction: inductions[prevI].id,\n              inductionIndex: prevI,\n              chapter: this.peekInductionObject(inductions[prevI].id).chapters[prevC].id,\n              chapterIndex: prevC,\n              page: this.peekInductionObject(inductions[prevI].id).chapters[prevC].pages[prevP].id,\n              pageIndex: prevP,\n              repeat: inductions[prevI].repeatToken,\n              repeatBreadcrumb: inductions[prevI].repeatBreadcrumb,\n              startOfChapter: pageIndex === 0 || prevC !== chapterIndex,\n              startOfInduction: chapterIndex === 0 && pageIndex === 0 || prevI !== inductionIndex\n            };\n          } else {\n            prev = null;\n          }\n        }\n        return {\n          page: pageObject,\n          chapter: chapterObject,\n          induction: inductionObject,\n          inductionIndex: inductionIndex + 1,\n          chapterIndex: chapterIndex + 1,\n          pageIndex: pageIndex + 1,\n          repeat: repeatToken,\n          repeatBreadcrumb: savedData.inductions[inductionIndex].repeatBreadcrumb,\n          next,\n          prev\n        };\n      });\n    }\n    validPageOrChapter(next, savedData, params = {}) {\n      if (typeof next === \"undefined\") {\n        return false;\n      }\n      if (next === null) {\n        return true;\n      }\n      if (!savedData) {\n        return true;\n      }\n      const inductionObject = next.inductionObject || this.peekInductionObject(next.induction);\n      const chapterObject = next.chapterObject || inductionObject.chapters[next.chapterIndex];\n      const pageObject = next.pageObject || chapterObject.pages[next.pageIndex];\n      if (next.repeat > 1) {\n        // test for 'can be repeated'\n        // note: don't bother testing inductionObject.canBeRepeated because we shouldn't\n        // have been able to add a non-repeatable induction in the first place, and if we HAVE\n        // been able to add it, we need to be able to navigate to it, since it's on the list.\n        if (chapterObject.canBeRepeated === false) {\n          return false;\n        }\n        if (pageObject.canBeRepeated === false) {\n          return false;\n        }\n      }\n      if (chapterObject.canBeRepeatedGlobalID) {\n        // have we completed any other chapter with this same global ID? If so, return false\n      }\n      if (pageObject && pageObject.canBeRepeatedGlobalID) {\n        // have we completed any other page with this same global ID? If so, return false\n        const alreadySeenPage = this.hasBeenCompleted(savedData.answers, pageObject.canBeRepeatedGlobalID, `${inductionObject.id}#${next.repeat}.${chapterObject.id}.${pageObject.id}`);\n        if (alreadySeenPage) {\n          return false;\n        }\n      }\n      if (inductionObject && !this.computeDisplayIf(inductionObject, savedData, next, null, null, params.adminMode)) {\n        return false;\n      }\n      if (chapterObject && !this.computeDisplayIf(chapterObject, savedData, next, null, null, params.adminMode)) {\n        return false;\n      }\n      if (pageObject && !this.computeDisplayIf(pageObject, savedData, next, null, null, params.adminMode)) {\n        return false;\n      }\n      return true;\n    }\n    getQuestionDefinition(inductionID, chapterID, pageID, questionID, fullContext) {\n      const page = this.getPageDefinition(inductionID, chapterID, pageID, fullContext);\n      if (!page) {\n        return;\n      }\n      if (fullContext) {\n        page.question = page.page.questions.find(q => q.id === questionID);\n        return page;\n      }\n      return page.questions.filter(q => q.id === questionID);\n    }\n    getPageDefinition(inductionID, chapterID, pageID, fullContext) {\n      const induction = this.peekInductionObject(inductionID);\n      if (induction) {\n        const chapter = induction.chapters.find(c => c.id === chapterID);\n        if (chapter) {\n          const page = chapter.pages.find(p => p.id === pageID);\n          if (fullContext) {\n            return {\n              induction,\n              chapter,\n              page\n            };\n          }\n          return page;\n        }\n      }\n    }\n    hasBeenCompleted(answers, id, sourcePath, searchPath) {\n      if (!searchPath) {\n        searchPath = \"\";\n      }\n      for (const key in answers) {\n        if (Object.prototype.hasOwnProperty.call(answers, key)) {\n          const element = answers[key];\n          const fullPath = searchPath + (searchPath ? \".\" : \"\") + key;\n          if (fullPath === sourcePath) {\n            continue;\n          }\n          if (element && typeof element === \"object\") {\n            if (element.completed) {\n              // consult the definition to see if it has the same canBeRepeatedGlobalID as our search id\n              const pathSteps = fullPath.split(\".\");\n              const inductionIDToSearch = pathSteps[0].replace(/#.*/, \"\"); // strip the #repeatToken\n              const induction = this.peekInductionObject(inductionIDToSearch);\n              if (induction && induction.canBeRepeatedGlobalID === id) {\n                return fullPath;\n              }\n              if (induction && pathSteps.length > 1) {\n                const chapter = induction.chapters.find(c => c.id === pathSteps[1]);\n                if (chapter && chapter.canBeRepeatedGlobalID === id) {\n                  return fullPath;\n                }\n                if (chapter && pathSteps.length > 2) {\n                  const page = chapter.pages.find(p => p.id === pathSteps[2]);\n                  if (page && page.canBeRepeatedGlobalID === id) {\n                    return fullPath;\n                  }\n                }\n              }\n            } else {\n              const completed = this.hasBeenCompleted(element, id, sourcePath, fullPath);\n              if (completed) {\n                return completed;\n              }\n            }\n          }\n        }\n      }\n      return false;\n    }\n\n    // TODO: Check if this method can be refactored\n    getVariableContent(varName, context, data, params, model) {\n      // check for special 'top level' variables in the client model\n      const specialVariable = data.getSpecialVariable(varName);\n      if (specialVariable.exists) {\n        return specialVariable.value;\n      }\n      const customVariable = data.getCustomVariableValue(varName, context);\n      if (customVariable.exists) {\n        return customVariable.value;\n      }\n\n      // We might have a people operator with a subquestion after, on a special variable\n      // e.g specialVariable:@any.firstName. The people operator (e.g :@any) gets stripped by computeDisplayIf\n      // So the input to this function may have the format specialVariable.firstName,\n      // meaning we need to remove the final part of the ID, and check if its a special variable, and then dereference the final property if so.\n      const varNameSplit = varName.split(\".\");\n      if (varNameSplit.length > 1) {\n        const varNameNoLastSection = varNameSplit.slice(0, varNameSplit.length - 1).join(\".\");\n        const specialVariableWithSubQuestion = data.getSpecialVariable(varNameNoLastSection);\n        if (specialVariableWithSubQuestion.exists) {\n          if (varNameSplit[varNameSplit.length - 1] === \"length\" && typeof specialVariableWithSubQuestion.value.length === \"number\") {\n            return specialVariableWithSubQuestion.value.length;\n          }\n          if (Array.isArray(specialVariableWithSubQuestion.value)) {\n            return specialVariableWithSubQuestion.value.map(v => v[varNameSplit[varNameSplit.length - 1]]);\n          }\n          if (specialVariableWithSubQuestion.value) {\n            return specialVariableWithSubQuestion.value[varNameSplit[varNameSplit.length - 1]];\n          }\n          return null;\n        }\n      }\n      if (varName.match(/^context./)) {\n        const key = varName.replace(/^context./, \"\");\n        return context[key];\n      }\n      if (varName === \"this\" || varName === \"model\") {\n        return model;\n      }\n\n      // get full context variable name if not expressly specified\n      const inductionID = context.inductionObject ? context.inductionObject.id : context.induction;\n      let chapterID = context.chapterObject ? context.chapterObject.id : context.chapter;\n      let pageID = context.pageObject ? context.pageObject.id : context.page;\n      let questionID = \"\";\n      let subquestionID = \"\";\n      let remainingSubquestionIDs = [];\n      const segments = varName.split(\".\");\n      if (segments.length > 4) {\n        chapterID = segments[0];\n        pageID = segments[1];\n        questionID = segments[2];\n        subquestionID = segments[3];\n        remainingSubquestionIDs = segments.slice(3, segments.length);\n      } else if (segments.length > 2) {\n        chapterID = segments[0];\n        pageID = segments[1];\n        questionID = segments[2];\n        subquestionID = segments[3];\n      }\n      if (segments.length === 2) {\n        pageID = segments[0];\n        questionID = segments[1];\n      }\n      if (segments.length === 1) {\n        questionID = segments[0];\n      }\n\n      // look up in the data answers\n      let value = data.getPreciseAnswer(inductionID, chapterID, pageID, questionID, subquestionID, context.repeat, params);\n      if (value && subquestionID === \"length\" && typeof value.length === \"number\") {\n        // they asked for \".length\", and this object has a .length property, so return it\n        return value.length;\n      }\n      if (!value && (segments.length === 1 || segments[0] === \"model\") && model) {\n        // perhaps this is a reference to an item passed in the current model\n        // eg, if we're inside a yield block for a select or create, or free list\n        value = model[segments[0] === \"model\" ? segments[1] : segments[0]];\n        if (value && typeof value === \"object\" && segments[2]) {\n          // perhaps this is a reference to an object and we need the value inside that object.\n          // eg. model.address.lineOne\n          value = value[segments[2]];\n        }\n      }\n\n      // If we have a really deep set of nested questions\n      // E.g deceased.deceased.deceased.otherBeneficiaries.length\n      if (value && remainingSubquestionIDs.length) {\n        let retValue = value;\n        for (let i = 0; i < remainingSubquestionIDs.length; i++) {\n          const subquestionID = remainingSubquestionIDs[i];\n          if (retValue[subquestionID]) {\n            retValue = retValue[subquestionID];\n          }\n        }\n        return retValue;\n      }\n      return value;\n    }\n\n    // TODO: Check if this method can be refactored\n    getLocalContextFromInduction(contextID, formID) {\n      // Must pass full contextID\n      let output = null;\n      const inductionContext = this.peekInductionObject(formID);\n      const [chapter, page, question, ...subquestions] = contextID.split(\".\");\n      if (chapter) {\n        output = inductionContext.chapters.find(c => c.id === chapter);\n      } else {\n        return; // Need a chapter reference for this to work\n      }\n      if (page) {\n        output = output.pages.find(p => p.id === page);\n      }\n      if (question) {\n        output = output.questions.find(q => q.id === question);\n      }\n      while (subquestions.length) {\n        const subq = subquestions.shift();\n        output = output.content.find(c => c.id === subq);\n      }\n      return output;\n    }\n    getModelForQuestion(data, id, formID, repeat) {\n      const [chapter, page] = id.split(\".\");\n      return data.getAnswersFor(formID, chapter, page, repeat, {});\n    }\n\n    // TODO: Check if this method can be refactored\n    getNumericValue(options, next, data) {\n      if (options.length !== 1) {\n        throw new Error(\"Numerical comparisons within a displayIf need to refer to one number, not an array of numbers\");\n      }\n      if (typeof options[0] === \"string\" && options[0].indexOf(\"%\") === 0) {\n        // a variable\n        options[0] = this.getVariableContent(options[0].replace(/^%/g, \"\"), next, data);\n      }\n      if (typeof options[0] !== \"number\") {\n        options[0] = parseFloat(options[0]);\n        if (isNaN(options[0])) {\n          throw new Error(\"Numerical comparisons within a displayIf need to refer to a number, not a string or something else\");\n        }\n      }\n      return options[0];\n    }\n\n    // TODO: Check if this method can be refactored\n    testAgainst(rhs, lhs, next, data) {\n      if (rhs === true || rhs === \"true\") {\n        return lhs === true;\n      } else if (rhs === false || rhs === \"false\") {\n        return lhs === false;\n      } else if (rhs === \"is not null\" || rhs === \"is not falsey\" || rhs === \"is truthy\") {\n        return !!lhs;\n      } else if (rhs === \"is null\" || rhs === \"is falsey\" || rhs === \"is not truthy\") {\n        return !lhs;\n      } else if (typeof rhs === \"number\") {\n        return lhs === rhs;\n      } else if (rhs.indexOf(\"%\") === 0) {\n        // a variable\n        return lhs === this.getVariableContent(rhs.replace(/^%/g, \"\"), next, data);\n      }\n      return lhs === rhs;\n    }\n\n    // TODO: Check if this method can be refactored\n    computeDisplayIf(object, data, context, model, joinOperator, adminMode) {\n      if (!data) {\n        return true;\n      }\n      if (!object) {\n        return false;\n      }\n      if (object.deleted) {\n        if ((data.get(\"creationTimestamp\") || object.deleted) > object.deleted || object.hideFromOlderClients) {\n          return false;\n        }\n      }\n      if (object.created && !object.showToOlderClients) {\n        if ((data.get(\"creationTimestamp\") || object.created) < object.created) {\n          return false;\n        }\n      }\n      if (object.standalonePages) {\n        return adminMode || false;\n      }\n      let result = true;\n      let localResult = true;\n      if (joinOperator === \"||\") {\n        result = false;\n        localResult = false;\n      }\n      let {\n        displayIf\n      } = object;\n      if (joinOperator) {\n        // we are recursing, so the displayIf object is actually 'object' itself\n        displayIf = object;\n      }\n      if (displayIf) {\n        let hasLeaf = false;\n        for (const key in displayIf) {\n          const keyWithoutNums = key.replace(/~[0-9]*$/g, \"\");\n          if (key[0] === \"_\") {\n            continue;\n          }\n          if (keyWithoutNums === \"or\") {\n            if (hasLeaf) {\n              // no actual problem having an or as a child element\n              // throw new Error(\"'or' must be a top level element in displayIf\");\n            }\n            localResult = this.computeDisplayIf(displayIf[key], data, context, model, \"||\");\n          } else if (keyWithoutNums === \"and\") {\n            if (hasLeaf) {\n              // no actual problem having an and as a child element\n              // throw new Error(\"'and' must be a top level element in displayIf\");\n            }\n            localResult = this.computeDisplayIf(displayIf[key], data, context, model, \"&&\");\n          } else if (keyWithoutNums === \"not\") {\n            if (hasLeaf) {\n              // no actual problem having a not as a child element\n              // throw new Error(\"'not' must be a top level element in displayIf\");\n            }\n            localResult = !this.computeDisplayIf(displayIf[key], data, context, model, \"||\");\n          } else {\n            hasLeaf = true;\n            let options = displayIf[key];\n            if (typeof options === \"string\" || typeof options === \"number\" || typeof options === \"boolean\") {\n              options = [options];\n            }\n            let testVariableName = key;\n            let localOperator = displayIf[key] === \"in family tree\" ? \"in family tree\" : \"===\";\n            let params = \"\";\n            const shortcutCode = key.match(/(.*):(and|or|not|any|all|notany|lessthan|greaterthan|lessthanorequal|greaterthanorequal|infamilytree)$/);\n            if (shortcutCode) {\n              testVariableName = shortcutCode[1];\n              localOperator = shortcutCode[2];\n            }\n            let peopleOperator = testVariableName.match(/(.*):(@every|@all|@any|@some|@this)/);\n            if (peopleOperator) {\n              // We have an operator to look through knownEntities for values\n              testVariableName = testVariableName.replace(/:(@every|@all|@any|@some|@this)/, \"\");\n              peopleOperator = peopleOperator[2];\n              if (peopleOperator === \"@this\") {\n                // We only want one person from knownEntities\n                if (model) {\n                  params = {\n                    filterByID: model.id\n                  };\n                  if (Array.isArray(model) && model.length === 1) {\n                    params.filterByID = model[0].id;\n                  }\n                }\n              }\n            }\n\n            // certain helpers are permitted...\n            let testVariableValue;\n            const shouldCalculateAge = testVariableName.match(/(\\w+(?:\\.\\w+)*)\\.calculateAge/); // This should be used on a person object or array of people\n            const calculateTimeSinceMatches = testVariableName.match(/(\\w+(?:\\.\\w+)*)\\.yearsSince/); // This should be used on a date component\n            const referencingDisplayIf = key.match(/(.*):shouldDisplay$/);\n            if (referencingDisplayIf) {\n              testVariableName = referencingDisplayIf[1];\n              testVariableValue = this.otherQuestionShouldDisplay(testVariableName, context, data);\n            } else if (shouldCalculateAge) {\n              testVariableName = shouldCalculateAge[1];\n              testVariableValue = (0, _ageFromObject.ageFromObject)([this.getVariableContent(testVariableName, context, data, {}, model)]);\n            } else if (calculateTimeSinceMatches) {\n              // Example yearsSince syntax:\n              // CH1.PG2.Q3.yearsSince:greaterthan: 2\n              // Example yearsSince between two dates syntax:\n              // CH1.PG2.Q3.yearsSince.CH1.PG2.Q4:greaterthan: 2\n\n              const calculateTimeSinceVariableMatches = testVariableName.match(/(\\w+(?:\\.\\w+)*)\\.yearsSince\\.(\\w*(?:\\.\\w+)*)/);\n              if (!calculateTimeSinceVariableMatches) {\n                // We are just comparing to now\n                testVariableName = calculateTimeSinceMatches[1];\n                const day = this.getVariableContent(`${testVariableName}day`, context, data, {}, model);\n                const month = this.getVariableContent(`${testVariableName}month`, context, data, {}, model);\n                const year = this.getVariableContent(`${testVariableName}year`, context, data, {}, model);\n                testVariableValue = (0, _yearsSince.yearsSince)([day, month, year]);\n              } else {\n                const testVariableOne = calculateTimeSinceVariableMatches[1];\n                const dayOne = this.getVariableContent(`${testVariableOne}day`, context, data, {}, model);\n                const monthOne = this.getVariableContent(`${testVariableOne}month`, context, data, {}, model);\n                const yearOne = this.getVariableContent(`${testVariableOne}year`, context, data, {}, model);\n                const testVariableTwo = calculateTimeSinceVariableMatches[2];\n                const dayTwo = this.getVariableContent(`${testVariableTwo}day`, context, data, {}, model);\n                const monthTwo = this.getVariableContent(`${testVariableTwo}month`, context, data, {}, model);\n                const yearTwo = this.getVariableContent(`${testVariableTwo}year`, context, data, {}, model);\n                if (!yearOne || !yearTwo) {\n                  // We can't compare dates if one of the years is null. In that case, this is always going to be falsey.\n                  testVariableValue = NaN; // Setting NaN here will make \"getLocalResult\" always return false\n                } else {\n                  // Both of the dates are defined, let's get the time between\n                  const now = new Date(yearTwo, monthTwo - 1, dayTwo);\n                  testVariableValue = Math.abs((0, _yearsSince.yearsSince)([dayOne, monthOne, yearOne, now]));\n                }\n              }\n            } else {\n              testVariableValue = this.getVariableContent(testVariableName, context, data, params, model);\n            }\n            localResult = this.getLocalResult(localOperator, peopleOperator, testVariableValue, options, context, data);\n          }\n          if (joinOperator === \"||\") {\n            result = result || localResult;\n          } else {\n            result = result && localResult;\n          }\n        }\n      }\n      return result;\n    }\n\n    // TODO: Check if this method can be refactored\n    otherQuestionShouldDisplay(testVariableName, context, data) {\n      const [chapter, page, question, ...subQuestions] = testVariableName.split(\".\");\n      const inductionID = context.induction || context.inductionObject.id;\n      let chapterDisplays;\n      let pageDisplays;\n      let questionDisplays;\n      if (chapter) {\n        const chapterContext = this.getLocalContextFromInduction(chapter, inductionID);\n        const chapterModel = this.getModelForQuestion(data, chapterContext.answersLocation || chapter, inductionID, context.repeat);\n        chapterDisplays = this.computeDisplayIf(chapterContext, data, context, chapterModel);\n      }\n      if (!chapterDisplays) {\n        return false;\n      }\n      if (page) {\n        const pageContext = this.getLocalContextFromInduction(`${chapter}.${page}`, inductionID);\n        const pageModel = this.getModelForQuestion(data, pageContext.answersLocation || `${chapter}.${page}`, inductionID, context.repeat);\n        pageDisplays = this.computeDisplayIf(pageContext, data, context, pageModel);\n      } else {\n        // If no page, we were just checking chapter\n        return true;\n      }\n      if (!pageDisplays) {\n        return false;\n      }\n      if (question) {\n        const displayIfContext = this.getLocalContextFromInduction(`${chapter}.${page}.${question}`, inductionID); // Get the context for the other question\n        const displayIfModel = this.getModelForQuestion(data, displayIfContext.answersLocation || `${chapter}.${page}.${question}`, inductionID, context.repeat); // Get the model for the other question\n        questionDisplays = this.computeDisplayIf(displayIfContext, data, context, displayIfModel);\n      } else {\n        // If no question, we are just checking chapter + page\n        return true;\n      }\n      if (!questionDisplays) {\n        return false;\n      }\n      if (subQuestions && subQuestions.length) {\n        let subQuestionString = \"\";\n        let subQDisplays = false;\n        while (subQuestions.length) {\n          const subq = subQuestions.shift();\n          subQuestionString += `.${subq}`;\n          const contextID = `${chapter}.${page}.${question}${subQuestionString}`;\n          const displayIfContext = this.getLocalContextFromInduction(contextID, inductionID);\n          const displayIfModel = this.getModelForQuestion(data, displayIfContext.answersLocation || contextID, inductionID, context.repeat);\n          subQDisplays = this.computeDisplayIf(displayIfContext, data, context, displayIfModel);\n        }\n        return subQDisplays;\n      }\n      // If no subquestion, just checking chapter + page + question\n      return true;\n    }\n\n    // TODO: Check if this method can be refactored\n    getLocalResult(localOperator, peopleOperator, testVariableValue, options, context, data) {\n      let retval = \"\";\n      if (peopleOperator === \"@any\" || peopleOperator === \"@some\") {\n        if (testVariableValue) {\n          retval = testVariableValue.some(p => {\n            return this.getLocalResult(localOperator, null, p, options, context, data);\n          });\n        }\n      } else if (peopleOperator === \"@every\" || peopleOperator === \"@all\") {\n        if (testVariableValue) {\n          retval = testVariableValue.every(p => {\n            return this.getLocalResult(localOperator, null, p, options, context, data);\n          });\n        }\n      } else if (peopleOperator === \"@this\") {\n        return this.getLocalResult(localOperator, null, testVariableValue, options, context, data);\n      } else if (localOperator === \"or\" || localOperator === \"any\") {\n        retval = options.some(o => this.testAgainst(o, testVariableValue, context, data));\n      } else if (localOperator === \"and\" || localOperator === \"all\") {\n        retval = options.every(o => this.testAgainst(o, testVariableValue, context, data));\n      } else if (localOperator === \"not\" || localOperator === \"notany\") {\n        retval = !options.some(o => this.testAgainst(o, testVariableValue, context, data));\n      } else if (localOperator === \"lessthan\") {\n        const numeric = this.getNumericValue(options, context, data);\n        retval = testVariableValue < numeric;\n      } else if (localOperator === \"greaterthan\") {\n        const numeric = this.getNumericValue(options, context, data);\n        retval = testVariableValue > numeric;\n      } else if (localOperator === \"lessthanorequal\") {\n        const numeric = this.getNumericValue(options, context, data);\n        retval = testVariableValue <= numeric;\n      } else if (localOperator === \"greaterthanorequal\") {\n        const numeric = this.getNumericValue(options, context, data);\n        retval = testVariableValue >= numeric;\n      } else if (localOperator === \"infamilytree\") {\n        testVariableValue = data.inFamilyTree(testVariableValue);\n        retval = this.testAgainst(options[0], testVariableValue, context, data);\n      } else if (localOperator === \"===\") {\n        retval = this.testAgainst(options[0], testVariableValue, context, data);\n      } else {\n        throw new Error(`Invalid local operator: ${localOperator}`);\n      }\n      return retval;\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"firm\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"questionnaireSummaryList\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return [];\n    }\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"questionnaireList\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return [];\n    }\n  }), _class);\n});","define(\"settify-mvp/services/recordpolling\", [\"exports\", \"@ember/runloop\", \"@ember/object\", \"@ember/service\", \"settify-mvp/config/environment\", \"uuid\"], function (_exports, _runloop, _object, _service, _environment, _uuid) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/runloop\",0,\"@ember/object\",0,\"@ember/service\",0,\"settify-mvp/config/environment\",0,\"uuid\"eaimeta@70e063a35619d71f\n  //\n  // Keeps track of a record by periodically polling the server for changes (with exponential backoff)\n  // Also handles all notifications and errors resulting from this sort of thing\n  //\n  var _default = _exports.default = _service.default.extend({\n    trackedClient: null,\n    trackedClientTable: \"\",\n    defaultPollingInterval: 6 * 1000,\n    // measured in milliseconds\n    pollingIncreaseFactor: 1.5,\n    maxPollingInterval: 300 * 1000,\n    currentPollingInterval: 0,\n    pollTimeoutID: null,\n    multiUserTimeoutID: null,\n    multiUserActive: false,\n    messageDisplayTime: 10 * 1000,\n    messageRemovalRunID: null,\n    deviceFingerprint: null,\n    currentLoadingLastModified: 0,\n    offlineMode: false,\n    session: (0, _service.inject)(),\n    eventLogging: (0, _service.inject)(),\n    cookies: (0, _service.inject)(),\n    lambda: (0, _service.inject)(),\n    firm: (0, _service.inject)(),\n    outOfSyncRecord: (0, _object.computed)(\"messageQueue\", \"messageQueue.length\", \"messageQueue.@each.{type,text,params}\", function () {\n      const outOfSync = this.messageQueue.some(m => {\n        return m.type === \"promptreload\";\n      });\n      return outOfSync;\n    }),\n    init() {\n      this._super(...arguments);\n      this.referenceLastModified = {};\n      (0, _object.set)(this, \"messageQueue\", []);\n      let f = this.cookies.read(\"deviceFingerprint\");\n      if (!f) {\n        f = (0, _uuid.v4)();\n        this.cookies.write(\"deviceFingerprint\", f, {\n          path: \"/\"\n        });\n      }\n      this.set(\"deviceFingerprint\", f);\n      if (!_environment.default.testing) {\n        this.checkLastModifiedCookie();\n      }\n    },\n    checkLastModifiedCookie() {\n      const client = this.trackedClient;\n      if (client?.id) {\n        const lastModified = parseInt(this.cookies.read(`lastModified-${client.id}`), 10);\n        if (lastModified && lastModified !== this.getReferenceLastModified(client.id) && lastModified !== this.currentLoadingLastModified) {\n          this.set(\"currentLoadingLastModified\", lastModified);\n          const fingerprint = this.cookies.read(`fingerprint-${client.id}`);\n          if (fingerprint === this.deviceFingerprint) {\n            // The record has been updated in another tab!\n            // console.log(\"Record modified in another tab\");\n            this.onOutOfDateRecord(client, true);\n            return;\n          }\n          // record has been updated by someone else\n          // console.log(\"Record modified by another user somewhere\");\n          this.onOutOfDateRecord(client);\n        }\n      }\n      (0, _runloop.later)(() => this.checkLastModifiedCookie(), 401);\n    },\n    setTrackedClient(model) {\n      if (model === this.trackedClient) {\n        // no change\n        return;\n      }\n\n      // reset any active timeout\n      if (this.pollTimeoutID) {\n        (0, _runloop.cancel)(this.pollTimeoutID);\n        this.set(\"pollTimeoutID\", 0);\n      }\n      if (this.multiUserTimeoutID) {\n        (0, _runloop.cancel)(this.multiUserTimeoutID);\n        this.set(\"multiUserTimeoutID\", 0);\n      }\n      if (this.messageRemovalRunID) {\n        (0, _runloop.cancel)(this.messageRemovalRunID);\n        this.set(\"messageRemovalRunID\", null);\n      }\n      this.set(\"multiUserActive\", false);\n      this.set(\"trackedClientTable\", null);\n      this.set(\"messageQueue\", []);\n\n      // examine what we're being asked to track\n\n      if (!model) {\n        // not being asked to track anything\n        this.set(\"trackedClient\", null);\n        this.set(\"currentPollingInterval\", 0);\n      } else if (typeof model === \"string\") {\n        this.set(\"trackedClient\", null);\n        this.set(\"currentPollingInterval\", 0);\n      } else {\n        this.set(\"trackedClient\", model);\n        // this.detectClientTable();\n        if (!_environment.default.testing) {\n          this.set(\"currentPollingInterval\", this.defaultPollingInterval);\n          const tval = (0, _runloop.later)(this, function () {\n            this.pollRecord();\n          }, this.currentPollingInterval);\n          this.set(\"pollTimeoutID\", tval);\n        }\n      }\n\n      // NOTE: we use an endless loop like this, because sometimes messages get sent from\n      // inside an AWS callback (eg, when a save operation fails), and Ember testing spazzes out\n      // if you create a run loop from inside a run loop...\n      if (!_environment.default.testing) {\n        // in testing mode, don't start this endless loop, or you'll never be able to advance\n        // as the run loop will never be empty.\n        const runID = (0, _runloop.later)(this, function () {\n          this.messageRemovalFunc();\n        }, this.messageDisplayTime);\n        this.set(\"messageRemovalRunID\", runID);\n      }\n    },\n    doMessageRemoval() {\n      // remove dead messages\n      const queue = this.messageQueue;\n      const now = Date.now();\n      for (let i = 0; i < queue.length;) {\n        if (queue[i].removeAfter && queue[i].removeAfter < now) {\n          queue.removeAt(i);\n        } else {\n          i++;\n        }\n      }\n    },\n    messageRemovalFunc() {\n      this.doMessageRemoval();\n      // queue it up to run again\n      const runID = (0, _runloop.later)(this, function () {\n        this.messageRemovalFunc();\n      }, this.messageDisplayTime);\n      this.set(\"messageRemovalRunID\", runID);\n    },\n    pollRecord() {\n      this.set(\"pollTimeoutID\", 0);\n      const model = this.trackedClient;\n      if (!model) {\n        return;\n      }\n      if (_environment.default.testing) {\n        return;\n      }\n      if (!model.get || !model.get(\"id\")) {\n        // something's happened to the model - stop polling\n        this.setTrackedClient(null);\n        return;\n      }\n      if (model.get(\"isNew\")) {\n        this.queueRecordPoll();\n        return;\n      }\n      this.eatTheLastModifiedCookies(model);\n      this.checkLastModifiedCookie();\n      if (this.currentLoadingLastModified) {\n        return;\n      }\n      if (_environment.default.development) {\n        this.addMessage(\"Checking for updates\");\n      }\n      this.getLastModifiedFromServer().then(data => {\n        if (data.lastModifiedNumeric !== this.getReferenceLastModified(model.get(\"id\")) && data.lastModifiedNumeric !== this.currentLoadingLastModified) {\n          if (data.lastModifiedFingerprint === this.deviceFingerprint) {\n            // this is our fingerprint - but it's not the last modified time that we have stored in our cookie\n            // let's double check our cookie!\n            const lastModifiedCookie = parseInt(this.cookies.read(`lastModified-${model.get(\"id\")}`), 10);\n            if (lastModifiedCookie === data.lastModifiedNumeric) {\n              // okay, so it was just unlucky timing. Our cookie now matches the value on the server, so\n              // this is all normal.\n              console.log(\"Strange race condition encountered, but we recovered.\");\n              this.set(\"currentLoadingLastModified\", data.lastModifiedNumeric);\n              this.onOutOfDateRecord(model);\n            } else {\n              // This is really unexpected. Most likely, it's due to some sort of networking glitch,\n              // so let's just force push whatever we have to the server!\n              // Note that because the fingerprints match, our current version should be 'accepted' by the\n              // server even though the timestamps don't match.\n              // But, we do need to 'touch' the client record to make sure the JSON is different\n              model.set(\"touch\", Date.now());\n              // this.get('eventLogging').logError(\"Strange networking glitch encountered, forcing save of client record: \" + model.get('id'));\n              console.log(\"Networking connectivity issue detected, resaving client record.\");\n              model.save();\n              this.queueRecordPoll();\n            }\n          } else {\n            // this is not our fingerprint - someone else is editing this document. Download their changes\n            this.set(\"currentLoadingLastModified\", data.lastModifiedNumeric);\n            this.onOutOfDateRecord(model);\n          }\n        } else {\n          // no new changes\n          this.queueRecordPoll();\n        }\n      }).catch((/* error */\n      ) => {\n        // it's not catastrophic if we're unable to poll the record once or twice.\n        // this.get('eventLogging').logError(\"Failed to poll record for last modified date\", error);\n        console.log(\"Network connectivity issue during record polling. Will try again soon.\");\n        this.queueRecordPoll();\n      });\n    },\n    queueRecordPoll() {\n      let newInterval = this.currentPollingInterval * this.pollingIncreaseFactor;\n      if (newInterval > this.maxPollingInterval) {\n        newInterval = this.maxPollingInterval;\n      }\n      this.set(\"currentPollingInterval\", newInterval);\n      const tval = (0, _runloop.later)(this, function () {\n        this.pollRecord();\n      }, this.currentPollingInterval);\n      this.set(\"pollTimeoutID\", tval);\n    },\n    onOutOfDateRecord(model, fromCookie) {\n      // record changed\n      if (!model) {\n        return;\n      }\n      if (model.hasChangesAtJSONLevel()) {\n        // warn the user in an unobtrusive manner - just a flag that someone else is making changes\n        // this.addMultiUserAlert(true);\n\n        if (fromCookie) {\n          // We are only out of sync from another tab with the same deviceID, lets accept this and update the record\n          return this.updateRecord(fromCookie);\n        }\n\n        // NOTE: now that DynamoDB won't let us selectively patch, we have to go full ERROR from the start,\n        // to force the user to update the data from the server\n        let message = \"You have made changes in another tab or another browser window.\";\n        const params = {};\n        if (this.get(\"session.isAuthenticated\") && this.get(\"session.data.authenticated.adminUser\")) {\n          message = \"The client has recently made changes.\";\n        } else if (model.get(\"conflictCheck\") === \"noconflict\") {\n          message = \"Your lawyer has recently made changes.\";\n        }\n        message += \" Click here to update to the latest version (some of your recent changes may be lost).\";\n        this.addMessage(message, \"promptreload\", params);\n      } else {\n        // grab the latest copy and tell the user that someone else is making changes\n        this.updateRecord(fromCookie);\n      }\n    },\n    addMessage(text, type, params) {\n      this.doMessageRemoval();\n      const queue = this.messageQueue;\n      if (type === \"promptreload\" || type === \"error\") {\n        // only need one of these at any given time, so make sure we're not adding a second\n        for (let j = 0; j < queue.length; j++) {\n          if (queue[j].type === type && queue[j].text === text) {\n            return;\n          }\n        }\n      }\n      this.messageQueue.pushObject({\n        text: text,\n        type: type,\n        params: params,\n        removeAfter: type === \"promptreload\" ? 0 : Date.now() + this.messageDisplayTime - 250 // subtract a little margin just in case the removal doesn't happen when it should\n      });\n    },\n    // getDynamoDB(forceUnprotected) {\n    //   return this.get('awsService').getDocumentClient()\n    //   .then((docClient) => {\n    //     let id = this.get('trackedClient.clientID');\n    //     let table = this.get('trackedClientTable');\n    //     if (!table) {\n    //       table = \"clients\";\n    //     }\n    //     if (this.get('trackedClient.passwordProtected') && !forceUnprotected) {\n    //       id = this.get('trackedClient.id');\n    //     }\n\n    //     var params = {\n    //       TableName: table,\n    //       Key:{\n    //         \"id\": id,\n    //       }\n    //     };\n\n    //     return {docClient:docClient, params:params};\n    //   });\n    // },\n\n    // detectClientTable() {\n    //   if (ENV.environment === 'development') {\n    //     this.addMessage(\"Detecting client table\");\n    //   }\n    //   this.getDynamoDB(true)\n    //   .then((dynamo)=> {\n    //     dynamo.params.ProjectionExpression = \"passwordProtected,passwordProtectedTable\";\n\n    //     Ember.run(() => {\n    //       dynamo.docClient.get(dynamo.params, (err, clientData) => {\n    //         if (err) {\n    //           throw err;\n    //         }\n    //         else {\n    //           if (clientData && clientData.Item && clientData.Item.passwordProtected) {\n    //             this.set('trackedClientTable', clientData.Item.passwordProtectedTable);\n    //           }\n    //           else {\n    //             this.set('trackedClientTable', 'clients');\n    //           }\n    //         }\n    //       });\n    //     });\n    //   });\n    // },\n\n    getLastModifiedFromServer() {\n      return this.lambda.invoke(this.get(\"lambda.getClientLastModifiedLambda\"), {\n        id: this.get(\"trackedClient.clientID\"),\n        firmID: this.get(\"firm.id\")\n      }).then(this.lambda.processResponse).then(data => {\n        return {\n          lastModifiedNumeric: data.lastModifiedNumeric,\n          lastModifiedFingerprint: data.deviceFingerprint\n        };\n      });\n      // return this.getDynamoDB()\n      // .then((dynamo)=> {\n      //   dynamo.params.ProjectionExpression = \"lastModifiedNumeric, lastModifiedFingerprint\";\n\n      //   return new Ember.RSVP.Promise((resolve, reject) => {\n      //     Ember.run(() => {\n      //       dynamo.docClient.get(dynamo.params, (err, clientData) => {\n      //         if (err) {\n      //           reject(err);\n      //         }\n      //         else {\n      //           if (clientData && clientData.Item) {\n      //             resolve({lastModifiedNumeric: clientData.Item.lastModifiedNumeric, lastModifiedFingerprint: clientData.Item.lastModifiedFingerprint});\n      //           }\n      //           else {\n      //             reject(new Error(\"Received invalid data when trying to obtain last modified time: \" + JSON.stringify(clientData)));\n      //           }\n      //         }\n      //       });\n      //     });\n      //   });\n      // });\n    },\n    addMultiUserAlert(notimeout) {\n      this.set(\"multiUserActive\", true);\n      if (this.multiUserTimeoutID) {\n        (0, _runloop.cancel)(this.multiUserTimeoutID);\n      }\n      if (notimeout) {\n        this.set(\"multiUserTimeoutID\", 0);\n      } else {\n        // in ten minutes time, remove this message (unless changes are made sooner)\n        // we assume that if no more changes have been made in ten minutes, the other person has pretty much gone away\n        const tval = (0, _runloop.later)(this, function () {\n          this.set(\"multiUserActive\", false);\n        }, 10 * 60 * 1000);\n        this.set(\"multiUserTimeoutID\", tval);\n      }\n    },\n    setOfflineMode(offline) {\n      this.set(\"offlineMode\", !!offline);\n    },\n    addSaveFailedMessage(conflictCheck) {\n      let message = \"Your changes could not be saved, as \";\n      if (this.get(\"session.isAuthenticated\") && this.get(\"session.data.authenticated.adminUser\")) {\n        message += \"the client is also editing. \";\n      } else {\n        if (conflictCheck === \"noconflict\") {\n          message += \"your lawyer is also editing. \";\n        } else {\n          message += \"you appear to have this system open in another tab or window. \";\n        }\n      }\n      message += \"Click here to update to the latest version (you will lose your most recent changes).\";\n      this.addMessage(message, \"promptreload\");\n    },\n    updateRecord(fromCookie) {\n      // we didn't instigate this change, so don't claim credit for it\n      this.set(\"dontWriteFingerprintCookie\", true);\n      this.addMessage(\"Syncing\");\n      this.trackedClient.rollbackAttributes();\n      this.trackedClient.reload().then(record => {\n        record.sendJSONtoAdapter();\n        record.set(\"touch\", Date.now());\n        this.set(\"currentLoadingLastModified\", 0);\n        this.set(\"dontWriteFingerprintCookie\", false);\n      });\n      if (!fromCookie) {\n        // we weren't prompted to update from a cookie - that means a different user somewhere has updated the record\n        this.set(\"currentPollingInterval\", this.defaultPollingInterval);\n        if (this.pollTimeoutID) {\n          // we may or may not have a poll scheduled, but if we do, cancel it\n          (0, _runloop.cancel)(this.pollTimeoutID);\n        }\n        const tval = (0, _runloop.later)(this, function () {\n          this.pollRecord();\n        }, this.currentPollingInterval);\n        this.set(\"pollTimeoutID\", tval);\n        this.addMultiUserAlert();\n      }\n\n      // remove any 'your data is out of date' messages\n      const queue = this.messageQueue;\n      for (let i = 0; i < queue.length;) {\n        if (queue[i].type === \"promptreload\") {\n          queue.removeAt(i);\n        } else {\n          i++;\n        }\n      }\n    },\n    setLastModifiedTime(model, lastmodified, fingerprint, noCookieUpdate) {\n      // we've saved the record locally - this is the new last modified time\n      // accept either an id or a model instance\n      let id = model;\n      if (typeof model !== \"string\") {\n        id = model.get(\"id\");\n      }\n      this.referenceLastModified[id] = lastmodified;\n      if (!noCookieUpdate) {\n        // update the cookie so that the other tabs know what we're up to\n        this.cookies.write(`lastModified-${id}`, lastmodified, {\n          path: \"/\"\n        });\n        this.cookies.write(`fingerprint-${id}`, fingerprint, {\n          path: \"/\"\n        });\n      }\n    },\n    getReferenceLastModified(id) {\n      const rlm = this.referenceLastModified;\n      if (!rlm) {\n        return;\n      }\n      return rlm[id];\n    },\n    // TODO: Remove this once we have time to fix the bug that leaves hundreds of these cookies behind on refresh\n    eatTheLastModifiedCookies(model) {\n      const cookieService = this.cookies;\n      const cookies = cookieService.read();\n      const currentID = model.get(\"id\");\n      for (const key of Object.keys(cookies)) {\n        if (key.startsWith(\"fingerprint-\") || key.startsWith(\"lastModified-\")) {\n          if (key.indexOf(currentID) === -1) {\n            cookieService.clear(key);\n          }\n        }\n      }\n    }\n  });\n});","define(\"settify-mvp/services/rendered-more-info-strings\", [\"exports\", \"@ember/service\"], function (_exports, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _service.default.extend({\n    init() {\n      this._super(...arguments);\n      this.clientMoreInfoStrings = {};\n      this.pagesRendered = {};\n      this.hasUnrenderedPages = {};\n    },\n    reset() {\n      this.set(\"clientMoreInfoStrings\", {});\n      this.set(\"pagesRendered\", {});\n      this.set(\"hasUnrenderedPages\", {});\n    },\n    setPageAsRendered(page, client) {\n      if (!page || !client || !client.get) {\n        return;\n      }\n      const clientID = client.get(\"id\");\n\n      // Set this page to rendered\n      if (!this.get(`pagesRendered.${clientID}`)) {\n        this.set(`pagesRendered.${clientID}`, {});\n      }\n      this.set(`pagesRendered.${clientID}.${page}`, true);\n\n      // Check if there are any unrendered pages still\n      if (!this.get(`clientMoreInfoStrings.${clientID}`)) {\n        this.set(`clientMoreInfoStrings.${clientID}`, client.get(\"moreInfoStrings\"));\n      }\n      const pagesToCheck = Object.keys(this.get(`clientMoreInfoStrings.${clientID}`));\n      const hasUnrenderedPages = pagesToCheck.some(page => !this.get(`pagesRendered.${clientID}.${page}`));\n      this.set(`hasUnrenderedPages.${clientID}`, hasUnrenderedPages);\n    }\n  });\n});","define(\"settify-mvp/services/request-manager\", [\"exports\", \"@ember/service\", \"@ember/array\"], function (_exports, _service, _array) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@ember/array\"eaimeta@70e063a35619d71f\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  class RequestManager extends _service.default {\n    constructor(...args) {\n      super(...args);\n      _defineProperty(this, \"requests\", (0, _array.A)());\n    }\n    /**\n     * @param source is a friendly name for debug purposes\n     * @param promise is the work being performed\n     * @returns {*}\n     */\n    register(source, promise) {\n      console.debug(`RequestManager: ${source} registered`);\n\n      // Add the promise to the list\n      this.requests.pushObject(promise);\n\n      // Ensure the promise is removed once it resolves\n      promise.finally(() => {\n        console.debug(`RequestManager: ${source} finished`);\n        this.requests.removeObject(promise);\n      });\n      return promise;\n    }\n    get isProcessing() {\n      // Convenience property to check if there are any pending requests\n      return this.requests.length > 0;\n    }\n  }\n  _exports.default = RequestManager;\n});","define(\"settify-mvp/services/security-service\", [\"exports\", \"@ember/service\"], function (_exports, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\"eaimeta@70e063a35619d71f\n  // TODO: determine if this service is required and if not delete it\n  var _default = _exports.default = _service.default.extend({\n    cookies: (0, _service.inject)(),\n    timestampEncoder: (0, _service.inject)(),\n    init() {\n      this._super(...arguments);\n      console.debug(\"security-service\", \"init\");\n      this.clearClientCookie();\n    },\n    clearClientCookie() {\n      if (!this.cookies.read(\"clientID\")) {\n        console.debug(\"security-service\", \"clearing cookies\");\n        this.cookies.clear(\"clientID\", {\n          path: \"/\"\n        });\n      }\n    }\n  });\n});","define(\"settify-mvp/services/send-email-to-settify\", [\"exports\", \"@ember/service\"], function (_exports, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _service.default.extend({\n    lambda: (0, _service.inject)(),\n    send(subject, bodyHTML, recipient) {\n      const payload = {\n        subject: subject,\n        recipient: recipient,\n        contentHTML: bodyHTML\n      };\n      return this.lambda.invoke(this.get(\"lambda.emailSettify\"), payload);\n    }\n  });\n});","define(\"settify-mvp/services/session\", [\"exports\", \"ember-simple-auth/services/session\"], function (_exports, _session) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _session.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-simple-auth/services/session\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/services/shared-service\", [\"exports\", \"@ember/service\"], function (_exports, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\"eaimeta@70e063a35619d71f\n  /**\n   * This service is used to turn on/off tailwind and bootstrap UI across our application, allowing\n   * us to build our new improved Settify UI/UX without breaking what we have.\n   * Also, it is used to set/remove theme (branding) of the specific namespace (e.g. client) by setting/removing the data attribute on the html element.\n   */\n  var _default = _exports.default = _service.default.extend({\n    router: (0, _service.inject)(),\n    useLegacyUserInterface: true,\n    activateModernUI() {\n      console.log(\"activated modern user interface\");\n      const htmlElement = document.querySelector(\"html\");\n      htmlElement.classList.remove(\"legacy\");\n      htmlElement.classList.add(\"modern\");\n      this.set(\"useLegacyUserInterface\", false);\n    },\n    deactivateModernUI() {\n      console.log(\"deactivate v2\");\n      const htmlElement = document.querySelector(\"html\");\n      htmlElement.classList.add(\"legacy\");\n      htmlElement.classList.remove(\"modern\");\n      this.set(\"useLegacyUserInterface\", true);\n    },\n    setOrRemoveTheme(type) {\n      const htmlElement = document.querySelector(\"html\");\n      if (type === \"remove\") return delete htmlElement.dataset.theme;\n      htmlElement.dataset.theme = type;\n    }\n  });\n});","define(\"settify-mvp/services/signup-service\", [\"exports\", \"@ember/service\", \"@glimmer/tracking\", \"@ember/object\"], function (_exports, _service, _tracking, _object) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19, _descriptor20, _descriptor21, _descriptor22, _descriptor23, _descriptor24, _descriptor25, _descriptor26, _descriptor27, _descriptor28, _descriptor29;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/service\",0,\"@glimmer/tracking\",0,\"@ember/object\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\n  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\n  function _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\n  function _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\n  function _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\n  /**\n   * Practice area definitions\n   * Used for signup form and rollout configuration\n   */\n  const PRACTICE_AREAS = {\n    FAMILY: {\n      label: \"Family Law\",\n      value: \"Family\"\n    },\n    WILLS: {\n      label: \"Wills\",\n      value: \"Wills\"\n    },\n    PROBATE: {\n      label: \"Probate\",\n      value: \"Probate\"\n    },\n    ESTATE_DISPUTES: {\n      label: \"Estate Disputes\",\n      value: \"Estates\"\n    }\n  };\n\n  /**\n   * Maps country selections to AWS regions, timezones, and domains.\n   * This is the source of truth for region configuration based on country.\n   * Object keys are used to populate the country dropdown options.\n   * `leapBundle` marks the countries where the LEAP bundle billing plan is offered.\n   */\n  const COUNTRY_MAPPING = {\n    Australia: {\n      firmLocation: \"AU\",\n      domain: \".settify.com.au\",\n      awsRegion: \"ap-southeast-2\",\n      timezone: \"Australia/Melbourne\",\n      autoRollout: \"any\",\n      practiceAreas: [\"Family\", \"Wills\"],\n      leapBundle: true\n    },\n    Canada: {\n      firmLocation: null,\n      // Configured per province, so the province decides it (see STATES)\n      domain: \".settify.ca\",\n      timezone: \"America/Toronto\",\n      awsRegion: \"ca-central-1\",\n      autoRollout: \"manual\",\n      practiceAreas: [\"Family\"]\n    },\n    England: {\n      firmLocation: \"UK\",\n      domain: \".settify.co.uk\",\n      awsRegion: \"eu-west-2\",\n      timezone: \"Europe/London\",\n      autoRollout: \"family-only\",\n      practiceAreas: [\"Family\", \"Wills\", \"Probate\"],\n      leapBundle: true\n    },\n    \"New Zealand\": {\n      firmLocation: \"NZ\",\n      domain: \".settify.co.nz\",\n      timezone: \"Pacific/Auckland\",\n      awsRegion: \"ap-southeast-2\",\n      autoRollout: \"family-only\",\n      practiceAreas: [\"Family\", \"Wills\", \"Probate\"]\n    },\n    Scotland: {\n      firmLocation: \"Scotland\",\n      domain: \".settify.co.uk\",\n      timezone: \"Europe/London\",\n      awsRegion: \"eu-west-2\",\n      autoRollout: \"family-only\",\n      practiceAreas: [\"Family\", \"Wills\", \"Probate\"],\n      leapBundle: true\n    },\n    \"United States\": {\n      firmLocation: null,\n      // Configured per state, so the state decides it (see STATES)\n      domain: \".settify.com\",\n      timezone: \"America/Chicago\",\n      awsRegion: \"us-west-2\",\n      autoRollout: \"manual\",\n      practiceAreas: [\"Family\"]\n    },\n    Wales: {\n      firmLocation: \"UK\",\n      domain: \".settify.co.uk\",\n      awsRegion: \"eu-west-2\",\n      timezone: \"Europe/London\",\n      autoRollout: \"family-only\",\n      practiceAreas: [\"Family\", \"Wills\", \"Probate\"],\n      leapBundle: true\n    }\n  };\n\n  /**\n   * The states, provinces, and territories we offer, keyed by COUNTRY_MAPPING key. A country missing\n   * from here has no state field on the form at all - the UK and New Zealand do not divide this way,\n   * and one timezone covers each of them.\n   *\n   * `value` is what goes into the firm's address, `name` is the dropdown label, and `timezone` is the\n   * firm's timezone once that state is picked.\n   *\n   * `firmLocation` is the subtle one. Australia rolls out as a single region, so its states set only\n   * the timezone. Canada and the United States are configured per province and state in the backend -\n   * tax code, master blueprint branch and licence fee are all looked up by firmLocation - so there\n   * the selection has to override the country default.\n   *\n   * Only the states Settify is actually set up for are listed. Anything else has no valid\n   * firmLocation, so it has no tax code and no blueprints to roll out from.\n   */\n  const STATES = {\n    Australia: [{\n      value: \"NSW\",\n      name: \"New South Wales\",\n      timezone: \"Australia/Sydney\"\n    }, {\n      value: \"VIC\",\n      name: \"Victoria\",\n      timezone: \"Australia/Melbourne\"\n    }, {\n      value: \"QLD\",\n      name: \"Queensland\",\n      timezone: \"Australia/Brisbane\"\n    }, {\n      value: \"SA\",\n      name: \"South Australia\",\n      timezone: \"Australia/Adelaide\"\n    }, {\n      value: \"WA\",\n      name: \"Western Australia\",\n      timezone: \"Australia/Perth\"\n    }, {\n      value: \"TAS\",\n      name: \"Tasmania\",\n      timezone: \"Australia/Hobart\"\n    }, {\n      value: \"NT\",\n      name: \"Northern Territory\",\n      timezone: \"Australia/Darwin\"\n    }, {\n      value: \"ACT\",\n      name: \"Australian Capital Territory\",\n      timezone: \"Australia/Canberra\"\n    }],\n    Canada: [{\n      value: \"ON\",\n      name: \"Ontario\",\n      timezone: \"America/Toronto\",\n      firmLocation: \"ON\"\n    }, {\n      value: \"BC\",\n      name: \"British Columbia\",\n      timezone: \"America/Vancouver\",\n      firmLocation: \"BC\"\n    }, {\n      value: \"AB\",\n      name: \"Alberta\",\n      timezone: \"America/Edmonton\",\n      firmLocation: \"AB\"\n    }],\n    \"United States\": [{\n      value: \"TX\",\n      name: \"Texas\",\n      timezone: \"America/Chicago\",\n      firmLocation: \"Texas\"\n    }, {\n      value: \"IL\",\n      name: \"Illinois\",\n      timezone: \"America/Chicago\",\n      firmLocation: \"Illinois\"\n    }, {\n      value: \"OK\",\n      name: \"Oklahoma\",\n      timezone: \"America/Chicago\",\n      firmLocation: \"Oklahoma\"\n    }, {\n      value: \"FL\",\n      name: \"Florida\",\n      timezone: \"America/New_York\",\n      firmLocation: \"Florida\"\n    }]\n  };\n\n  /**\n   * Maps region codes passed on the signup URL (?region=au, or the region inside the LEAP redirect\n   * params) to COUNTRY_MAPPING keys, used to prefill the country dropdown. \"uk\" maps to England as\n   * the most common case; firms in Scotland or Wales can change the selection manually.\n   */\n  const REGION_CODE_MAPPING = {\n    au: \"Australia\",\n    ca: \"Canada\",\n    gb: \"England\",\n    uk: \"England\",\n    nz: \"New Zealand\",\n    us: \"United States\"\n  };\n  const PLAN_CONFIG = {\n    LEAP: {\n      id: \"leap\",\n      conversionGroup: \"LEADS_LEAP\"\n    },\n    STANDARD: {\n      id: \"standard\",\n      conversionGroup: \"LEADS_DEFAULT\"\n    },\n    UNLIMITED: {\n      id: \"enterprise\",\n      conversionGroup: \"UNLIMITED\",\n      licenceFee: \"100000\"\n    }\n  };\n  const PRICING_URL = \"https://settify.com/settify-pricing-structure\";\n\n  /**\n   * Canadian provinces and US states each carry their own firmLocation (see STATES), so they need\n   * their own entry here. The objects are shared rather than repeated so provinces cannot drift\n   * apart when someone changes the price.\n   */\n  const CANADA_FEES = {\n    Family: 9900\n  };\n  const US_FEES = {\n    Family: 9900\n  };\n\n  /**\n   * Standard plan monthly licence fees per region (keyed by firmLocation) and practice area, in cents\n   * of the region's local currency. Sent with the rollout so the firm can be set up; not displayed\n   * (the signup page links to PRICING_URL instead). Must be kept in sync with the published pricing\n   * page.\n   *\n   * Every firmLocation the signup form can produce must appear here. A missing key is not an error -\n   * licenceFeeFor falls back to \"0\" - so the firm would be rolled out paying nothing each month.\n   */\n  const LICENCE_FEES = {\n    AU: {\n      Family: 12900,\n      Wills: 9900,\n      Probate: 9900,\n      Estates: 9900\n    },\n    NZ: {\n      Family: 9900,\n      Wills: 9900,\n      Probate: 9900\n    },\n    UK: {\n      Family: 9900,\n      Wills: 9900,\n      Probate: 9900\n    },\n    ON: CANADA_FEES,\n    BC: CANADA_FEES,\n    AB: CANADA_FEES,\n    Texas: US_FEES,\n    Illinois: US_FEES,\n    Oklahoma: US_FEES,\n    Florida: US_FEES\n  };\n  // Scotland is served from the UK region and shares its pricing\n  LICENCE_FEES.Scotland = LICENCE_FEES.UK;\n  const VALIDATION_PATTERNS = {\n    VERIFICATION_CODE: /^[0-9]{6}$/\n  };\n  let SignupService = _exports.default = (_class = class SignupService extends _service.default {\n    reset() {\n      this.firmName = null;\n      this.firmWebsite = null;\n      this.firmLocation = \"\";\n      this.firmTimezone = \"\";\n      this.firmDomain = \".settify.com.au\";\n      this.siteSlug = null;\n      this.siteSlugTouched = false;\n      this.settifyRegion = \"\";\n      this.name = null;\n      this.email = null;\n      this.isEmailValid = false;\n      this.street = \"\";\n      this.city = \"\";\n      this.state = \"\";\n      this.postcode = \"\";\n      this.country = \"\";\n      this.settifyPlan = PLAN_CONFIG.STANDARD.id;\n      this.termsAccepted = false;\n      this.domainExists = null;\n      this.availablePracticeAreas = Object.values(PRACTICE_AREAS).map(pa => ({\n        ...pa,\n        selected: false\n      }));\n      this.code = \"\";\n    }\n    constructor() {\n      super(...arguments);\n\n      // Set by setLeapRedirect() when the visitor arrives via the LEAP redirect sign up button\n      _initializerDefineProperty(this, \"lambda\", _descriptor, this);\n      _initializerDefineProperty(this, \"eventLogging\", _descriptor2, this);\n      _initializerDefineProperty(this, \"router\", _descriptor3, this);\n      _initializerDefineProperty(this, \"firmWebsite\", _descriptor4, this);\n      _initializerDefineProperty(this, \"firmName\", _descriptor5, this);\n      _initializerDefineProperty(this, \"firmLocation\", _descriptor6, this);\n      _initializerDefineProperty(this, \"firmTimezone\", _descriptor7, this);\n      _initializerDefineProperty(this, \"firmDomain\", _descriptor8, this);\n      _initializerDefineProperty(this, \"name\", _descriptor9, this);\n      _initializerDefineProperty(this, \"email\", _descriptor10, this);\n      _initializerDefineProperty(this, \"isEmailValid\", _descriptor11, this);\n      _initializerDefineProperty(this, \"phone\", _descriptor12, this);\n      _initializerDefineProperty(this, \"street\", _descriptor13, this);\n      _initializerDefineProperty(this, \"city\", _descriptor14, this);\n      _initializerDefineProperty(this, \"state\", _descriptor15, this);\n      _initializerDefineProperty(this, \"postcode\", _descriptor16, this);\n      _initializerDefineProperty(this, \"country\", _descriptor17, this);\n      _initializerDefineProperty(this, \"selectedRegion\", _descriptor18, this);\n      _initializerDefineProperty(this, \"settifyPlan\", _descriptor19, this);\n      _initializerDefineProperty(this, \"siteSlug\", _descriptor20, this);\n      _initializerDefineProperty(this, \"siteSlugTouched\", _descriptor21, this);\n      _initializerDefineProperty(this, \"code\", _descriptor22, this);\n      _initializerDefineProperty(this, \"settifyRegion\", _descriptor23, this);\n      _initializerDefineProperty(this, \"termsAccepted\", _descriptor24, this);\n      _initializerDefineProperty(this, \"domainExists\", _descriptor25, this);\n      // null = not checked, true = exists, false = available\n      _initializerDefineProperty(this, \"availablePracticeAreas\", _descriptor26, this);\n      // Tracked as a full array, reassigned on change to trigger reactivity\n      _initializerDefineProperty(this, \"loading\", _descriptor27, this);\n      _initializerDefineProperty(this, \"error\", _descriptor28, this);\n      _initializerDefineProperty(this, \"errorMessage\", _descriptor29, this);\n      this.isLeapClient = null;\n      this.leapRegion = null; // LEAP region code from the redirect query string (e.g. \"au\", \"uk\"), if any\n      this.settifyPlan = PLAN_CONFIG.STANDARD.id;\n    }\n\n    /**\n     * Marks this visitor as having arrived from the LEAP redirect page and defaults them to the\n     * LEAP plan. The value is the LEAP query string (requestId, appSessionId, region, env) base64\n     * encoded, passed by the redirect page as the ?leap query param on the signup URL. A query\n     * param is used rather than a cookie because cookies cannot cross registrable domains\n     * (e.g. settify.com.au -> settify.co.uk).\n     * @param {string} encodedLeapParams - Base64 encoded LEAP query string\n     * @returns {boolean} Whether the value was valid and applied\n     */\n    setLeapRedirect(encodedLeapParams) {\n      if (!encodedLeapParams) return false;\n      try {\n        const leapParams = new URLSearchParams(atob(encodedLeapParams));\n        this.isLeapClient = leapParams.toString();\n        this.leapRegion = leapParams.get(\"region\");\n        this.syncPlanWithCountry();\n        return true;\n      } catch (error) {\n        this.eventLogging.logError(\"Error decoding leap redirect params\", error);\n        return false;\n      }\n    }\n\n    /**\n     * The LEAP bundle is only offered to visitors who arrived from LEAP and whose firm is in a\n     * country where the bundle is available (currently Australia and the UK).\n     */\n    get isLeapBundleAvailable() {\n      return Boolean(this.isLeapClient && COUNTRY_MAPPING[this.country]?.leapBundle);\n    }\n\n    /**\n     * Keeps the selected plan valid as the country or LEAP context changes: the LEAP bundle is\n     * selected where available, and dropped back to Standard where it isn't. A Standard or\n     * Enterprise choice is left alone.\n     */\n    syncPlanWithCountry() {\n      if (this.isLeapBundleAvailable) {\n        this.settifyPlan = PLAN_CONFIG.LEAP.id;\n      } else if (this.settifyPlan === PLAN_CONFIG.LEAP.id) {\n        this.settifyPlan = PLAN_CONFIG.STANDARD.id;\n      }\n    }\n    get isValidCode() {\n      return VALIDATION_PATTERNS.VERIFICATION_CODE.test(this.code);\n    }\n\n    // State is only required where we offer one - the UK and NZ have no state field at all\n    get isValidAddress() {\n      return Boolean(this.street && this.city && this.postcode && this.country && (!this.hasStates || this.state));\n    }\n\n    /** Whether the selected country divides into states we offer, and so shows the state dropdown. */\n    get hasStates() {\n      return Boolean(STATES[this.country]);\n    }\n    get stateOptions() {\n      return STATES[this.country] ?? [];\n    }\n\n    // TODO: determine if more fields are required like address or phone\n    get isValidSignup() {\n      const atLeastOnePracticeAreaSelected = Object.keys(this.firmSelectedPAs).length > 0;\n      return Boolean(this.firmName && this.name && this.email && this.isEmailValid && this.siteSlug && this.settifyPlan && this.settifyRegion && this.firmLocation && this.termsAccepted && atLeastOnePracticeAreaSelected && this.isValidAddress);\n    }\n    get countryOptions() {\n      return Object.keys(COUNTRY_MAPPING).map(country => ({\n        name: country,\n        value: country\n      }));\n    }\n    get isUSOrCanada() {\n      return this.country === \"United States\" || this.country === \"Canada\";\n    }\n    get isSinglePracticeAreaCountry() {\n      return COUNTRY_MAPPING[this.country]?.practiceAreas?.length === 1;\n    }\n\n    /**\n     * Monthly licence fee in cents for a practice area under the selected plan and country.\n     * @param {string} practiceArea - e.g. \"Family\"\n     * @returns {string} Cents as a string, as expected by the rollout payload\n     */\n    licenceFeeFor(practiceArea) {\n      if (this.settifyPlan === PLAN_CONFIG.LEAP.id) return \"0\";\n      if (this.settifyPlan === PLAN_CONFIG.UNLIMITED.id) return PLAN_CONFIG.UNLIMITED.licenceFee;\n      const fee = LICENCE_FEES[this.firmLocation]?.[practiceArea];\n      return fee === undefined ? \"0\" : String(fee);\n    }\n\n    /**\n     * Plan cards shown on the signup form. LEAP visitors in a LEAP bundle country see only the LEAP\n     * bundle; everyone else chooses between Standard and Enterprise. Standard pricing varies by\n     * region and practice area so it links to the pricing page rather than showing a figure.\n     */\n    get signupPlans() {\n      if (this.isLeapBundleAvailable) {\n        return [{\n          id: PLAN_CONFIG.LEAP.id,\n          name: \"LEAP Bundle\",\n          description: \"Included with LEAP Plan\",\n          body: [\"Included with LEAP Plan\", \"No monthly or referral fees\", \"Unlimited leads\"],\n          price: \"Free with LEAP!\",\n          conversionGroup: PLAN_CONFIG.LEAP.conversionGroup,\n          selected: this.settifyPlan === PLAN_CONFIG.LEAP.id\n        }];\n      }\n      return [{\n        id: PLAN_CONFIG.STANDARD.id,\n        name: \"Standard\",\n        description: \"Fair billing pricing\",\n        body: [\"Fair Billing\", \"No lock in contract\"],\n        link: {\n          href: PRICING_URL,\n          label: \"View pricing\"\n        },\n        conversionGroup: PLAN_CONFIG.STANDARD.conversionGroup,\n        selected: this.settifyPlan === PLAN_CONFIG.STANDARD.id\n      }, {\n        id: PLAN_CONFIG.UNLIMITED.id,\n        name: \"Enterprise\",\n        description: \"Negotiated based on a 12 month contract\",\n        body: [\"12 month contract\", \"Customer Support Team\", \"Fixed Annual Cost\"],\n        conversionGroup: PLAN_CONFIG.UNLIMITED.conversionGroup,\n        price: \"$1000/month (minimum)\",\n        selected: this.settifyPlan === PLAN_CONFIG.UNLIMITED.id\n      }];\n    }\n    get firmAddress() {\n      return {\n        street: this.street,\n        city: this.city,\n        state: this.state,\n        country: this.country,\n        postcode: this.postcode\n      };\n    }\n    get firmAccountsPayableAddress() {\n      const parts = [this.city, this.state, this.postcode].filter(Boolean).join(\", \");\n      return `${this.street}\\n${parts}\\n${this.country}`;\n    }\n\n    /**\n     * Gets the selected practice areas for firm rollout data\n     * @returns {Object}\n     */\n    get firmSelectedPAs() {\n      const selectedPracticeAreas = {};\n      const practiceAreas = this.availablePracticeAreas;\n      practiceAreas.forEach(pa => {\n        if (pa.selected) selectedPracticeAreas[pa.value] = true;\n      });\n      return selectedPracticeAreas;\n    }\n    get availablePracticeAreasForCountry() {\n      const countryConfig = COUNTRY_MAPPING[this.country];\n      if (!countryConfig) return null;\n      return this.availablePracticeAreas.filter(pa => countryConfig.practiceAreas.includes(pa.value));\n    }\n\n    /**\n     * Adds details to selected practice areas for rollout data\n     * @returns {Array<Object>}\n     */\n    get firmPADetails() {\n      const practiceAreaDetails = [];\n      const {\n        firmSelectedPAs\n      } = this;\n      const selectedBillingPlan = this.signupPlans.find(plan => plan.id === this.settifyPlan);\n      for (const practiceArea in firmSelectedPAs) {\n        practiceAreaDetails.push({\n          practiceArea: practiceArea,\n          rolloutAmountCents: \"0\",\n          licenceFee: this.licenceFeeFor(practiceArea),\n          billingConversionGroup: selectedBillingPlan.conversionGroup,\n          reviewingBlueprints: \"no\",\n          newLeadNotificationEmail: this.email\n        });\n      }\n      return practiceAreaDetails;\n    }\n\n    /**\n     * Determines if the firm qualifies for automatic rollout\n     */\n    get isAutoRolloutRegion() {\n      const countryConfig = COUNTRY_MAPPING[this.country];\n      const selectedPAs = this.availablePracticeAreas.filter(pa => pa.selected);\n      if (!countryConfig || !selectedPAs.length) return false;\n      if (countryConfig.autoRollout === \"any\") return true;\n      if (countryConfig.autoRollout === \"family-only\") {\n        return selectedPAs.length === 1 && selectedPAs[0].value === PRACTICE_AREAS.FAMILY.value;\n      }\n      return false;\n    }\n\n    /**\n     * Toggles a practice area selection.\n     * Reassigns the full array to trigger Glimmer reactivity.\n     * @param {string} practiceArea - The practice area value (e.g. \"Family\")\n     * @param {boolean} checked - Whether the practice area is selected\n     */\n    togglePracticeArea(practiceArea, checked) {\n      this.availablePracticeAreas = this.availablePracticeAreas.map(pa => pa.value === practiceArea ? {\n        ...pa,\n        selected: checked\n      } : pa);\n    }\n    updateCountry(event) {\n      this.setCountry(event.target.value);\n    }\n    updateState(event) {\n      this.setState(event.target.value);\n    }\n\n    /**\n     * Sets the state and the fields that follow from it: the firm's timezone always, and its\n     * firmLocation in Canada and the United States, where the backend is configured per province and\n     * state rather than per country.\n     * @param {string} state - A STATES value for the selected country, e.g. \"WA\" or \"ON\"\n     * @returns {boolean} Whether the state was recognised and applied\n     */\n    setState(state) {\n      const selected = this.stateOptions.find(option => option.value === state);\n      if (!selected) return false;\n      this.state = selected.value;\n      this.firmTimezone = selected.timezone;\n      if (selected.firmLocation) this.firmLocation = selected.firmLocation;\n      return true;\n    }\n\n    /**\n     * Sets the country and derives all region dependent fields (AWS region, timezone, domain,\n     * available practice areas) from COUNTRY_MAPPING.\n     *\n     * Any state already picked is cleared: it belongs to the country the firm just moved away from,\n     * and leaving it behind would keep that country's timezone and firmLocation with it.\n     * @param {string} country - A COUNTRY_MAPPING key, e.g. \"Australia\"\n     * @returns {boolean} Whether the country was recognised and applied\n     */\n    setCountry(country) {\n      const region = COUNTRY_MAPPING[country];\n      if (!region) return false;\n      this.country = country;\n      this.selectedRegion = region;\n      this.settifyRegion = region.awsRegion;\n      this.firmLocation = region.firmLocation;\n      this.firmTimezone = region.timezone;\n      this.firmDomain = region.domain;\n      this.state = \"\";\n\n      // Reset pa selections. Auto-select if only one PA available in this country\n      this.availablePracticeAreas = this.availablePracticeAreas.map(pa => ({\n        ...pa,\n        selected: this.isSinglePracticeAreaCountry ? region.practiceAreas.includes(pa.value) : false\n      }));\n      this.syncPlanWithCountry();\n      this.refreshSiteSlug();\n      return true;\n    }\n\n    /**\n     * Maps a region code from the signup URL to a country. The ?region query param takes priority,\n     * falling back to the region inside the LEAP redirect params (if the visitor came from LEAP).\n     * @param {string} [regionCode] - Region code such as \"au\", \"uk\" or \"CA\"\n     * @returns {string|null} A COUNTRY_MAPPING key, or null if the code is missing or unsupported\n     */\n    countryFromRegionCode(regionCode) {\n      const code = regionCode || this.leapRegion;\n      if (typeof code !== \"string\") return null;\n      return REGION_CODE_MAPPING[code.trim().toLowerCase()] ?? null;\n    }\n\n    /**\n     * Prefills the country dropdown (and everything derived from it) from the region code on the\n     * signup URL when the visitor hasn't chosen a country yet. Silently does nothing if there is no\n     * usable region code; the dropdown just keeps showing its prompt.\n     * @param {string} [regionCode] - Region code such as \"au\", \"uk\" or \"CA\"\n     * @returns {string|null} The country that was prefilled, or null if nothing changed\n     */\n    prefillCountry(regionCode) {\n      if (this.country) return null;\n      const country = this.countryFromRegionCode(regionCode);\n      if (!country) return null;\n      this.setCountry(country);\n      return country;\n    }\n\n    /**\n     * Prevent updates to slug if someone has \"manually modified the value\". On change only\n     * fires when the user manually interacts with the input field.\n     * @param {string} value - Raw value from the siteSlug input\n     */\n    siteSlugOnChange(value) {\n      const sanitisedSlug = this.sanitiseSlug(value);\n      this.siteSlug = sanitisedSlug;\n      this.domainExists = null;\n      this.error = false;\n      this.errorMessage = \"\";\n      if (sanitisedSlug.length > 0) {\n        this.siteSlugTouched = true;\n      } else {\n        this.siteSlugTouched = false;\n        this.refreshSiteSlug();\n      }\n    }\n\n    /**\n     * Validates the current siteSlug and sets domainExists if the domain already exists or not.\n     */\n    async validateDomain() {\n      const slug = this.siteSlug?.trim();\n\n      // Don't validate if no slug or region not set\n      if (!slug || !this.settifyRegion) {\n        this.domainExists = null;\n        return;\n      }\n      this.domainExists = await this.checkIfFirmDomainExists(slug);\n    }\n\n    /**\n     * TODO: perhaps we just generate a name (not allow people to modify it until they verify domain ownership)\n     *       this avoids domains being created like (testing123, abc123, administrator, etc) or worse? We'd just need\n     *       to make it easier to customise/change it later;\n     */\n    async refreshSiteSlug() {\n      if (this.siteSlugTouched) return;\n\n      // Convert website into a url and extract the domain part for creating a settify slug\n      const firmUrl = this.validateAndTransformUrl(this.firmWebsite);\n      const firmDomain = this.extractDomainPartFromUrl(firmUrl);\n      const domainSlug = this.convertToSlug(firmDomain);\n\n      // Convert the firm name into a slug\n      const firmNameSlug = this.convertToSlug(this.firmName);\n\n      // Set slug, preferring domain name over firm name\n      this.siteSlug = domainSlug ?? firmNameSlug;\n      return this.siteSlug;\n    }\n    selectPlan(plan) {\n      this.settifyPlan = plan.id;\n    }\n    setEmailValidation(value) {\n      this.isEmailValid = value;\n    }\n    extractDomainPartFromUrl(website) {\n      try {\n        if (typeof website === \"string\") {\n          const {\n            hostname\n          } = new URL(website);\n          if (!hostname) return null;\n          return hostname.replace(\"www.\", \"\") // remove www prefix\n          .split(\".\")[0]; // return first url segment\n        }\n      } catch (e) {\n        console.debug(`failed to convert string to url: ${website}`);\n      }\n      return null;\n    }\n\n    /**\n     * Checks if website string looks like a domain (www.abc.com.au or abc.co) and then\n     * converts it into a URL format; essentially validating it and normalising it.\n     * @returns {URL|null}\n     */\n    validateAndTransformUrl(website) {\n      const looseDomainCheck = /^([a-z]+:\\/\\/)?[a-z0-9][a-z0-9.-]+\\.[a-z]{2,}/i;\n      if (looseDomainCheck.test(website)) {\n        const hasProtocol = /^[a-z]+:\\/\\//i.test(website);\n        return hasProtocol ? website : `https://${website}`;\n      }\n      return null;\n    }\n\n    /**\n     * Sanitises a string into a valid URL slug.\n     * @param {string} text - Raw input string\n     * @returns {string} Sanitised slug, or empty string if input is not a string\n     */\n    sanitiseSlug(text) {\n      if (typeof text !== \"string\") return \"\";\n      return text.toLowerCase().replace(/[^a-z0-9-]+/g, \"-\") // Remove any non word characters. Invalid chars become hyphens\n      .replace(/-{2,}/g, \"-\") // Collapse consecutive hyphens into one, \"--\" -> \"-\"\n      .substring(0, 30); // Set max length of 30 characters\n    }\n\n    /**\n     * Converts a firm name or website domain into a URL slug.\n     * TODO: Stole this from our newfirm.js and made a couple of tweaks\n     * @param {string} text - Firm name or website URL string\n     * @returns {string|null} Sanitised slug, or null if result is empty\n     */\n    convertToSlug(text) {\n      if (typeof text !== \"string\") return null;\n      const blacklist = [\"and\", \"lawyers\", \"associates\", \"attorneys\"];\n      const blackListRegEx = new RegExp(`\\\\b(${blacklist.join(\"|\")})\\\\b`, \"g\");\n      const preprocessed = text.toLowerCase().replace(blackListRegEx, \"\") // Remove blacklisted words (not substrings)\n      .replace(/^\\s*(https?:\\/\\/)?(www\\.)?/, \"\") // Remove https and www from URL\n      .replace(/\\..*/, \"\"); // Remove anything after the first .\n\n      const slug = this.sanitiseSlug(preprocessed);\n      return slug.length ? slug : null;\n    }\n\n    /**\n     * @param {string} slug\n     * @returns {Promise<boolean>}\n     */\n    async checkIfFirmDomainExists(slug) {\n      if (!slug) return false;\n      const domain = slug.toLowerCase().replace(/\\s/g, \"\");\n      const region = this.settifyRegion;\n      const firmDomainExistsLambdaResponse = await this.lambda.invoke(this.lambda.firmDomainExistsLambda, {\n        region,\n        domain\n      });\n      const firmDomainExists = this.lambda.processResponse(firmDomainExistsLambdaResponse);\n      return firmDomainExists.exists;\n    }\n\n    /**\n     * Strips any leading or trailing hyphens from the slug\n     * @param {string} value - Current field value at time of blur\n     */\n    siteSlugOnBlur(value) {\n      this.siteSlug = value.replace(/^-+|-+$/g, \"\");\n    }\n    async createVerificationCode(event) {\n      event.preventDefault();\n      this.loading = true;\n      this.error = false;\n      this.errorMessage = \"\";\n      try {\n        // Validate domain availability\n        await this.validateDomain();\n\n        // Check if domain is taken\n        if (this.domainExists) {\n          // The domain is taken, show error message\n          this.error = true;\n          this.errorMessage = `The URL '${this.siteSlug}' is already in use. Please choose a different Settify URL.`;\n          return;\n        }\n\n        // Domain Validation couldn't be completed (network or other error)\n        if (this.domainExists === null) {\n          this.error = true;\n          this.errorMessage = \"Unable to verify domain availability. Please check your connection and try again.\";\n          return;\n        }\n        const createVerificationCodePayload = {\n          contact: this.email,\n          channel: \"email\"\n        };\n        const createVerificationLambdaResponse = await this.lambda.invoke(this.lambda.createVerificationCodeLambda, createVerificationCodePayload);\n        const createVerificationResponse = this.lambda.processResponse(createVerificationLambdaResponse);\n        if (createVerificationResponse.status === 200) {\n          this.router.transitionTo(\"v2.signup.validate\");\n        } else {\n          // Unexpected response status\n          this.error = true;\n          this.errorMessage = \"Failed to send verification code. Please try again.\";\n        }\n      } catch (err) {\n        this.eventLogging.logError(\"Error sending self-signup rollout verification code\", err);\n        this.error = true;\n        this.errorMessage = \"An error occurred. Please try again.\";\n      } finally {\n        this.loading = false;\n      }\n    }\n    async addSelfSignupDraftToRolloutTable(event) {\n      event.preventDefault();\n      this.loading = true;\n      this.error = false;\n      const selfSignupDraftPayload = {\n        region: this.settifyRegion,\n        subregion: this.firmLocation,\n        subdomain: this.siteSlug,\n        firmName: this.firmName,\n        firmURL: this.firmWebsite,\n        newFirm: true,\n        isUnoRollout: true,\n        source: \"self-signup\",\n        state: \"draft\",\n        rolloutData: JSON.stringify(this.getAllFieldData()),\n        billingPlan: this.settifyPlan\n      };\n      try {\n        const selfSignupLambdaResponse = await this.lambda.invoke(this.lambda.selfSignupLambda, {\n          email: this.email,\n          code: this.code,\n          payload: selfSignupDraftPayload\n        });\n        const selfSignupResponse = this.lambda.processResponse(selfSignupLambdaResponse);\n        if (selfSignupResponse.status === 200) {\n          this.router.transitionTo(\"v2.signup.complete\");\n        }\n        if (selfSignupResponse.status === 401) {\n          this.error = true;\n          this.errorMessage = \"Invalid code, please check your code and try again.\";\n        }\n      } catch (err) {\n        this.eventLogging.logError(\"Error adding draft to rollout table\", err);\n        this.error = true;\n        this.errorMessage = \"An error occurred. Please try again.\";\n      } finally {\n        this.loading = false;\n      }\n    }\n    getAllFieldData() {\n      return {\n        firmStatus: \"new\",\n        isUnoRollout: true,\n        termsAccepted: this.termsAccepted,\n        firmName: this.firmName,\n        firmURL: this.firmWebsite,\n        firmDomain: this.siteSlug,\n        firmLocation: this.firmLocation,\n        firmAccountsPayableName: this.name,\n        firmAccountsPayableEmail: this.email,\n        firmAccountsPayableAddress: this.firmAccountsPayableAddress,\n        firmInvoiceReviewName: this.name,\n        firmInvoiceReviewEmail: this.email,\n        firmBillingEntityName: this.firmName,\n        firmSelectedPAs: this.firmSelectedPAs,\n        firmPADetails: this.firmPADetails,\n        firmTimezone: this.firmTimezone,\n        firmContact: {\n          name: this.name,\n          email: this.email,\n          address: this.firmAddress,\n          phone: this.phone\n        }\n      };\n    }\n  }, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"lambda\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, \"eventLogging\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, \"router\", [_service.service], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, \"firmWebsite\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor5 = _applyDecoratedDescriptor(_class.prototype, \"firmName\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor6 = _applyDecoratedDescriptor(_class.prototype, \"firmLocation\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor7 = _applyDecoratedDescriptor(_class.prototype, \"firmTimezone\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor8 = _applyDecoratedDescriptor(_class.prototype, \"firmDomain\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor9 = _applyDecoratedDescriptor(_class.prototype, \"name\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor10 = _applyDecoratedDescriptor(_class.prototype, \"email\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor11 = _applyDecoratedDescriptor(_class.prototype, \"isEmailValid\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor12 = _applyDecoratedDescriptor(_class.prototype, \"phone\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor13 = _applyDecoratedDescriptor(_class.prototype, \"street\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor14 = _applyDecoratedDescriptor(_class.prototype, \"city\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor15 = _applyDecoratedDescriptor(_class.prototype, \"state\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor16 = _applyDecoratedDescriptor(_class.prototype, \"postcode\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor17 = _applyDecoratedDescriptor(_class.prototype, \"country\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor18 = _applyDecoratedDescriptor(_class.prototype, \"selectedRegion\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor19 = _applyDecoratedDescriptor(_class.prototype, \"settifyPlan\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor20 = _applyDecoratedDescriptor(_class.prototype, \"siteSlug\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor21 = _applyDecoratedDescriptor(_class.prototype, \"siteSlugTouched\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor22 = _applyDecoratedDescriptor(_class.prototype, \"code\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _descriptor23 = _applyDecoratedDescriptor(_class.prototype, \"settifyRegion\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: null\n  }), _descriptor24 = _applyDecoratedDescriptor(_class.prototype, \"termsAccepted\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor25 = _applyDecoratedDescriptor(_class.prototype, \"domainExists\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return null;\n    }\n  }), _descriptor26 = _applyDecoratedDescriptor(_class.prototype, \"availablePracticeAreas\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return Object.values(PRACTICE_AREAS).map(pa => ({\n        ...pa,\n        selected: false\n      }));\n    }\n  }), _descriptor27 = _applyDecoratedDescriptor(_class.prototype, \"loading\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor28 = _applyDecoratedDescriptor(_class.prototype, \"error\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return false;\n    }\n  }), _descriptor29 = _applyDecoratedDescriptor(_class.prototype, \"errorMessage\", [_tracking.tracked], {\n    configurable: true,\n    enumerable: true,\n    writable: true,\n    initializer: function () {\n      return \"\";\n    }\n  }), _applyDecoratedDescriptor(_class.prototype, \"togglePracticeArea\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"togglePracticeArea\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"updateCountry\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"updateCountry\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"updateState\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"updateState\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"siteSlugOnChange\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"siteSlugOnChange\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"refreshSiteSlug\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"refreshSiteSlug\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"selectPlan\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"selectPlan\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"setEmailValidation\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"setEmailValidation\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"siteSlugOnBlur\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"siteSlugOnBlur\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"createVerificationCode\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"createVerificationCode\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"addSelfSignupDraftToRolloutTable\", [_object.action], Object.getOwnPropertyDescriptor(_class.prototype, \"addSelfSignupDraftToRolloutTable\"), _class.prototype), _class);\n});","define(\"settify-mvp/services/store\", [\"exports\", \"ember-data/store\"], function (_exports, _store) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _store.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-data/store\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/services/timestamp-encoder\", [\"exports\", \"@ember/debug\", \"@ember/service\"], function (_exports, _debug, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/debug\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _service.default.extend({\n    encodeTimestamp(timestamp) {\n      (true && !(typeof timestamp === \"number\") && (0, _debug.assert)(\"You must supply the timestamp in numerical format\", typeof timestamp === \"number\"));\n      let exp = Math.sqrt(timestamp);\n      exp = exp - Math.floor(exp);\n      let expStr = exp.toString(9).substr(0, 4);\n      while (expStr.length < 4) {\n        expStr += \"0\";\n      }\n      let cos = Math.cos(timestamp);\n      cos = Math.abs(cos);\n      let cosStr = cos.toString(11).substr(0, 4);\n      while (cosStr.length < 4) {\n        cosStr += \"0\";\n      }\n      return expStr + cosStr + timestamp.toString(15);\n    },\n    decodeTimestamp(timestamp) {\n      if (!timestamp) {\n        return 0;\n      }\n      (true && !(typeof timestamp === \"string\") && (0, _debug.assert)(\"You must supply the encoded timestamp in string format\", typeof timestamp === \"string\"));\n      const ts = Number(parseInt(timestamp.substr(8), 15));\n      const encoded = this.encodeTimestamp(ts);\n      if (timestamp === encoded) {\n        return ts;\n      }\n      return 0;\n    }\n  });\n});","define(\"settify-mvp/services/version-service\", [\"exports\", \"fetch\", \"@ember/service\", \"settify-mvp/config/environment\"], function (_exports, _fetch, _service, _environment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"fetch\",0,\"@ember/service\",0,\"settify-mvp/config/environment\"eaimeta@70e063a35619d71f\n  /**\n   * This service aims to force client reload if a new deployed version is detected in latestversion.json\n   */\n  var _default = _exports.default = _service.default.extend({\n    cookies: (0, _service.inject)(),\n    init() {\n      this._super(...arguments);\n      console.debug(\"version-service\", \"init\");\n      if (_environment.default.testing) {\n        return;\n      }\n      (0, _fetch.default)(\"/latestversion.json\").then(response => {\n        if (!response.ok) {\n          throw new Error(\"Network response was not ok\");\n        }\n        return response.json();\n      }).then(data => {\n        // sometimes the data is returned as a JSON string, not as a javascript object\n        if (typeof data === \"string\") {\n          try {\n            data = JSON.parse(data);\n          } catch (error) {\n            console.log(error);\n          }\n        }\n        if (!data || !data.version) {\n          console.warn(\"Unable to extract information from latest version file\");\n          return;\n        }\n        if (data.version !== _environment.default.APP.version) {\n          console.log(\"Not running latest deployed version\");\n          console.log(`Local Version: ${_environment.default.APP.version}`);\n          console.log(`Deployed Version: ${data.version}`);\n\n          // if the user is in the process of validating their account, don't reload just yet\n          if (window.location.href && window.location.href.indexOf && window.location.href.indexOf(\"/validate?\") !== -1) {\n            console.log(\"User is currently validating account - not going to force a reload!\");\n            return;\n          }\n\n          // in debug (local) mode, we're almost always going to be out of sync\n          // so don't bother reloading.\n          if (_environment.default.production) {\n            if (!this.cookies.read(\"attemptedReload\")) {\n              this.cookies.write(\"attemptedReload\", \"true\", {\n                path: \"/\",\n                expires: new Date(Date.now() + 1000 * 60)\n              });\n              console.log(\"Attempting a force reload.\");\n              window.location.reload(true);\n            } else {\n              console.log(\"Already attempted to reload, which didn't solve the problem. Proceeding with local version.\");\n            }\n          }\n        } else if (!_environment.default.production) {\n          console.log(\"Running latest version\", _environment.default.APP.version);\n        }\n      }).catch(err => {\n        // couldn't retrieve object - no action to be taken\n        if (!_environment.default.production) {\n          console.warn(\"version-service\", err);\n        }\n      });\n    }\n  });\n});","define(\"settify-mvp/session-stores/application\", [\"exports\", \"ember-simple-auth/session-stores/adaptive\"], function (_exports, _adaptive) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-simple-auth/session-stores/adaptive\"eaimeta@70e063a35619d71f\n  // app/session-stores/application.js\n  // import CookieStore from 'ember-simple-auth/session-stores/cookie';\n  /**\n   * We extend CookieStore to override the store or cookie name\n   */\n  var _default = _exports.default = _adaptive.default.extend({\n    cookieName: \"settify-store\",\n    localStorageKey: \"settify-store\"\n  });\n});","define(\"settify-mvp/templates/admin\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{outlet}}\n  */\n  {\n    \"id\": \"x3D5A4gz\",\n    \"block\": \"[[[46,[28,[37,1],null,null],null,null,null]],[],false,[\\\"component\\\",\\\"-outlet\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/accountmaintenance\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Account Maintenance\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <p>\n          Enter client ID to view simple metrics (WIP only):\n          <SettifyTextline @model={{this.clientID}} />\n        </p>\n        <LiquidIf @predicate={{this.model}}>\n          <p>\n            Client name: {{this.model.firstName}} {{this.model.surname}} <br />\n            Partner name: {{this.model.partnerFirstName}} {{this.model.partnerSurname}} <br />\n          </p>\n        </LiquidIf>\n        <p>\n          <b>Enter email address (ie account username) to resend verification code to:</b>\n          {{!-- {{settify-textline model=cognitoUserID}} --}}\n          <SettifyTextline @placeholder=\"email@address.com\" @model={{this.cognitoUserEmail}} />\n          <a class=\"clickable\" {{action 'resendVerificationCode'}}>Resend verification code</a>\n        </p>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  \n  */\n  {\n    \"id\": \"c03xXOw2\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Account Maintenance\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        Enter client ID to view simple metrics (WIP only):\\\\n        \\\"],[8,[39,3],null,[[\\\"@model\\\"],[[30,0,[\\\"clientID\\\"]]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,4],null,[[\\\"@predicate\\\"],[[30,0,[\\\"model\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          Client name: \\\"],[1,[30,0,[\\\"model\\\",\\\"firstName\\\"]]],[1,\\\" \\\"],[1,[30,0,[\\\"model\\\",\\\"surname\\\"]]],[1,\\\" \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n          Partner name: \\\"],[1,[30,0,[\\\"model\\\",\\\"partnerFirstName\\\"]]],[1,\\\" \\\"],[1,[30,0,[\\\"model\\\",\\\"partnerSurname\\\"]]],[1,\\\" \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        \\\"],[10,\\\"b\\\"],[12],[1,\\\"Enter email address (ie account username) to resend verification code to:\\\"],[13],[1,\\\"\\\\n\\\"],[1,\\\"        \\\"],[8,[39,3],null,[[\\\"@placeholder\\\",\\\"@model\\\"],[\\\"email@address.com\\\",[30,0,[\\\"cognitoUserEmail\\\"]]]],null],[1,\\\"\\\\n        \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,8],[[30,0],\\\"resendVerificationCode\\\"],null],[12],[1,\\\"Resend verification code\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,9],null,null,null],[1,\\\"\\\\n\\\"]],[],false,[\\\"animated-header\\\",\\\"div\\\",\\\"p\\\",\\\"settify-textline\\\",\\\"liquid-if\\\",\\\"br\\\",\\\"b\\\",\\\"a\\\",\\\"action\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/accountmaintenance.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/billing/invoice\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div id={{sum \"invoice-\" this.firm.id}} class=\"invoice\">\n    <p style=\"text-align: right;\">\n      <img src={{this.settify.logoURL}} alt=\"Settify\" style=\"max-height:120px;\" />\n    </p>\n    <table>\n      <tr>\n        <td>\n          To:\n        </td>\n        <td>\n          {{#if this.firm.billingEntity}}\n            {{this.firm.billingEntity}}\n          {{else}}\n            {{this.firm.name}}\n          {{/if}}\n          <br />\n          <AddressPrinter @address={{this.firm.address}} />\n        </td>\n        <td style=\"text-align: right;\">\n          {{this.settify.longName}}\n          <br />\n          ABN\n          {{this.settify.abn}}\n          <br />\n          {{this.settify.websitePretty}}\n          <br />\n          {{this.settify.contactEmail}}\n        </td>\n      </tr>\n    </table>\n    <p>\n  \n    </p>\n    <p style=\"text-align: center;\">\n      <b>TAX INVOICE No: <span id={{sum \"invoicenumber-\" this.firm.id}}>{{strip-firm-prefix this.firm.id}}-{{this.invoiceNumber}}</span></b>\n      <br />\n      Issued:\n      {{this.today}}\n      <br />\n      Covering:\n      {{this.startDateFormatted}}\n      to\n      {{this.endDateFormatted}}\n    </p>\n  \n    <table class=\"itemisedlist\">\n      <tr>\n        <th>\n          Date\n        </th>\n        <th>\n          Description\n        </th>\n        <th>\n          Amount\n        </th>\n        <th>\n          GST\n        </th>\n        <th>\n          Amount incl. GST\n        </th>\n      </tr>\n  \n      {{#each this.firm.monthlyFees as |fee|}}\n        <tr>\n          <td>\n            {{#if fee.monthlyFeeProrata}}\n              {{fee.monthlyFeeProrata}}\n            {{else}}\n              {{this.startDateFormatted}}\n            {{/if}}\n          </td>\n          <td>\n            {{fee.name}}\n            {{#if fee.monthlyFeeProrata}}\n              (pro-rated)\n            {{/if}}\n          </td>\n          <td>\n            ${{decimal fee.monthlyFee 2}}\n          </td>\n          <td>\n            ${{decimal fee.monthlyFeeGST 2}}\n          </td>\n          <td>\n            ${{decimal fee.monthlyFeeInclGST 2}}\n          </td>\n        </tr>\n      {{/each}}\n  \n      {{#each this.firm.adhocPayments as |fee|}}\n        <tr>\n          <td>\n            {{fee.displayDateFormatted}}\n          </td>\n          <td>\n            {{fee.description}}\n          </td>\n          <td>\n            ${{decimal fee.revenueLessGST 2}}\n          </td>\n          <td>\n            ${{decimal fee.revenueGST 2}}\n          </td>\n          <td>\n            ${{decimal fee.revenue 2}}\n          </td>\n        </tr>\n      {{/each}}\n  \n      {{#unless (and this.firm.freeConversions this.firm.freeInvites)}}\n        {{#each this.firm.leads as |lead|}}\n          {{! Note: sometimes it's useful to ignore invitations, eg to remove training data }}\n          {{#if (not (and (not this.firm.freeInvites) (not lead.inductionInvoiced) (eq lead.referral \"invitation\")))}}\n            <tr>\n              <td>\n                <span class={{if (or lead.inductionInvoiced (and this.firm.freeInvites (eq lead.referral \"invitation\"))) \"\" \"nonbillablelead\"}}>\n                  {{#if (eq lead.referral \"invitation\")}}\n                    {{lead.becameLead}}\n                  {{else}}\n                    {{lead.referredToFirm}}\n                  {{/if}}\n                </span>\n              </td>\n              <td>\n                <span class={{if (or lead.inductionInvoiced (and this.firm.freeInvites (eq lead.referral \"invitation\"))) \"\" \"nonbillablelead\"}}>\n                  {{lead.name}}\n                  {{#if (and lead.inductionInvoiced this.firm.priceOptions)}}\n                    {{#each this.firm.priceOptions as |opt|}}\n                      {{#if (eq opt.id lead.invoiceType)}}\n                        <br />({{opt.description}})\n                      {{/if}}\n                    {{/each}}\n                  {{/if}}\n                  {{#if (and this.firm.indicateInvitedClientsOnInvoice (eq lead.referral \"invitation\"))}}\n                    (invited)\n                  {{/if}}\n                </span>\n              </td>\n              {{#if (and lead.inductionInvoiced lead.invoiceAmount)}}\n                <td>\n                  ${{decimal lead.invoiceAmountLessGST 2}}\n                </td>\n                <td>\n                  ${{decimal lead.invoiceAmountGST 2}}\n                </td>\n                <td>\n                  ${{decimal lead.invoiceAmount 2}}\n                </td>\n              {{else}}\n                {{! Not being billed, for some reason }}\n                <td colspan=\"3\" class=\"subdued\">\n                  {{#if lead.hasConflict}}\n                    Conflict / unable to act\n                  {{else if lead.didNotSeeSeparationPathway}}\n                    User did not see separation pathway\n                  {{else if (eq lead.referral \"invitation\")}}\n                    {{#if this.firm.freeInvites}}\n                      {{this.firm.freeInvites}}\n                    {{else}}\n                      Invited user did not complete induction\n                    {{/if}}\n                  {{else if lead.inductionMarkedNonBillable}}\n                    User did not become a client\n                  {{else if this.firm.freeConversions}}\n                    {{this.firm.freeConversions}}\n                  {{else}}\n                    Carry over to next month\n                  {{/if}}\n                </td>\n              {{/if}}\n            </tr>\n          {{/if}}\n  \n        {{/each}}\n      {{/unless}}\n  \n      <tr class=\"billing-totals\">\n        <td colspan=\"2\">\n          <b>Total</b>\n        </td>\n        <td>\n          ${{decimal this.firm.totalRevenueLessGST 2}}\n        </td>\n        <td>\n          ${{decimal this.firm.totalRevenueGST 2}}\n        </td>\n        <td>\n          ${{decimal this.firm.totalRevenue 2}}\n        </td>\n      </tr>\n    </table>\n    <p>\n  \n    </p>\n    <p>\n      {{#if (gt this.firm.totalRevenue 0)}}\n        <b>Please pay by EFT before {{this.paymentDeadline}}</b>\n        <br />\n        Settify Pty Ltd\n        <br />\n        BSB 062-692\n        <br />\n        Account number 2835 4333\n        <br />\n        Please quote your invoice number:\n        {{strip-firm-prefix this.firm.id}}-{{this.invoiceNumber}}\n        <br />\n      {{else}}\n        <b>No payment required.</b>\n      {{/if}}\n    </p>\n  </div>\n  */\n  {\n    \"id\": \"mzxQxHvT\",\n    \"block\": \"[[[10,0],[15,1,[28,[37,1],[\\\"invoice-\\\",[30,0,[\\\"firm\\\",\\\"id\\\"]]],null]],[14,0,\\\"invoice\\\"],[12],[1,\\\"\\\\n  \\\"],[10,2],[14,5,\\\"text-align: right;\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"img\\\"],[15,\\\"src\\\",[30,0,[\\\"settify\\\",\\\"logoURL\\\"]]],[14,\\\"alt\\\",\\\"Settify\\\"],[14,5,\\\"max-height:120px;\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,\\\"table\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n        To:\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"firm\\\",\\\"billingEntity\\\"]],[[[1,\\\"          \\\"],[1,[30,0,[\\\"firm\\\",\\\"billingEntity\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[8,[39,9],null,[[\\\"@address\\\"],[[30,0,[\\\"firm\\\",\\\"address\\\"]]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"td\\\"],[14,5,\\\"text-align: right;\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[30,0,[\\\"settify\\\",\\\"longName\\\"]]],[1,\\\"\\\\n        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n        ABN\\\\n        \\\"],[1,[30,0,[\\\"settify\\\",\\\"abn\\\"]]],[1,\\\"\\\\n        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[1,[30,0,[\\\"settify\\\",\\\"websitePretty\\\"]]],[1,\\\"\\\\n        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[1,[30,0,[\\\"settify\\\",\\\"contactEmail\\\"]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,2],[12],[1,\\\"\\\\n\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,2],[14,5,\\\"text-align: center;\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"b\\\"],[12],[1,\\\"TAX INVOICE No: \\\"],[10,1],[15,1,[28,[37,1],[\\\"invoicenumber-\\\",[30,0,[\\\"firm\\\",\\\"id\\\"]]],null]],[12],[1,[28,[35,12],[[30,0,[\\\"firm\\\",\\\"id\\\"]]],null]],[1,\\\"-\\\"],[1,[30,0,[\\\"invoiceNumber\\\"]]],[13],[13],[1,\\\"\\\\n    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n    Issued:\\\\n    \\\"],[1,[30,0,[\\\"today\\\"]]],[1,\\\"\\\\n    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n    Covering:\\\\n    \\\"],[1,[30,0,[\\\"startDateFormatted\\\"]]],[1,\\\"\\\\n    to\\\\n    \\\"],[1,[30,0,[\\\"endDateFormatted\\\"]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,\\\"table\\\"],[14,0,\\\"itemisedlist\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"th\\\"],[12],[1,\\\"\\\\n        Date\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"th\\\"],[12],[1,\\\"\\\\n        Description\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"th\\\"],[12],[1,\\\"\\\\n        Amount\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"th\\\"],[12],[1,\\\"\\\\n        GST\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"th\\\"],[12],[1,\\\"\\\\n        Amount incl. GST\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[42,[28,[37,15],[[28,[37,15],[[30,0,[\\\"firm\\\",\\\"monthlyFees\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"monthlyFeeProrata\\\"]],[[[1,\\\"            \\\"],[1,[30,1,[\\\"monthlyFeeProrata\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"            \\\"],[1,[30,0,[\\\"startDateFormatted\\\"]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[30,1,[\\\"name\\\"]]],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"monthlyFeeProrata\\\"]],[[[1,\\\"            (pro-rated)\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n          $\\\"],[1,[28,[35,16],[[30,1,[\\\"monthlyFee\\\"]],2],null]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n          $\\\"],[1,[28,[35,16],[[30,1,[\\\"monthlyFeeGST\\\"]],2],null]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n          $\\\"],[1,[28,[35,16],[[30,1,[\\\"monthlyFeeInclGST\\\"]],2],null]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"\\\\n\\\"],[42,[28,[37,15],[[28,[37,15],[[30,0,[\\\"firm\\\",\\\"adhocPayments\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[30,2,[\\\"displayDateFormatted\\\"]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[30,2,[\\\"description\\\"]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n          $\\\"],[1,[28,[35,16],[[30,2,[\\\"revenueLessGST\\\"]],2],null]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n          $\\\"],[1,[28,[35,16],[[30,2,[\\\"revenueGST\\\"]],2],null]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n          $\\\"],[1,[28,[35,16],[[30,2,[\\\"revenue\\\"]],2],null]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"\\\\n\\\"],[41,[51,[28,[37,18],[[30,0,[\\\"firm\\\",\\\"freeConversions\\\"]],[30,0,[\\\"firm\\\",\\\"freeInvites\\\"]]],null]],[[[42,[28,[37,15],[[28,[37,15],[[30,0,[\\\"firm\\\",\\\"leads\\\"]]],null]],null],null,[[[41,[28,[37,19],[[28,[37,18],[[28,[37,19],[[30,0,[\\\"firm\\\",\\\"freeInvites\\\"]]],null],[28,[37,19],[[30,3,[\\\"inductionInvoiced\\\"]]],null],[28,[37,20],[[30,3,[\\\"referral\\\"]],\\\"invitation\\\"],null]],null]],null],[[[1,\\\"          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n              \\\"],[10,1],[15,0,[52,[28,[37,21],[[30,3,[\\\"inductionInvoiced\\\"]],[28,[37,18],[[30,0,[\\\"firm\\\",\\\"freeInvites\\\"]],[28,[37,20],[[30,3,[\\\"referral\\\"]],\\\"invitation\\\"],null]],null]],null],\\\"\\\",\\\"nonbillablelead\\\"]],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,20],[[30,3,[\\\"referral\\\"]],\\\"invitation\\\"],null],[[[1,\\\"                  \\\"],[1,[30,3,[\\\"becameLead\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                  \\\"],[1,[30,3,[\\\"referredToFirm\\\"]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n              \\\"],[10,1],[15,0,[52,[28,[37,21],[[30,3,[\\\"inductionInvoiced\\\"]],[28,[37,18],[[30,0,[\\\"firm\\\",\\\"freeInvites\\\"]],[28,[37,20],[[30,3,[\\\"referral\\\"]],\\\"invitation\\\"],null]],null]],null],\\\"\\\",\\\"nonbillablelead\\\"]],[12],[1,\\\"\\\\n                \\\"],[1,[30,3,[\\\"name\\\"]]],[1,\\\"\\\\n\\\"],[41,[28,[37,18],[[30,3,[\\\"inductionInvoiced\\\"]],[30,0,[\\\"firm\\\",\\\"priceOptions\\\"]]],null],[[[42,[28,[37,15],[[28,[37,15],[[30,0,[\\\"firm\\\",\\\"priceOptions\\\"]]],null]],null],null,[[[41,[28,[37,20],[[30,4,[\\\"id\\\"]],[30,3,[\\\"invoiceType\\\"]]],null],[[[1,\\\"                      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"(\\\"],[1,[30,4,[\\\"description\\\"]]],[1,\\\")\\\\n\\\"]],[]],null]],[4]],null]],[]],null],[41,[28,[37,18],[[30,0,[\\\"firm\\\",\\\"indicateInvitedClientsOnInvoice\\\"]],[28,[37,20],[[30,3,[\\\"referral\\\"]],\\\"invitation\\\"],null]],null],[[[1,\\\"                  (invited)\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,18],[[30,3,[\\\"inductionInvoiced\\\"]],[30,3,[\\\"invoiceAmount\\\"]]],null],[[[1,\\\"              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                $\\\"],[1,[28,[35,16],[[30,3,[\\\"invoiceAmountLessGST\\\"]],2],null]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                $\\\"],[1,[28,[35,16],[[30,3,[\\\"invoiceAmountGST\\\"]],2],null]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                $\\\"],[1,[28,[35,16],[[30,3,[\\\"invoiceAmount\\\"]],2],null]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"              \\\"],[10,\\\"td\\\"],[14,\\\"colspan\\\",\\\"3\\\"],[14,0,\\\"subdued\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"hasConflict\\\"]],[[[1,\\\"                  Conflict / unable to act\\\\n\\\"]],[]],[[[41,[30,3,[\\\"didNotSeeSeparationPathway\\\"]],[[[1,\\\"                  User did not see separation pathway\\\\n\\\"]],[]],[[[41,[28,[37,20],[[30,3,[\\\"referral\\\"]],\\\"invitation\\\"],null],[[[41,[30,0,[\\\"firm\\\",\\\"freeInvites\\\"]],[[[1,\\\"                    \\\"],[1,[30,0,[\\\"firm\\\",\\\"freeInvites\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                    Invited user did not complete induction\\\\n\\\"]],[]]]],[]],[[[41,[30,3,[\\\"inductionMarkedNonBillable\\\"]],[[[1,\\\"                  User did not become a client\\\\n\\\"]],[]],[[[41,[30,0,[\\\"firm\\\",\\\"freeConversions\\\"]],[[[1,\\\"                  \\\"],[1,[30,0,[\\\"firm\\\",\\\"freeConversions\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                  Carry over to next month\\\\n                \\\"]],[]]]],[]]]],[]]]],[]]]],[]]],[1,\\\"              \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"]],[3]],null]],[]],null],[1,\\\"\\\\n    \\\"],[10,\\\"tr\\\"],[14,0,\\\"billing-totals\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"td\\\"],[14,\\\"colspan\\\",\\\"2\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"b\\\"],[12],[1,\\\"Total\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n        $\\\"],[1,[28,[35,16],[[30,0,[\\\"firm\\\",\\\"totalRevenueLessGST\\\"]],2],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n        $\\\"],[1,[28,[35,16],[[30,0,[\\\"firm\\\",\\\"totalRevenueGST\\\"]],2],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n        $\\\"],[1,[28,[35,16],[[30,0,[\\\"firm\\\",\\\"totalRevenue\\\"]],2],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,2],[12],[1,\\\"\\\\n\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,2],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,22],[[30,0,[\\\"firm\\\",\\\"totalRevenue\\\"]],0],null],[[[1,\\\"      \\\"],[10,\\\"b\\\"],[12],[1,\\\"Please pay by EFT before \\\"],[1,[30,0,[\\\"paymentDeadline\\\"]]],[13],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      Settify Pty Ltd\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      BSB 062-692\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      Account number 2835 4333\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      Please quote your invoice number:\\\\n      \\\"],[1,[28,[35,12],[[30,0,[\\\"firm\\\",\\\"id\\\"]]],null]],[1,\\\"-\\\"],[1,[30,0,[\\\"invoiceNumber\\\"]]],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,\\\"b\\\"],[12],[1,\\\"No payment required.\\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"fee\\\",\\\"fee\\\",\\\"lead\\\",\\\"opt\\\"],false,[\\\"div\\\",\\\"sum\\\",\\\"p\\\",\\\"img\\\",\\\"table\\\",\\\"tr\\\",\\\"td\\\",\\\"if\\\",\\\"br\\\",\\\"address-printer\\\",\\\"b\\\",\\\"span\\\",\\\"strip-firm-prefix\\\",\\\"th\\\",\\\"each\\\",\\\"-track-array\\\",\\\"decimal\\\",\\\"unless\\\",\\\"and\\\",\\\"not\\\",\\\"eq\\\",\\\"or\\\",\\\"gt\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/billing/invoice.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/billing/leadlist\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <CheckBox @text=\"Clean display for emailing to firms\" @model={{this.cleanLeadList}} />\n  {{#each this.model.firms as |firm|}}\n    <div id={{sum \"leadsfor-\" firm.id}}>\n      <h2>{{firm.name}}</h2>\n      {{#if (or this.billingSweepBoolean (and this.cleanLeadList firm.totalUnbilled))}}\n        <p>\n          <b>To:</b>\n          {{#each firm.contact.emails as |email index|}}\n            {{#if (lt (sum index 1) firm.contact.emails.length)}}\n              {{email}},\n            {{else}}\n              {{email}}\n            {{/if}}\n          {{/each}}\n          <br />\n          <b>Subject:</b>\n          <span id=\"billingemailsubject-{{firm.id}}\" contenteditable={{if this.cleanLeadList \"true\" \"false\"}}>\n            {{#if this.billingSweepBoolean}}\n              Settify and\n              {{html-safe firm.name}}\n              - Historical Reconciliation\n            {{else}}\n              Settify and\n              {{html-safe firm.name}}\n              -\n              {{this.invoiceMonth}}\n            {{/if}}\n          </span>\n        </p>\n      {{/if}}\n      <div id=\"billingemailbody-{{firm.id}}\" contenteditable={{if this.cleanLeadList \"true\" \"false\"}}>\n        {{#if this.billingSweepBoolean}}\n          <p>Hi {{firm.contact.recipientName}},</p>\n          <p>\n            Every few months we conduct an historical reconciliation of all the people who came through Settify but did not become clients in time for our usual monthly invoicing\n            cycle.\n          </p>\n          <p>\n            In our experience, it sometimes takes potential clients a few months to ready themselves for the process of formally engaging a lawyer &mdash; one of the reasons why\n            having a Settify email in their inbox with the\n            {{firm.name}}\n            name and logo can be so valuable.\n          </p>\n          <p>\n            Could you please review the list below, and let me know whether any of these people ultimately became a client of\n            {{firm.name}}?\n          </p>\n        {{else if (and this.cleanLeadList firm.totalUnbilled)}}\n          <p>Hi {{firm.contact.recipientName}},</p>\n          <p>We're pleased to report that in the month of\n            {{this.invoiceMonth}},\n            {{firm.totalUnbilled}}\n            new\n            {{#if (eq firm.totalUnbilled 1)}}\n              lead\n            {{else}}\n              leads\n            {{/if}}\n            went through the Settify\n            {{#if firm.hasCarryOverClients}}\n              process or were carried over from a previous month.\n            {{else}}\n              process.\n            {{/if}}\n            {{#if (gt firm.totalPotentiallyBillable 1)}}\n              Their names, and the dates on which they finished, are set out below.\n            {{/if}}\n          </p>\n        {{/if}}\n  \n        <p><table class=\"leadlisttable\">\n            {{#unless this.cleanLeadList}}\n              <tr>\n                <th>\n                  Date\n                </th>\n                <th>\n                  Name\n                </th>\n                <th>\n                  Source\n                </th>\n                <th>\n                  Invoice?\n                </th>\n              </tr>\n            {{/unless}}\n  \n            {{#each firm.leads as |lead|}}\n              {{#if (or this.billingSweepBoolean (and lead.potentiallyBillable (not lead.inductionMarkedNonBillable)) (not this.cleanLeadList))}}\n                <tr class=\"{{if (or this.billingSweepBoolean lead.potentiallyBillable) '' 'nonbillablelead'}}{{if lead.testAccount 'testaccountlead' ''}}\">\n                  <td>\n                    {{#if (eq lead.referral \"invitation\")}}\n                      {{lead.becameLead}}\n                    {{else}}\n                      {{lead.referredToFirm}}\n                    {{/if}}\n                  </td>\n                  <td>\n                    {{lead.name}}\n                    {{#if (and this.cleanLeadList (eq lead.referral \"invitation\") (not this.billingSweepBoolean))}}\n                      (invited user, completed on\n                      {{lead.referredToFirm}})\n                    {{/if}}\n                    {{#if this.cleanLeadList}}\n                      {{! &nbsp; &nbsp; }}\n                    {{/if}}\n                  </td>\n                  {{#unless this.cleanLeadList}}\n                    <td>\n                      {{#if (eq lead.referral \"invitation\")}}\n                        Invitation\n                      {{else}}\n                        Website\n                      {{/if}}\n                    </td>\n                    <td>\n                      {{#if firm.priceOptions}}\n                        {{#each firm.priceOptions as |option|}}\n                          <a\n                            class=\"clickable {{if (and lead.inductionInvoiced (eq lead.invoiceType option.id)) 'selected' 'unselected'}}\"\n                            {{action \"toggleInvoiced\" lead firm option.id option.priceInclGST}}\n                            title={{option.description}}\n                          >{{option.name}}</a>\n                        {{/each}}\n                      {{else}}\n                        <i\n                          class=\"clickable fal fa-check-circle {{if lead.inductionInvoiced 'selected' 'unselected'}}\"\n                          {{action \"toggleInvoiced\" lead firm \"Normal\" firm.leadPriceInclGST}}\n                        />\n                      {{/if}}\n                      <i class=\"clickable negative fal fa-times-circle {{if lead.inductionMarkedNonBillable 'selected' 'unselected'}}\" {{action \"toggleNonBillable\" lead firm}} />\n                      <i class=\"clickable negative fal fa-trash-alt {{if lead.testAccount 'selected' 'unselected'}}\" {{action \"toggleTestAccount\" lead firm}} />\n                    </td>\n                  {{/unless}}\n                </tr>\n              {{/if}}\n            {{/each}}\n          </table></p>\n  \n        {{#if (and this.cleanLeadList firm.totalUnbilled)}}\n          <p>\n            Can you please\n            {{#if (gt firm.totalUnbilled 1)}}\n              let me know which of them became clients and which did not,\n            {{else}}\n              let me know if they went on to become a client,\n            {{/if}}\n            {{#if (and firm.freeConversions firm.freeInvites)}}\n              for our records? It is helpful for us to know how the system is being used so that we can continue to improve it.\n            {{else}}\n              so that we may prepare an appropriate invoice?\n              {{#if (and firm.freeInvites firm.totalInvitedClients)}}\n                I note that there is no charge for clients who were invited, but it is helpful for us to know how the system is being used so that we can continue to improve it.\n              {{/if}}\n  \n            {{/if}}\n          </p>\n        {{/if}}\n  \n        {{#if (or this.billingSweepBoolean (and this.cleanLeadList firm.totalUnbilled))}}\n          <p>Thanks and kind regards,</p>\n          <p>Athol</p>\n          <p>\n            <img src=\"https://s3-ap-southeast-2.amazonaws.com/assets.settify.com.au/email/logo-email-outlook.jpg\" alt=\"Settify email footer\" /><br />\n            <b>Athol Birtley</b><br />\n            Chief Technology Officer<br />\n            0425 719 030<br />\n            athol.birtley@settify.com.au<br />\n            www.settify.com.au<br />\n            <img src=\"https://s3-ap-southeast-2.amazonaws.com/assets.settify.com.au/email/LIV-award-signature-outlook.jpg\" alt=\"LIV award\" />\n          </p>\n        {{/if}}\n      </div>\n    </div>\n    {{#if (or this.billingSweepBoolean (and this.cleanLeadList firm.totalUnbilled))}}\n      <LiquidIf @predicate={{get this.emailSending firm.id}}>\n        <LoadingSpinner />\n      </LiquidIf>\n      <p>\n        <small>\n          <a class=\"clickable\" {{action \"sendBillingEmail\" firm}}>\n            <i class=\"fal fa-envelope\" />\n            Send email to\n            {{firm.name}}\n          </a>\n          {{#if (get this.emailSent firm.id)}}\n            &mdash;\n            <i class=\"fal fa-check-circle\" />\n            Sent\n          {{/if}}\n        </small>\n      </p>\n    {{/if}}\n  {{/each}}\n  */\n  {\n    \"id\": \"TfpOMSyW\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@text\\\",\\\"@model\\\"],[\\\"Clean display for emailing to firms\\\",[30,0,[\\\"cleanLeadList\\\"]]]],null],[1,\\\"\\\\n\\\"],[42,[28,[37,2],[[28,[37,2],[[30,0,[\\\"model\\\",\\\"firms\\\"]]],null]],null],null,[[[1,\\\"  \\\"],[10,0],[15,1,[28,[37,4],[\\\"leadsfor-\\\",[30,1,[\\\"id\\\"]]],null]],[12],[1,\\\"\\\\n    \\\"],[10,\\\"h2\\\"],[12],[1,[30,1,[\\\"name\\\"]]],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,7],[[30,0,[\\\"billingSweepBoolean\\\"]],[28,[37,8],[[30,0,[\\\"cleanLeadList\\\"]],[30,1,[\\\"totalUnbilled\\\"]]],null]],null],[[[1,\\\"      \\\"],[10,2],[12],[1,\\\"\\\\n        \\\"],[10,\\\"b\\\"],[12],[1,\\\"To:\\\"],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,2],[[28,[37,2],[[30,1,[\\\"contact\\\",\\\"emails\\\"]]],null]],null],null,[[[41,[28,[37,11],[[28,[37,4],[[30,3],1],null],[30,1,[\\\"contact\\\",\\\"emails\\\",\\\"length\\\"]]],null],[[[1,\\\"            \\\"],[1,[30,2]],[1,\\\",\\\\n\\\"]],[]],[[[1,\\\"            \\\"],[1,[30,2]],[1,\\\"\\\\n\\\"]],[]]]],[2,3]],null],[1,\\\"        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[10,\\\"b\\\"],[12],[1,\\\"Subject:\\\"],[13],[1,\\\"\\\\n        \\\"],[10,1],[15,1,[29,[\\\"billingemailsubject-\\\",[30,1,[\\\"id\\\"]]]]],[15,\\\"contenteditable\\\",[52,[30,0,[\\\"cleanLeadList\\\"]],\\\"true\\\",\\\"false\\\"]],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"billingSweepBoolean\\\"]],[[[1,\\\"            Settify and\\\\n            \\\"],[1,[28,[35,14],[[30,1,[\\\"name\\\"]]],null]],[1,\\\"\\\\n            - Historical Reconciliation\\\\n\\\"]],[]],[[[1,\\\"            Settify and\\\\n            \\\"],[1,[28,[35,14],[[30,1,[\\\"name\\\"]]],null]],[1,\\\"\\\\n            -\\\\n            \\\"],[1,[30,0,[\\\"invoiceMonth\\\"]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[10,0],[15,1,[29,[\\\"billingemailbody-\\\",[30,1,[\\\"id\\\"]]]]],[15,\\\"contenteditable\\\",[52,[30,0,[\\\"cleanLeadList\\\"]],\\\"true\\\",\\\"false\\\"]],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"billingSweepBoolean\\\"]],[[[1,\\\"        \\\"],[10,2],[12],[1,\\\"Hi \\\"],[1,[30,1,[\\\"contact\\\",\\\"recipientName\\\"]]],[1,\\\",\\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          Every few months we conduct an historical reconciliation of all the people who came through Settify but did not become clients in time for our usual monthly invoicing\\\\n          cycle.\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          In our experience, it sometimes takes potential clients a few months to ready themselves for the process of formally engaging a lawyer — one of the reasons why\\\\n          having a Settify email in their inbox with the\\\\n          \\\"],[1,[30,1,[\\\"name\\\"]]],[1,\\\"\\\\n          name and logo can be so valuable.\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          Could you please review the list below, and let me know whether any of these people ultimately became a client of\\\\n          \\\"],[1,[30,1,[\\\"name\\\"]]],[1,\\\"?\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,0,[\\\"cleanLeadList\\\"]],[30,1,[\\\"totalUnbilled\\\"]]],null],[[[1,\\\"        \\\"],[10,2],[12],[1,\\\"Hi \\\"],[1,[30,1,[\\\"contact\\\",\\\"recipientName\\\"]]],[1,\\\",\\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"We're pleased to report that in the month of\\\\n          \\\"],[1,[30,0,[\\\"invoiceMonth\\\"]]],[1,\\\",\\\\n          \\\"],[1,[30,1,[\\\"totalUnbilled\\\"]]],[1,\\\"\\\\n          new\\\\n\\\"],[41,[28,[37,15],[[30,1,[\\\"totalUnbilled\\\"]],1],null],[[[1,\\\"            lead\\\\n\\\"]],[]],[[[1,\\\"            leads\\\\n\\\"]],[]]],[1,\\\"          went through the Settify\\\\n\\\"],[41,[30,1,[\\\"hasCarryOverClients\\\"]],[[[1,\\\"            process or were carried over from a previous month.\\\\n\\\"]],[]],[[[1,\\\"            process.\\\\n\\\"]],[]]],[41,[28,[37,16],[[30,1,[\\\"totalPotentiallyBillable\\\"]],1],null],[[[1,\\\"            Their names, and the dates on which they finished, are set out below.\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]],null]],[]]],[1,\\\"\\\\n      \\\"],[10,2],[12],[10,\\\"table\\\"],[14,0,\\\"leadlisttable\\\"],[12],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"cleanLeadList\\\"]]],[[[1,\\\"            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"th\\\"],[12],[1,\\\"\\\\n                Date\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"th\\\"],[12],[1,\\\"\\\\n                Name\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"th\\\"],[12],[1,\\\"\\\\n                Source\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"th\\\"],[12],[1,\\\"\\\\n                Invoice?\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[42,[28,[37,2],[[28,[37,2],[[30,1,[\\\"leads\\\"]]],null]],null],null,[[[41,[28,[37,7],[[30,0,[\\\"billingSweepBoolean\\\"]],[28,[37,8],[[30,4,[\\\"potentiallyBillable\\\"]],[28,[37,21],[[30,4,[\\\"inductionMarkedNonBillable\\\"]]],null]],null],[28,[37,21],[[30,0,[\\\"cleanLeadList\\\"]]],null]],null],[[[1,\\\"              \\\"],[10,\\\"tr\\\"],[15,0,[29,[[52,[28,[37,7],[[30,0,[\\\"billingSweepBoolean\\\"]],[30,4,[\\\"potentiallyBillable\\\"]]],null],\\\"\\\",\\\"nonbillablelead\\\"],[52,[30,4,[\\\"testAccount\\\"]],\\\"testaccountlead\\\",\\\"\\\"]]]],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,15],[[30,4,[\\\"referral\\\"]],\\\"invitation\\\"],null],[[[1,\\\"                    \\\"],[1,[30,4,[\\\"becameLead\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                    \\\"],[1,[30,4,[\\\"referredToFirm\\\"]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[1,[30,4,[\\\"name\\\"]]],[1,\\\"\\\\n\\\"],[41,[28,[37,8],[[30,0,[\\\"cleanLeadList\\\"]],[28,[37,15],[[30,4,[\\\"referral\\\"]],\\\"invitation\\\"],null],[28,[37,21],[[30,0,[\\\"billingSweepBoolean\\\"]]],null]],null],[[[1,\\\"                    (invited user, completed on\\\\n                    \\\"],[1,[30,4,[\\\"referredToFirm\\\"]]],[1,\\\")\\\\n\\\"]],[]],null],[41,[30,0,[\\\"cleanLeadList\\\"]],[[],[]],null],[1,\\\"                \\\"],[13],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"cleanLeadList\\\"]]],[[[1,\\\"                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,15],[[30,4,[\\\"referral\\\"]],\\\"invitation\\\"],null],[[[1,\\\"                      Invitation\\\\n\\\"]],[]],[[[1,\\\"                      Website\\\\n\\\"]],[]]],[1,\\\"                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"priceOptions\\\"]],[[[42,[28,[37,2],[[28,[37,2],[[30,1,[\\\"priceOptions\\\"]]],null]],null],null,[[[1,\\\"                        \\\"],[11,3],[16,0,[29,[\\\"clickable \\\",[52,[28,[37,8],[[30,4,[\\\"inductionInvoiced\\\"]],[28,[37,15],[[30,4,[\\\"invoiceType\\\"]],[30,5,[\\\"id\\\"]]],null]],null],\\\"selected\\\",\\\"unselected\\\"]]]],[16,\\\"title\\\",[30,5,[\\\"description\\\"]]],[4,[38,24],[[30,0],\\\"toggleInvoiced\\\",[30,4],[30,1],[30,5,[\\\"id\\\"]],[30,5,[\\\"priceInclGST\\\"]]],null],[12],[1,[30,5,[\\\"name\\\"]]],[13],[1,\\\"\\\\n\\\"]],[5]],null]],[]],[[[1,\\\"                      \\\"],[11,\\\"i\\\"],[16,0,[29,[\\\"clickable fal fa-check-circle \\\",[52,[30,4,[\\\"inductionInvoiced\\\"]],\\\"selected\\\",\\\"unselected\\\"]]]],[4,[38,24],[[30,0],\\\"toggleInvoiced\\\",[30,4],[30,1],\\\"Normal\\\",[30,1,[\\\"leadPriceInclGST\\\"]]],null],[12],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"                    \\\"],[11,\\\"i\\\"],[16,0,[29,[\\\"clickable negative fal fa-times-circle \\\",[52,[30,4,[\\\"inductionMarkedNonBillable\\\"]],\\\"selected\\\",\\\"unselected\\\"]]]],[4,[38,24],[[30,0],\\\"toggleNonBillable\\\",[30,4],[30,1]],null],[12],[13],[1,\\\"\\\\n                    \\\"],[11,\\\"i\\\"],[16,0,[29,[\\\"clickable negative fal fa-trash-alt \\\",[52,[30,4,[\\\"testAccount\\\"]],\\\"selected\\\",\\\"unselected\\\"]]]],[4,[38,24],[[30,0],\\\"toggleTestAccount\\\",[30,4],[30,1]],null],[12],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[4]],null],[1,\\\"        \\\"],[13],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,8],[[30,0,[\\\"cleanLeadList\\\"]],[30,1,[\\\"totalUnbilled\\\"]]],null],[[[1,\\\"        \\\"],[10,2],[12],[1,\\\"\\\\n          Can you please\\\\n\\\"],[41,[28,[37,16],[[30,1,[\\\"totalUnbilled\\\"]],1],null],[[[1,\\\"            let me know which of them became clients and which did not,\\\\n\\\"]],[]],[[[1,\\\"            let me know if they went on to become a client,\\\\n\\\"]],[]]],[41,[28,[37,8],[[30,1,[\\\"freeConversions\\\"]],[30,1,[\\\"freeInvites\\\"]]],null],[[[1,\\\"            for our records? It is helpful for us to know how the system is being used so that we can continue to improve it.\\\\n\\\"]],[]],[[[1,\\\"            so that we may prepare an appropriate invoice?\\\\n\\\"],[41,[28,[37,8],[[30,1,[\\\"freeInvites\\\"]],[30,1,[\\\"totalInvitedClients\\\"]]],null],[[[1,\\\"              I note that there is no charge for clients who were invited, but it is helpful for us to know how the system is being used so that we can continue to improve it.\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,7],[[30,0,[\\\"billingSweepBoolean\\\"]],[28,[37,8],[[30,0,[\\\"cleanLeadList\\\"]],[30,1,[\\\"totalUnbilled\\\"]]],null]],null],[[[1,\\\"        \\\"],[10,2],[12],[1,\\\"Thanks and kind regards,\\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"Athol\\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"https://s3-ap-southeast-2.amazonaws.com/assets.settify.com.au/email/logo-email-outlook.jpg\\\"],[14,\\\"alt\\\",\\\"Settify email footer\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[10,\\\"b\\\"],[12],[1,\\\"Athol Birtley\\\"],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n          Chief Technology Officer\\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n          0425 719 030\\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n          athol.birtley@settify.com.au\\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n          www.settify.com.au\\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"https://s3-ap-southeast-2.amazonaws.com/assets.settify.com.au/email/LIV-award-signature-outlook.jpg\\\"],[14,\\\"alt\\\",\\\"LIV award\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,7],[[30,0,[\\\"billingSweepBoolean\\\"]],[28,[37,8],[[30,0,[\\\"cleanLeadList\\\"]],[30,1,[\\\"totalUnbilled\\\"]]],null]],null],[[[1,\\\"    \\\"],[8,[39,27],null,[[\\\"@predicate\\\"],[[28,[37,28],[[30,0,[\\\"emailSending\\\"]],[30,1,[\\\"id\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[39,29],null,null,null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[10,2],[12],[1,\\\"\\\\n      \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n        \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,24],[[30,0],\\\"sendBillingEmail\\\",[30,1]],null],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-envelope\\\"],[12],[13],[1,\\\"\\\\n          Send email to\\\\n          \\\"],[1,[30,1,[\\\"name\\\"]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,28],[[30,0,[\\\"emailSent\\\"]],[30,1,[\\\"id\\\"]]],null],[[[1,\\\"          —\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"\\\\n          Sent\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[1]],null]],[\\\"firm\\\",\\\"email\\\",\\\"index\\\",\\\"lead\\\",\\\"option\\\"],false,[\\\"check-box\\\",\\\"each\\\",\\\"-track-array\\\",\\\"div\\\",\\\"sum\\\",\\\"h2\\\",\\\"if\\\",\\\"or\\\",\\\"and\\\",\\\"p\\\",\\\"b\\\",\\\"lt\\\",\\\"br\\\",\\\"span\\\",\\\"html-safe\\\",\\\"eq\\\",\\\"gt\\\",\\\"table\\\",\\\"unless\\\",\\\"tr\\\",\\\"th\\\",\\\"not\\\",\\\"td\\\",\\\"a\\\",\\\"action\\\",\\\"i\\\",\\\"img\\\",\\\"liquid-if\\\",\\\"get\\\",\\\"loading-spinner\\\",\\\"small\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/billing/leadlist.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/billing/oneoffpayment\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <table class=\"leadlisttable alternate-rows\">\n    <tr>\n      <th>Date</th>\n      <th>Description</th>\n      <th>Fee</th>\n      <th>GST</th>\n      <th>Total</th>\n      <th></th>\n    </tr>\n    {{#each this.model.adhocPayments as |payment|}}\n      <tr class={{if payment.deleted 'testaccountlead' ''}}>\n        <td>\n          {{payment.displayDateFormatted}}\n        </td>\n        <td>\n          {{strip-firm-prefix payment.firmID}}: {{payment.description}}\n        </td>\n        <td>\n          ${{decimal payment.revenueLessGST 2}}\n        </td>\n        <td>\n          ${{decimal payment.revenueGST 2}}\n        </td>\n        <td>\n          ${{decimal payment.revenue 2}}\n        </td>\n        <td>\n          <i class=\"clickable fal fa-check-circle {{if payment.invoicedToFirm 'selected' 'unselected'}}\"\n            {{action 'toggleOneOffPaymentInvoicedState' payment}}/>\n          <i class=\"clickable negative fal fa-trash-alt  {{if payment.invoicedToFirm 'unselected' 'selected'}}\"\n            {{action 'deleteOneOffPayment' payment}}/>\n        </td>\n      </tr>\n    {{/each}}\n  </table>\n  \n  <h3>Add a new once off payment</h3>\n  <p><SettifySelect @label=\"Which firm?\" @model={{this.adhocFirmID}} @name=\"firmselect\" @content={{this.model.firms}} @labelPath=\"name\" @valuePath=\"id\" /></p>\n  \n  <p>\n    <SettifyNumber @label=\"How much?\" @model={{this.adhocAmount}} @money={{true}} />\n  </p>\n  \n  <p>\n    <SettifyTextline @label=\"Description\" @model={{this.adhocDescription}} />\n  </p>\n  \n  <p>\n    <b>What date should show on the invoice?</b>\n    <div class=\"datepicker-wrapper\">\n      <DatePicker @date={{this.adhocDate}} @valueFormat=\"date\" @format=\"dddd D MMMM YYYY\" @allowBlank={{true}} />\n    </div>\n  </p>\n  \n  <LiquidIf @predicate={{this.adhocLoading}}>\n    <LoadingSpinner />\n  </LiquidIf>\n  \n  <p>\n    <a class=\"clickable\" {{action 'addOneOffPayment'}}>Add this amount</a>\n    {{#if this.adhocUpdated}}\n      &mdash; <i class=\"fal fa-check-circle\" /> Done\n    {{/if}}\n  </p>\n  \n  */\n  {\n    \"id\": \"Mh655Z2o\",\n    \"block\": \"[[[10,\\\"table\\\"],[14,0,\\\"leadlisttable alternate-rows\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"th\\\"],[12],[1,\\\"Date\\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"th\\\"],[12],[1,\\\"Description\\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"th\\\"],[12],[1,\\\"Fee\\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"th\\\"],[12],[1,\\\"GST\\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"th\\\"],[12],[1,\\\"Total\\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"th\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,4],[[28,[37,4],[[30,0,[\\\"model\\\",\\\"adhocPayments\\\"]]],null]],null],null,[[[1,\\\"    \\\"],[10,\\\"tr\\\"],[15,0,[52,[30,1,[\\\"deleted\\\"]],\\\"testaccountlead\\\",\\\"\\\"]],[12],[1,\\\"\\\\n      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[30,1,[\\\"displayDateFormatted\\\"]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[28,[35,7],[[30,1,[\\\"firmID\\\"]]],null]],[1,\\\": \\\"],[1,[30,1,[\\\"description\\\"]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n        $\\\"],[1,[28,[35,8],[[30,1,[\\\"revenueLessGST\\\"]],2],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n        $\\\"],[1,[28,[35,8],[[30,1,[\\\"revenueGST\\\"]],2],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n        $\\\"],[1,[28,[35,8],[[30,1,[\\\"revenue\\\"]],2],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n        \\\"],[11,\\\"i\\\"],[16,0,[29,[\\\"clickable fal fa-check-circle \\\",[52,[30,1,[\\\"invoicedToFirm\\\"]],\\\"selected\\\",\\\"unselected\\\"]]]],[4,[38,10],[[30,0],\\\"toggleOneOffPaymentInvoicedState\\\",[30,1]],null],[12],[13],[1,\\\"\\\\n        \\\"],[11,\\\"i\\\"],[16,0,[29,[\\\"clickable negative fal fa-trash-alt  \\\",[52,[30,1,[\\\"invoicedToFirm\\\"]],\\\"unselected\\\",\\\"selected\\\"]]]],[4,[38,10],[[30,0],\\\"deleteOneOffPayment\\\",[30,1]],null],[12],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[13],[1,\\\"\\\\n\\\\n\\\"],[10,\\\"h3\\\"],[12],[1,\\\"Add a new once off payment\\\"],[13],[1,\\\"\\\\n\\\"],[10,2],[12],[8,[39,13],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"Which firm?\\\",[30,0,[\\\"adhocFirmID\\\"]],\\\"firmselect\\\",[30,0,[\\\"model\\\",\\\"firms\\\"]],\\\"name\\\",\\\"id\\\"]],null],[13],[1,\\\"\\\\n\\\\n\\\"],[10,2],[12],[1,\\\"\\\\n  \\\"],[8,[39,14],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@money\\\"],[\\\"How much?\\\",[30,0,[\\\"adhocAmount\\\"]],true]],null],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[10,2],[12],[1,\\\"\\\\n  \\\"],[8,[39,15],null,[[\\\"@label\\\",\\\"@model\\\"],[\\\"Description\\\",[30,0,[\\\"adhocDescription\\\"]]]],null],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[10,2],[12],[1,\\\"\\\\n  \\\"],[10,\\\"b\\\"],[12],[1,\\\"What date should show on the invoice?\\\"],[13],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"datepicker-wrapper\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,18],null,[[\\\"@date\\\",\\\"@valueFormat\\\",\\\"@format\\\",\\\"@allowBlank\\\"],[[30,0,[\\\"adhocDate\\\"]],\\\"date\\\",\\\"dddd D MMMM YYYY\\\",true]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,19],null,[[\\\"@predicate\\\"],[[30,0,[\\\"adhocLoading\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[39,20],null,null,null],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,2],[12],[1,\\\"\\\\n  \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,10],[[30,0],\\\"addOneOffPayment\\\"],null],[12],[1,\\\"Add this amount\\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"adhocUpdated\\\"]],[[[1,\\\"    — \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\" Done\\\\n\\\"]],[]],null],[13],[1,\\\"\\\\n\\\"]],[\\\"payment\\\"],false,[\\\"table\\\",\\\"tr\\\",\\\"th\\\",\\\"each\\\",\\\"-track-array\\\",\\\"if\\\",\\\"td\\\",\\\"strip-firm-prefix\\\",\\\"decimal\\\",\\\"i\\\",\\\"action\\\",\\\"h3\\\",\\\"p\\\",\\\"settify-select\\\",\\\"settify-number\\\",\\\"settify-textline\\\",\\\"b\\\",\\\"div\\\",\\\"date-picker\\\",\\\"liquid-if\\\",\\\"loading-spinner\\\",\\\"a\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/billing/oneoffpayment.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/billing/rolloutinvoice\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <p>\n    <B>TO:</B>\n    {{#each this.addhocFirm.invoice.emails as |email|}}\n      {{email}},\n    {{/each}}\n    <br>\n    <B>SUBJECT:</B>\n    Settify and {{this.addhocFirm.name}} - Rollout and Customisation Invoice\n  </p>\n  \n  <p>\n    Dear {{this.addhocFirm.invoice.recipientName}},\n  </p>\n  <p>\n    I attach our invoice in respect of the rollout and customisation\n    of Settify for {{this.addhocFirm.name}}.\n  </p>\n  <p>\n    Please let me know if you have any questions.\n  </p>\n  <p>\n    Thanks and kind regards,\n  </p>\n  <p>\n    Athol\n  </p>\n  <p>\n     <img src=\"https://s3-ap-southeast-2.amazonaws.com/assets.settify.com.au/email/logo-email-outlook.jpg\" alt=\"Settify email footer\"/><br>\n     <b>Athol Birtley</b><br>\n     Chief Technology Officer<br>\n     0425 719 030<br>\n     athol.birtley@settify.com.au<br>\n     www.settify.com.au<br>\n     <img src=\"https://s3-ap-southeast-2.amazonaws.com/assets.settify.com.au/email/LIV-award-signature-outlook.jpg\" alt=\"LIV award\"/>\n  </p>\n  \n  <div id={{sum \"invoice-\" this.addhocFirm.id}} class=\"invoice\">\n    <p style=\"text-align: right;\">\n      <img src={{this.settify.logoURL}} alt=\"Settify\" style=\"max-height:120px;\" />\n    </p>\n    <table>\n      <tr>\n        <td>\n          To:\n        </td>\n        <td>\n          {{#if this.addhocFirm.billingEntity}}\n            {{this.addhocFirm.billingEntity}}\n          {{else}}\n            {{this.addhocFirm.name}}\n          {{/if}}\n          <br />\n          <AddressPrinter @address={{this.addhocFirm.address}} />\n        </td>\n        <td style=\"text-align: right;\">\n          {{this.settify.longName}} <br />\n          ABN {{this.settify.abn}} <br />\n          {{this.settify.websitePretty}} <br />\n          {{this.settify.contactEmail}}\n        </td>\n      </tr>\n    </table>\n    <p>\n  \n    </p>\n    <p style=\"text-align: center;\">\n      <b>TAX INVOICE No: <span id={{sum \"invoicenumber-\" this.addhocFirm.id}}>{{strip-firm-prefix this.addhocFirm.id}}-ROLLOUT</span></b> <br />\n      Issued: {{this.today}} <br />\n    </p>\n  \n    <table class=\"itemisedlist\">\n      <tr>\n        <th>\n          Date\n        </th>\n        <th>\n          Description\n        </th>\n        <th>\n          Amount\n        </th>\n        <th>\n          GST\n        </th>\n        <th>\n          Amount incl. GST\n        </th>\n      </tr>\n  \n      <tr>\n        <td>\n          {{this.today}}\n        </td>\n        <td>\n          Rollout and customisation fee\n        </td>\n        <td>\n          ${{decimal this.adhocAmount 2}}\n        </td>\n        <td>\n          ${{decimal this.adhocAmountGST 2}}\n        </td>\n        <td>\n          ${{decimal this.adhocAmountInclGST 2}}\n        </td>\n      </tr>\n  \n      <tr class=\"billing-totals\">\n        <td colspan=\"2\">\n          <b>Total</b>\n        </td>\n        <td>\n          ${{decimal this.adhocAmount 2}}\n        </td>\n        <td>\n          ${{decimal this.adhocAmountGST 2}}\n        </td>\n        <td>\n          ${{decimal this.adhocAmountInclGST 2}}\n        </td>\n      </tr>\n    </table>\n    <p>\n  \n    </p>\n    <p>\n      {{#if (gt this.adhocAmountInclGST 0)}}\n        <b>Please pay by EFT before {{this.paymentDeadline}}</b> <br />\n        Settify Pty Ltd <br />\n        BSB 062-692 <br />\n        Account number 2835 4333 <br />\n        Please quote your invoice number: {{strip-firm-prefix this.addhocFirm.id}}-ROLLOUT <br />\n      {{else}}\n        <b>No payment required.</b>\n      {{/if}}\n    </p>\n  </div>\n  \n  */\n  {\n    \"id\": \"yRVBqwMQ\",\n    \"block\": \"[[[10,2],[12],[1,\\\"\\\\n  \\\"],[8,[39,1],null,null,[[\\\"default\\\"],[[[[1,\\\"TO:\\\"]],[]]]]],[1,\\\"\\\\n\\\"],[42,[28,[37,3],[[28,[37,3],[[30,0,[\\\"addhocFirm\\\",\\\"invoice\\\",\\\"emails\\\"]]],null]],null],null,[[[1,\\\"    \\\"],[1,[30,1]],[1,\\\",\\\\n\\\"]],[1]],null],[1,\\\"  \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[8,[39,1],null,null,[[\\\"default\\\"],[[[[1,\\\"SUBJECT:\\\"]],[]]]]],[1,\\\"\\\\n  Settify and \\\"],[1,[30,0,[\\\"addhocFirm\\\",\\\"name\\\"]]],[1,\\\" - Rollout and Customisation Invoice\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[10,2],[12],[1,\\\"\\\\n  Dear \\\"],[1,[30,0,[\\\"addhocFirm\\\",\\\"invoice\\\",\\\"recipientName\\\"]]],[1,\\\",\\\\n\\\"],[13],[1,\\\"\\\\n\\\"],[10,2],[12],[1,\\\"\\\\n  I attach our invoice in respect of the rollout and customisation\\\\n  of Settify for \\\"],[1,[30,0,[\\\"addhocFirm\\\",\\\"name\\\"]]],[1,\\\".\\\\n\\\"],[13],[1,\\\"\\\\n\\\"],[10,2],[12],[1,\\\"\\\\n  Please let me know if you have any questions.\\\\n\\\"],[13],[1,\\\"\\\\n\\\"],[10,2],[12],[1,\\\"\\\\n  Thanks and kind regards,\\\\n\\\"],[13],[1,\\\"\\\\n\\\"],[10,2],[12],[1,\\\"\\\\n  Athol\\\\n\\\"],[13],[1,\\\"\\\\n\\\"],[10,2],[12],[1,\\\"\\\\n   \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"https://s3-ap-southeast-2.amazonaws.com/assets.settify.com.au/email/logo-email-outlook.jpg\\\"],[14,\\\"alt\\\",\\\"Settify email footer\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n   \\\"],[10,\\\"b\\\"],[12],[1,\\\"Athol Birtley\\\"],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n   Chief Technology Officer\\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n   0425 719 030\\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n   athol.birtley@settify.com.au\\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n   www.settify.com.au\\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n   \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"https://s3-ap-southeast-2.amazonaws.com/assets.settify.com.au/email/LIV-award-signature-outlook.jpg\\\"],[14,\\\"alt\\\",\\\"LIV award\\\"],[12],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[10,0],[15,1,[28,[37,7],[\\\"invoice-\\\",[30,0,[\\\"addhocFirm\\\",\\\"id\\\"]]],null]],[14,0,\\\"invoice\\\"],[12],[1,\\\"\\\\n  \\\"],[10,2],[14,5,\\\"text-align: right;\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"img\\\"],[15,\\\"src\\\",[30,0,[\\\"settify\\\",\\\"logoURL\\\"]]],[14,\\\"alt\\\",\\\"Settify\\\"],[14,5,\\\"max-height:120px;\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,\\\"table\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n        To:\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"addhocFirm\\\",\\\"billingEntity\\\"]],[[[1,\\\"          \\\"],[1,[30,0,[\\\"addhocFirm\\\",\\\"billingEntity\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[1,[30,0,[\\\"addhocFirm\\\",\\\"name\\\"]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[8,[39,12],null,[[\\\"@address\\\"],[[30,0,[\\\"addhocFirm\\\",\\\"address\\\"]]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"td\\\"],[14,5,\\\"text-align: right;\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[30,0,[\\\"settify\\\",\\\"longName\\\"]]],[1,\\\" \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n        ABN \\\"],[1,[30,0,[\\\"settify\\\",\\\"abn\\\"]]],[1,\\\" \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[1,[30,0,[\\\"settify\\\",\\\"websitePretty\\\"]]],[1,\\\" \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[1,[30,0,[\\\"settify\\\",\\\"contactEmail\\\"]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,2],[12],[1,\\\"\\\\n\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,2],[14,5,\\\"text-align: center;\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"b\\\"],[12],[1,\\\"TAX INVOICE No: \\\"],[10,1],[15,1,[28,[37,7],[\\\"invoicenumber-\\\",[30,0,[\\\"addhocFirm\\\",\\\"id\\\"]]],null]],[12],[1,[28,[35,14],[[30,0,[\\\"addhocFirm\\\",\\\"id\\\"]]],null]],[1,\\\"-ROLLOUT\\\"],[13],[13],[1,\\\" \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n    Issued: \\\"],[1,[30,0,[\\\"today\\\"]]],[1,\\\" \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,\\\"table\\\"],[14,0,\\\"itemisedlist\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"th\\\"],[12],[1,\\\"\\\\n        Date\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"th\\\"],[12],[1,\\\"\\\\n        Description\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"th\\\"],[12],[1,\\\"\\\\n        Amount\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"th\\\"],[12],[1,\\\"\\\\n        GST\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"th\\\"],[12],[1,\\\"\\\\n        Amount incl. GST\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[30,0,[\\\"today\\\"]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n        Rollout and customisation fee\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n        $\\\"],[1,[28,[35,16],[[30,0,[\\\"adhocAmount\\\"]],2],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n        $\\\"],[1,[28,[35,16],[[30,0,[\\\"adhocAmountGST\\\"]],2],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n        $\\\"],[1,[28,[35,16],[[30,0,[\\\"adhocAmountInclGST\\\"]],2],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,\\\"tr\\\"],[14,0,\\\"billing-totals\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"td\\\"],[14,\\\"colspan\\\",\\\"2\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"b\\\"],[12],[1,\\\"Total\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n        $\\\"],[1,[28,[35,16],[[30,0,[\\\"adhocAmount\\\"]],2],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n        $\\\"],[1,[28,[35,16],[[30,0,[\\\"adhocAmountGST\\\"]],2],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n        $\\\"],[1,[28,[35,16],[[30,0,[\\\"adhocAmountInclGST\\\"]],2],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,2],[12],[1,\\\"\\\\n\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,2],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,17],[[30,0,[\\\"adhocAmountInclGST\\\"]],0],null],[[[1,\\\"      \\\"],[10,\\\"b\\\"],[12],[1,\\\"Please pay by EFT before \\\"],[1,[30,0,[\\\"paymentDeadline\\\"]]],[13],[1,\\\" \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      Settify Pty Ltd \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      BSB 062-692 \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      Account number 2835 4333 \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      Please quote your invoice number: \\\"],[1,[28,[35,14],[[30,0,[\\\"addhocFirm\\\",\\\"id\\\"]]],null]],[1,\\\"-ROLLOUT \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,\\\"b\\\"],[12],[1,\\\"No payment required.\\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[\\\"email\\\"],false,[\\\"p\\\",\\\"b\\\",\\\"each\\\",\\\"-track-array\\\",\\\"br\\\",\\\"img\\\",\\\"div\\\",\\\"sum\\\",\\\"table\\\",\\\"tr\\\",\\\"td\\\",\\\"if\\\",\\\"address-printer\\\",\\\"span\\\",\\\"strip-firm-prefix\\\",\\\"th\\\",\\\"decimal\\\",\\\"gt\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/billing/rolloutinvoice.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/clients\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Client Record\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\" data-client-id={{this.model.client.clientID}}>\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn settify-for-everything\">\n        <br />\n        <SummaryHeader\n          @model={{this.model}}\n          @session={{this.session}}\n          @firm={{this.firm}}\n          @showDownloadStatus={{this.showDownloadStatus}}\n          @downloadInProgress={{this.downloadInProgress}}\n          @buildingAppendices={{this.buildingAppendices}}\n          @showLoadingSpinner={{this.showLoadingSpinner}}\n          @sentEmailSuccessfully={{this.sentEmailSuccessfully}}\n          @condensedOutputMode={{this.condensedOutputMode}}\n          @showDownloadAllOptions={{this.showDownloadAllOptions}}\n          @showKeepMeNotified={{this.showKeepMeNotified}}\n          @showHowToReadSummary={{this.showHowToReadSummary}}\n          @documentsSelected={{this.documentsSelected}}\n          @uploadedDocExtensions={{this.uploadedDocExtensions}}\n          @uploadedDocFileSize={{this.uploadedDocFileSize}}\n          @automationTemplates={{this.automationTemplates}}\n          @recipients={{this.recipients}}\n          @emailMessage={{this.emailMessage}}\n          @fileTypeExplanation={{this.fileTypeExplanation}}\n          @allowRemovalOfLawyerRecipients={{this.allowRemovalOfLawyerRecipients}}\n          @downloadNamesRequired={{this.downloadNamesRequired}}\n          @invalidEmailMessage={{this.invalidEmailMessage}}\n          @noDocumentSelected={{this.noDocumentSelected}}\n          @showFileProExampleImage={{this.showFileProExampleImage}}\n          @showInvitationEmailHistory={{this.showInvitationEmailHistory}}\n          @addAdditionalRecipient={{action \"addAdditionalRecipient\"}}\n          @downloadSelectedFiles={{action \"downloadSelectedFiles\"}}\n          @emailSelectedFiles={{action \"emailSelectedFiles\"}}\n          @updateRecipients={{action \"updateRecipients\"}}\n          @removeLawyer={{action \"removeLawyer\"}}\n          @toggleDownloadAllOption={{action \"toggleDownloadAllOption\"}}\n          @toggleHowToReadSummary={{action \"toggleHowToReadSummary\"}}\n          @toggleInvitationEmailHistory={{action \"toggleInvitationEmailHistory\"}}\n          @toggleKeepMeNotified={{action \"toggleKeepMeNotified\"}}\n          @toggleRecordLock={{action \"toggleRecordLock\"}}\n          @sendClientRecordToPMS={{action \"sendClientRecordToPMS\"}}\n        />\n  \n        {{#if (not-eq this.model.client.firmID \"999999999-SETTIFY\")}}\n          <div class=\"viewLawFirmClientNotice\">\n            <b>Viewing law firm client record:</b><br /><br />\n            <img src={{this.logoURL}} alt={{this.model.client.firmID}} />\n            <br />\n            <p>\n              <CheckBox @model={{this.showIdentifyingInformationPassword}} @class=\"toggle-box inline\">\n                <small>\n                  <i class=\"fal fa-eye\" />Click to show identifying information\n                </small>\n              </CheckBox>\n              <LiquidIf @predicate={{this.showIdentifyingInformationPassword}}>\n                <StopThinkWarning>\n                  Are you really sure that you need to view this client's identifying information?\n                </StopThinkWarning>\n                <SettifyTextline @id=\"view-password-input\" @placeholder=\"Enter your password\" @type=\"password\" @model={{this.password}} />\n                <br /><br />\n              </LiquidIf>\n              <CheckBox @model={{this.showDeleteRecordPassword}} @class=\"toggle-box inline\">\n                <small>\n                  <i class=\"fal fa-trash-alt\" />Click to permanently delete this client record\n                </small>\n              </CheckBox>\n              <LiquidIf @predicate={{this.showDeleteRecordPassword}}>\n                <p>\n                  <b>WARNING:</b>\n                  This cannot be undone! Only delete the record if you are absolutely sure this record should be deleted.\n                </p>\n                {{#if (and this.showIdentifyingInformationPassword this.password (not-eq this.model.client.firstName \"FIRST NAME\"))}}\n                  {{#if this.canRemoveFromFirmList}}\n                    <p>\n                      Would you like to remove this client record from the firms client list too?\n                      <span class=\"required-field-marker {{if this.removeFromFirmListAnswered 'required-field-provided'}}\"></span>\n                      <div class=\"display-flex\">\n                        <RadioButtons @text=\"Yes\" @value={{true}} @model={{this.removeFromFirmList}} />\n                        <RadioButtons @text=\"No\" @value={{false}} @model={{this.removeFromFirmList}} />\n                      </div>\n                    </p>\n                  {{/if}}\n                  <p>\n                    To delete this record, enter the password in the input field below\n                    <LoadingDisplay @loading={{this.deleteInProgress}} @success={{this.deleteSuccess}} @error={{this.deleteFailed}} @showError={{true}}>\n                      The record has been deleted. You may now close this window.\n                    </LoadingDisplay>\n                    <SettifyTextline @id=\"delete-password-input\" @placeholder=\"Enter your password\" @type=\"password\" @model={{this.deletepassword}} />\n                  </p>\n                {{else}}\n                  <p>\n                    You must view the identifying information for this client first, to make sure you're deleting the right client record.\n                  </p>\n                {{/if}}\n              </LiquidIf>\n            </p>\n          </div>\n        {{/if}}\n  \n        <p class=\"centertext\">\n          <CheckBox @model={{this.showTroubleshootingMetadata}} @class=\"toggle-box inline\">\n            <small><i class=\"fal fa-tools\" /> {{if this.showTroubleshootingMetadata \"Hide\" \"Show\"}} troubleshooting metadata</small>\n          </CheckBox>\n        </p>\n  \n        <LiquidIf @predicate={{this.showTroubleshootingMetadata}}>\n          <h3>Troubleshooting metadata</h3>\n          <p>\n            <small><b>NOTE:</b> If you need to see identifying information, like email addresses, use the \"Click to show identifying information\" button above.</small>\n          </p>\n          <p>\n            <small>\n              Client ID:\n              {{this.model.client.clientID}}\n              <br />\n              Firm ID:\n              {{this.model.client.firmID}}\n              <br />\n              Practice area:\n              {{or this.model.client.practiceArea \"Family\"}}\n              <br />\n              Referral code:\n              {{or this.model.metadata.referral \"not specified\"}}\n              <br />\n            </small>\n          </p>\n          <p>\n            <small>\n              Invited by law firm?\n              {{this.model.client.invitedByLawFirm}}\n              <br />\n              Appointment date:\n              {{or this.model.client.firmAppointmentDate \"–\"}}\n              <br />\n              Appointment time (firm local time):\n              {{or this.model.client.firmAppointmentTime \"–\"}}\n              <br />\n              Allocated lawyer:\n              {{or this.model.client.firmPartnerName \"–\"}}\n              <br />\n            </small>\n          </p>\n          <p>\n            <small>\n              Received the 'resume link' email?\n              {{this.model.client.hasReceivedResumeLinkEmail}}\n              <br />\n              Received the 'pathway' email?\n              {{this.model.client.hasReceivedPathwayEmail}}\n              <br />\n              Received an invitation (appointment confirmation) email?\n              {{this.model.client.hasReceivedAppointmentEmail}}\n              <br />\n              Unsubscribed from reminder emails:\n              {{#if this.model.metadata.unsubscribed}}\n                {{pretty-date this.model.metadata.unsubscribed includeTime=true}}\n                ({{this.model.metadata.unsubscribed}}\n                GMT)\n              {{else}}\n                not yet unsubscribed (<LinkTo @route=\"unsubscribe\" @query={{hash clientID=this.model.client.clientID}} target=\"_blank\">click here to unsubscribe them\n                  <i class=\"fal fa-external-link-alt\" /></LinkTo>)\n              {{/if}}\n              <br />\n              <b>Resume link for this client:</b>\n              {{#each this.model.metadata.firm.practiceAreas as |settings|}}\n                {{#if (or (eq settings.practiceArea this.model.client.practiceArea) (and (not this.model.client.practiceArea) (eq settings.practiceArea \"Family\")))}}\n                  {{settings.settifyURL}}/?clientID={{this.model.client.clientID}}\n                  <br />\n                {{/if}}\n              {{/each}}\n            </small>\n          </p>\n          <p>\n            <small>\n              {{#if this.model.client.invitedByLawFirm}}\n                Invitation sent:\n              {{else}}\n                Arrived at Settify landing page:\n              {{/if}}\n              {{pretty-date this.model.metadata.becameLead includeTime=true}}\n              ({{this.model.metadata.becameLead}}\n              GMT)\n              <br />\n  \n              Requested an appointment yet?\n              {{this.model.client.bookedAppointment}}\n              <br />\n              {{#if this.model.metadata.referredToFirm}}\n                Referred to firm on:\n                {{pretty-date this.model.metadata.referredToFirm includeTime=true}}\n                ({{this.model.metadata.referredToFirm}}\n                GMT)\n                <br />\n              {{/if}}\n              Furthest page reached:\n              {{or this.model.client.furthestPage \"–\"}}\n              <br />\n              Commenced detailed induction?\n              {{this.model.client.detailedInductionCommenced}}\n              <br />\n              Completed detailed induction?\n              {{this.model.client.detailedInductionComplete}}\n              <br />\n              Last modified date:\n              {{this.lastModifiedString}}\n              <br />\n            </small>\n          </p>\n          <p>\n            <small>\n              Conflict check result:\n              {{or this.model.client.conflictCheck \"No conflict check performed yet\"}}\n              <br />\n              Conflict check timestamp (in firm user's local timezone):\n              {{or this.model.client.conflictCheckTimestamp \"No conflict check performed yet\"}}\n              <br />\n            </small>\n            {{#if this.model.client.conflictCheck}}\n              <small>\n                Did the firm make a mistake?\n                <CheckBox @model={{this.showClearConflictInformation}} @class=\"toggle-box inline\">\n                  <i class=\"fal fa-times-circle\" />Click here to reset the conflict check state.\n                </CheckBox>\n              </small>\n            {{/if}}\n            <LiquidIf @predicate={{this.showClearConflictInformation}}>\n              <LoadingDisplay @loading={{this.clearConflictInProgress}} @success={{this.clearConflictSuccess}} @error={{this.clearConflictFailed}} @showError={{true}}>\n                The conflict check status has been reset. Now, the law firm can run the conflict check again, and click the right button. Here is a link to go straight to the\n                conflict check page for this client:\n                {{#each this.model.metadata.firm.practiceAreas as |settings|}}\n                  {{#if (or (eq settings.practiceArea this.model.client.practiceArea) (and (not this.model.client.practiceArea) (eq settings.practiceArea \"Family\")))}}\n                    {{settings.settifyURL}}/admin/reportconflict?clientID={{this.model.client.clientID}}&conflict=check\n                    <br />\n                  {{/if}}\n                {{/each}}\n              </LoadingDisplay>\n              {{#unless this.clearConflictSuccess}}\n                Are you sure?\n                <br />\n                <a class=\"clickable\" {{action \"clearConflictInformation\"}}>Yes</a>\n                <br />\n                <CheckBox @model={{this.showClearConflictInformation}} @class=\"toggle-box inline\">\n                  No\n                </CheckBox>\n              {{/unless}}\n            </LiquidIf>\n          </p>\n          <p>\n            <small>\n              Billing type:\n              {{or this.model.metadata.invoiceType \"No billing information set yet\"}}\n              <br />\n            </small>\n          </p>\n          <p>\n            <small>\n              Is this record password protected?\n              {{this.model.client.passwordProtected}}\n              {{#if (and this.model.client.passwordProtected (not this.model.client.creatingAccount) (not this.model.client.firstLogin))}}\n                (and the account creation process seems to have been completed successfully)\n              {{/if}}\n              <br />\n              <LiquidIf @predicate={{this.model.client.passwordProtected}}>\n                {{#if this.model.client.creatingAccount}}\n                  <b>NOTE:</b>\n                  the client has not yet verified their email address. The verification email should have been sent to\n                  <b>{{this.model.client.email}}</b>.\n                  {{#unless this.password}}\n                    (If the email address isn't showing, you'll need to show the identifying information, using the link at the top of the page.)\n                  {{/unless}}\n                  Verification links only last for 30 minutes or so. However, if they return to Settify (using the resume link above), they should be able to get a new link sent to\n                  them.\n                  <br />\n                  <br />\n                  <b>Did they use the wrong email address when adding a password?</b>\n                  If they started the password protection process using the wrong email address, then there's no way they can fix it from their end. But, we can completely \"clear\"\n                  their password protection status, allowing them to use the resume link (above) and add a password using their correct email address.\n                  <CheckBox @model={{this.showClearPasswordInformation}} @class=\"toggle-box inline\">\n                    <i class=\"fal fa-times-circle\" />Click here to clear the password protection status.\n                  </CheckBox>\n                  <LiquidIf @predicate={{or this.showClearPasswordInformation this.clearPasswordInProgress this.clearPasswordSuccess this.clearPasswordFailed}}>\n                    Are you sure?\n                    <br />\n                    <LoadingDisplay @loading={{this.clearPasswordInProgress}} @success={{this.clearPasswordSuccess}} @error={{this.clearPasswordFailed}} @showError={{true}}>\n                      The password protection status has been reset. Now, the client can use the resume link (above) to go back and set a password using their correct email address.\n                    </LoadingDisplay>\n                    {{#unless this.clearPasswordSuccess}}\n                      <a class=\"clickable\" {{action \"clearPasswordInformation\"}}>Yes</a>\n                      <br />\n                      <CheckBox @model={{this.showClearPasswordInformation}} @class=\"toggle-box inline\">\n                        No\n                      </CheckBox>\n                    {{/unless}}\n                  </LiquidIf>\n                  <b>Is the email address correct, but verification hasn't worked?</b>\n                  Sometimes, this happens. Usually it's because they \"never receive\" the verification email with the link. Rather than messing about with spam folders, etc, it's\n                  easiest to just verify the account at our end.\n                  <CheckBox @model={{this.showVerifyEmailAddress}} @class=\"toggle-box inline\">\n                    <i class=\"fal fa-check-circle\" />Click here to mark the account as verified.\n                  </CheckBox>\n                  <LiquidIf @predicate={{or this.showVerifyEmailAddress this.verifyEmailInProgress this.verifyEmailSuccess this.verifyEmailFailed}}>\n                    Are you sure?\n                    <br />\n                    <LoadingDisplay @loading={{this.verifyEmailInProgress}} @success={{this.verifyEmailSuccess}} @error={{this.verifyEmailFailed}} @showError={{true}}>\n                      The account has been verified. The user should now be able to log in with the email\n                      {{this.model.client.email}}\n                      and the password they originally chose.\n                    </LoadingDisplay>\n                    {{#unless this.verifyEmailSuccess}}\n                      <a class=\"clickable\" {{action \"verifyEmailAddress\"}}>Yes</a>\n                      <br />\n                      <CheckBox @model={{this.showVerifyEmailAddress}} @class=\"toggle-box inline\">\n                        No\n                      </CheckBox>\n                    {{/unless}}\n                  </LiquidIf>\n                {{/if}}\n  \n                {{#if this.model.client.firstLogin}}\n                  <b>NOTE:</b>\n                  the client has verified their email address but has not yet logged in.\n                  <br />\n                {{/if}}\n  \n                {{#if this.model.client.passwordProtected}}\n                  {{#if this.password}}\n                    <a class=\"clickable\" {{action \"getCognitoInformation\"}}><i class=\"fal fa-user\" />Click here to view the account status in AWS Cognito.</a>\n                  {{else}}\n                    <b>AWS Cognito:</b>\n                    If you provide the password to view the sensitive information, you will be able to access the Cognito information for this client's account.\n                  {{/if}}\n                  (Cognito is the service that we use to handle usernames and passwords, and may shed additional light on the matter.)\n                  <br />\n  \n                  <LoadingDisplay @loading={{this.loadingCognitoData}} @success={{this.cognitoDataSuccess}} @error={{this.cognitoDataFailure}} @showError={{true}}>\n                    <small>\n                      {{#if this.cognitoDataSuccess.differentClientID}}\n                        <b>Mismatch:</b>\n                        the Cognito user for\n                        {{this.model.client.email}}\n                        has a different clientID\n                      {{else if this.cognitoDataSuccess.noMatches}}\n                        <b>No matches:</b>\n                        for some reason, there is no Cognito entry for\n                        {{this.model.client.email}}\n                      {{else}}\n                        Username:\n                        {{this.cognitoDataSuccess.Username}}\n                        (<b>this is what they must use to log in, and it is case sensitive</b>)\n                        <br />\n                        Enabled:\n                        {{this.cognitoDataSuccess.Enabled}}\n                        <br />\n                        UserStatus:\n                        {{this.cognitoDataSuccess.UserStatus}}\n                        <br />\n                        UserCreateDate:\n                        {{pretty-date this.cognitoDataSuccess.UserCreateDate includeTime=true}}\n                        <br />\n                        UserLastModifiedDate:\n                        {{pretty-date this.cognitoDataSuccess.UserLastModifiedDate includeTime=true}}\n                        <br />\n                        {{#each this.cognitoDataSuccess.Attributes as |a|}}\n                          {{a.Name}}:\n                          {{a.Value}}\n                          <br />\n                        {{/each}}\n                      {{/if}}\n                    </small>\n                  </LoadingDisplay>\n                {{/if}}\n              </LiquidIf>\n            </small>\n          </p>\n        </LiquidIf>\n  \n        <CatalyticFeedbackWidget\n          @client={{this.model.client}}\n          @feedbackType=\"lawyer\"\n          @widgetType=\"box\"\n          @surveyLocation=\"clientBrief\"\n          @hideIfProvided={{true}}\n          @ignoreDropdown={{true}}\n        />\n  \n        {{! TODO link to Family admin site, or Wills admin site, as appropriate }}\n        {{#if (and this.model.client.practiceArea (not-eq this.model.client.practiceArea \"Family\"))}}\n          <h3>Where is the full client brief?</h3>\n          <p>\n            This is a\n            {{this.model.client.practiceArea}}\n            record. Viewing the full brief for a\n            {{this.model.client.practiceArea}}\n            record is not currently supported (only family law briefs are supported). This is because, presumably, we only need to be able to log in and download a PDF brief for\n            Family Law clients, as they are the ones who get conflicted out.\n          </p>\n          <p>\n            If it turns out that we need to have this ability for\n            {{this.model.client.practiceArea}}\n            as well, then we can cross that bridge at the appropriate time. (Usually, you can just log into the firm's admin page, and download the PDF from there.)\n          </p>\n          <p>\n            Basic contact details are set out below, in case they are helpful.\n          </p>\n          <div id=\"settify-summary-content\">\n            <div class=\"condensed-summary\">\n              <table class=\"settify-summary\">\n                <thead>\n                  <tr>\n                    <th>\n                      {{! Empty header cell for the first column }}\n                    </th>\n                    <th scope=\"col\">\n                      {{this.model.client.title}}\n                      <span class=\"settify-sensitive\">{{this.model.client.firstName}}</span>\n                      <span class=\"settify-sensitive\">{{this.model.client.middleName}}</span>\n                      <span class=\"settify-sensitive\">{{this.model.client.surname}}</span>\n                      {{#if (eq this.model.client.practiceArea \"Family\")}}\n                        <span class=\"font-normal\">(client)</span>\n                      {{/if}}\n                    </th>\n                    {{#if this.showPartnerColumn}}\n                      <th scope=\"col\">\n                        {{this.model.client.partnerTitle}}\n                        <span class=\"settify-sensitive\">{{this.model.client.partnerFirstName}}</span>\n                        <span class=\"settify-sensitive\">{{this.model.client.partnerMiddleName}}</span>\n                        <span class=\"settify-sensitive\">{{this.model.client.partnerSurname}}</span>\n                      </th>\n                    {{/if}}\n                  </tr>\n                </thead>\n                <tbody>\n                  {{#each this.tableBodyRows as |row|}}\n                    <tr>\n                      <td>{{row.title}}</td>\n                      <td>\n                        {{#if row.user}}\n                          <span class=\"settify-sensitive\">{{row.user}}</span>\n                        {{else}}\n                          <Admin::Nil />\n                        {{/if}}\n                      </td>\n                      {{#if this.showPartnerColumn}}\n                        <td>\n                          {{#if row.spouse}}\n                            <span class=\"settify-sensitive\">{{row.spouse}}</span>\n                          {{else}}\n                            <Admin::Nil />\n                          {{/if}}\n                        </td>\n                      {{/if}}\n                    </tr>\n                  {{/each}}\n                </tbody>\n              </table>\n            </div>\n          </div>\n        {{else}}\n          {{#if this.model.client.isLegacyRecord}}\n            <ClientSummaryForLegacyData @clientRecord={{this.model.client}} />\n          {{else}}\n            <SummaryPrinter @model={{this.model}} @adminMode={{this.adminMode}} />\n          {{/if}}\n  \n          {{#if this.loadingClient}}\n            <div class=\"loading-pane\">\n              Loading\n              {{this.model.client.displayName}}'s data\n              <LoadingSpinner />\n            </div>\n          {{/if}}\n        {{/if}}\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"gsC2X+xr\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Client Record\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[15,\\\"data-client-id\\\",[30,0,[\\\"model\\\",\\\"client\\\",\\\"clientID\\\"]]],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn settify-for-everything\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[8,[39,3],null,[[\\\"@model\\\",\\\"@session\\\",\\\"@firm\\\",\\\"@showDownloadStatus\\\",\\\"@downloadInProgress\\\",\\\"@buildingAppendices\\\",\\\"@showLoadingSpinner\\\",\\\"@sentEmailSuccessfully\\\",\\\"@condensedOutputMode\\\",\\\"@showDownloadAllOptions\\\",\\\"@showKeepMeNotified\\\",\\\"@showHowToReadSummary\\\",\\\"@documentsSelected\\\",\\\"@uploadedDocExtensions\\\",\\\"@uploadedDocFileSize\\\",\\\"@automationTemplates\\\",\\\"@recipients\\\",\\\"@emailMessage\\\",\\\"@fileTypeExplanation\\\",\\\"@allowRemovalOfLawyerRecipients\\\",\\\"@downloadNamesRequired\\\",\\\"@invalidEmailMessage\\\",\\\"@noDocumentSelected\\\",\\\"@showFileProExampleImage\\\",\\\"@showInvitationEmailHistory\\\",\\\"@addAdditionalRecipient\\\",\\\"@downloadSelectedFiles\\\",\\\"@emailSelectedFiles\\\",\\\"@updateRecipients\\\",\\\"@removeLawyer\\\",\\\"@toggleDownloadAllOption\\\",\\\"@toggleHowToReadSummary\\\",\\\"@toggleInvitationEmailHistory\\\",\\\"@toggleKeepMeNotified\\\",\\\"@toggleRecordLock\\\",\\\"@sendClientRecordToPMS\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"session\\\"]],[30,0,[\\\"firm\\\"]],[30,0,[\\\"showDownloadStatus\\\"]],[30,0,[\\\"downloadInProgress\\\"]],[30,0,[\\\"buildingAppendices\\\"]],[30,0,[\\\"showLoadingSpinner\\\"]],[30,0,[\\\"sentEmailSuccessfully\\\"]],[30,0,[\\\"condensedOutputMode\\\"]],[30,0,[\\\"showDownloadAllOptions\\\"]],[30,0,[\\\"showKeepMeNotified\\\"]],[30,0,[\\\"showHowToReadSummary\\\"]],[30,0,[\\\"documentsSelected\\\"]],[30,0,[\\\"uploadedDocExtensions\\\"]],[30,0,[\\\"uploadedDocFileSize\\\"]],[30,0,[\\\"automationTemplates\\\"]],[30,0,[\\\"recipients\\\"]],[30,0,[\\\"emailMessage\\\"]],[30,0,[\\\"fileTypeExplanation\\\"]],[30,0,[\\\"allowRemovalOfLawyerRecipients\\\"]],[30,0,[\\\"downloadNamesRequired\\\"]],[30,0,[\\\"invalidEmailMessage\\\"]],[30,0,[\\\"noDocumentSelected\\\"]],[30,0,[\\\"showFileProExampleImage\\\"]],[30,0,[\\\"showInvitationEmailHistory\\\"]],[28,[37,4],[[30,0],\\\"addAdditionalRecipient\\\"],null],[28,[37,4],[[30,0],\\\"downloadSelectedFiles\\\"],null],[28,[37,4],[[30,0],\\\"emailSelectedFiles\\\"],null],[28,[37,4],[[30,0],\\\"updateRecipients\\\"],null],[28,[37,4],[[30,0],\\\"removeLawyer\\\"],null],[28,[37,4],[[30,0],\\\"toggleDownloadAllOption\\\"],null],[28,[37,4],[[30,0],\\\"toggleHowToReadSummary\\\"],null],[28,[37,4],[[30,0],\\\"toggleInvitationEmailHistory\\\"],null],[28,[37,4],[[30,0],\\\"toggleKeepMeNotified\\\"],null],[28,[37,4],[[30,0],\\\"toggleRecordLock\\\"],null],[28,[37,4],[[30,0],\\\"sendClientRecordToPMS\\\"],null]]],null],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,6],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"firmID\\\"]],\\\"999999999-SETTIFY\\\"],null],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"viewLawFirmClientNotice\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"b\\\"],[12],[1,\\\"Viewing law firm client record:\\\"],[13],[10,\\\"br\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[10,\\\"img\\\"],[15,\\\"src\\\",[30,0,[\\\"logoURL\\\"]]],[15,\\\"alt\\\",[30,0,[\\\"model\\\",\\\"client\\\",\\\"firmID\\\"]]],[12],[13],[1,\\\"\\\\n          \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[8,[39,10],null,[[\\\"@model\\\",\\\"@class\\\"],[[30,0,[\\\"showIdentifyingInformationPassword\\\"]],\\\"toggle-box inline\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-eye\\\"],[12],[13],[1,\\\"Click to show identifying information\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showIdentifyingInformationPassword\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[39,14],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                Are you really sure that you need to view this client's identifying information?\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n              \\\"],[8,[39,15],null,[[\\\"@id\\\",\\\"@placeholder\\\",\\\"@type\\\",\\\"@model\\\"],[\\\"view-password-input\\\",\\\"Enter your password\\\",\\\"password\\\",[30,0,[\\\"password\\\"]]]],null],[1,\\\"\\\\n              \\\"],[10,\\\"br\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[8,[39,10],null,[[\\\"@model\\\",\\\"@class\\\"],[[30,0,[\\\"showDeleteRecordPassword\\\"]],\\\"toggle-box inline\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-trash-alt\\\"],[12],[13],[1,\\\"Click to permanently delete this client record\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showDeleteRecordPassword\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,2],[12],[1,\\\"\\\\n                \\\"],[10,\\\"b\\\"],[12],[1,\\\"WARNING:\\\"],[13],[1,\\\"\\\\n                This cannot be undone! Only delete the record if you are absolutely sure this record should be deleted.\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,16],[[30,0,[\\\"showIdentifyingInformationPassword\\\"]],[30,0,[\\\"password\\\"]],[28,[37,6],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"firstName\\\"]],\\\"FIRST NAME\\\"],null]],null],[[[41,[30,0,[\\\"canRemoveFromFirmList\\\"]],[[[1,\\\"                  \\\"],[10,2],[12],[1,\\\"\\\\n                    Would you like to remove this client record from the firms client list too?\\\\n                    \\\"],[10,1],[15,0,[29,[\\\"required-field-marker \\\",[52,[30,0,[\\\"removeFromFirmListAnswered\\\"]],\\\"required-field-provided\\\"]]]],[12],[13],[1,\\\"\\\\n                    \\\"],[10,0],[14,0,\\\"display-flex\\\"],[12],[1,\\\"\\\\n                      \\\"],[8,[39,18],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\"],[\\\"Yes\\\",true,[30,0,[\\\"removeFromFirmList\\\"]]]],null],[1,\\\"\\\\n                      \\\"],[8,[39,18],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\"],[\\\"No\\\",false,[30,0,[\\\"removeFromFirmList\\\"]]]],null],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                \\\"],[10,2],[12],[1,\\\"\\\\n                  To delete this record, enter the password in the input field below\\\\n                  \\\"],[8,[39,19],null,[[\\\"@loading\\\",\\\"@success\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,0,[\\\"deleteInProgress\\\"]],[30,0,[\\\"deleteSuccess\\\"]],[30,0,[\\\"deleteFailed\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    The record has been deleted. You may now close this window.\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[8,[39,15],null,[[\\\"@id\\\",\\\"@placeholder\\\",\\\"@type\\\",\\\"@model\\\"],[\\\"delete-password-input\\\",\\\"Enter your password\\\",\\\"password\\\",[30,0,[\\\"deletepassword\\\"]]]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                \\\"],[10,2],[12],[1,\\\"\\\\n                  You must view the identifying information for this client first, to make sure you're deleting the right client record.\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n      \\\"],[10,2],[14,0,\\\"centertext\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,10],null,[[\\\"@model\\\",\\\"@class\\\"],[[30,0,[\\\"showTroubleshootingMetadata\\\"]],\\\"toggle-box inline\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,\\\"small\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-tools\\\"],[12],[13],[1,\\\" \\\"],[1,[52,[30,0,[\\\"showTroubleshootingMetadata\\\"]],\\\"Hide\\\",\\\"Show\\\"]],[1,\\\" troubleshooting metadata\\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showTroubleshootingMetadata\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,\\\"h3\\\"],[12],[1,\\\"Troubleshooting metadata\\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[10,\\\"small\\\"],[12],[10,\\\"b\\\"],[12],[1,\\\"NOTE:\\\"],[13],[1,\\\" If you need to see identifying information, like email addresses, use the \\\\\\\"Click to show identifying information\\\\\\\" button above.\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n            Client ID:\\\\n            \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"clientID\\\"]]],[1,\\\"\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n            Firm ID:\\\\n            \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"firmID\\\"]]],[1,\\\"\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n            Practice area:\\\\n            \\\"],[1,[28,[35,21],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"practiceArea\\\"]],\\\"Family\\\"],null]],[1,\\\"\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n            Referral code:\\\\n            \\\"],[1,[28,[35,21],[[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"referral\\\"]],\\\"not specified\\\"],null]],[1,\\\"\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n            Invited by law firm?\\\\n            \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"invitedByLawFirm\\\"]]],[1,\\\"\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n            Appointment date:\\\\n            \\\"],[1,[28,[35,21],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"firmAppointmentDate\\\"]],\\\"–\\\"],null]],[1,\\\"\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n            Appointment time (firm local time):\\\\n            \\\"],[1,[28,[35,21],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"firmAppointmentTime\\\"]],\\\"–\\\"],null]],[1,\\\"\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n            Allocated lawyer:\\\\n            \\\"],[1,[28,[35,21],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"firmPartnerName\\\"]],\\\"–\\\"],null]],[1,\\\"\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n            Received the 'resume link' email?\\\\n            \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"hasReceivedResumeLinkEmail\\\"]]],[1,\\\"\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n            Received the 'pathway' email?\\\\n            \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"hasReceivedPathwayEmail\\\"]]],[1,\\\"\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n            Received an invitation (appointment confirmation) email?\\\\n            \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"hasReceivedAppointmentEmail\\\"]]],[1,\\\"\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n            Unsubscribed from reminder emails:\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"unsubscribed\\\"]],[[[1,\\\"              \\\"],[1,[28,[35,22],[[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"unsubscribed\\\"]]],[[\\\"includeTime\\\"],[true]]]],[1,\\\"\\\\n              (\\\"],[1,[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"unsubscribed\\\"]]],[1,\\\"\\\\n              GMT)\\\\n\\\"]],[]],[[[1,\\\"              not yet unsubscribed (\\\"],[8,[39,23],[[24,\\\"target\\\",\\\"_blank\\\"]],[[\\\"@route\\\",\\\"@query\\\"],[\\\"unsubscribe\\\",[28,[37,24],null,[[\\\"clientID\\\"],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"clientID\\\"]]]]]]],[[\\\"default\\\"],[[[[1,\\\"click here to unsubscribe them\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-external-link-alt\\\"],[12],[13]],[]]]]],[1,\\\")\\\\n\\\"]],[]]],[1,\\\"            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n            \\\"],[10,\\\"b\\\"],[12],[1,\\\"Resume link for this client:\\\"],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,26],[[28,[37,26],[[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"firm\\\",\\\"practiceAreas\\\"]]],null]],null],null,[[[41,[28,[37,21],[[28,[37,27],[[30,1,[\\\"practiceArea\\\"]],[30,0,[\\\"model\\\",\\\"client\\\",\\\"practiceArea\\\"]]],null],[28,[37,16],[[28,[37,28],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"practiceArea\\\"]]],null],[28,[37,27],[[30,1,[\\\"practiceArea\\\"]],\\\"Family\\\"],null]],null]],null],[[[1,\\\"                \\\"],[1,[30,1,[\\\"settifyURL\\\"]]],[1,\\\"/?clientID=\\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"clientID\\\"]]],[1,\\\"\\\\n                \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null]],[1]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"invitedByLawFirm\\\"]],[[[1,\\\"              Invitation sent:\\\\n\\\"]],[]],[[[1,\\\"              Arrived at Settify landing page:\\\\n\\\"]],[]]],[1,\\\"            \\\"],[1,[28,[35,22],[[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"becameLead\\\"]]],[[\\\"includeTime\\\"],[true]]]],[1,\\\"\\\\n            (\\\"],[1,[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"becameLead\\\"]]],[1,\\\"\\\\n            GMT)\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\\n            Requested an appointment yet?\\\\n            \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"bookedAppointment\\\"]]],[1,\\\"\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"referredToFirm\\\"]],[[[1,\\\"              Referred to firm on:\\\\n              \\\"],[1,[28,[35,22],[[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"referredToFirm\\\"]]],[[\\\"includeTime\\\"],[true]]]],[1,\\\"\\\\n              (\\\"],[1,[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"referredToFirm\\\"]]],[1,\\\"\\\\n              GMT)\\\\n              \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            Furthest page reached:\\\\n            \\\"],[1,[28,[35,21],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"furthestPage\\\"]],\\\"–\\\"],null]],[1,\\\"\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n            Commenced detailed induction?\\\\n            \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"detailedInductionCommenced\\\"]]],[1,\\\"\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n            Completed detailed induction?\\\\n            \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"detailedInductionComplete\\\"]]],[1,\\\"\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n            Last modified date:\\\\n            \\\"],[1,[30,0,[\\\"lastModifiedString\\\"]]],[1,\\\"\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n            Conflict check result:\\\\n            \\\"],[1,[28,[35,21],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"conflictCheck\\\"]],\\\"No conflict check performed yet\\\"],null]],[1,\\\"\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n            Conflict check timestamp (in firm user's local timezone):\\\\n            \\\"],[1,[28,[35,21],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"conflictCheckTimestamp\\\"]],\\\"No conflict check performed yet\\\"],null]],[1,\\\"\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"conflictCheck\\\"]],[[[1,\\\"            \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n              Did the firm make a mistake?\\\\n              \\\"],[8,[39,10],null,[[\\\"@model\\\",\\\"@class\\\"],[[30,0,[\\\"showClearConflictInformation\\\"]],\\\"toggle-box inline\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-times-circle\\\"],[12],[13],[1,\\\"Click here to reset the conflict check state.\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showClearConflictInformation\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,19],null,[[\\\"@loading\\\",\\\"@success\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,0,[\\\"clearConflictInProgress\\\"]],[30,0,[\\\"clearConflictSuccess\\\"]],[30,0,[\\\"clearConflictFailed\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              The conflict check status has been reset. Now, the law firm can run the conflict check again, and click the right button. Here is a link to go straight to the\\\\n              conflict check page for this client:\\\\n\\\"],[42,[28,[37,26],[[28,[37,26],[[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"firm\\\",\\\"practiceAreas\\\"]]],null]],null],null,[[[41,[28,[37,21],[[28,[37,27],[[30,2,[\\\"practiceArea\\\"]],[30,0,[\\\"model\\\",\\\"client\\\",\\\"practiceArea\\\"]]],null],[28,[37,16],[[28,[37,28],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"practiceArea\\\"]]],null],[28,[37,27],[[30,2,[\\\"practiceArea\\\"]],\\\"Family\\\"],null]],null]],null],[[[1,\\\"                  \\\"],[1,[30,2,[\\\"settifyURL\\\"]]],[1,\\\"/admin/reportconflict?clientID=\\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"clientID\\\"]]],[1,\\\"&conflict=check\\\\n                  \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null]],[2]],null],[1,\\\"            \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"clearConflictSuccess\\\"]]],[[[1,\\\"              Are you sure?\\\\n              \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,4],[[30,0],\\\"clearConflictInformation\\\"],null],[12],[1,\\\"Yes\\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[8,[39,10],null,[[\\\"@model\\\",\\\"@class\\\"],[[30,0,[\\\"showClearConflictInformation\\\"]],\\\"toggle-box inline\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                No\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n            Billing type:\\\\n            \\\"],[1,[28,[35,21],[[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"invoiceType\\\"]],\\\"No billing information set yet\\\"],null]],[1,\\\"\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n            Is this record password protected?\\\\n            \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"passwordProtected\\\"]]],[1,\\\"\\\\n\\\"],[41,[28,[37,16],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"passwordProtected\\\"]],[28,[37,28],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"creatingAccount\\\"]]],null],[28,[37,28],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"firstLogin\\\"]]],null]],null],[[[1,\\\"              (and the account creation process seems to have been completed successfully)\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n            \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"passwordProtected\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"creatingAccount\\\"]],[[[1,\\\"                \\\"],[10,\\\"b\\\"],[12],[1,\\\"NOTE:\\\"],[13],[1,\\\"\\\\n                the client has not yet verified their email address. The verification email should have been sent to\\\\n                \\\"],[10,\\\"b\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"email\\\"]]],[13],[1,\\\".\\\\n\\\"],[41,[51,[30,0,[\\\"password\\\"]]],[[[1,\\\"                  (If the email address isn't showing, you'll need to show the identifying information, using the link at the top of the page.)\\\\n\\\"]],[]],null],[1,\\\"                Verification links only last for 30 minutes or so. However, if they return to Settify (using the resume link above), they should be able to get a new link sent to\\\\n                them.\\\\n                \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                \\\"],[10,\\\"b\\\"],[12],[1,\\\"Did they use the wrong email address when adding a password?\\\"],[13],[1,\\\"\\\\n                If they started the password protection process using the wrong email address, then there's no way they can fix it from their end. But, we can completely \\\\\\\"clear\\\\\\\"\\\\n                their password protection status, allowing them to use the resume link (above) and add a password using their correct email address.\\\\n                \\\"],[8,[39,10],null,[[\\\"@model\\\",\\\"@class\\\"],[[30,0,[\\\"showClearPasswordInformation\\\"]],\\\"toggle-box inline\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-times-circle\\\"],[12],[13],[1,\\\"Click here to clear the password protection status.\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[28,[37,21],[[30,0,[\\\"showClearPasswordInformation\\\"]],[30,0,[\\\"clearPasswordInProgress\\\"]],[30,0,[\\\"clearPasswordSuccess\\\"]],[30,0,[\\\"clearPasswordFailed\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  Are you sure?\\\\n                  \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                  \\\"],[8,[39,19],null,[[\\\"@loading\\\",\\\"@success\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,0,[\\\"clearPasswordInProgress\\\"]],[30,0,[\\\"clearPasswordSuccess\\\"]],[30,0,[\\\"clearPasswordFailed\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    The password protection status has been reset. Now, the client can use the resume link (above) to go back and set a password using their correct email address.\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"clearPasswordSuccess\\\"]]],[[[1,\\\"                    \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,4],[[30,0],\\\"clearPasswordInformation\\\"],null],[12],[1,\\\"Yes\\\"],[13],[1,\\\"\\\\n                    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                    \\\"],[8,[39,10],null,[[\\\"@model\\\",\\\"@class\\\"],[[30,0,[\\\"showClearPasswordInformation\\\"]],\\\"toggle-box inline\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                      No\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[10,\\\"b\\\"],[12],[1,\\\"Is the email address correct, but verification hasn't worked?\\\"],[13],[1,\\\"\\\\n                Sometimes, this happens. Usually it's because they \\\\\\\"never receive\\\\\\\" the verification email with the link. Rather than messing about with spam folders, etc, it's\\\\n                easiest to just verify the account at our end.\\\\n                \\\"],[8,[39,10],null,[[\\\"@model\\\",\\\"@class\\\"],[[30,0,[\\\"showVerifyEmailAddress\\\"]],\\\"toggle-box inline\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"Click here to mark the account as verified.\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[28,[37,21],[[30,0,[\\\"showVerifyEmailAddress\\\"]],[30,0,[\\\"verifyEmailInProgress\\\"]],[30,0,[\\\"verifyEmailSuccess\\\"]],[30,0,[\\\"verifyEmailFailed\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  Are you sure?\\\\n                  \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                  \\\"],[8,[39,19],null,[[\\\"@loading\\\",\\\"@success\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,0,[\\\"verifyEmailInProgress\\\"]],[30,0,[\\\"verifyEmailSuccess\\\"]],[30,0,[\\\"verifyEmailFailed\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    The account has been verified. The user should now be able to log in with the email\\\\n                    \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"email\\\"]]],[1,\\\"\\\\n                    and the password they originally chose.\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"verifyEmailSuccess\\\"]]],[[[1,\\\"                    \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,4],[[30,0],\\\"verifyEmailAddress\\\"],null],[12],[1,\\\"Yes\\\"],[13],[1,\\\"\\\\n                    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                    \\\"],[8,[39,10],null,[[\\\"@model\\\",\\\"@class\\\"],[[30,0,[\\\"showVerifyEmailAddress\\\"]],\\\"toggle-box inline\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                      No\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"firstLogin\\\"]],[[[1,\\\"                \\\"],[10,\\\"b\\\"],[12],[1,\\\"NOTE:\\\"],[13],[1,\\\"\\\\n                the client has verified their email address but has not yet logged in.\\\\n                \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"passwordProtected\\\"]],[[[41,[30,0,[\\\"password\\\"]],[[[1,\\\"                  \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,4],[[30,0],\\\"getCognitoInformation\\\"],null],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-user\\\"],[12],[13],[1,\\\"Click here to view the account status in AWS Cognito.\\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                  \\\"],[10,\\\"b\\\"],[12],[1,\\\"AWS Cognito:\\\"],[13],[1,\\\"\\\\n                  If you provide the password to view the sensitive information, you will be able to access the Cognito information for this client's account.\\\\n\\\"]],[]]],[1,\\\"                (Cognito is the service that we use to handle usernames and passwords, and may shed additional light on the matter.)\\\\n                \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\\n                \\\"],[8,[39,19],null,[[\\\"@loading\\\",\\\"@success\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,0,[\\\"loadingCognitoData\\\"]],[30,0,[\\\"cognitoDataSuccess\\\"]],[30,0,[\\\"cognitoDataFailure\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"cognitoDataSuccess\\\",\\\"differentClientID\\\"]],[[[1,\\\"                      \\\"],[10,\\\"b\\\"],[12],[1,\\\"Mismatch:\\\"],[13],[1,\\\"\\\\n                      the Cognito user for\\\\n                      \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"email\\\"]]],[1,\\\"\\\\n                      has a different clientID\\\\n\\\"]],[]],[[[41,[30,0,[\\\"cognitoDataSuccess\\\",\\\"noMatches\\\"]],[[[1,\\\"                      \\\"],[10,\\\"b\\\"],[12],[1,\\\"No matches:\\\"],[13],[1,\\\"\\\\n                      for some reason, there is no Cognito entry for\\\\n                      \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"email\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                      Username:\\\\n                      \\\"],[1,[30,0,[\\\"cognitoDataSuccess\\\",\\\"Username\\\"]]],[1,\\\"\\\\n                      (\\\"],[10,\\\"b\\\"],[12],[1,\\\"this is what they must use to log in, and it is case sensitive\\\"],[13],[1,\\\")\\\\n                      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                      Enabled:\\\\n                      \\\"],[1,[30,0,[\\\"cognitoDataSuccess\\\",\\\"Enabled\\\"]]],[1,\\\"\\\\n                      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                      UserStatus:\\\\n                      \\\"],[1,[30,0,[\\\"cognitoDataSuccess\\\",\\\"UserStatus\\\"]]],[1,\\\"\\\\n                      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                      UserCreateDate:\\\\n                      \\\"],[1,[28,[35,22],[[30,0,[\\\"cognitoDataSuccess\\\",\\\"UserCreateDate\\\"]]],[[\\\"includeTime\\\"],[true]]]],[1,\\\"\\\\n                      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                      UserLastModifiedDate:\\\\n                      \\\"],[1,[28,[35,22],[[30,0,[\\\"cognitoDataSuccess\\\",\\\"UserLastModifiedDate\\\"]]],[[\\\"includeTime\\\"],[true]]]],[1,\\\"\\\\n                      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,26],[[28,[37,26],[[30,0,[\\\"cognitoDataSuccess\\\",\\\"Attributes\\\"]]],null]],null],null,[[[1,\\\"                        \\\"],[1,[30,3,[\\\"Name\\\"]]],[1,\\\":\\\\n                        \\\"],[1,[30,3,[\\\"Value\\\"]]],[1,\\\"\\\\n                        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[3]],null],[1,\\\"                    \\\"]],[]]]],[]]],[1,\\\"                  \\\"],[13],[1,\\\"\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\\n      \\\"],[8,[39,31],null,[[\\\"@client\\\",\\\"@feedbackType\\\",\\\"@widgetType\\\",\\\"@surveyLocation\\\",\\\"@hideIfProvided\\\",\\\"@ignoreDropdown\\\"],[[30,0,[\\\"model\\\",\\\"client\\\"]],\\\"lawyer\\\",\\\"box\\\",\\\"clientBrief\\\",true,true]],null],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,16],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"practiceArea\\\"]],[28,[37,6],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"practiceArea\\\"]],\\\"Family\\\"],null]],null],[[[1,\\\"        \\\"],[10,\\\"h3\\\"],[12],[1,\\\"Where is the full client brief?\\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          This is a\\\\n          \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"practiceArea\\\"]]],[1,\\\"\\\\n          record. Viewing the full brief for a\\\\n          \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"practiceArea\\\"]]],[1,\\\"\\\\n          record is not currently supported (only family law briefs are supported). This is because, presumably, we only need to be able to log in and download a PDF brief for\\\\n          Family Law clients, as they are the ones who get conflicted out.\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          If it turns out that we need to have this ability for\\\\n          \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"practiceArea\\\"]]],[1,\\\"\\\\n          as well, then we can cross that bridge at the appropriate time. (Usually, you can just log into the firm's admin page, and download the PDF from there.)\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          Basic contact details are set out below, in case they are helpful.\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,1,\\\"settify-summary-content\\\"],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"condensed-summary\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"table\\\"],[14,0,\\\"settify-summary\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"th\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[12],[1,\\\"\\\\n                    \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"title\\\"]]],[1,\\\"\\\\n                    \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"firstName\\\"]]],[13],[1,\\\"\\\\n                    \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"middleName\\\"]]],[13],[1,\\\"\\\\n                    \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"surname\\\"]]],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,27],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"practiceArea\\\"]],\\\"Family\\\"],null],[[[1,\\\"                      \\\"],[10,1],[14,0,\\\"font-normal\\\"],[12],[1,\\\"(client)\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                  \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showPartnerColumn\\\"]],[[[1,\\\"                    \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[12],[1,\\\"\\\\n                      \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"partnerTitle\\\"]]],[1,\\\"\\\\n                      \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"partnerFirstName\\\"]]],[13],[1,\\\"\\\\n                      \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"partnerMiddleName\\\"]]],[13],[1,\\\"\\\\n                      \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"partnerSurname\\\"]]],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,26],[[28,[37,26],[[30,0,[\\\"tableBodyRows\\\"]]],null]],null],null,[[[1,\\\"                  \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"td\\\"],[12],[1,[30,4,[\\\"title\\\"]]],[13],[1,\\\"\\\\n                    \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,4,[\\\"user\\\"]],[[[1,\\\"                        \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,4,[\\\"user\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                        \\\"],[8,[39,38],null,null,null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"                    \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showPartnerColumn\\\"]],[[[1,\\\"                      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,4,[\\\"spouse\\\"]],[[[1,\\\"                          \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,4,[\\\"spouse\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                          \\\"],[8,[39,38],null,null,null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"                      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                  \\\"],[13],[1,\\\"\\\\n\\\"]],[4]],null],[1,\\\"              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"isLegacyRecord\\\"]],[[[1,\\\"          \\\"],[8,[39,39],null,[[\\\"@clientRecord\\\"],[[30,0,[\\\"model\\\",\\\"client\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[8,[39,40],null,[[\\\"@model\\\",\\\"@adminMode\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"loadingClient\\\"]],[[[1,\\\"          \\\"],[10,0],[14,0,\\\"loading-pane\\\"],[12],[1,\\\"\\\\n            Loading\\\\n            \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"displayName\\\"]]],[1,\\\"'s data\\\\n            \\\"],[8,[39,41],null,null,null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,42],null,null,null]],[\\\"settings\\\",\\\"settings\\\",\\\"a\\\",\\\"row\\\"],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"summary-header\\\",\\\"action\\\",\\\"if\\\",\\\"not-eq\\\",\\\"b\\\",\\\"img\\\",\\\"p\\\",\\\"check-box\\\",\\\"small\\\",\\\"i\\\",\\\"liquid-if\\\",\\\"stop-think-warning\\\",\\\"settify-textline\\\",\\\"and\\\",\\\"span\\\",\\\"radio-buttons\\\",\\\"loading-display\\\",\\\"h3\\\",\\\"or\\\",\\\"pretty-date\\\",\\\"link-to\\\",\\\"hash\\\",\\\"each\\\",\\\"-track-array\\\",\\\"eq\\\",\\\"not\\\",\\\"unless\\\",\\\"a\\\",\\\"catalytic-feedback-widget\\\",\\\"table\\\",\\\"thead\\\",\\\"tr\\\",\\\"th\\\",\\\"tbody\\\",\\\"td\\\",\\\"admin/nil\\\",\\\"client-summary-for-legacy-data\\\",\\\"summary-printer\\\",\\\"loading-spinner\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/clients.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/compare\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Compare Changes\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"settify-contentcolumn\">\n  \n      <br />\n      <LiquidIf @predicate={{this.showLoadingSpinner}}>\n        <div class=\"summary-downloading-status\">\n          {{#if (eq this.showLoadingSpinner \"email\")}}\n            Sending email...\n          {{else if (eq this.showLoadingSpinner \"download\")}}\n            Preparing download...\n          {{/if}}\n        </div>\n        <LoadingSpinner />\n      </LiquidIf>\n      <LiquidIf @predicate={{this.sentEmailSuccessfully}}>\n        <div class=\"summary-downloading-status\">\n          Email was sent successfully\n        </div>\n      </LiquidIf>\n  \n      <small><LinkTo @route=\"admin.clients\" @model={{this.model.client.id}}><i class=\"fal fa-arrow-circle-left\" />Back</LinkTo></small>\n  \n      <LiquidIf @predicate={{this.loading}}>\n        <LoadingSpinner />\n      </LiquidIf>\n      <LiquidIf @predicate={{and (gte this.waitTime 10) (lt this.waitTime 50)}}>\n        <p class=\"centertext\">\n          We are searching deep within our records to retrieve the comparison. Please wait while we gather this information.\n        </p>\n      </LiquidIf>\n      <LiquidIf @predicate={{gte this.waitTime 50}}>\n        <p class=\"centertext\">\n          Still loading... Unfortunately, with long and complex client records, it does sometimes take a minute or more to prepare the comparison. Thank you for your patience and we\n          should have something ready for you shortly.\n        </p>\n      </LiquidIf>\n      {{#if this.noSnapshots}}\n        <p>\n          <b>There are no records for you to compare at this time</b>\n        </p>\n        <p>\n          <LinkTo @route=\"admin.clients\" @model={{this.model.client.id}}>\n            Click here to view the latest version of the client's record.\n          </LinkTo>\n        </p>\n      {{else}}\n        <div class=\"compare-selection\">\n          <span><b>Comparing record</b></span>\n          <div class=\"compare-selection-dropdown\">\n            <SettifySelect @model={{this.compareSnapshotOne}} @name=\"snapshot\" @content={{this.savedSnapshots}} @labelPath=\"snapshotReason\" @valuePath=\"clientSuffix\" />\n            <LiquidIf @predicate={{this.selectedOne}}>\n              <small><b>Date:</b> {{this.selectedOne.dateOfSnapshot}}</small>\n            </LiquidIf>\n          </div>\n          <span><b>To</b></span>\n          <div class=\"compare-selection-dropdown\">\n            <SettifySelect @model={{this.compareSnapshotTwo}} @name=\"snapshot\" @content={{this.savedSnapshots}} @labelPath=\"snapshotReason\" @valuePath=\"clientSuffix\" />\n            <LiquidIf @predicate={{this.selectedTwo}}>\n              <small><b>Date:</b> {{this.selectedTwo.dateOfSnapshot}}</small>\n            </LiquidIf>\n          </div>\n        </div>\n      {{/if}}\n  \n      <LiquidIf @predicate={{this.compareHTML}}>\n        <div class=\"compare-download-wrapper\">\n          <DownloadResource\n            @recipients={{this.recipients}}\n            @fileType=\"compare\"\n            @emailMessage={{this.emailMessage}}\n            @isAllowedToBeRemoved={{this.allowRemovalOfLawyerRecipients}}\n            @addRecipient={{action \"addAdditionalRecipient\"}}\n            @localDownload={{action \"downloadSelectedFiles\"}}\n            @emailFile={{action \"emailSelectedFiles\" this.recipients this.emailMessage}}\n            @updateRecipientsCallback={{action \"updateRecipients\"}}\n            @removeLawyerCallback={{action \"removeLawyer\"}}\n            @invalidEmailMessage={{this.invalidEmailMessage}}\n            @allowMobileDownload={{true}}\n          >\n            <LinkTo @route=\"admin.clients\" @model={{this.model.client.id}} @query={{hash opendownloads=\"true\"}} class=\"download-resource-button\"><i class=\"fal fa-file-alt\" />Other\n              Settify Documents</LinkTo>\n          </DownloadResource>\n        </div>\n        {{#if this.minimalChanges}}\n          <p class=\"background-yellow\"><b>It looks like there are no significant changes within these records</b></p>\n        {{/if}}\n        <div id=\"settify-comparison-content\">\n          <p>\n            Comparing\n            {{this.selectedOne.dateOfSnapshot}}\n            to\n            {{this.selectedTwo.dateOfSnapshot}}\n            <br />\n            Outdated information will appear\n            <del>with a strikethrough</del><br />\n            More recent information will appear\n            <ins>with an underline</ins>\n          </p>\n          <div class=\"condensed-summary\">\n            {{html-safe this.compareHTML}}\n          </div>\n        </div>\n      </LiquidIf>\n  \n      <div class=\"display-none\">\n        <div id=\"settify-summary-one\">\n          <ClientBrief @client={{this.clientSnapshotOne}} @adminMode={{true}} @onFinishedRendering={{action \"compareHTML\"}} />\n        </div>\n        <div id=\"settify-summary-two\">\n          <ClientBrief @client={{this.clientSnapshotTwo}} @adminMode={{true}} @onFinishedRendering={{action \"compareHTML\"}} />\n        </div>\n      </div>\n  \n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"FpsjW4M3\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Compare Changes\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n\\\\n    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showLoadingSpinner\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"summary-downloading-status\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[30,0,[\\\"showLoadingSpinner\\\"]],\\\"email\\\"],null],[[[1,\\\"          Sending email...\\\\n\\\"]],[]],[[[41,[28,[37,5],[[30,0,[\\\"showLoadingSpinner\\\"]],\\\"download\\\"],null],[[[1,\\\"          Preparing download...\\\\n        \\\"]],[]],null]],[]]],[1,\\\"      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,6],null,null,null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[30,0,[\\\"sentEmailSuccessfully\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"summary-downloading-status\\\"],[12],[1,\\\"\\\\n        Email was sent successfully\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\\n    \\\"],[10,\\\"small\\\"],[12],[8,[39,8],null,[[\\\"@route\\\",\\\"@model\\\"],[\\\"admin.clients\\\",[30,0,[\\\"model\\\",\\\"client\\\",\\\"id\\\"]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\"]],[]]]]],[13],[1,\\\"\\\\n\\\\n    \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[30,0,[\\\"loading\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[39,6],null,null,null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[28,[37,10],[[28,[37,11],[[30,0,[\\\"waitTime\\\"]],10],null],[28,[37,12],[[30,0,[\\\"waitTime\\\"]],50],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,2],[14,0,\\\"centertext\\\"],[12],[1,\\\"\\\\n        We are searching deep within our records to retrieve the comparison. Please wait while we gather this information.\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[28,[37,11],[[30,0,[\\\"waitTime\\\"]],50],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,2],[14,0,\\\"centertext\\\"],[12],[1,\\\"\\\\n        Still loading... Unfortunately, with long and complex client records, it does sometimes take a minute or more to prepare the comparison. Thank you for your patience and we\\\\n        should have something ready for you shortly.\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"noSnapshots\\\"]],[[[1,\\\"      \\\"],[10,2],[12],[1,\\\"\\\\n        \\\"],[10,\\\"b\\\"],[12],[1,\\\"There are no records for you to compare at this time\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        \\\"],[8,[39,8],null,[[\\\"@route\\\",\\\"@model\\\"],[\\\"admin.clients\\\",[30,0,[\\\"model\\\",\\\"client\\\",\\\"id\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          Click here to view the latest version of the client's record.\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"compare-selection\\\"],[12],[1,\\\"\\\\n        \\\"],[10,1],[12],[10,\\\"b\\\"],[12],[1,\\\"Comparing record\\\"],[13],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"compare-selection-dropdown\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,16],null,[[\\\"@model\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[[30,0,[\\\"compareSnapshotOne\\\"]],\\\"snapshot\\\",[30,0,[\\\"savedSnapshots\\\"]],\\\"snapshotReason\\\",\\\"clientSuffix\\\"]],null],[1,\\\"\\\\n          \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[30,0,[\\\"selectedOne\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,\\\"small\\\"],[12],[10,\\\"b\\\"],[12],[1,\\\"Date:\\\"],[13],[1,\\\" \\\"],[1,[30,0,[\\\"selectedOne\\\",\\\"dateOfSnapshot\\\"]]],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,1],[12],[10,\\\"b\\\"],[12],[1,\\\"To\\\"],[13],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"compare-selection-dropdown\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,16],null,[[\\\"@model\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[[30,0,[\\\"compareSnapshotTwo\\\"]],\\\"snapshot\\\",[30,0,[\\\"savedSnapshots\\\"]],\\\"snapshotReason\\\",\\\"clientSuffix\\\"]],null],[1,\\\"\\\\n          \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[30,0,[\\\"selectedTwo\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,\\\"small\\\"],[12],[10,\\\"b\\\"],[12],[1,\\\"Date:\\\"],[13],[1,\\\" \\\"],[1,[30,0,[\\\"selectedTwo\\\",\\\"dateOfSnapshot\\\"]]],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n    \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[30,0,[\\\"compareHTML\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"compare-download-wrapper\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,17],null,[[\\\"@recipients\\\",\\\"@fileType\\\",\\\"@emailMessage\\\",\\\"@isAllowedToBeRemoved\\\",\\\"@addRecipient\\\",\\\"@localDownload\\\",\\\"@emailFile\\\",\\\"@updateRecipientsCallback\\\",\\\"@removeLawyerCallback\\\",\\\"@invalidEmailMessage\\\",\\\"@allowMobileDownload\\\"],[[30,0,[\\\"recipients\\\"]],\\\"compare\\\",[30,0,[\\\"emailMessage\\\"]],[30,0,[\\\"allowRemovalOfLawyerRecipients\\\"]],[28,[37,18],[[30,0],\\\"addAdditionalRecipient\\\"],null],[28,[37,18],[[30,0],\\\"downloadSelectedFiles\\\"],null],[28,[37,18],[[30,0],\\\"emailSelectedFiles\\\",[30,0,[\\\"recipients\\\"]],[30,0,[\\\"emailMessage\\\"]]],null],[28,[37,18],[[30,0],\\\"updateRecipients\\\"],null],[28,[37,18],[[30,0],\\\"removeLawyer\\\"],null],[30,0,[\\\"invalidEmailMessage\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[39,8],[[24,0,\\\"download-resource-button\\\"]],[[\\\"@route\\\",\\\"@model\\\",\\\"@query\\\"],[\\\"admin.clients\\\",[30,0,[\\\"model\\\",\\\"client\\\",\\\"id\\\"]],[28,[37,19],null,[[\\\"opendownloads\\\"],[\\\"true\\\"]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-file-alt\\\"],[12],[13],[1,\\\"Other\\\\n            Settify Documents\\\"]],[]]]]],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"minimalChanges\\\"]],[[[1,\\\"        \\\"],[10,2],[14,0,\\\"background-yellow\\\"],[12],[10,\\\"b\\\"],[12],[1,\\\"It looks like there are no significant changes within these records\\\"],[13],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[10,0],[14,1,\\\"settify-comparison-content\\\"],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          Comparing\\\\n          \\\"],[1,[30,0,[\\\"selectedOne\\\",\\\"dateOfSnapshot\\\"]]],[1,\\\"\\\\n          to\\\\n          \\\"],[1,[30,0,[\\\"selectedTwo\\\",\\\"dateOfSnapshot\\\"]]],[1,\\\"\\\\n          \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n          Outdated information will appear\\\\n          \\\"],[10,\\\"del\\\"],[12],[1,\\\"with a strikethrough\\\"],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n          More recent information will appear\\\\n          \\\"],[10,\\\"ins\\\"],[12],[1,\\\"with an underline\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"condensed-summary\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[28,[35,22],[[30,0,[\\\"compareHTML\\\"]]],null]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\\n    \\\"],[10,0],[14,0,\\\"display-none\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,1,\\\"settify-summary-one\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,23],null,[[\\\"@client\\\",\\\"@adminMode\\\",\\\"@onFinishedRendering\\\"],[[30,0,[\\\"clientSnapshotOne\\\"]],true,[28,[37,18],[[30,0],\\\"compareHTML\\\"],null]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,1,\\\"settify-summary-two\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,23],null,[[\\\"@client\\\",\\\"@adminMode\\\",\\\"@onFinishedRendering\\\"],[[30,0,[\\\"clientSnapshotTwo\\\"]],true,[28,[37,18],[[30,0],\\\"compareHTML\\\"],null]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,24],null,null,null]],[],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"liquid-if\\\",\\\"if\\\",\\\"eq\\\",\\\"loading-spinner\\\",\\\"small\\\",\\\"link-to\\\",\\\"i\\\",\\\"and\\\",\\\"gte\\\",\\\"lt\\\",\\\"p\\\",\\\"b\\\",\\\"span\\\",\\\"settify-select\\\",\\\"download-resource\\\",\\\"action\\\",\\\"hash\\\",\\\"del\\\",\\\"ins\\\",\\\"html-safe\\\",\\\"client-brief\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/compare.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/config/accounts/index-loading\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Billing and Accounts\n  </AnimatedHeader>\n  \n  <section class=\"container-fluid even-row\">\n    <div class=\"row no-margin settify-contentcolumn firm-details\">\n      <br />\n      <nav class=\"small backhome flex-top\">\n        <div>\n          <LinkTo @route=\"admin.firms\" @query={{hash firmID=this.firmID}}><i class=\"fal fa-arrow-circle-left\" />Back</LinkTo>\n          <LinkTo @route=\"index\"><i class=\"fal fa-home-lg-alt\" />Home</LinkTo>\n        </div>\n        {{! <LinkTo @route=\"admin.config.accounts.settings\"><i class=\"fal fa-gear\" />Account settings</LinkTo> }}\n      </nav>\n      <br />\n  \n      <div class=\"firm-stripeID\">\n        <p class=\"fontweight-400 marginbottom-0\">Manage Stripe</p>\n        <div class=\"firm-invoice-details display-flex align-items-start\">\n          <p>Invoices and payments are handled securely by Stripe, a trusted online payment processor we've partnered with.</p>\n          <div class=\"stripe-details\">\n            <button type=\"button\" class=\"next-button small disabled-button\">View Stripe details</button>\n          </div>\n        </div>\n      </div>\n  \n      <div>\n        <table class=\"lead-list-table\">\n          <caption>Invoice history</caption>\n          <thead>\n            <tr>\n              <th class=\"lead-name\">Month</th>\n              <th class=\"lead-name\">Amount</th>\n              <th class=\"lead-name\">Status</th>\n              <th>Invoice</th>\n              <th></th>\n            </tr>\n          </thead>\n          <tbody>\n            <tr>\n              <td colspan=\"4\">\n                <LoadingSpinner />\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </div>\n    </div>\n    <br />\n  </section>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"FMu6zy6Y\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Billing and Accounts\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,\\\"section\\\"],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin settify-contentcolumn firm-details\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[10,\\\"nav\\\"],[14,0,\\\"small backhome flex-top\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[8,[39,5],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.firms\\\",[28,[37,6],null,[[\\\"firmID\\\"],[[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,5],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-home-lg-alt\\\"],[12],[13],[1,\\\"Home\\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"],[1,\\\"    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,0],[14,0,\\\"firm-stripeID\\\"],[12],[1,\\\"\\\\n      \\\"],[10,2],[14,0,\\\"fontweight-400 marginbottom-0\\\"],[12],[1,\\\"Manage Stripe\\\"],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"firm-invoice-details display-flex align-items-start\\\"],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"Invoices and payments are handled securely by Stripe, a trusted online payment processor we've partnered with.\\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"stripe-details\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"button\\\"],[14,0,\\\"next-button small disabled-button\\\"],[14,4,\\\"button\\\"],[12],[1,\\\"View Stripe details\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,0],[12],[1,\\\"\\\\n      \\\"],[10,\\\"table\\\"],[14,0,\\\"lead-list-table\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"caption\\\"],[12],[1,\\\"Invoice history\\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[14,0,\\\"lead-name\\\"],[12],[1,\\\"Month\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[14,0,\\\"lead-name\\\"],[12],[1,\\\"Amount\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[14,0,\\\"lead-name\\\"],[12],[1,\\\"Status\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[12],[1,\\\"Invoice\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[14,\\\"colspan\\\",\\\"4\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,17],null,null,null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,18],null,null,null]],[],false,[\\\"animated-header\\\",\\\"section\\\",\\\"div\\\",\\\"br\\\",\\\"nav\\\",\\\"link-to\\\",\\\"hash\\\",\\\"i\\\",\\\"p\\\",\\\"button\\\",\\\"table\\\",\\\"caption\\\",\\\"thead\\\",\\\"tr\\\",\\\"th\\\",\\\"tbody\\\",\\\"td\\\",\\\"loading-spinner\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/config/accounts/index-loading.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/config/accounts/index\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Billing and Accounts\n  </AnimatedHeader>\n  \n  <section class=\"container-fluid even-row\">\n    <div class=\"row no-margin settify-contentcolumn firm-details\">\n      <br />\n      <nav class=\"small backhome flex-top\">\n        <LinkTo @route=\"admin.firms\" @query={{hash selectedFirmID=this.firmID}}><i class=\"fal fa-arrow-circle-left\" />Back</LinkTo>\n        {{! <LinkTo @route=\"admin.config.accounts.settings\"><i class=\"fal fa-gear\" />Account settings</LinkTo> }}\n      </nav>\n      <br />\n      {{#if this.model.firmSettings.stripeID}}\n        <div class=\"firm-stripeID\">\n          <p>Manage Stripe for {{this.model.firmSettings.name}}</p>\n          <div class=\"firm-invoice-details display-flex align-items-start\">\n            <p>Invoices and payments are handled securely by Stripe, a trusted online payment processor we've partnered with.</p>\n            <div class=\"stripe-details\">\n              <button type=\"button\" {{action \"goToStripePortal\"}} class=\"next-button small\">View Stripe details</button>\n            </div>\n          </div>\n        </div>\n        <LoadingDisplay @loading={{this.redirecting}} @error={{this.redirectingFailed}} @showError={{true}} />\n      {{/if}}\n      {{!--\n      <div class=\"admin-heading\">\n        <h2>{{firm.name}}'s past invoices</h2>\n        <p class=\"small\">\n          Clients on invoices within the last 12 months can be viewed by clicking the invoice number.\n          Only invoices from the 1st October 2021 are available to download.\n        </p>\n      </div>\n      --}}\n  \n      <div>\n        <table class=\"lead-list-table\">\n          <caption>{{this.model.firmSettings.name}}'s Invoice history</caption>\n          <thead>\n            <tr>\n              <th class=\"lead-name\">Month</th>\n              <th>Amount</th>\n              <th class=\"lead-name\">Status</th>\n              <th>Invoice</th>\n              <th></th>\n            </tr>\n          </thead>\n          <tbody>\n            {{#each this.model.invoiceRequests as |request|}}\n              <tr>\n                <td>\n                  {{pretty-date request.endDate customFormat=\"MMMM YY\"}}\n                </td>\n                <td class=\"lead-info\">\n                  {{#if request.total}}\n                    {{format-number (this.centsToDollars request.total) money=true noRound=true}}\n                  {{else}}\n                    &mdash;\n                  {{/if}}\n                </td>\n                <td class=\"lead-info\">\n                  {{sentence-case request.status}}\n                </td>\n                <td>\n                  {{#if (eq request.status \"pending\")}}\n                    <LinkTo @route=\"admin.reviewinvoice\" @query={{hash firmID=this.firmID startDate=request.startDate endDate=request.endDate}}>\n                      Review clients\n                    </LinkTo>\n                  {{else}}\n                    <LinkTo\n                      @route=\"admin.config.accounts.invoice\"\n                      @model={{request.id}}\n                      @query={{hash firmID=this.firmID startDate=(unless request.invoiceUUID request.startDate) endDate=(unless request.invoiceUUID request.endDate)}}\n                    >\n                      {{or request.invoiceNumber request.xeroInvoiceNumber (sum \"INV-\" request.id)}}\n                    </LinkTo>\n                  {{/if}}\n                </td>\n                <td>\n                  {{#if request.savedInvoice}}\n                    <span class=\"clickable highlight-link\" {{action \"downloadFile\" request.savedInvoice}}>\n                      <i class=\"fal fa-download\" title=\"Download invoice\" />\n                    </span>\n                  {{/if}}\n                  {{#if request.invoicePdfUrl}}\n                    <a href={{request.invoicePdfUrl}}>\n                      <i class=\"fal fa-download\" title=\"Download invoice\" />\n                    </a>\n                  {{/if}}\n                </td>\n              </tr>\n            {{/each}}\n          </tbody>\n        </table>\n      </div>\n  \n      <LiquidIf @predicate={{this.downloadingInvoiceError}}>\n        <p role=\"alert\">There was an error downloading that invoice. If this issue persists please contact support at <a href=\"mailto:support@settify.com\">support@settify.com</a></p>\n      </LiquidIf>\n  \n      <LiquidIf @predicate={{this.downloadingInvoice}}>\n        <LoadingSpinner />\n      </LiquidIf>\n    </div>\n    <br />\n  </section>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"Y+D4qex+\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Billing and Accounts\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,\\\"section\\\"],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin settify-contentcolumn firm-details\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[10,\\\"nav\\\"],[14,0,\\\"small backhome flex-top\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,5],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.firms\\\",[28,[37,6],null,[[\\\"selectedFirmID\\\"],[[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\"]],[]]]]],[1,\\\"\\\\n\\\"],[1,\\\"    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"firmSettings\\\",\\\"stripeID\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"firm-stripeID\\\"],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"Manage Stripe for \\\"],[1,[30,0,[\\\"model\\\",\\\"firmSettings\\\",\\\"name\\\"]]],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"firm-invoice-details display-flex align-items-start\\\"],[12],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"Invoices and payments are handled securely by Stripe, a trusted online payment processor we've partnered with.\\\"],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"stripe-details\\\"],[12],[1,\\\"\\\\n            \\\"],[11,\\\"button\\\"],[24,0,\\\"next-button small\\\"],[24,4,\\\"button\\\"],[4,[38,11],[[30,0],\\\"goToStripePortal\\\"],null],[12],[1,\\\"View Stripe details\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,12],null,[[\\\"@loading\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,0,[\\\"redirecting\\\"]],[30,0,[\\\"redirectingFailed\\\"]],true]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n    \\\"],[10,0],[12],[1,\\\"\\\\n      \\\"],[10,\\\"table\\\"],[14,0,\\\"lead-list-table\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"caption\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"firmSettings\\\",\\\"name\\\"]]],[1,\\\"'s Invoice history\\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[14,0,\\\"lead-name\\\"],[12],[1,\\\"Month\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[12],[1,\\\"Amount\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[14,0,\\\"lead-name\\\"],[12],[1,\\\"Status\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[12],[1,\\\"Invoice\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,20],[[28,[37,20],[[30,0,[\\\"model\\\",\\\"invoiceRequests\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                \\\"],[1,[28,[35,22],[[30,1,[\\\"endDate\\\"]]],[[\\\"customFormat\\\"],[\\\"MMMM YY\\\"]]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[14,0,\\\"lead-info\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"total\\\"]],[[[1,\\\"                  \\\"],[1,[28,[35,23],[[28,[30,0,[\\\"centsToDollars\\\"]],[[30,1,[\\\"total\\\"]]],null]],[[\\\"money\\\",\\\"noRound\\\"],[true,true]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                  —\\\\n\\\"]],[]]],[1,\\\"              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[14,0,\\\"lead-info\\\"],[12],[1,\\\"\\\\n                \\\"],[1,[28,[35,24],[[30,1,[\\\"status\\\"]]],null]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,25],[[30,1,[\\\"status\\\"]],\\\"pending\\\"],null],[[[1,\\\"                  \\\"],[8,[39,5],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.reviewinvoice\\\",[28,[37,6],null,[[\\\"firmID\\\",\\\"startDate\\\",\\\"endDate\\\"],[[30,0,[\\\"firmID\\\"]],[30,1,[\\\"startDate\\\"]],[30,1,[\\\"endDate\\\"]]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    Review clients\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                  \\\"],[8,[39,5],null,[[\\\"@route\\\",\\\"@model\\\",\\\"@query\\\"],[\\\"admin.config.accounts.invoice\\\",[30,1,[\\\"id\\\"]],[28,[37,6],null,[[\\\"firmID\\\",\\\"startDate\\\",\\\"endDate\\\"],[[30,0,[\\\"firmID\\\"]],[52,[51,[30,1,[\\\"invoiceUUID\\\"]]],[30,1,[\\\"startDate\\\"]]],[52,[51,[30,1,[\\\"invoiceUUID\\\"]]],[30,1,[\\\"endDate\\\"]]]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    \\\"],[1,[28,[35,27],[[30,1,[\\\"invoiceNumber\\\"]],[30,1,[\\\"xeroInvoiceNumber\\\"]],[28,[37,28],[\\\"INV-\\\",[30,1,[\\\"id\\\"]]],null]],null]],[1,\\\"\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"savedInvoice\\\"]],[[[1,\\\"                  \\\"],[11,1],[24,0,\\\"clickable highlight-link\\\"],[4,[38,11],[[30,0],\\\"downloadFile\\\",[30,1,[\\\"savedInvoice\\\"]]],null],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-download\\\"],[14,\\\"title\\\",\\\"Download invoice\\\"],[12],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,1,[\\\"invoicePdfUrl\\\"]],[[[1,\\\"                  \\\"],[10,3],[15,6,[30,1,[\\\"invoicePdfUrl\\\"]]],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-download\\\"],[14,\\\"title\\\",\\\"Download invoice\\\"],[12],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[8,[39,31],null,[[\\\"@predicate\\\"],[[30,0,[\\\"downloadingInvoiceError\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,2],[14,\\\"role\\\",\\\"alert\\\"],[12],[1,\\\"There was an error downloading that invoice. If this issue persists please contact support at \\\"],[10,3],[14,6,\\\"mailto:support@settify.com\\\"],[12],[1,\\\"support@settify.com\\\"],[13],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\\n    \\\"],[8,[39,31],null,[[\\\"@predicate\\\"],[[30,0,[\\\"downloadingInvoice\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[39,32],null,null,null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,33],null,null,null]],[\\\"request\\\"],false,[\\\"animated-header\\\",\\\"section\\\",\\\"div\\\",\\\"br\\\",\\\"nav\\\",\\\"link-to\\\",\\\"hash\\\",\\\"i\\\",\\\"if\\\",\\\"p\\\",\\\"button\\\",\\\"action\\\",\\\"loading-display\\\",\\\"table\\\",\\\"caption\\\",\\\"thead\\\",\\\"tr\\\",\\\"th\\\",\\\"tbody\\\",\\\"each\\\",\\\"-track-array\\\",\\\"td\\\",\\\"pretty-date\\\",\\\"format-number\\\",\\\"sentence-case\\\",\\\"eq\\\",\\\"unless\\\",\\\"or\\\",\\\"sum\\\",\\\"span\\\",\\\"a\\\",\\\"liquid-if\\\",\\\"loading-spinner\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/config/accounts/index.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/config/accounts/invoice\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Invoice:\n    {{this.invoiceIDForDisplay}}\n  </AnimatedHeader>\n  \n  <section class=\"container-fluid even-row\">\n    <div class=\"row no-margin settify-contentcolumn\">\n      <br />\n      <nav class=\"small backhome\">\n        <LinkTo @route=\"admin.config.accounts\" @query={{hash firmID=this.firmID}}><i class=\"fal fa-arrow-circle-left\" />Back</LinkTo>\n        <LinkTo @route=\"index\"><i class=\"fal fa-home-lg-alt\" />Home</LinkTo>\n      </nav>\n      <div class=\"rightalign font-16\">\n        {{#if this.showDisbursementReport}}\n          <a href=\"#\" class=\"clickable\" {{action \"downloadDisbursementReport\"}}>\n            <i class=\"fal fa-file-invoice\" />Download disbursement report\n          </a>\n        {{/if}}\n        {{!-- \n        TODO: Look at if these are needed in the Admin system\n        {{#if this.showPaymentLink}}\n          <a href={{this.model.invoiceRequest.paymentUrl}} target=\"_blank\" rel=\"noopener noreferrer\">\n            <i class=\"fal fa-file-invoice-dollar\" />View and pay invoice\n          </a>\n        {{/if}}\n        {{#if this.hasLeadsConversionTypeClients}}\n          <a href=\"https://settify.com/wp-content/uploads/2023/07/Fair-Billing-Policy-FAQs-3.pdf\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"display-block\">\n            <i class=\"fal fa-question-circle\" />Learn more about our Fair Billing Policy\n          </a>\n        {{/if}}\n        --}}\n      </div>\n      <LoadingDisplay @loading={{this.downloading}} @success={{this.downloadSuccessful}} @error={{this.downloadFailed}} @showError={{true}}>\n        Disbursement report downloaded\n      </LoadingDisplay>\n      {{#if this.model.allLeads.length}}\n        {{#each-in this.model.leadsByPracticeArea as |practiceArea leadList|}}\n          <h3>{{practiceArea}} (usage charge) <span class=\"unseen-changes-bubble marginleft-0\">Qty: {{leadList.length}}</span></h3>\n          <table class=\"lead-list-table\">\n            <thead>\n              <tr>\n                <th class=\"lead-name\">Lead</th>\n                <th class=\"lead-info\"></th>\n                <th class=\"lead-status\">Status</th>\n              </tr>\n            </thead>\n            <tbody>\n              {{#each leadList as |lead|}}\n                <tr>\n                  <th class=\"lead-name\">\n                    <PracticeAreaLink @clientID={{lead.clientID}} @practiceArea={{lead.practiceArea}} target=\"_blank\" rel=\"noopener noreferrer\">\n                      {{lead.name}}\n                    </PracticeAreaLink>\n                  </th>\n                  <td class=\"lead-info\">\n                    {{#if (eq lead.source \"sweep\")}}\n                      Historical lead\n                    {{/if}}\n                    {{#if (eq lead.referral \"invitation\")}}\n                      <div>Invited and completed on {{lead.formattedReferralDate}}</div>\n                      <span class=\"small {{if lead.reallyOld 'negative' ''}}\">{{lead.timeSinceReferralDate}}</span>\n                    {{else}}\n                      <div>Website referral on {{lead.formattedReferralDate}}</div>\n                      <span class={{if lead.reallyOld \"negative\" \"\"}}>{{lead.timeSinceReferralDate}}</span>\n                    {{/if}}\n                  </td>\n                  <td class=\"lead-status\">\n                    <BillingStatusSelect @lead={{lead}} @firmSettings={{this.model.firm}} @conversionTypes={{this.model.conversionTypes}} @sweep={{eq lead.source \"sweep\"}} />\n                  </td>\n                </tr>\n              {{/each}}\n            </tbody>\n          </table>\n        {{/each-in}}\n  \n        {{#if this.model.unbilledLeads.length}}\n          <div class=\"clickable\" {{action \"toggleExpand\" \"unbilledLeads\"}}>\n            <h3>\n              <i class=\"fal fa-chevron-right {{if (get this.expand 'unbilledLeads') 'fa-rotate-90'}}\" />\n              Clients not invoiced this period\n              <span class=\"unseen-changes-bubble marginleft-0\">Qty: {{this.model.unbilledLeads.length}}</span>\n            </h3>\n          </div>\n          <LiquidIf @predicate={{get this.expand \"unbilledLeads\"}}>\n            <small>\n              Note: Clients below were not included on this invoice but may be included on future invoices\n            </small>\n            <table class=\"lead-list-table\">\n              <thead>\n                <tr>\n                  <th class=\"lead-name\">Lead</th>\n                  <th class=\"lead-info\"></th>\n                  <th class=\"lead-status\">Status</th>\n                </tr>\n              </thead>\n              <tbody>\n                {{#each this.model.unbilledLeads as |lead|}}\n                  <tr>\n                    <th class=\"lead-name\">\n                      <PracticeAreaLink @clientID={{lead.clientID}} @practiceArea={{lead.practiceArea}} target=\"_blank\" rel=\"noopener noreferrer\">\n                        {{lead.name}}\n                      </PracticeAreaLink>\n                    </th>\n                    <td class=\"lead-info\">\n                      <div>Practice area: {{lead.practiceArea}}</div>\n                      {{#if (eq lead.source \"sweep\")}}\n                        <div>Historical lead</div>\n                      {{/if}}\n                      {{#if (eq lead.referral \"invitation\")}}\n                        <div>Invited and completed on {{lead.formattedReferralDate}}</div>\n                        <span class=\"small {{if lead.reallyOld 'negative' ''}}\">{{lead.timeSinceReferralDate}}</span>\n                      {{else}}\n                        <div>Website referral on {{lead.formattedReferralDate}}</div>\n                        <span class={{if lead.reallyOld \"negative\" \"\"}}>{{lead.timeSinceReferralDate}}</span>\n                      {{/if}}\n                    </td>\n                    <td class=\"lead-status\">\n                      <BillingStatusSelect @lead={{lead}} @firmSettings={{this.model.firm}} @conversionTypes={{this.model.conversionTypes}} @sweep={{eq lead.source \"sweep\"}} />\n                    </td>\n                  </tr>\n                {{/each}}\n              </tbody>\n            </table>\n          </LiquidIf>\n        {{/if}}\n      {{else}}\n        There where no clients charged as part of invoice #{{this.invoiceIDForDisplay}}.\n      {{/if}}\n    </div>\n  </section>\n  \n  <SettifyFooter />\n  {{outlet}}\n  */\n  {\n    \"id\": \"BrNcbOVP\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Invoice:\\\\n  \\\"],[1,[30,0,[\\\"invoiceIDForDisplay\\\"]]],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,\\\"section\\\"],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin settify-contentcolumn\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[10,\\\"nav\\\"],[14,0,\\\"small backhome\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,5],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.config.accounts\\\",[28,[37,6],null,[[\\\"firmID\\\"],[[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[39,5],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-home-lg-alt\\\"],[12],[13],[1,\\\"Home\\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"rightalign font-16\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showDisbursementReport\\\"]],[[[1,\\\"        \\\"],[11,3],[24,6,\\\"#\\\"],[24,0,\\\"clickable\\\"],[4,[38,10],[[30,0],\\\"downloadDisbursementReport\\\"],null],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-file-invoice\\\"],[12],[13],[1,\\\"Download disbursement report\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,11],null,[[\\\"@loading\\\",\\\"@success\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,0,[\\\"downloading\\\"]],[30,0,[\\\"downloadSuccessful\\\"]],[30,0,[\\\"downloadFailed\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      Disbursement report downloaded\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"allLeads\\\",\\\"length\\\"]],[[[42,[28,[37,13],[[30,0,[\\\"model\\\",\\\"leadsByPracticeArea\\\"]]],null],null,[[[1,\\\"        \\\"],[10,\\\"h3\\\"],[12],[1,[30,2]],[1,\\\" (usage charge) \\\"],[10,1],[14,0,\\\"unseen-changes-bubble marginleft-0\\\"],[12],[1,\\\"Qty: \\\"],[1,[30,1,[\\\"length\\\"]]],[13],[13],[1,\\\"\\\\n        \\\"],[10,\\\"table\\\"],[14,0,\\\"lead-list-table\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"th\\\"],[14,0,\\\"lead-name\\\"],[12],[1,\\\"Lead\\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"th\\\"],[14,0,\\\"lead-info\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[10,\\\"th\\\"],[14,0,\\\"lead-status\\\"],[12],[1,\\\"Status\\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,21],[[28,[37,21],[[30,1]],null]],null],null,[[[1,\\\"              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"th\\\"],[14,0,\\\"lead-name\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,22],[[24,\\\"target\\\",\\\"_blank\\\"],[24,\\\"rel\\\",\\\"noopener noreferrer\\\"]],[[\\\"@clientID\\\",\\\"@practiceArea\\\"],[[30,3,[\\\"clientID\\\"]],[30,3,[\\\"practiceArea\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    \\\"],[1,[30,3,[\\\"name\\\"]]],[1,\\\"\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[14,0,\\\"lead-info\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,24],[[30,3,[\\\"source\\\"]],\\\"sweep\\\"],null],[[[1,\\\"                    Historical lead\\\\n\\\"]],[]],null],[41,[28,[37,24],[[30,3,[\\\"referral\\\"]],\\\"invitation\\\"],null],[[[1,\\\"                    \\\"],[10,0],[12],[1,\\\"Invited and completed on \\\"],[1,[30,3,[\\\"formattedReferralDate\\\"]]],[13],[1,\\\"\\\\n                    \\\"],[10,1],[15,0,[29,[\\\"small \\\",[52,[30,3,[\\\"reallyOld\\\"]],\\\"negative\\\",\\\"\\\"]]]],[12],[1,[30,3,[\\\"timeSinceReferralDate\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                    \\\"],[10,0],[12],[1,\\\"Website referral on \\\"],[1,[30,3,[\\\"formattedReferralDate\\\"]]],[13],[1,\\\"\\\\n                    \\\"],[10,1],[15,0,[52,[30,3,[\\\"reallyOld\\\"]],\\\"negative\\\",\\\"\\\"]],[12],[1,[30,3,[\\\"timeSinceReferralDate\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[14,0,\\\"lead-status\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,25],null,[[\\\"@lead\\\",\\\"@firmSettings\\\",\\\"@conversionTypes\\\",\\\"@sweep\\\"],[[30,3],[30,0,[\\\"model\\\",\\\"firm\\\"]],[30,0,[\\\"model\\\",\\\"conversionTypes\\\"]],[28,[37,24],[[30,3,[\\\"source\\\"]],\\\"sweep\\\"],null]]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[3]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[1,2]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"unbilledLeads\\\",\\\"length\\\"]],[[[1,\\\"        \\\"],[11,0],[24,0,\\\"clickable\\\"],[4,[38,10],[[30,0],\\\"toggleExpand\\\",\\\"unbilledLeads\\\"],null],[12],[1,\\\"\\\\n          \\\"],[10,\\\"h3\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-chevron-right \\\",[52,[28,[37,26],[[30,0,[\\\"expand\\\"]],\\\"unbilledLeads\\\"],null],\\\"fa-rotate-90\\\"]]]],[12],[13],[1,\\\"\\\\n            Clients not invoiced this period\\\\n            \\\"],[10,1],[14,0,\\\"unseen-changes-bubble marginleft-0\\\"],[12],[1,\\\"Qty: \\\"],[1,[30,0,[\\\"model\\\",\\\"unbilledLeads\\\",\\\"length\\\"]]],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,27],null,[[\\\"@predicate\\\"],[[28,[37,26],[[30,0,[\\\"expand\\\"]],\\\"unbilledLeads\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n            Note: Clients below were not included on this invoice but may be included on future invoices\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"table\\\"],[14,0,\\\"lead-list-table\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"th\\\"],[14,0,\\\"lead-name\\\"],[12],[1,\\\"Lead\\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"th\\\"],[14,0,\\\"lead-info\\\"],[12],[13],[1,\\\"\\\\n                \\\"],[10,\\\"th\\\"],[14,0,\\\"lead-status\\\"],[12],[1,\\\"Status\\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,21],[[28,[37,21],[[30,0,[\\\"model\\\",\\\"unbilledLeads\\\"]]],null]],null],null,[[[1,\\\"                \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"th\\\"],[14,0,\\\"lead-name\\\"],[12],[1,\\\"\\\\n                    \\\"],[8,[39,22],[[24,\\\"target\\\",\\\"_blank\\\"],[24,\\\"rel\\\",\\\"noopener noreferrer\\\"]],[[\\\"@clientID\\\",\\\"@practiceArea\\\"],[[30,4,[\\\"clientID\\\"]],[30,4,[\\\"practiceArea\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                      \\\"],[1,[30,4,[\\\"name\\\"]]],[1,\\\"\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[14,0,\\\"lead-info\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,0],[12],[1,\\\"Practice area: \\\"],[1,[30,4,[\\\"practiceArea\\\"]]],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,24],[[30,4,[\\\"source\\\"]],\\\"sweep\\\"],null],[[[1,\\\"                      \\\"],[10,0],[12],[1,\\\"Historical lead\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,24],[[30,4,[\\\"referral\\\"]],\\\"invitation\\\"],null],[[[1,\\\"                      \\\"],[10,0],[12],[1,\\\"Invited and completed on \\\"],[1,[30,4,[\\\"formattedReferralDate\\\"]]],[13],[1,\\\"\\\\n                      \\\"],[10,1],[15,0,[29,[\\\"small \\\",[52,[30,4,[\\\"reallyOld\\\"]],\\\"negative\\\",\\\"\\\"]]]],[12],[1,[30,4,[\\\"timeSinceReferralDate\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                      \\\"],[10,0],[12],[1,\\\"Website referral on \\\"],[1,[30,4,[\\\"formattedReferralDate\\\"]]],[13],[1,\\\"\\\\n                      \\\"],[10,1],[15,0,[52,[30,4,[\\\"reallyOld\\\"]],\\\"negative\\\",\\\"\\\"]],[12],[1,[30,4,[\\\"timeSinceReferralDate\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[14,0,\\\"lead-status\\\"],[12],[1,\\\"\\\\n                    \\\"],[8,[39,25],null,[[\\\"@lead\\\",\\\"@firmSettings\\\",\\\"@conversionTypes\\\",\\\"@sweep\\\"],[[30,4],[30,0,[\\\"model\\\",\\\"firm\\\"]],[30,0,[\\\"model\\\",\\\"conversionTypes\\\"]],[28,[37,24],[[30,4,[\\\"source\\\"]],\\\"sweep\\\"],null]]],null],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[4]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[]],[[[1,\\\"      There where no clients charged as part of invoice #\\\"],[1,[30,0,[\\\"invoiceIDForDisplay\\\"]]],[1,\\\".\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,29],null,null,null],[1,\\\"\\\\n\\\"],[46,[28,[37,31],null,null],null,null,null]],[\\\"leadList\\\",\\\"practiceArea\\\",\\\"lead\\\",\\\"lead\\\"],false,[\\\"animated-header\\\",\\\"section\\\",\\\"div\\\",\\\"br\\\",\\\"nav\\\",\\\"link-to\\\",\\\"hash\\\",\\\"i\\\",\\\"if\\\",\\\"a\\\",\\\"action\\\",\\\"loading-display\\\",\\\"each\\\",\\\"-each-in\\\",\\\"h3\\\",\\\"span\\\",\\\"table\\\",\\\"thead\\\",\\\"tr\\\",\\\"th\\\",\\\"tbody\\\",\\\"-track-array\\\",\\\"practice-area-link\\\",\\\"td\\\",\\\"eq\\\",\\\"billing-status-select\\\",\\\"get\\\",\\\"liquid-if\\\",\\\"small\\\",\\\"settify-footer\\\",\\\"component\\\",\\\"-outlet\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/config/accounts/invoice.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/config/accounts/settings\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Account settings\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn firm-details\">\n        <br>\n        <nav class=\"small\">\n          <LinkTo @route=\"admin.config.accounts\"><i class=\"fal fa-arrow-circle-left\" />Back</LinkTo>\n          <LinkTo @route=\"index\"><i class=\"fal fa-home-lg-alt\" />Home</LinkTo>\n        </nav>\n  \n        <LiquidIf @predicate={{not this.firmDetails.globalDetails}}>\n          <LoadingSpinner />\n        </LiquidIf>\n  \n        <LiquidIf @predicate={{this.firmDetails.globalDetails}}>\n          <span class=\"accounts\"><LineIcon @src=\"/assets/images/icons/bill.png\" /></span>\n          {{#if this.firm.otherSettifyURLs}}\n            <p class=\"centertext\">\n              <small><b>Note:</b> these settings apply to all practice areas</small>\n            </p>\n          {{/if}}\n          <table class=\"settings\">\n            <tbody>\n              {{#unless this.firm.stripeID}}\n                <tr>\n                  <td>\n                    Legal entity to which our invoices should be addressed (if different to\n                    {{this.firmDetails.globalDetails.name}})\n                  </td>\n                  <td>\n                    <SettifyTextline @model={{this.firmDetails.globalDetails.billingEntityName}} @placeholder=\"Eg, ABC Service Company Pty Ltd\" />\n                  </td>\n                </tr>\n                <tr>\n                  <td>\n                    Your address to be displayed on our invoices\n                  </td>\n                  <td>\n                    <SettifyTextarea @model={{this.firmDetails.globalDetails.address}} />\n                  </td>\n                </tr>\n              {{/unless}}\n              <tr>\n                <td>\n                  Who should we get in touch with each month to find out which leads became clients and which didn't?\n                </td>\n                <td>\n                  <SettifyTextline @model={{this.firmDetails.globalDetails.generalContactNames}} @placeholder=\"Eg, John Doe, New Clients Team, Peter Paul and Mary, etc\" />\n                </td>\n              </tr>\n              <tr>\n                <td>\n                  What is the email address for\n                  {{#if this.firmDetails.globalDetails.generalContactNames}}\n                    {{this.firmDetails.globalDetails.generalContactNames}}?\n                  {{else}}\n                    that contact?\n                  {{/if}}\n                  {{!-- \n                  {{#help-toggle}}\n                    To send these emails to multiple people, separate their email addresses with a comma and a space. For example:<br/>\n                    first@yourfirm.com, second@yourfirm.com\n                  {{/help-toggle}}\n                  --}}\n                </td>\n                <td>\n                  <SettifyEmailInput @model={{this.firmDetails.globalDetails.generalContactEmails}} @allowMultipleEmails={{true}} @placeholder=\"More than one email can be added\" />\n                </td>\n              </tr>\n              {{#unless this.firm.stripeID}}\n                <tr>\n                  <td>\n                    Who should we send our invoices to?\n                  </td>\n                  <td>\n                    <SettifyTextline @model={{this.firmDetails.globalDetails.accountsPayableNames}} @placeholder=\"Eg, Jane Doe, Accounts Payable, etc\" />\n                  </td>\n                </tr>\n                <tr>\n                  <td>\n                    What is the email address for\n                    {{#if this.firmDetails.globalDetails.accountsPayableNames}}\n                      {{this.firmDetails.globalDetails.accountsPayableNames}}?\n                    {{else}}\n                      that person?\n                    {{/if}}\n                    {{!-- \n                    {{#help-toggle}}\n                      To send these emails to multiple people, separate their email addresses with a comma and a space. For example:<br/>\n                      first@yourfirm.com, second@yourfirm.com\n                    {{/help-toggle}}\n                    --}}\n                  </td>\n                  <td>\n                    <SettifyEmailInput\n                      @model={{this.firmDetails.globalDetails.accountsPayableEmails}}\n                      @allowMultipleEmails={{true}}\n                      @placeholder=\"More than one email can be added\"\n                    />\n                  </td>\n                </tr>\n              {{/unless}}\n            </tbody>\n          </table>\n  \n          <Admin::SettingsSaveButtons\n            @savingChanges={{this.savingChanges}}\n            @savingChangesSuccess={{this.savingChangesSuccess}}\n            @savingChangesError={{this.savingChangesError}}\n            @saveChangesAction={{action \"saveChanges\"}}\n            @revertChangesAction={{action \"revertChanges\"}}\n          />\n  \n        </LiquidIf>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"Bp6itYor\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Account settings\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn firm-details\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,\\\"nav\\\"],[14,0,\\\"small\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,4],null,[[\\\"@route\\\"],[\\\"admin.config.accounts\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,4],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-home-lg-alt\\\"],[12],[13],[1,\\\"Home\\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[8,[39,6],null,[[\\\"@predicate\\\"],[[28,[37,7],[[30,0,[\\\"firmDetails\\\",\\\"globalDetails\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[39,8],null,null,null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\\n      \\\"],[8,[39,6],null,[[\\\"@predicate\\\"],[[30,0,[\\\"firmDetails\\\",\\\"globalDetails\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"accounts\\\"],[12],[8,[39,10],null,[[\\\"@src\\\"],[\\\"/assets/images/icons/bill.png\\\"]],null],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"firm\\\",\\\"otherSettifyURLs\\\"]],[[[1,\\\"          \\\"],[10,2],[14,0,\\\"centertext\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"small\\\"],[12],[10,\\\"b\\\"],[12],[1,\\\"Note:\\\"],[13],[1,\\\" these settings apply to all practice areas\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[10,\\\"table\\\"],[14,0,\\\"settings\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"firm\\\",\\\"stripeID\\\"]]],[[[1,\\\"              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  Legal entity to which our invoices should be addressed (if different to\\\\n                  \\\"],[1,[30,0,[\\\"firmDetails\\\",\\\"globalDetails\\\",\\\"name\\\"]]],[1,\\\")\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,20],null,[[\\\"@model\\\",\\\"@placeholder\\\"],[[30,0,[\\\"firmDetails\\\",\\\"globalDetails\\\",\\\"billingEntityName\\\"]],\\\"Eg, ABC Service Company Pty Ltd\\\"]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  Your address to be displayed on our invoices\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,21],null,[[\\\"@model\\\"],[[30,0,[\\\"firmDetails\\\",\\\"globalDetails\\\",\\\"address\\\"]]]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                Who should we get in touch with each month to find out which leads became clients and which didn't?\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                \\\"],[8,[39,20],null,[[\\\"@model\\\",\\\"@placeholder\\\"],[[30,0,[\\\"firmDetails\\\",\\\"globalDetails\\\",\\\"generalContactNames\\\"]],\\\"Eg, John Doe, New Clients Team, Peter Paul and Mary, etc\\\"]],null],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                What is the email address for\\\\n\\\"],[41,[30,0,[\\\"firmDetails\\\",\\\"globalDetails\\\",\\\"generalContactNames\\\"]],[[[1,\\\"                  \\\"],[1,[30,0,[\\\"firmDetails\\\",\\\"globalDetails\\\",\\\"generalContactNames\\\"]]],[1,\\\"?\\\\n\\\"]],[]],[[[1,\\\"                  that contact?\\\\n\\\"]],[]]],[1,\\\"              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                \\\"],[8,[39,22],null,[[\\\"@model\\\",\\\"@allowMultipleEmails\\\",\\\"@placeholder\\\"],[[30,0,[\\\"firmDetails\\\",\\\"globalDetails\\\",\\\"generalContactEmails\\\"]],true,\\\"More than one email can be added\\\"]],null],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"firm\\\",\\\"stripeID\\\"]]],[[[1,\\\"              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  Who should we send our invoices to?\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,20],null,[[\\\"@model\\\",\\\"@placeholder\\\"],[[30,0,[\\\"firmDetails\\\",\\\"globalDetails\\\",\\\"accountsPayableNames\\\"]],\\\"Eg, Jane Doe, Accounts Payable, etc\\\"]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  What is the email address for\\\\n\\\"],[41,[30,0,[\\\"firmDetails\\\",\\\"globalDetails\\\",\\\"accountsPayableNames\\\"]],[[[1,\\\"                    \\\"],[1,[30,0,[\\\"firmDetails\\\",\\\"globalDetails\\\",\\\"accountsPayableNames\\\"]]],[1,\\\"?\\\\n\\\"]],[]],[[[1,\\\"                    that person?\\\\n\\\"]],[]]],[1,\\\"                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,22],null,[[\\\"@model\\\",\\\"@allowMultipleEmails\\\",\\\"@placeholder\\\"],[[30,0,[\\\"firmDetails\\\",\\\"globalDetails\\\",\\\"accountsPayableEmails\\\"]],true,\\\"More than one email can be added\\\"]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,23],null,[[\\\"@savingChanges\\\",\\\"@savingChangesSuccess\\\",\\\"@savingChangesError\\\",\\\"@saveChangesAction\\\",\\\"@revertChangesAction\\\"],[[30,0,[\\\"savingChanges\\\"]],[30,0,[\\\"savingChangesSuccess\\\"]],[30,0,[\\\"savingChangesError\\\"]],[28,[37,24],[[30,0],\\\"saveChanges\\\"],null],[28,[37,24],[[30,0],\\\"revertChanges\\\"],null]]],null],[1,\\\"\\\\n\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,25],null,null,null]],[],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"nav\\\",\\\"link-to\\\",\\\"i\\\",\\\"liquid-if\\\",\\\"not\\\",\\\"loading-spinner\\\",\\\"span\\\",\\\"line-icon\\\",\\\"if\\\",\\\"p\\\",\\\"small\\\",\\\"b\\\",\\\"table\\\",\\\"tbody\\\",\\\"unless\\\",\\\"tr\\\",\\\"td\\\",\\\"settify-textline\\\",\\\"settify-textarea\\\",\\\"settify-email-input\\\",\\\"admin/settings-save-buttons\\\",\\\"action\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/config/accounts/settings.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/config/customisations\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Firm customisations\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn firm-details\">\n        <div id=\"customisations\" class=\"even-row\">\n          <nav class=\"small\">\n            <LinkTo @route=\"admin.firms\" @query={{hash selectedFirmID=this.firmID}}><i class=\"fal fa-arrow-circle-left\" />Back</LinkTo>\n          </nav>\n          <main class=\"customisations-content-wrapper\">\n            <SettifySelect\n              @model={{this.customisation}}\n              @content={{this.customisationOptions.customisations}}\n              @labelPath=\"label\"\n              @valuePath=\"value\"\n              @headerLabel={{true}}\n              @label=\"Select customisation\"\n              @class=\"customisations__select\"\n            /><br />\n  \n            {{! Invite Email }}\n            {{#if (eq this.customisation \"emails\")}}\n              <div>\n                <SettifySelect\n                  @model={{this.selectedTemplate}}\n                  @content={{this.customisationOptions.emailOptions}}\n                  @labelPath=\"label\"\n                  @valuePath=\"value\"\n                  @headerLabel={{true}}\n                  @label=\"Select template\"\n                  @class=\"customisations__select\"\n                  @onChange={{this.onPracticeAreaOrTemplateChange}}\n                />\n                <br />\n                {{#if this.selectedTemplate}}\n                  <p>\n                    Select practice area for which you are editing invitation email\n                    <SettifySelect\n                      @model={{this.practiceArea}}\n                      @label=\"Practice area\"\n                      @name=\"practice area\"\n                      @content={{this.practiceAreaSelects}}\n                      @labelPath=\"label\"\n                      @valuePath=\"value\"\n                      @onChange={{this.onPracticeAreaOrTemplateChange}}\n                    />\n                  </p>\n                  {{#if this.practiceArea}}\n                    {{#if this.emailTemplateContent.isLoading}}\n                      {{loading-display loading=true}}\n                    {{else}}\n                      <div class=\"attachments\">\n                        {{#if this.isAttachmentError}}\n                          <p>\n                            {{this.attachmentErrorMessage}}.\n                            <a class=\"clickable\" {{on \"click\" this.onPracticeAreaOrTemplateChange}}>Try again</a>\n                          </p>\n                        {{/if}}\n  \n                        {{#if (and this.attachments.length (not this.isAttachmentError))}}\n                          <table class=\"attachments\">\n                            <thead>\n                              <tr>\n                                <th class=\"attachment-column\">Attachments</th>\n                                <th></th>\n                              </tr>\n                            </thead>\n                            <tbody>\n                              {{#each this.attachments as |attachment|}}\n                                <tr>\n                                  <td>{{attachment.path}}</td>\n                                  <td>\n                                    <a\n                                      title={{attachment.path}}\n                                      class=\"attachment-action\"\n                                      href={{attachment.selfLink}}\n                                      download=\"{{attachment.path}}\"\n                                      target=\"_blank\"\n                                      rel=\"noopener noreferrer\"\n                                    >\n                                      <i class=\"fa-light fa-download fa-lg\"></i>\n                                    </a>\n                                    {{#if (eq this.deletingAttachment attachment.path)}}\n                                      <i class=\"fa-light fa-spinner fa-spin fa-lg\"></i>\n                                    {{else}}\n                                      <a\n                                        title=\"Delete attachment\"\n                                        class=\"attachment-action {{if this.deletingAttachment 'disabled'}}\"\n                                        href=\"#\"\n                                        {{on \"click\" (fn this.deleteAttachment attachment.path)}}\n                                      >\n                                        <i class=\"fa-light fa-trash fa-lg negative\"></i>\n                                      </a>\n                                    {{/if}}\n                                  </td>\n                                </tr>\n                              {{/each}}\n                            </tbody>\n                          </table>\n                        {{/if}}\n  \n                        {{! Attachments uploader }}\n                        {{#if this.isUploadingAttachment}}\n                          <p><i class=\"fa-light fa-spinner fa-spin\"></i> Uploading...</p>\n                        {{else}}\n                          <label class=\"attachment-uploader\">\n                            <input type=\"file\" id=\"attachmentFileUpload\" accept=\".pdf,.docx,.doc\" {{on \"change\" this.onFileUpload}} />\n                          </label>\n                        {{/if}}\n                      </div>\n                      <p>\n                        <CheckBox @model={{this.noLawyerBios}}>\n                          Hide lawer bios from the email\n                        </CheckBox>\n                      </p>\n  \n                      {{#if (eq this.selectedTemplate \"confirmation\")}}\n                        <p>\n                          {{#check-box model=this.initialPhoneMeeting onChange=this.onPracticeAreaOrTemplateChange}}\n                            Update wording for telephone / videoconference template\n                          {{/check-box}}\n                        </p>\n                      {{/if}}\n  \n                      <p>\n                        Appointment duration:\n                        {{this.appointmentDuration}}\n                        minutes.\n                        <small><LinkTo @route=\"admin.config.invitations\" @query={{hash firmID=this.firmID practiceArea=this.practiceArea}}>Update settings</LinkTo></small>\n                      </p>\n  \n                      <CustomisableInvitationEmail\n                        @templatePayload={{this.emailTemplateContent}}\n                        @dynamicBlocks={{this.dynamicBlocks}}\n                        @editor={{this.editor}}\n                        @setEditor={{action \"setEditor\"}}\n                      />\n  \n                      <p class=\"editor-actions-wrapper mt-2\">\n                        {{#if this.confirmResetEmail}}\n                          <div class=\"editor-actions-controls\">\n                            Are you sure you want to reset email template to default wording?\n                            <div class=\"reset-confirmation-buttons\">\n                              <a class=\"clickable\" {{on \"click\" this.resetEmailTemplate}}>Confirm</a>\n                              <a class=\"clickable\" {{on \"click\" (fn (mut this.confirmResetEmail) false)}}>Cancel</a>\n                            </div>\n                          </div>\n                        {{else if this.emailTemplateContent}}\n                          <div class=\"editor-actions-controls\">\n                            {{#if this.resetEmailError}}\n                              <span class=\"negative\"><i class=\"fal fa-exclamation-circle\" /> Error resetting template</span>\n                            {{/if}}\n                            <a class=\"clickable\" {{on \"click\" (fn (mut this.confirmResetEmail) true)}}>Reset</a>\n                            <a class=\"clickable\" {{on \"click\" this.saveCustomEmailTemplate}}>Save</a>\n                          </div>\n                        {{/if}}\n                      </p>\n                    {{/if}}\n                  {{/if}}\n                {{/if}}\n              </div>\n            {{/if}}\n  \n            {{! Landing Page }}\n            {{#if (eq this.customisation \"pages\")}}\n              <div>\n                <SettifySelect\n                  @model={{this.practiceArea}}\n                  @label=\"Practice area\"\n                  @name=\"practice area\"\n                  @content={{this.practiceAreaSelects}}\n                  @labelPath=\"label\"\n                  @valuePath=\"value\"\n                />\n  \n                {{#if this.practiceArea}}\n                  {{#if this.landingPageContent.isLoading}}\n                    {{loading-display loading=true}}\n                  {{else}}\n                    <p class=\"mt-3\">\n                      Choose a practice area and add custom content to the NextGen landing page. HTML tags are supported for content styling.\n                    </p>\n  \n                    <Customisations::LandingPage @content={{this.pageContent}} @setEditor={{action \"setEditor\"}} @editor={{this.editor}} />\n  \n                    <p class=\"editor-actions-wrapper mt-2\">\n                      {{#if this.confirmResetLandingPage}}\n                        <div class=\"editor-actions-controls\">\n                          Are you sure you want to reset landing page to default wording?\n                          <div class=\"reset-confirmation-buttons\">\n                            <a class=\"clickable\" {{on \"click\" this.resetLandingPage}}>Confirm</a>\n                            <a class=\"clickable\" {{on \"click\" (fn (mut this.confirmResetLandingPage) false)}}>Cancel</a>\n                          </div>\n                        </div>\n                      {{else}}\n                        <div class=\"editor-actions-controls\">\n                          {{#if this.resetLandingPageError}}\n                            <span class=\"negative\"><i class=\"fal fa-exclamation-circle\" /> Error resetting page content.</span>\n                          {{/if}}\n                          {{#if this.savingLandingPageError}}\n                            <span class=\"negative\"><i class=\"fal fa-exclamation-circle\" /> Error uploading custom page content.</span>\n                          {{/if}}\n                          <a class=\"clickable\" {{on \"click\" (fn (mut this.confirmResetLandingPage) true)}}>Reset</a>\n                          <a class=\"clickable\" {{on \"click\" this.saveLandingPage}}>Save</a>\n                        </div>\n                      {{/if}}\n                    </p>\n                  {{/if}}\n                {{/if}}\n              </div>\n            {{/if}}\n          </main>\n        </div>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"WObCs8Qw\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Firm customisations\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn firm-details\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,1,\\\"customisations\\\"],[14,0,\\\"even-row\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"nav\\\"],[14,0,\\\"small\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,3],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.firms\\\",[28,[37,4],null,[[\\\"selectedFirmID\\\"],[[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"main\\\"],[14,0,\\\"customisations-content-wrapper\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,7],null,[[\\\"@model\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\",\\\"@headerLabel\\\",\\\"@label\\\",\\\"@class\\\"],[[30,0,[\\\"customisation\\\"]],[30,0,[\\\"customisationOptions\\\",\\\"customisations\\\"]],\\\"label\\\",\\\"value\\\",true,\\\"Select customisation\\\",\\\"customisations__select\\\"]],null],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,10],[[30,0,[\\\"customisation\\\"]],\\\"emails\\\"],null],[[[1,\\\"            \\\"],[10,0],[12],[1,\\\"\\\\n              \\\"],[8,[39,7],null,[[\\\"@model\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\",\\\"@headerLabel\\\",\\\"@label\\\",\\\"@class\\\",\\\"@onChange\\\"],[[30,0,[\\\"selectedTemplate\\\"]],[30,0,[\\\"customisationOptions\\\",\\\"emailOptions\\\"]],\\\"label\\\",\\\"value\\\",true,\\\"Select template\\\",\\\"customisations__select\\\",[30,0,[\\\"onPracticeAreaOrTemplateChange\\\"]]]],null],[1,\\\"\\\\n              \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"selectedTemplate\\\"]],[[[1,\\\"                \\\"],[10,2],[12],[1,\\\"\\\\n                  Select practice area for which you are editing invitation email\\\\n                  \\\"],[8,[39,7],null,[[\\\"@model\\\",\\\"@label\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\",\\\"@onChange\\\"],[[30,0,[\\\"practiceArea\\\"]],\\\"Practice area\\\",\\\"practice area\\\",[30,0,[\\\"practiceAreaSelects\\\"]],\\\"label\\\",\\\"value\\\",[30,0,[\\\"onPracticeAreaOrTemplateChange\\\"]]]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"practiceArea\\\"]],[[[41,[30,0,[\\\"emailTemplateContent\\\",\\\"isLoading\\\"]],[[[1,\\\"                    \\\"],[1,[28,[35,12],null,[[\\\"loading\\\"],[true]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                    \\\"],[10,0],[14,0,\\\"attachments\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"isAttachmentError\\\"]],[[[1,\\\"                        \\\"],[10,2],[12],[1,\\\"\\\\n                          \\\"],[1,[30,0,[\\\"attachmentErrorMessage\\\"]]],[1,\\\".\\\\n                          \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,14],[\\\"click\\\",[30,0,[\\\"onPracticeAreaOrTemplateChange\\\"]]],null],[12],[1,\\\"Try again\\\"],[13],[1,\\\"\\\\n                        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,15],[[30,0,[\\\"attachments\\\",\\\"length\\\"]],[28,[37,16],[[30,0,[\\\"isAttachmentError\\\"]]],null]],null],[[[1,\\\"                        \\\"],[10,\\\"table\\\"],[14,0,\\\"attachments\\\"],[12],[1,\\\"\\\\n                          \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n                            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                              \\\"],[10,\\\"th\\\"],[14,0,\\\"attachment-column\\\"],[12],[1,\\\"Attachments\\\"],[13],[1,\\\"\\\\n                              \\\"],[10,\\\"th\\\"],[12],[13],[1,\\\"\\\\n                            \\\"],[13],[1,\\\"\\\\n                          \\\"],[13],[1,\\\"\\\\n                          \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,23],[[28,[37,23],[[30,0,[\\\"attachments\\\"]]],null]],null],null,[[[1,\\\"                              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                                \\\"],[10,\\\"td\\\"],[12],[1,[30,1,[\\\"path\\\"]]],[13],[1,\\\"\\\\n                                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                                  \\\"],[10,3],[15,\\\"title\\\",[30,1,[\\\"path\\\"]]],[14,0,\\\"attachment-action\\\"],[15,6,[30,1,[\\\"selfLink\\\"]]],[15,\\\"download\\\",[29,[[30,1,[\\\"path\\\"]]]]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"\\\\n                                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fa-light fa-download fa-lg\\\"],[12],[13],[1,\\\"\\\\n                                  \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,10],[[30,0,[\\\"deletingAttachment\\\"]],[30,1,[\\\"path\\\"]]],null],[[[1,\\\"                                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fa-light fa-spinner fa-spin fa-lg\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                                    \\\"],[11,3],[24,\\\"title\\\",\\\"Delete attachment\\\"],[16,0,[29,[\\\"attachment-action \\\",[52,[30,0,[\\\"deletingAttachment\\\"]],\\\"disabled\\\"]]]],[24,6,\\\"#\\\"],[4,[38,14],[\\\"click\\\",[28,[37,25],[[30,0,[\\\"deleteAttachment\\\"]],[30,1,[\\\"path\\\"]]],null]],null],[12],[1,\\\"\\\\n                                      \\\"],[10,\\\"i\\\"],[14,0,\\\"fa-light fa-trash fa-lg negative\\\"],[12],[13],[1,\\\"\\\\n                                    \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"                                \\\"],[13],[1,\\\"\\\\n                              \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"                          \\\"],[13],[1,\\\"\\\\n                        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"isUploadingAttachment\\\"]],[[[1,\\\"                        \\\"],[10,2],[12],[10,\\\"i\\\"],[14,0,\\\"fa-light fa-spinner fa-spin\\\"],[12],[13],[1,\\\" Uploading...\\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                        \\\"],[10,\\\"label\\\"],[14,0,\\\"attachment-uploader\\\"],[12],[1,\\\"\\\\n                          \\\"],[11,\\\"input\\\"],[24,1,\\\"attachmentFileUpload\\\"],[24,\\\"accept\\\",\\\".pdf,.docx,.doc\\\"],[24,4,\\\"file\\\"],[4,[38,14],[\\\"change\\\",[30,0,[\\\"onFileUpload\\\"]]],null],[12],[13],[1,\\\"\\\\n                        \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"                    \\\"],[13],[1,\\\"\\\\n                    \\\"],[10,2],[12],[1,\\\"\\\\n                      \\\"],[8,[39,28],null,[[\\\"@model\\\"],[[30,0,[\\\"noLawyerBios\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                        Hide lawer bios from the email\\\\n                      \\\"]],[]]]]],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,10],[[30,0,[\\\"selectedTemplate\\\"]],\\\"confirmation\\\"],null],[[[1,\\\"                      \\\"],[10,2],[12],[1,\\\"\\\\n\\\"],[6,[39,28],null,[[\\\"model\\\",\\\"onChange\\\"],[[30,0,[\\\"initialPhoneMeeting\\\"]],[30,0,[\\\"onPracticeAreaOrTemplateChange\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"                          Update wording for telephone / videoconference template\\\\n\\\"]],[]]]]],[1,\\\"                      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n                    \\\"],[10,2],[12],[1,\\\"\\\\n                      Appointment duration:\\\\n                      \\\"],[1,[30,0,[\\\"appointmentDuration\\\"]]],[1,\\\"\\\\n                      minutes.\\\\n                      \\\"],[10,\\\"small\\\"],[12],[8,[39,3],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.config.invitations\\\",[28,[37,4],null,[[\\\"firmID\\\",\\\"practiceArea\\\"],[[30,0,[\\\"firmID\\\"]],[30,0,[\\\"practiceArea\\\"]]]]]]],[[\\\"default\\\"],[[[[1,\\\"Update settings\\\"]],[]]]]],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n\\\\n                    \\\"],[8,[39,30],null,[[\\\"@templatePayload\\\",\\\"@dynamicBlocks\\\",\\\"@editor\\\",\\\"@setEditor\\\"],[[30,0,[\\\"emailTemplateContent\\\"]],[30,0,[\\\"dynamicBlocks\\\"]],[30,0,[\\\"editor\\\"]],[28,[37,31],[[30,0],\\\"setEditor\\\"],null]]],null],[1,\\\"\\\\n\\\\n                    \\\"],[10,2],[14,0,\\\"editor-actions-wrapper mt-2\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"confirmResetEmail\\\"]],[[[1,\\\"                        \\\"],[10,0],[14,0,\\\"editor-actions-controls\\\"],[12],[1,\\\"\\\\n                          Are you sure you want to reset email template to default wording?\\\\n                          \\\"],[10,0],[14,0,\\\"reset-confirmation-buttons\\\"],[12],[1,\\\"\\\\n                            \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,14],[\\\"click\\\",[30,0,[\\\"resetEmailTemplate\\\"]]],null],[12],[1,\\\"Confirm\\\"],[13],[1,\\\"\\\\n                            \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,14],[\\\"click\\\",[28,[37,25],[[28,[37,32],[[30,0,[\\\"confirmResetEmail\\\"]]],null],false],null]],null],[12],[1,\\\"Cancel\\\"],[13],[1,\\\"\\\\n                          \\\"],[13],[1,\\\"\\\\n                        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"emailTemplateContent\\\"]],[[[1,\\\"                        \\\"],[10,0],[14,0,\\\"editor-actions-controls\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"resetEmailError\\\"]],[[[1,\\\"                            \\\"],[10,1],[14,0,\\\"negative\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-exclamation-circle\\\"],[12],[13],[1,\\\" Error resetting template\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                          \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,14],[\\\"click\\\",[28,[37,25],[[28,[37,32],[[30,0,[\\\"confirmResetEmail\\\"]]],null],true],null]],null],[12],[1,\\\"Reset\\\"],[13],[1,\\\"\\\\n                          \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,14],[\\\"click\\\",[30,0,[\\\"saveCustomEmailTemplate\\\"]]],null],[12],[1,\\\"Save\\\"],[13],[1,\\\"\\\\n                        \\\"],[13],[1,\\\"\\\\n                      \\\"]],[]],null]],[]]],[1,\\\"                    \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[]],null]],[]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,10],[[30,0,[\\\"customisation\\\"]],\\\"pages\\\"],null],[[[1,\\\"            \\\"],[10,0],[12],[1,\\\"\\\\n              \\\"],[8,[39,7],null,[[\\\"@model\\\",\\\"@label\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[[30,0,[\\\"practiceArea\\\"]],\\\"Practice area\\\",\\\"practice area\\\",[30,0,[\\\"practiceAreaSelects\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"practiceArea\\\"]],[[[41,[30,0,[\\\"landingPageContent\\\",\\\"isLoading\\\"]],[[[1,\\\"                  \\\"],[1,[28,[35,12],null,[[\\\"loading\\\"],[true]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                  \\\"],[10,2],[14,0,\\\"mt-3\\\"],[12],[1,\\\"\\\\n                    Choose a practice area and add custom content to the NextGen landing page. HTML tags are supported for content styling.\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\\n                  \\\"],[8,[39,34],null,[[\\\"@content\\\",\\\"@setEditor\\\",\\\"@editor\\\"],[[30,0,[\\\"pageContent\\\"]],[28,[37,31],[[30,0],\\\"setEditor\\\"],null],[30,0,[\\\"editor\\\"]]]],null],[1,\\\"\\\\n\\\\n                  \\\"],[10,2],[14,0,\\\"editor-actions-wrapper mt-2\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"confirmResetLandingPage\\\"]],[[[1,\\\"                      \\\"],[10,0],[14,0,\\\"editor-actions-controls\\\"],[12],[1,\\\"\\\\n                        Are you sure you want to reset landing page to default wording?\\\\n                        \\\"],[10,0],[14,0,\\\"reset-confirmation-buttons\\\"],[12],[1,\\\"\\\\n                          \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,14],[\\\"click\\\",[30,0,[\\\"resetLandingPage\\\"]]],null],[12],[1,\\\"Confirm\\\"],[13],[1,\\\"\\\\n                          \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,14],[\\\"click\\\",[28,[37,25],[[28,[37,32],[[30,0,[\\\"confirmResetLandingPage\\\"]]],null],false],null]],null],[12],[1,\\\"Cancel\\\"],[13],[1,\\\"\\\\n                        \\\"],[13],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                      \\\"],[10,0],[14,0,\\\"editor-actions-controls\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"resetLandingPageError\\\"]],[[[1,\\\"                          \\\"],[10,1],[14,0,\\\"negative\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-exclamation-circle\\\"],[12],[13],[1,\\\" Error resetting page content.\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"savingLandingPageError\\\"]],[[[1,\\\"                          \\\"],[10,1],[14,0,\\\"negative\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-exclamation-circle\\\"],[12],[13],[1,\\\" Error uploading custom page content.\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                        \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,14],[\\\"click\\\",[28,[37,25],[[28,[37,32],[[30,0,[\\\"confirmResetLandingPage\\\"]]],null],true],null]],null],[12],[1,\\\"Reset\\\"],[13],[1,\\\"\\\\n                        \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,14],[\\\"click\\\",[30,0,[\\\"saveLandingPage\\\"]]],null],[12],[1,\\\"Save\\\"],[13],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"                  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,35],null,null,null]],[\\\"attachment\\\"],false,[\\\"animated-header\\\",\\\"div\\\",\\\"nav\\\",\\\"link-to\\\",\\\"hash\\\",\\\"i\\\",\\\"main\\\",\\\"settify-select\\\",\\\"br\\\",\\\"if\\\",\\\"eq\\\",\\\"p\\\",\\\"loading-display\\\",\\\"a\\\",\\\"on\\\",\\\"and\\\",\\\"not\\\",\\\"table\\\",\\\"thead\\\",\\\"tr\\\",\\\"th\\\",\\\"tbody\\\",\\\"each\\\",\\\"-track-array\\\",\\\"td\\\",\\\"fn\\\",\\\"label\\\",\\\"input\\\",\\\"check-box\\\",\\\"small\\\",\\\"customisable-invitation-email\\\",\\\"action\\\",\\\"mut\\\",\\\"span\\\",\\\"customisations/landing-page\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/config/customisations.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/config/dashboard\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Admin Experience\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn firm-details\">\n        <br>\n        <div>\n          <p><small><LinkTo @route=\"admin.firms\" @query={{hash selectedFirmID=this.firmID}}><i class=\"fal fa-arrow-circle-left\" />Back</LinkTo></small></p>\n        </div>\n        <LiquidIf @predicate={{not this.filteredSettings}}>\n          <LoadingSpinner />\n        </LiquidIf>\n  \n        <LiquidIf @predicate={{this.filteredSettings}}>\n          <span class=\"config-header\"><LineIcon @src=\"/assets/images/icons/configure.png\" /></span>\n  \n          {{#if this.firmSettings.settings.otherSettifyURLs}}\n            <p>\n              Viewing settings for <b>{{this.practiceArea}}</b>. Switch to:\n              {{#each-in this.firmSettings.settings.otherSettifyURLs as |area URL|}}\n                {{#if URL}}\n                  <LinkTo @route=\"admin.config.dashboard\" @query={{hash firmID=this.firmID practiceArea=area}}>\n                    {{area}}\n                  </LinkTo>\n                {{/if}}\n              {{/each-in}}\n            </p>\n          {{/if}}\n  \n          <Admin::FilteredSettingsTable\n            @filteredSettings={{this.filteredSettings}}\n            @firmSettings={{this.firmSettings}}\n            @selectedPracticeAreaSettings={{this.selectedPracticeAreaSettings}}\n          />\n  \n          <Admin::SettingsSaveButtons\n            @savingChanges={{this.savingChanges}}\n            @savingChangesSuccess={{this.savingChangesSuccess}}\n            @savingChangesError={{this.savingChangesError}}\n            @saveChangesAction={{action \"saveChanges\"}}\n            @revertChangesAction={{action \"revertChanges\"}}\n          />\n  \n        </LiquidIf>\n  \n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"RpRD6ogL\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Admin Experience\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn firm-details\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,5],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.firms\\\",[28,[37,6],null,[[\\\"selectedFirmID\\\"],[[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,9],[[30,0,[\\\"filteredSettings\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[39,10],null,null,null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\\n      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"filteredSettings\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"config-header\\\"],[12],[8,[39,12],null,[[\\\"@src\\\"],[\\\"/assets/images/icons/configure.png\\\"]],null],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"firmSettings\\\",\\\"settings\\\",\\\"otherSettifyURLs\\\"]],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            Viewing settings for \\\"],[10,\\\"b\\\"],[12],[1,[30,0,[\\\"practiceArea\\\"]]],[13],[1,\\\". Switch to:\\\\n\\\"],[42,[28,[37,16],[[30,0,[\\\"firmSettings\\\",\\\"settings\\\",\\\"otherSettifyURLs\\\"]]],null],null,[[[41,[30,1],[[[1,\\\"                \\\"],[8,[39,5],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.config.dashboard\\\",[28,[37,6],null,[[\\\"firmID\\\",\\\"practiceArea\\\"],[[30,0,[\\\"firmID\\\"]],[30,2]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  \\\"],[1,[30,2]],[1,\\\"\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[1,2]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n        \\\"],[8,[39,17],null,[[\\\"@filteredSettings\\\",\\\"@firmSettings\\\",\\\"@selectedPracticeAreaSettings\\\"],[[30,0,[\\\"filteredSettings\\\"]],[30,0,[\\\"firmSettings\\\"]],[30,0,[\\\"selectedPracticeAreaSettings\\\"]]]],null],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,18],null,[[\\\"@savingChanges\\\",\\\"@savingChangesSuccess\\\",\\\"@savingChangesError\\\",\\\"@saveChangesAction\\\",\\\"@revertChangesAction\\\"],[[30,0,[\\\"savingChanges\\\"]],[30,0,[\\\"savingChangesSuccess\\\"]],[30,0,[\\\"savingChangesError\\\"]],[28,[37,19],[[30,0],\\\"saveChanges\\\"],null],[28,[37,19],[[30,0],\\\"revertChanges\\\"],null]]],null],[1,\\\"\\\\n\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,20],null,null,null]],[\\\"URL\\\",\\\"area\\\"],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"hash\\\",\\\"i\\\",\\\"liquid-if\\\",\\\"not\\\",\\\"loading-spinner\\\",\\\"span\\\",\\\"line-icon\\\",\\\"if\\\",\\\"b\\\",\\\"each\\\",\\\"-each-in\\\",\\\"admin/filtered-settings-table\\\",\\\"admin/settings-save-buttons\\\",\\\"action\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/config/dashboard.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/config/editform\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    {{#if this.model.creatingNewInduction}}\n      New Form\n    {{else}}\n      Editing\n      {{this.model.title}}\n    {{/if}}\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n  \n    {{! TODO: Only display this when there are actually changes to be saved }}\n    <div class=\"row no-margin\">\n      {{#unless this.readOnly}}\n        {{#if (or (and (eq this.viewMode \"edit\") (eq this.currentFormModel \"draft\")) this.newOrBranchingForm)}}\n          <div class=\"save-widget {{if (not this.savingChanges this.saveComplete this.saveError) 'clickable'}}\" {{action \"saveChanges\"}}>\n            <LiquidIf @predicate={{this.savingChanges}}>\n              <small><i class=\"fal fa-spinner-third fa-spin\" />Saving</small>\n            </LiquidIf>\n            <LiquidIf @predicate={{this.saveComplete}}>\n              <small><i class=\"fal fa-check-circle\" />Saved</small>\n            </LiquidIf>\n            <LiquidIf @predicate={{this.saveError}}>\n              <small class=\"negative\"><i class=\"fal fa-times-circle negative\" />Try again?</small>\n            </LiquidIf>\n            <LiquidIf @predicate={{not this.savingChanges this.saveComplete this.saveError}}>\n              <small>\n                <i class=\"fal fa-save\" />\n                {{#if this.reviewingChanges}}\n                  Approve and promote\n                {{else}}\n                  Save\n                  {{unless this.newOrBranchingForm \"draft\"}}\n                {{/if}}\n              </small>\n            </LiquidIf>\n          </div>\n        {{/if}}\n        <div class=\"variables-widget\">\n          <small>\n            <div class=\"clickable\" {{action \"toggleWidget\" \"showVariables\"}}><i class=\"fal fa-abacus\" />Variables</div>\n            <LiquidIf @predicate={{this.showVariables}}>\n              <span class=\"leftalign\">\n                <VariablePrinter @variables={{this.model}} @specialVariables={{this.clientRecord.specialVariables}} />\n              </span>\n            </LiquidIf>\n          </small>\n        </div>\n        <div class=\"filter-widget\">\n          <small>\n            <div class=\"clickable\" {{action \"toggleWidget\" \"showFilters\"}}><i class=\"fal fa-filter\" />Filters</div>\n            <LiquidIf @predicate={{this.showFilters}}>\n              {{#each (parse-text getFilters=true) as |filter|}}\n                <div class=\"clickable filter\" {{action \"addFilter\" filter.reference filter.args}} title={{filter.blurb}}>\n                  {{filter.name}}\n                </div>\n              {{/each}}\n              <LiquidIf @predicate={{this.totalFilter}}>\n                <div class=\"totalFilter\">\n                  <span>{{this.totalFilter}}</span>\n                  <span>\n                    <i class=\"fal fa-ban clickable\" {{action \"clearFilter\"}} title=\"Clear filter chain\"></i>\n                    <i class=\"fal fa-minus-circle clickable\" {{action \"removeFilter\"}} title=\"Remove last filter\"></i>\n                    <i class=\"fal fa-copy clickable\" {{action \"copyTotalFilter\"}} title=\"Copy filter chain\"></i>\n                  </span>\n                </div>\n              </LiquidIf>\n            </LiquidIf>\n          </small>\n        </div>\n      {{/unless}}\n      {{#if (or this.model.metadata.basedOnFormID (eq this.currentFormModel \"draft\"))}}\n        <div class=\"changes-widget\">\n          <small>\n            <div class=\"clickable\" {{action \"toggleWidget\" \"showChanges\"}}><i class=\"fal fa-split\" />Show changes</div>\n            <LiquidIf @predicate={{this.showChanges}}>\n              {{#each this.changesArray as |change|}}\n                <div>\n                  {{if change.element.__newElement \"New\" \"Change\"}}:\n                  <a class=\"clickable\" {{action \"viewChange\" change.path}}>\n                    {{change.path}}\n                  </a>\n                </div>\n              {{else}}\n                No Changes\n              {{/each}}\n            </LiquidIf>\n          </small>\n        </div>\n      {{/if}}\n    </div>\n  \n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn settify-for-everything edit-form\">\n        <br>\n        <div>\n          <LiquidIf @predicate={{this.showLoadingSpinner}}>\n            <div class=\"summary-downloading-status\">\n              Preparing download...\n            </div>\n            <LoadingSpinner />\n          </LiquidIf>\n          <p>\n            <small><LinkTo @route=\"admin.config.forms\" @query={{hash firmID=this.firmID}}><i class=\"fal fa-arrow-circle-left\" />Back</LinkTo></small>\n            <br>\n            <small>\n              Viewing:\n              <a class={{if (eq this.viewMode \"edit\") \"disabled\" \"clickable\"}} {{action \"setViewMode\" \"edit\"}}>\n                <i class=\"fal fa-pencil-ruler\"></i>\n                Form definition\n              </a>\n              {{#if this.iCan.viewSummaryMode}}\n                <a class={{if (eq this.viewMode \"summary\") \"disabled\" \"clickable\"}} {{action \"setViewMode\" \"summary\"}}>\n                  <i class=\"fal fa-file-pdf\"></i>\n                  {{#if this.iCan.editFirmSummary}}\n                    Client-facing summary\n                  {{else}}\n                    Summary mode\n                  {{/if}}\n                </a>\n              {{/if}}\n              {{#if this.iCan.editFirmSummary}}\n                <a class={{if (eq this.viewMode \"firmSummary\") \"disabled\" \"clickable\"}} {{action \"setViewMode\" \"firmSummary\"}}>\n                  <i class=\"fal fa-file-pdf\"></i>\n                  Firm-facing brief\n                </a>\n              {{/if}}\n              <a class={{if (eq this.viewMode \"blueprint\") \"disabled\" \"clickable\"}} {{action \"setViewMode\" \"blueprint\"}}>\n                <i class=\"fal fa-file-word\"></i>\n                Blueprint mode\n              </a>\n              {{#if this.iCan.editFormVariables}}\n                <a class={{if (eq this.viewMode \"formVariables\") \"disabled\" \"clickable\"}} {{action \"setViewMode\" \"formVariables\"}}>\n                  <i class=\"fal fa-folder-open\"></i>\n                  Form variables\n                </a>\n              {{/if}}\n              {{#if (and this.iCan.editChronology this.model.enableChronology)}}\n                <a class={{if (eq this.viewMode \"chronology\") \"disabled\" \"clickable\"}} {{action \"setViewMode\" \"chronology\"}}>\n                  <i class=\"fal fa-clock\"></i>\n                  Chronology\n                </a>\n              {{/if}}\n              {{#if this.iCan.viewIntegrationInformation}}\n                <a class={{if (eq this.viewMode \"integration\") \"disabled\" \"clickable\"}} {{action \"setViewMode\" \"integration\"}}>\n                  <i class=\"fal fa-plug\"></i>\n                  Integration mode\n                </a>\n              {{/if}}\n              {{#if this.iCan.viewJSONMode}}\n                <a class={{if (eq this.viewMode \"json\") \"disabled\" \"clickable\"}} {{action \"setViewMode\" \"json\"}}>\n                  <i class=\"fal fa-code\"></i>\n                  Raw JSON code\n                </a>\n              {{/if}}\n              <LiquidIf @predicate={{eq this.viewMode \"blueprint\"}}>\n                <LiquidIf @predicate={{this.blueprintDiff}}>\n                  <a class=\"clickable\" {{action \"downloadComparePDF\" \"condensed-blueprint-output\"}}>\n                    <i class=\"fal fa-file-pdf\"></i>\n                    Download compare as PDF\n                  </a>\n                </LiquidIf>\n                <LiquidIf @predicate={{not this.blueprintDiff}}>\n                  <a class=\"clickable\" {{action \"downloadAsDocx\" \"condensed-blueprint-output\"}}>\n                    <i class=\"fal fa-file-word\"></i>\n                    Download as docx\n                  </a>\n                </LiquidIf>\n                {{#if this.model.metadata.basedOnFormID}}\n                  <LiquidIf @predicate={{this.blueprintDiff}}>\n                    <a class=\"clickable\" {{action \"hideChanges\"}}>\n                      <i class=\"fal fa-strikethrough\"></i>\n                      Hide changes\n                    </a>\n                  </LiquidIf>\n                  <LiquidIf @predicate={{not this.blueprintDiff}}>\n                    <a class=\"clickable\" {{action \"getMasterBlueprint\"}}>\n                      <i class=\"fal fa-strikethrough\"></i>\n                      Show changes from master blueprints\n                    </a>\n                  </LiquidIf>\n                {{/if}}\n              </LiquidIf>\n            </small>\n          </p>\n        </div>\n        <LiquidIf @predicate={{this.loadingSummary}}>\n          <LoadingSpinner />\n        </LiquidIf>\n  \n        {{#if this.editingLock}}\n          <div>\n            <h1>Form is being edited elsewhere</h1>\n            <p>\n              It looks like someone is editing this same form in another tab, or another computer. To avoid people clobbering each other's changes, forms can only be edited by one\n              person at a time, in one tab.\n            </p>\n            <p>\n              The current lock on this form is due to expire\n              {{pretty-date this.editingLock relativeTime=true}}, but that will be extended if they continue editing in the meantime.\n            </p>\n            {{#if this.iCan.clearEditingLocks}}\n              <p>\n                <b>TODO:</b>\n                Click here to cancel the current editing lock.\n              </p>\n            {{/if}}\n          </div>\n        {{/if}}\n  \n        <LiquidIf @predicate={{this.promotionSuccess}}>\n          <p><i class=\"fal fa-check-circle\" />Changes promoted successfully!</p>\n        </LiquidIf>\n  \n        {{#unless this.newOrBranchingForm}}\n          <div>\n            <p class=\"display-flex align-items-center\">\n              <LiquidIf @predicate={{eq this.currentFormModel \"live\"}}>\n                <b>Viewing Live Form</b>\n              </LiquidIf>\n              <LiquidIf @predicate={{not-eq this.currentFormModel \"live\"}}>\n                <b>Editing Draft {{#if this.draftFromS3}}From S3{{/if}}</b>\n              </LiquidIf>\n              {{#if this.iCan.editForm}}\n                <a class=\"clickable\" {{action \"changeCurrentFormModel\" this.currentFormModel}}>\n                  <i class=\"fal fa-rotate\" />Change\n                </a>\n              {{/if}}\n            </p>\n          </div>\n        {{/unless}}\n  \n        <div>\n          {{#if (and this.iCan.approveChanges this.draftFromS3 (eq this.viewMode \"edit\") (eq this.currentFormModel \"draft\"))}}\n            <p>\n              <a class=\"clickable\" {{action \"toggleReview\"}}>\n                <LiquidIf @predicate={{this.reviewingChanges}}>\n                  Edit Draft\n                </LiquidIf>\n                <LiquidIf @predicate={{not this.reviewingChanges}}>\n                  Review Draft for Promotion\n                </LiquidIf>\n              </a>\n            </p>\n          {{/if}}\n        </div>\n  \n        <LiquidIf @predicate={{eq this.viewMode \"edit\"}}>\n          {{! Top-level information about the induction }}\n          <small>ID: {{or this.model.id \"will be set when you save this induction\"}}</small>\n          <SettifyTextline @disabled={{this.readOnly}} @model={{this.model.title}} @label=\"Induction title\" />\n          <SettifyTextline @disabled={{this.readOnly}} @model={{this.model.regionTitle}} @label=\"Region title\" />\n          {{#if this.iCan.editShortTitles}}\n            <SettifyTextline\n              @disabled={{this.readOnly}}\n              @model={{this.model.shortTitle}}\n              @label=\"Title to use on the client brief\"\n              @placeholder={{sum \"(Defaults to \" (if this.model.title (sum \"\" \" model.title \" \"\") \"the title above\") \")\"}}\n            />\n          {{/if}}\n          <SettifyTextarea @disabled={{this.readOnly}} @model={{this.model.blurb}} @label=\"A client-facing blurb to describe this form\" @rows={{2}} />\n          <EditIconPicker @model={{this.model.icon}} @iCan={{this.iCan}} @readOnly={{this.readOnly}} />\n  \n          {{!-- {{#if iCan.editPracticeArea}}\n            {{settify-select disabled=readOnly model=model.practiceArea label=\"Practice area\" \n              name=\"practice-area\"\n              content=practiceAreaSelections\n              labelPath=\"label\"\n              valuePath=\"value\"\n            }}\n          {{/if}} --}}\n  \n          <CheckBox @disabled={{this.readOnly}} @model={{this.model.enabled}} @text=\"This form is available for your clients to use\" />\n          {{#if this.iCan.editInductionPlacementRestrictions}}\n            <CheckBox @disabled={{this.readOnly}} @model={{this.model.canBeRepeated}} @text=\"This form can be completed multiple times by the same client\" />\n            <CheckBox @disabled={{this.readOnly}} @model={{this.model.alwaysSelected}} @text=\"This form must always be completed by your clients\" />\n            <CheckBox @disabled={{this.readOnly}} @model={{this.model.invitationDefault}} @text=\"Add this form as a default form for all new invitations\" />\n            <LiquidIf @predicate={{not this.model.pinToEnd}}>\n              <CheckBox @disabled={{this.readOnly}} @model={{this.model.pinToStart}} @text=\"This form should be one of the first asked\" />\n            </LiquidIf>\n            <LiquidIf @predicate={{not this.model.pinToStart}}>\n              <CheckBox @disabled={{this.readOnly}} @model={{this.model.pinToEnd}} @text=\"This form should be one of the last asked\" />\n            </LiquidIf>\n            <CheckBox @disabled={{this.readOnly}} @model={{this.model.enableChronology}} @text=\"Enable the chronology for this form\" />\n          {{/if}}\n  \n          <h1>Chapters</h1>\n          {{#if this.iCan.addChapters}}\n            <div class=\"insert-bar clickable {{if this.readOnly 'no-display'}}\" {{action \"insertChapterAfter\"}}>\n              <span><i class=\"fal fa-plus-circle tight\" />Insert chapter here</span>\n            </div>\n          {{/if}}\n          {{#each this.model.chapters as |chapter chapterIndex|}}\n            {{#if chapter.standalonePages}}\n              <br />\n            {{/if}}\n            <h2 class=\"clickable {{if chapter.deleted 'disabled-placeholder'}}\" {{action \"toggleExpand\" chapter}} id={{chapter.id}}>\n              <i class=\"fal fa-chevron-right {{if chapter.expand 'fa-rotate-90'}}\" />\n              <TitlePrinter\n                @model={{chapter}}\n                @titleFor=\"chapter\"\n                @includeID={{true}}\n                @clientRecord={{this.clientRecord}}\n                @context={{this.context}}\n                @chapterNumber={{chapterIndex}}\n              />\n            </h2>\n  \n            <LiquidIf @predicate={{chapter.expand}}>\n              <div class=\"edge\" {{action \"toggleExpand\" chapter}}></div>\n              <div class=\"content\">\n                <CompareFormChanges @model={{chapter}} />\n                {{#unless chapter.standalonePages}}\n                  <p>\n                    <SettifyTextline @disabled={{this.readOnly}} @model={{chapter.title}} @label=\"Chapter title\" />\n                    {{#if this.iCan.editShortTitles}}\n                      <SettifyTextline\n                        @disabled={{this.readOnly}}\n                        @model={{chapter.shortTitle}}\n                        @label=\"Title to use on the client brief\"\n                        @placeholder={{sum \"(Defaults to \" (if chapter.title (sum \"\" \" chapter.title \" \"\") \"the title above\") \")\"}}\n                      />\n                    {{/if}}\n                    {{#if (or (not chapter.created) this.iCan.editIDs)}}\n                      <SettifyTextline\n                        @disabled={{this.readOnly}}\n                        @model={{chapter.id}}\n                        @label=\"ID (must be unique among all chapters in this induction)\"\n                        @placeholder=\"For example, saleofland, registercompany, motorvehicleaccident\"\n                      />\n                      {{#if (and this.iCan.editIDs chapter.created)}}\n                        <small>\n                          <b class=\"negative\">Warning:</b>\n                          Changing an id can break references (eg, displayIf logic or {parsed text})\n                        </small>\n                      {{/if}}\n                    {{/if}}\n                    <EditIconPicker @model={{chapter.icon}} @iCan={{this.iCan}} @readOnly={{this.readOnly}} />\n                    {{#if this.iCan.editDisplayIf}}\n                      <EditJson @disabled={{this.readOnly}} @model={{chapter.displayIf}} />\n                    {{/if}}\n                    {{#if this.iCan.hideItemsOnTheBrief}}\n                      <small>\n                        <CheckBox @disabled={{this.readOnly}} @model={{chapter.hideInClientSummary}} @text=\"Hide this chapter on the client-facing brief\" />\n                        <CheckBox @disabled={{this.readOnly}} @model={{chapter.hideFromFirm}} @text=\"Hide this chapter on the firm-facing brief\" />\n                      </small>\n                    {{/if}}\n                    {{#if this.iCan.toggleFirmLogoOnChapter}}\n                      <small>\n                        <CheckBox @disabled={{this.readOnly}} @model={{chapter.showFirmLogo}} @text=\"Display the firm logo on this chapter\" />\n                      </small>\n                    {{/if}}\n                    {{#if this.iCan.toggleProgressIndicators}}\n                      <small>\n                        <CheckBox @disabled={{this.readOnly}} @model={{chapter.displayProgressIndicator}} @text=\"Display a progress indicator at the top of pages in this chapter\" />\n                      </small>\n                    {{/if}}\n                    {{#if this.iCan.disableChapterSkipButtons}}\n                      <small>\n                        <CheckBox @disabled={{this.readOnly}} @model={{chapter.disableSkipButton}} @text=\"Disable the button to skip this chapter\" />\n                      </small>\n                    {{/if}}\n                    <EditCommonTasks\n                      @name=\"chapter\"\n                      @object={{chapter}}\n                      @parentObject={{this.model}}\n                      @parentKey=\"chapters\"\n                      @index={{chapterIndex}}\n                      @readOnly={{this.readOnly}}\n                      @iCan={{this.iCan}}\n                    />\n                  </p>\n                  <b>Pages:</b>\n                {{/unless}}\n                {{#if this.iCan.addPages}}\n                  <div class=\"insert-bar clickable {{if this.readOnly 'no-display'}}\" {{action \"insertPageAfter\" chapter}}>\n                    <span><i class=\"fal fa-plus-circle tight\" />Insert page here</span>\n                  </div>\n                {{/if}}\n  \n                {{#each chapter.pages as |page pageIndex|}}\n                  <h3 class=\"clickable {{if page.deleted 'disabled-placeholder'}}\" {{action \"toggleExpand\" page}} id={{sum chapter.id \".\" page.id}}>\n                    <i class=\"fal fa-chevron-right {{if page.expand 'fa-rotate-90'}}\" />\n                    <TitlePrinter\n                      @model={{page}}\n                      @titleFor=\"page\"\n                      @includeID={{true}}\n                      @clientRecord={{this.clientRecord}}\n                      @context={{this.context}}\n                      @chapterNumber={{chapterIndex}}\n                      @pageNumber={{pageIndex}}\n                    />\n                  </h3>\n  \n                  <LiquidIf @predicate={{page.expand}}>\n                    <div class=\"edge\" {{action \"toggleExpand\" page}}></div>\n                    <div class=\"content\">\n                      <CompareFormChanges @model={{page}} />\n                      <p>\n                        <LiquidIf @predicate={{includes (get-each this.uniqueStandalonePages \"value\") page.id}}>\n                          <LiquidIf @predicate={{not page.answersLocation}}>\n                            <p class=\"marginbottom-0\"><i class=\"fal fa-exclamation-circle tight\"></i>\n                              Unique standalone pages require an answers location to be specified for user input</p>\n                          </LiquidIf>\n                        </LiquidIf>\n                        <LiquidIf @predicate={{not (includes (get-each this.uniqueStandalonePages \"value\") page.id)}}>\n                          <SettifyTextline @disabled={{this.readOnly}} @model={{page.title}} @label=\"Page title\" />\n                          <LiquidIf @predicate={{chapter.standalonePages}}>\n                            <small>\n                              <CheckBox @model={{page.bannerTitle}} @text=\"Use a banner title (same as a chapter title)\" />\n                              <EditIconPicker @model={{page.icon}} @iCan={{this.iCan}} @readOnly={{this.readOnly}} />\n                            </small>\n                          </LiquidIf>\n  \n                          {{#if (and this.iCan.editShortTitles (not chapter.standalonePages))}}\n                            <SettifyTextline\n                              @disabled={{this.readOnly}}\n                              @model={{page.shortTitle}}\n                              @label=\"Title to use on the client brief\"\n                              @placeholder={{sum \"(Defaults to \" (if page.title (sum \"\" \" page.title \" \"\") \"the title above\") \")\"}}\n                            />\n                          {{/if}}\n                          {{#if (or (not page.created) this.iCan.editIDs)}}\n                            <SettifyTextline\n                              @disabled={{this.readOnly}}\n                              @model={{page.id}}\n                              @label=\"ID (must be unique among all pages in this chapter)\"\n                              @placeholder=\"For example, saleofland, registercompany, motorvehicleaccident\"\n                            />\n                            {{#if (and this.iCan.editIDs page.created)}}\n                              <small>\n                                <b class=\"negative\">Warning:</b>\n                                Changing an id can break references (eg, displayIf logic or {parsed text})\n                              </small>\n                            {{/if}}\n                          {{/if}}\n                          <SettifyTextarea\n                            @disabled={{this.readOnly}}\n                            @model={{page.helpText}}\n                            @label=\"Helpful text if the client is not sure how to answer the questions on this page\"\n                            @rows={{2}}\n                          />\n                          {{#if this.iCan.editDisplayIf}}\n                            <EditJson @disabled={{this.readOnly}} @model={{page.displayIf}} />\n                          {{/if}}\n                        </LiquidIf>\n  \n                        {{#if this.iCan.useAnswersLocation}}\n                          <SettifyTextline @disabled={{this.readOnly}} @model={{page.answersLocation}}>\n                            (Advanced) Storage location for answers on this page\n                          </SettifyTextline>\n                          <LiquidIf @predicate={{page.answersLocation}}>\n                            <small>\n                              <CheckBox\n                                @disabled={{this.readOnly}}\n                                @model={{page.answersLocationLoop}}\n                                @text=\"This location is a list of objects, and I want to loop through them one by one\"\n                              />\n                            </small>\n                          </LiquidIf>\n                        {{/if}}\n  \n                        <LiquidIf @predicate={{not (includes (get-each this.uniqueStandalonePages \"value\") page.id)}}>\n                          {{#if this.iCan.hideItemsOnTheBrief}}\n                            <small>\n                              <CheckBox @disabled={{this.readOnly}} @model={{page.hideInClientSummary}} @text=\"Hide this page on the client-facing brief\" />\n                              <CheckBox @disabled={{this.readOnly}} @model={{page.hideFromFirm}} @text=\"Hide this page on the firm-facing brief\" />\n                            </small>\n                          {{/if}}\n                          {{#if this.iCan.hideChapterTitles}}\n                            <small>\n                              <CheckBox @disabled={{this.readOnly}} @model={{page.hideChapterTitle}} @text=\"Hide the chapter title on this page\" />\n                            </small>\n                          {{/if}}\n                          {{#if (and this.iCan.hideFirmLogoOnPage chapter.showFirmLogo)}}\n                            <small>\n                              <CheckBox @disabled={{this.readOnly}} @model={{page.hideFirmLogo}} @text=\"Hide the firm logo on this page\" />\n                            </small>\n                          {{/if}}\n                          {{#if this.iCan.showFirmsLetterheadOnPage}}\n                            <small>\n                              <CheckBox @disabled={{this.readOnly}} @model={{page.showFirmsLetterhead}} @text=\"Display the firm letterhead on this page\" />\n                            </small>\n                          {{/if}}\n                          {{#if this.iCan.customiseNextButtonNavigation}}\n                            <small>\n                              <CheckBox\n                                @disabled={{this.readOnly}}\n                                @model={{page.useCustomNextButtonNavigation}}\n                                @text=\"Specify an alternative location for the 'next' button to lead to\"\n                              />\n                              <LiquidIf @predicate={{page.useCustomNextButtonNavigation}}>\n                                <div class=\"marginleft-2\">\n                                  <SettifySelect\n                                    @disabled={{this.readOnly}}\n                                    @model={{page.customNextButtonTargetLocation}}\n                                    @label=\"Target route name\"\n                                    @name=\"target-route-name\"\n                                    @content={{this.customNextButtonRoutes}}\n                                    @labelPath=\"label\"\n                                    @valuePath=\"value\"\n                                  />\n                                  <CheckBox @disabled={{this.readOnly}} @model={{page.customNextButtonCompletesInduction}} @text=\"This navigation should complete the induction\" />\n                                  <LiquidIf @predicate={{page.customNextButtonCompletesInduction}}>\n                                    <div class=\"marginleft-2\">\n                                      <RadioButtons @text=\"Set detailedInductionComplete to true on navigation\" @model={{page.inductionTypeToComplete}} @value={{undefined}} />\n                                      <RadioButtons\n                                        @text=\"Set completedSimpleInduction to true on navigation\"\n                                        @model={{page.inductionTypeToComplete}}\n                                        @value=\"completedSimpleInduction\"\n                                      />\n                                    </div>\n                                  </LiquidIf>\n                                  <EditJson @disabled={{this.readOnly}} @model={{page.customNextButtonCondition}} @label=\"Conditional on (in JSON format)\" />\n                                </div>\n                              </LiquidIf>\n                            </small>\n                          {{/if}}\n                          <LiquidIf @predicate={{and this.iCan.toggleProgressIndicators chapter.displayProgressIndicator}}>\n                            <small>\n                              <CheckBox @disabled={{this.readOnly}} @model={{page.disableProgressIndicator}} @text=\"Disable the progress indicator on this page\" />\n                              <CheckBox @disabled={{this.readOnly}} @model={{page.hideFromProgressIndicator}} @text=\"Hide this page from the progress indicator\" />\n                            </small>\n                          </LiquidIf>\n                        </LiquidIf>\n                        <EditCommonTasks\n                          @name=\"page\"\n                          @object={{page}}\n                          @parentObject={{chapter}}\n                          @parentKey=\"pages\"\n                          @index={{pageIndex}}\n                          @readOnly={{this.readOnly}}\n                          @iCan={{this.iCan}}\n                        />\n                      </p>\n                      <b>Questions:</b>\n                      {{#if this.iCan.addQuestions}}\n                        <div class=\"insert-bar clickable {{if this.readOnly 'no-display'}}\" {{action \"insertQuestionAfter\" chapter page}}>\n                          <span><i class=\"fal fa-plus-circle tight\" />Insert question here</span>\n                        </div>\n                      {{/if}}\n                      {{#each page.questions as |q questionIndex|}}\n                        <h4 class={{if q.deleted \"disabled-placeholder\"}} id={{sum chapter.id \".\" page.id \".\" q.id}}>\n                          <span class=\"clickable\" {{action \"toggleExpand\" q}}>\n                            <i class=\"fal fa-chevron-right {{if q.expand 'fa-rotate-90'}}\" />\n                            <TitlePrinter\n                              @model={{q}}\n                              @titleFor=\"question\"\n                              @includeID={{true}}\n                              @clientRecord={{this.clientRecord}}\n                              @context={{this.context}}\n                              @chapterNumber={{chapterIndex}}\n                              @pageNumber={{pageIndex}}\n                              @questionNumber={{questionIndex}}\n                            />\n                          </span>\n                          <i\n                            class=\"fal fa-link clickable tight\"\n                            title=\"Copy the full context ID of this question, for use elswhere in the form definition\"\n                            {{action \"copyToClipboard\" (question-context-string chapter page q)}}\n                          />\n                        </h4>\n  \n                        <LiquidIf @predicate={{q.expand}}>\n                          <div class=\"edge\" {{action \"toggleExpand\" q}}></div>\n                          <div class=\"content\">\n                            <CompareFormChanges @model={{q}} />\n                            <EditQuestion\n                              @iCan={{this.iCan}}\n                              @readOnly={{this.readOnly}}\n                              @induction={{this.model}}\n                              @chapter={{chapter}}\n                              @page={{page}}\n                              @q={{q}}\n                              @client={{this.clientRecord}}\n                              @editMode={{this.editMode}}\n                              @questionIndex={{questionIndex}}\n                              @questionCount={{page.questions.length}}\n                            />\n                          </div>\n                        </LiquidIf>\n                        {{#if this.iCan.addQuestions}}\n                          <div class=\"insert-bar clickable {{if this.readOnly 'no-display'}}\" {{action \"insertQuestionAfter\" chapter page q}}>\n                            <span><i class=\"fal fa-plus-circle tight\" />Insert question here</span>\n                          </div>\n                        {{/if}}\n                      {{/each}}\n                    </div>\n                  </LiquidIf>\n                  {{#if this.iCan.addPages}}\n                    <div class=\"insert-bar clickable {{if this.readOnly 'no-display'}}\" {{action \"insertPageAfter\" chapter page}}>\n                      <span><i class=\"fal fa-plus-circle tight\" />Insert page here</span>\n                    </div>\n                  {{/if}}\n                {{/each}}\n              </div>\n            </LiquidIf>\n            {{#if (and this.iCan.addChapters (not chapter.standalonePages))}}\n              <div class=\"insert-bar clickable {{if this.readOnly 'no-display'}}\" {{action \"insertChapterAfter\" chapter}}>\n                <span><i class=\"fal fa-plus-circle tight\" />Insert chapter here</span>\n              </div>\n            {{/if}}\n          {{/each}}\n          <LiquidIf @predicate={{not this.hasStandAloneChapter}}>\n            <br />\n            <span class=\"clickable\" {{action \"insertStandalonePage\"}}><i class=\"fal fa-plus-circle tight\" />Add a standalone page</span>\n          </LiquidIf>\n          <LiquidIf @predicate={{and this.remainingUniqueStandalonePages.length this.iCan.addUniquePages}}>\n            {{#each this.remainingUniqueStandalonePages as |uniqueStandalonePage|}}\n              <span class=\"clickable\" {{action \"insertStandalonePage\" uniqueStandalonePage.value}}><i class=\"fal fa-plus-circle tight\" />{{uniqueStandalonePage.label}}</span><br />\n            {{/each}}\n          </LiquidIf>\n        </LiquidIf>\n        <LiquidIf @predicate={{eq this.viewMode \"summary\"}}>\n          {{#let this.mockData as |model|}}\n            <SummaryPrinter @model={{model}} />\n          {{/let}}\n        </LiquidIf>\n        <LiquidIf @predicate={{eq this.viewMode \"blueprint\"}}>\n          <LiquidIf @predicate={{this.blueprintDiff}}>\n            <div id=\"condensed-blueprint-output\" class=\"condensed-summary settify-for-everything blueprint-output\">\n              {{this.blueprintDiff}}\n            </div>\n          </LiquidIf>\n          <LiquidIf @predicate={{not this.blueprintDiff}}>\n            <div id=\"form-blueprints\">\n              <BlueprintDisplay @blueprint={{this.model}} @clientRecord={{this.clientRecord}} @induction={{this.induction}} />\n            </div>\n            {{#if this.masterBlueprint}}\n              <div class=\"display-none\" id=\"master-blueprints\">\n                <BlueprintDisplay\n                  @blueprint={{this.masterBlueprint}}\n                  @clientRecord={{this.clientRecord}}\n                  @induction={{this.induction}}\n                  @onFinishedRendering={{action \"compareBlueprints\"}}\n                />\n              </div>\n            {{/if}}\n          </LiquidIf>\n        </LiquidIf>\n        <LiquidIf @predicate={{eq this.viewMode \"json\"}}>\n          <EditJson @model={{this.model}} @rows={{30}} @max={{4097152}} @label=\"Raw JSON\" @readOnly={{this.readOnly}} />\n        </LiquidIf>\n        <LiquidIf @predicate={{eq this.viewMode \"formVariables\"}}>\n          <div class=\"insert-bar clickable {{if this.readOnly 'no-display'}}\" {{action \"addObjectToArray\" this.customVariableIndex \"customVariables\"}}>\n            <span><i class=\"fal fa-plus-circle tight\" />Add new variable here</span>\n          </div>\n          {{#each this.model.customVariables as |customVariable customVariableIndex|}}\n            <div class=\"display-flex\">\n              <h4>\n                <span class=\"clickable\" {{action \"toggleExpand\" customVariable}}>\n                  <i class=\"fal fa-chevron-right {{if customVariable.expand 'fa-rotate-90'}}\" />\n                  <span class=\"ellipsis-text\">\n                    {{or customVariable.id \"New variable\"}}\n                    <small>\n                      {{or customVariable.type \"displayIf\"}}\n                      variable\n                    </small>\n                  </span>\n                </span>\n              </h4>\n              <i class=\"fal fa-clipboard clickable\" title=\"Copy this variable name\" {{action \"copyToClipboard\" customVariable.id}} />\n              <i class=\"fal fa-times-circle clickable icon-delete\" title=\"Delete this variable\" {{action \"removeObjectFromArray\" customVariableIndex \"customVariables\"}} />\n            </div>\n            <LiquidIf @predicate={{customVariable.expand}}>\n              <div class=\"edge\" {{action \"toggleExpand\" customVariable}}></div>\n              <div class=\"content\">\n                <SettifyTextline @disabled={{this.readOnly}} @model={{customVariable.id}} @label=\"Variable name\" />\n                <RadioButtons @text=\"Evaluate using display-if logic\" @value={{undefined}} @model={{customVariable.type}} />\n                <RadioButtons @text=\"Evaluate a parse-text string\" @value=\"parseText\" @model={{customVariable.type}} />\n                <RadioButtons @text=\"Set as a constant\" @value=\"constant\" @model={{customVariable.type}} />\n                {{#if (not customVariable.type)}}\n                  <EditJson @model={{customVariable.displayIf}} @label=\"Display-if logic (in JSON format)\" />\n                {{else if (eq customVariable.type \"parseText\")}}\n                  <SettifyTextarea @model={{customVariable.parseTextCalculation}} @label=\"Parse-text string\" />\n                {{else if (eq customVariable.type \"constant\")}}\n                  <SettifyTextarea @model={{customVariable.constantValue}} @label=\"Constant value (in JSON format)\" />\n                {{/if}}\n              </div>\n            </LiquidIf>\n            <div class=\"insert-bar clickable {{if this.readOnly 'no-display'}}\" {{action \"addObjectToArray\" customVariableIndex \"customVariables\"}}>\n              <span><i class=\"fal fa-plus-circle tight\" />Add new variable here</span>\n            </div>\n          {{/each}}\n        </LiquidIf>\n        <LiquidIf @predicate={{eq this.viewMode \"chronology\"}}>\n          <div class=\"insert-bar clickable {{if this.readOnly 'no-display'}}\" {{action \"addObjectToArray\" this.eventIndex \"chronologyEvents\"}}>\n            <span><i class=\"fal fa-plus-circle tight\" />Add new events here</span>\n          </div>\n          {{#each this.model.chronologyEvents as |event eventIndex|}}\n            <div class=\"display-flex\">\n              <h4>\n                <span class=\"clickable\" {{action \"toggleExpand\" event}}>\n                  <i class=\"fal fa-chevron-right {{if event.expand 'fa-rotate-90'}}\" />\n                  <span class=\"ellipsis-text\">\n                    {{or event.answerLocation \"New event\"}}\n                    <small>\n                      {{event.text}}\n                    </small>\n                  </span>\n                </span>\n              </h4>\n              <i class=\"fal fa-times-circle clickable icon-delete\" title=\"Delete this event\" {{action \"removeObjectFromArray\" eventIndex \"chronologyEvents\"}} />\n            </div>\n            <LiquidIf @predicate={{event.expand}}>\n              <div class=\"edge\" {{action \"toggleExpand\" event}}></div>\n              <div class=\"content\">\n                <SettifyTextline\n                  @disabled={{this.readOnly}}\n                  @model={{event.answerLocation}}\n                  @label=\"Date answer parent (eg. the page or other object that holds the question, or an array of objects)\"\n                />\n                <SettifyTextline\n                  @disabled={{this.readOnly}}\n                  @model={{event.answerKey}}\n                  @label=\"Date answer key (eg. the id of the date question, leave blank if the parent object is already in {year, month, day} form)\"\n                />\n                <SettifyTextarea @disabled={{this.readOnly}} @model={{event.text}} @label=\"Chronology text\" />\n                <EditJson @model={{event.displayIf}} />\n              </div>\n            </LiquidIf>\n            <div class=\"insert-bar clickable {{if this.readOnly 'no-display'}}\" {{action \"addObjectToArray\" eventIndex \"chronologyEvents\"}}>\n              <span><i class=\"fal fa-plus-circle tight\" />Add new event here</span>\n            </div>\n          {{/each}}\n        </LiquidIf>\n        <LiquidIf @predicate={{eq this.viewMode \"integration\"}}>\n          <EditJson @model={{this.model.integrationObject}} @rows={{10}} @label=\"Integration object (in JSON format)\" />\n        </LiquidIf>\n        <LiquidIf @predicate={{eq this.viewMode \"firmSummary\"}}>\n          <LiquidIf @predicate={{this.iCan.editFirmSummary}}>\n            <RadioButtons @text=\"Same as client-facing summary\" @value={{false}} @model={{this.model.useCustomDefinition}} />\n            <RadioButtons @text=\"Different summary for lawyers\" @value={{true}} @model={{this.model.useCustomDefinition}} />\n          </LiquidIf>\n          <LiquidIf @predicate={{this.model.useCustomDefinition}}>\n            <FormSafetyCheck @inductions={{this.inductionAsArray}} />\n            <SummaryPrinter @model={{hash client=this.mockData.client inductions=this.inductionAsArray}} @adminMode={{true}} @iCan={{this.iCan}} />\n          </LiquidIf>\n        </LiquidIf>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"Q4rOOp7o\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"creatingNewInduction\\\"]],[[[1,\\\"    New Form\\\\n\\\"]],[]],[[[1,\\\"    Editing\\\\n    \\\"],[1,[30,0,[\\\"model\\\",\\\"title\\\"]]],[1,\\\"\\\\n\\\"]],[]]]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"readOnly\\\"]]],[[[41,[28,[37,4],[[28,[37,5],[[28,[37,6],[[30,0,[\\\"viewMode\\\"]],\\\"edit\\\"],null],[28,[37,6],[[30,0,[\\\"currentFormModel\\\"]],\\\"draft\\\"],null]],null],[30,0,[\\\"newOrBranchingForm\\\"]]],null],[[[1,\\\"        \\\"],[11,0],[16,0,[29,[\\\"save-widget \\\",[52,[28,[37,7],[[30,0,[\\\"savingChanges\\\"]],[30,0,[\\\"saveComplete\\\"]],[30,0,[\\\"saveError\\\"]]],null],\\\"clickable\\\"]]]],[4,[38,8],[[30,0],\\\"saveChanges\\\"],null],[12],[1,\\\"\\\\n          \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,0,[\\\"savingChanges\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,\\\"small\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-spinner-third fa-spin\\\"],[12],[13],[1,\\\"Saving\\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,0,[\\\"saveComplete\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,\\\"small\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"Saved\\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,0,[\\\"saveError\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,\\\"small\\\"],[14,0,\\\"negative\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-times-circle negative\\\"],[12],[13],[1,\\\"Try again?\\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[28,[37,7],[[30,0,[\\\"savingChanges\\\"]],[30,0,[\\\"saveComplete\\\"]],[30,0,[\\\"saveError\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-save\\\"],[12],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"reviewingChanges\\\"]],[[[1,\\\"                Approve and promote\\\\n\\\"]],[]],[[[1,\\\"                Save\\\\n                \\\"],[1,[52,[51,[30,0,[\\\"newOrBranchingForm\\\"]]],\\\"draft\\\"]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[10,0],[14,0,\\\"variables-widget\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n          \\\"],[11,0],[24,0,\\\"clickable\\\"],[4,[38,8],[[30,0],\\\"toggleWidget\\\",\\\"showVariables\\\"],null],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-abacus\\\"],[12],[13],[1,\\\"Variables\\\"],[13],[1,\\\"\\\\n          \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showVariables\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"leftalign\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,13],null,[[\\\"@variables\\\",\\\"@specialVariables\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"specialVariables\\\"]]]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"filter-widget\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n          \\\"],[11,0],[24,0,\\\"clickable\\\"],[4,[38,8],[[30,0],\\\"toggleWidget\\\",\\\"showFilters\\\"],null],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-filter\\\"],[12],[13],[1,\\\"Filters\\\"],[13],[1,\\\"\\\\n          \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showFilters\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,15],[[28,[37,15],[[28,[37,16],null,[[\\\"getFilters\\\"],[true]]]],null]],null],null,[[[1,\\\"              \\\"],[11,0],[24,0,\\\"clickable filter\\\"],[16,\\\"title\\\",[30,1,[\\\"blurb\\\"]]],[4,[38,8],[[30,0],\\\"addFilter\\\",[30,1,[\\\"reference\\\"]],[30,1,[\\\"args\\\"]]],null],[12],[1,\\\"\\\\n                \\\"],[1,[30,1,[\\\"name\\\"]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"            \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,0,[\\\"totalFilter\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"totalFilter\\\"],[12],[1,\\\"\\\\n                \\\"],[10,1],[12],[1,[30,0,[\\\"totalFilter\\\"]]],[13],[1,\\\"\\\\n                \\\"],[10,1],[12],[1,\\\"\\\\n                  \\\"],[11,\\\"i\\\"],[24,0,\\\"fal fa-ban clickable\\\"],[24,\\\"title\\\",\\\"Clear filter chain\\\"],[4,[38,8],[[30,0],\\\"clearFilter\\\"],null],[12],[13],[1,\\\"\\\\n                  \\\"],[11,\\\"i\\\"],[24,0,\\\"fal fa-minus-circle clickable\\\"],[24,\\\"title\\\",\\\"Remove last filter\\\"],[4,[38,8],[[30,0],\\\"removeFilter\\\"],null],[12],[13],[1,\\\"\\\\n                  \\\"],[11,\\\"i\\\"],[24,0,\\\"fal fa-copy clickable\\\"],[24,\\\"title\\\",\\\"Copy filter chain\\\"],[4,[38,8],[[30,0],\\\"copyTotalFilter\\\"],null],[12],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,4],[[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"basedOnFormID\\\"]],[28,[37,6],[[30,0,[\\\"currentFormModel\\\"]],\\\"draft\\\"],null]],null],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"changes-widget\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n          \\\"],[11,0],[24,0,\\\"clickable\\\"],[4,[38,8],[[30,0],\\\"toggleWidget\\\",\\\"showChanges\\\"],null],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-split\\\"],[12],[13],[1,\\\"Show changes\\\"],[13],[1,\\\"\\\\n          \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showChanges\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,15],[[28,[37,15],[[30,0,[\\\"changesArray\\\"]]],null]],null],null,[[[1,\\\"              \\\"],[10,0],[12],[1,\\\"\\\\n                \\\"],[1,[52,[30,2,[\\\"element\\\",\\\"__newElement\\\"]],\\\"New\\\",\\\"Change\\\"]],[1,\\\":\\\\n                \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,8],[[30,0],\\\"viewChange\\\",[30,2,[\\\"path\\\"]]],null],[12],[1,\\\"\\\\n                  \\\"],[1,[30,2,[\\\"path\\\"]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],[[[1,\\\"              No Changes\\\\n\\\"]],[]]],[1,\\\"          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn settify-for-everything edit-form\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showLoadingSpinner\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"summary-downloading-status\\\"],[12],[1,\\\"\\\\n            Preparing download...\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[8,[39,19],null,null,null],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[10,\\\"small\\\"],[12],[8,[39,21],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.config.forms\\\",[28,[37,22],null,[[\\\"firmID\\\"],[[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\"]],[]]]]],[13],[1,\\\"\\\\n          \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n            Viewing:\\\\n            \\\"],[11,3],[16,0,[52,[28,[37,6],[[30,0,[\\\"viewMode\\\"]],\\\"edit\\\"],null],\\\"disabled\\\",\\\"clickable\\\"]],[4,[38,8],[[30,0],\\\"setViewMode\\\",\\\"edit\\\"],null],[12],[1,\\\"\\\\n              \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-pencil-ruler\\\"],[12],[13],[1,\\\"\\\\n              Form definition\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"iCan\\\",\\\"viewSummaryMode\\\"]],[[[1,\\\"              \\\"],[11,3],[16,0,[52,[28,[37,6],[[30,0,[\\\"viewMode\\\"]],\\\"summary\\\"],null],\\\"disabled\\\",\\\"clickable\\\"]],[4,[38,8],[[30,0],\\\"setViewMode\\\",\\\"summary\\\"],null],[12],[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-file-pdf\\\"],[12],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"iCan\\\",\\\"editFirmSummary\\\"]],[[[1,\\\"                  Client-facing summary\\\\n\\\"]],[]],[[[1,\\\"                  Summary mode\\\\n\\\"]],[]]],[1,\\\"              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"iCan\\\",\\\"editFirmSummary\\\"]],[[[1,\\\"              \\\"],[11,3],[16,0,[52,[28,[37,6],[[30,0,[\\\"viewMode\\\"]],\\\"firmSummary\\\"],null],\\\"disabled\\\",\\\"clickable\\\"]],[4,[38,8],[[30,0],\\\"setViewMode\\\",\\\"firmSummary\\\"],null],[12],[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-file-pdf\\\"],[12],[13],[1,\\\"\\\\n                Firm-facing brief\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[11,3],[16,0,[52,[28,[37,6],[[30,0,[\\\"viewMode\\\"]],\\\"blueprint\\\"],null],\\\"disabled\\\",\\\"clickable\\\"]],[4,[38,8],[[30,0],\\\"setViewMode\\\",\\\"blueprint\\\"],null],[12],[1,\\\"\\\\n              \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-file-word\\\"],[12],[13],[1,\\\"\\\\n              Blueprint mode\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"iCan\\\",\\\"editFormVariables\\\"]],[[[1,\\\"              \\\"],[11,3],[16,0,[52,[28,[37,6],[[30,0,[\\\"viewMode\\\"]],\\\"formVariables\\\"],null],\\\"disabled\\\",\\\"clickable\\\"]],[4,[38,8],[[30,0],\\\"setViewMode\\\",\\\"formVariables\\\"],null],[12],[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-folder-open\\\"],[12],[13],[1,\\\"\\\\n                Form variables\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,5],[[30,0,[\\\"iCan\\\",\\\"editChronology\\\"]],[30,0,[\\\"model\\\",\\\"enableChronology\\\"]]],null],[[[1,\\\"              \\\"],[11,3],[16,0,[52,[28,[37,6],[[30,0,[\\\"viewMode\\\"]],\\\"chronology\\\"],null],\\\"disabled\\\",\\\"clickable\\\"]],[4,[38,8],[[30,0],\\\"setViewMode\\\",\\\"chronology\\\"],null],[12],[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-clock\\\"],[12],[13],[1,\\\"\\\\n                Chronology\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"iCan\\\",\\\"viewIntegrationInformation\\\"]],[[[1,\\\"              \\\"],[11,3],[16,0,[52,[28,[37,6],[[30,0,[\\\"viewMode\\\"]],\\\"integration\\\"],null],\\\"disabled\\\",\\\"clickable\\\"]],[4,[38,8],[[30,0],\\\"setViewMode\\\",\\\"integration\\\"],null],[12],[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-plug\\\"],[12],[13],[1,\\\"\\\\n                Integration mode\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"iCan\\\",\\\"viewJSONMode\\\"]],[[[1,\\\"              \\\"],[11,3],[16,0,[52,[28,[37,6],[[30,0,[\\\"viewMode\\\"]],\\\"json\\\"],null],\\\"disabled\\\",\\\"clickable\\\"]],[4,[38,8],[[30,0],\\\"setViewMode\\\",\\\"json\\\"],null],[12],[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-code\\\"],[12],[13],[1,\\\"\\\\n                Raw JSON code\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[28,[37,6],[[30,0,[\\\"viewMode\\\"]],\\\"blueprint\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,0,[\\\"blueprintDiff\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,8],[[30,0],\\\"downloadComparePDF\\\",\\\"condensed-blueprint-output\\\"],null],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-file-pdf\\\"],[12],[13],[1,\\\"\\\\n                  Download compare as PDF\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n              \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[28,[37,7],[[30,0,[\\\"blueprintDiff\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,8],[[30,0],\\\"downloadAsDocx\\\",\\\"condensed-blueprint-output\\\"],null],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-file-word\\\"],[12],[13],[1,\\\"\\\\n                  Download as docx\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"basedOnFormID\\\"]],[[[1,\\\"                \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,0,[\\\"blueprintDiff\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,8],[[30,0],\\\"hideChanges\\\"],null],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-strikethrough\\\"],[12],[13],[1,\\\"\\\\n                    Hide changes\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[28,[37,7],[[30,0,[\\\"blueprintDiff\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,8],[[30,0],\\\"getMasterBlueprint\\\"],null],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-strikethrough\\\"],[12],[13],[1,\\\"\\\\n                    Show changes from master blueprints\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,0,[\\\"loadingSummary\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[39,19],null,null,null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"editingLock\\\"]],[[[1,\\\"        \\\"],[10,0],[12],[1,\\\"\\\\n          \\\"],[10,\\\"h1\\\"],[12],[1,\\\"Form is being edited elsewhere\\\"],[13],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            It looks like someone is editing this same form in another tab, or another computer. To avoid people clobbering each other's changes, forms can only be edited by one\\\\n            person at a time, in one tab.\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            The current lock on this form is due to expire\\\\n            \\\"],[1,[28,[35,24],[[30,0,[\\\"editingLock\\\"]]],[[\\\"relativeTime\\\"],[true]]]],[1,\\\", but that will be extended if they continue editing in the meantime.\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"iCan\\\",\\\"clearEditingLocks\\\"]],[[[1,\\\"            \\\"],[10,2],[12],[1,\\\"\\\\n              \\\"],[10,\\\"b\\\"],[12],[1,\\\"TODO:\\\"],[13],[1,\\\"\\\\n              Click here to cancel the current editing lock.\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n      \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,0,[\\\"promotionSuccess\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"Changes promoted successfully!\\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[51,[30,0,[\\\"newOrBranchingForm\\\"]]],[[[1,\\\"        \\\"],[10,0],[12],[1,\\\"\\\\n          \\\"],[10,2],[14,0,\\\"display-flex align-items-center\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[28,[37,6],[[30,0,[\\\"currentFormModel\\\"]],\\\"live\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,\\\"b\\\"],[12],[1,\\\"Viewing Live Form\\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[28,[37,26],[[30,0,[\\\"currentFormModel\\\"]],\\\"live\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,\\\"b\\\"],[12],[1,\\\"Editing Draft \\\"],[41,[30,0,[\\\"draftFromS3\\\"]],[[[1,\\\"From S3\\\"]],[]],null],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"iCan\\\",\\\"editForm\\\"]],[[[1,\\\"              \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,8],[[30,0],\\\"changeCurrentFormModel\\\",[30,0,[\\\"currentFormModel\\\"]]],null],[12],[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-rotate\\\"],[12],[13],[1,\\\"Change\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[30,0,[\\\"iCan\\\",\\\"approveChanges\\\"]],[30,0,[\\\"draftFromS3\\\"]],[28,[37,6],[[30,0,[\\\"viewMode\\\"]],\\\"edit\\\"],null],[28,[37,6],[[30,0,[\\\"currentFormModel\\\"]],\\\"draft\\\"],null]],null],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,8],[[30,0],\\\"toggleReview\\\"],null],[12],[1,\\\"\\\\n              \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,0,[\\\"reviewingChanges\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                Edit Draft\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n              \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[28,[37,7],[[30,0,[\\\"reviewingChanges\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                Review Draft for Promotion\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[28,[37,6],[[30,0,[\\\"viewMode\\\"]],\\\"edit\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[1,\\\"        \\\"],[10,\\\"small\\\"],[12],[1,\\\"ID: \\\"],[1,[28,[35,4],[[30,0,[\\\"model\\\",\\\"id\\\"]],\\\"will be set when you save this induction\\\"],null]],[13],[1,\\\"\\\\n        \\\"],[8,[39,27],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,0,[\\\"readOnly\\\"]],[30,0,[\\\"model\\\",\\\"title\\\"]],\\\"Induction title\\\"]],null],[1,\\\"\\\\n        \\\"],[8,[39,27],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,0,[\\\"readOnly\\\"]],[30,0,[\\\"model\\\",\\\"regionTitle\\\"]],\\\"Region title\\\"]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"iCan\\\",\\\"editShortTitles\\\"]],[[[1,\\\"          \\\"],[8,[39,27],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,0,[\\\"readOnly\\\"]],[30,0,[\\\"model\\\",\\\"shortTitle\\\"]],\\\"Title to use on the client brief\\\",[28,[37,28],[\\\"(Defaults to \\\",[52,[30,0,[\\\"model\\\",\\\"title\\\"]],[28,[37,28],[\\\"\\\",\\\" model.title \\\",\\\"\\\"],null],\\\"the title above\\\"],\\\")\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[8,[39,29],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@rows\\\"],[[30,0,[\\\"readOnly\\\"]],[30,0,[\\\"model\\\",\\\"blurb\\\"]],\\\"A client-facing blurb to describe this form\\\",2]],null],[1,\\\"\\\\n        \\\"],[8,[39,30],null,[[\\\"@model\\\",\\\"@iCan\\\",\\\"@readOnly\\\"],[[30,0,[\\\"model\\\",\\\"icon\\\"]],[30,0,[\\\"iCan\\\"]],[30,0,[\\\"readOnly\\\"]]]],null],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"\\\\n        \\\"],[8,[39,31],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,0,[\\\"readOnly\\\"]],[30,0,[\\\"model\\\",\\\"enabled\\\"]],\\\"This form is available for your clients to use\\\"]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"iCan\\\",\\\"editInductionPlacementRestrictions\\\"]],[[[1,\\\"          \\\"],[8,[39,31],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,0,[\\\"readOnly\\\"]],[30,0,[\\\"model\\\",\\\"canBeRepeated\\\"]],\\\"This form can be completed multiple times by the same client\\\"]],null],[1,\\\"\\\\n          \\\"],[8,[39,31],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,0,[\\\"readOnly\\\"]],[30,0,[\\\"model\\\",\\\"alwaysSelected\\\"]],\\\"This form must always be completed by your clients\\\"]],null],[1,\\\"\\\\n          \\\"],[8,[39,31],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,0,[\\\"readOnly\\\"]],[30,0,[\\\"model\\\",\\\"invitationDefault\\\"]],\\\"Add this form as a default form for all new invitations\\\"]],null],[1,\\\"\\\\n          \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[28,[37,7],[[30,0,[\\\"model\\\",\\\"pinToEnd\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,31],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,0,[\\\"readOnly\\\"]],[30,0,[\\\"model\\\",\\\"pinToStart\\\"]],\\\"This form should be one of the first asked\\\"]],null],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[28,[37,7],[[30,0,[\\\"model\\\",\\\"pinToStart\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,31],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,0,[\\\"readOnly\\\"]],[30,0,[\\\"model\\\",\\\"pinToEnd\\\"]],\\\"This form should be one of the last asked\\\"]],null],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[8,[39,31],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,0,[\\\"readOnly\\\"]],[30,0,[\\\"model\\\",\\\"enableChronology\\\"]],\\\"Enable the chronology for this form\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n        \\\"],[10,\\\"h1\\\"],[12],[1,\\\"Chapters\\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"iCan\\\",\\\"addChapters\\\"]],[[[1,\\\"          \\\"],[11,0],[16,0,[29,[\\\"insert-bar clickable \\\",[52,[30,0,[\\\"readOnly\\\"]],\\\"no-display\\\"]]]],[4,[38,8],[[30,0],\\\"insertChapterAfter\\\"],null],[12],[1,\\\"\\\\n            \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Insert chapter here\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[42,[28,[37,15],[[28,[37,15],[[30,0,[\\\"model\\\",\\\"chapters\\\"]]],null]],null],null,[[[41,[30,3,[\\\"standalonePages\\\"]],[[[1,\\\"            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[11,\\\"h2\\\"],[16,0,[29,[\\\"clickable \\\",[52,[30,3,[\\\"deleted\\\"]],\\\"disabled-placeholder\\\"]]]],[16,1,[30,3,[\\\"id\\\"]]],[4,[38,8],[[30,0],\\\"toggleExpand\\\",[30,3]],null],[12],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-chevron-right \\\",[52,[30,3,[\\\"expand\\\"]],\\\"fa-rotate-90\\\"]]]],[12],[13],[1,\\\"\\\\n            \\\"],[8,[39,33],null,[[\\\"@model\\\",\\\"@titleFor\\\",\\\"@includeID\\\",\\\"@clientRecord\\\",\\\"@context\\\",\\\"@chapterNumber\\\"],[[30,3],\\\"chapter\\\",true,[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[30,4]]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\\n          \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,3,[\\\"expand\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[11,0],[24,0,\\\"edge\\\"],[4,[38,8],[[30,0],\\\"toggleExpand\\\",[30,3]],null],[12],[13],[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"content\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,34],null,[[\\\"@model\\\"],[[30,3]]],null],[1,\\\"\\\\n\\\"],[41,[51,[30,3,[\\\"standalonePages\\\"]]],[[[1,\\\"                \\\"],[10,2],[12],[1,\\\"\\\\n                  \\\"],[8,[39,27],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,0,[\\\"readOnly\\\"]],[30,3,[\\\"title\\\"]],\\\"Chapter title\\\"]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"iCan\\\",\\\"editShortTitles\\\"]],[[[1,\\\"                    \\\"],[8,[39,27],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,0,[\\\"readOnly\\\"]],[30,3,[\\\"shortTitle\\\"]],\\\"Title to use on the client brief\\\",[28,[37,28],[\\\"(Defaults to \\\",[52,[30,3,[\\\"title\\\"]],[28,[37,28],[\\\"\\\",\\\" chapter.title \\\",\\\"\\\"],null],\\\"the title above\\\"],\\\")\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,4],[[28,[37,7],[[30,3,[\\\"created\\\"]]],null],[30,0,[\\\"iCan\\\",\\\"editIDs\\\"]]],null],[[[1,\\\"                    \\\"],[8,[39,27],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,0,[\\\"readOnly\\\"]],[30,3,[\\\"id\\\"]],\\\"ID (must be unique among all chapters in this induction)\\\",\\\"For example, saleofland, registercompany, motorvehicleaccident\\\"]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[30,0,[\\\"iCan\\\",\\\"editIDs\\\"]],[30,3,[\\\"created\\\"]]],null],[[[1,\\\"                      \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                        \\\"],[10,\\\"b\\\"],[14,0,\\\"negative\\\"],[12],[1,\\\"Warning:\\\"],[13],[1,\\\"\\\\n                        Changing an id can break references (eg, displayIf logic or {parsed text})\\\\n                      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"                  \\\"],[8,[39,30],null,[[\\\"@model\\\",\\\"@iCan\\\",\\\"@readOnly\\\"],[[30,3,[\\\"icon\\\"]],[30,0,[\\\"iCan\\\"]],[30,0,[\\\"readOnly\\\"]]]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"iCan\\\",\\\"editDisplayIf\\\"]],[[[1,\\\"                    \\\"],[8,[39,35],null,[[\\\"@disabled\\\",\\\"@model\\\"],[[30,0,[\\\"readOnly\\\"]],[30,3,[\\\"displayIf\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"iCan\\\",\\\"hideItemsOnTheBrief\\\"]],[[[1,\\\"                    \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                      \\\"],[8,[39,31],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,0,[\\\"readOnly\\\"]],[30,3,[\\\"hideInClientSummary\\\"]],\\\"Hide this chapter on the client-facing brief\\\"]],null],[1,\\\"\\\\n                      \\\"],[8,[39,31],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,0,[\\\"readOnly\\\"]],[30,3,[\\\"hideFromFirm\\\"]],\\\"Hide this chapter on the firm-facing brief\\\"]],null],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"iCan\\\",\\\"toggleFirmLogoOnChapter\\\"]],[[[1,\\\"                    \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                      \\\"],[8,[39,31],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,0,[\\\"readOnly\\\"]],[30,3,[\\\"showFirmLogo\\\"]],\\\"Display the firm logo on this chapter\\\"]],null],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"iCan\\\",\\\"toggleProgressIndicators\\\"]],[[[1,\\\"                    \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                      \\\"],[8,[39,31],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,0,[\\\"readOnly\\\"]],[30,3,[\\\"displayProgressIndicator\\\"]],\\\"Display a progress indicator at the top of pages in this chapter\\\"]],null],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"iCan\\\",\\\"disableChapterSkipButtons\\\"]],[[[1,\\\"                    \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                      \\\"],[8,[39,31],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,0,[\\\"readOnly\\\"]],[30,3,[\\\"disableSkipButton\\\"]],\\\"Disable the button to skip this chapter\\\"]],null],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                  \\\"],[8,[39,36],null,[[\\\"@name\\\",\\\"@object\\\",\\\"@parentObject\\\",\\\"@parentKey\\\",\\\"@index\\\",\\\"@readOnly\\\",\\\"@iCan\\\"],[\\\"chapter\\\",[30,3],[30,0,[\\\"model\\\"]],\\\"chapters\\\",[30,4],[30,0,[\\\"readOnly\\\"]],[30,0,[\\\"iCan\\\"]]]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"b\\\"],[12],[1,\\\"Pages:\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"iCan\\\",\\\"addPages\\\"]],[[[1,\\\"                \\\"],[11,0],[16,0,[29,[\\\"insert-bar clickable \\\",[52,[30,0,[\\\"readOnly\\\"]],\\\"no-display\\\"]]]],[4,[38,8],[[30,0],\\\"insertPageAfter\\\",[30,3]],null],[12],[1,\\\"\\\\n                  \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Insert page here\\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[42,[28,[37,15],[[28,[37,15],[[30,3,[\\\"pages\\\"]]],null]],null],null,[[[1,\\\"                \\\"],[11,\\\"h3\\\"],[16,0,[29,[\\\"clickable \\\",[52,[30,5,[\\\"deleted\\\"]],\\\"disabled-placeholder\\\"]]]],[16,1,[28,[37,28],[[30,3,[\\\"id\\\"]],\\\".\\\",[30,5,[\\\"id\\\"]]],null]],[4,[38,8],[[30,0],\\\"toggleExpand\\\",[30,5]],null],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-chevron-right \\\",[52,[30,5,[\\\"expand\\\"]],\\\"fa-rotate-90\\\"]]]],[12],[13],[1,\\\"\\\\n                  \\\"],[8,[39,33],null,[[\\\"@model\\\",\\\"@titleFor\\\",\\\"@includeID\\\",\\\"@clientRecord\\\",\\\"@context\\\",\\\"@chapterNumber\\\",\\\"@pageNumber\\\"],[[30,5],\\\"page\\\",true,[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[30,4],[30,6]]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\\n                \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,5,[\\\"expand\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  \\\"],[11,0],[24,0,\\\"edge\\\"],[4,[38,8],[[30,0],\\\"toggleExpand\\\",[30,5]],null],[12],[13],[1,\\\"\\\\n                  \\\"],[10,0],[14,0,\\\"content\\\"],[12],[1,\\\"\\\\n                    \\\"],[8,[39,34],null,[[\\\"@model\\\"],[[30,5]]],null],[1,\\\"\\\\n                    \\\"],[10,2],[12],[1,\\\"\\\\n                      \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[28,[37,38],[[28,[37,39],[[30,0,[\\\"uniqueStandalonePages\\\"]],\\\"value\\\"],null],[30,5,[\\\"id\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                        \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[28,[37,7],[[30,5,[\\\"answersLocation\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                          \\\"],[10,2],[14,0,\\\"marginbottom-0\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-exclamation-circle tight\\\"],[12],[13],[1,\\\"\\\\n                            Unique standalone pages require an answers location to be specified for user input\\\"],[13],[1,\\\"\\\\n                        \\\"]],[]]]]],[1,\\\"\\\\n                      \\\"]],[]]]]],[1,\\\"\\\\n                      \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[28,[37,7],[[28,[37,38],[[28,[37,39],[[30,0,[\\\"uniqueStandalonePages\\\"]],\\\"value\\\"],null],[30,5,[\\\"id\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                        \\\"],[8,[39,27],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,0,[\\\"readOnly\\\"]],[30,5,[\\\"title\\\"]],\\\"Page title\\\"]],null],[1,\\\"\\\\n                        \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,3,[\\\"standalonePages\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                          \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                            \\\"],[8,[39,31],null,[[\\\"@model\\\",\\\"@text\\\"],[[30,5,[\\\"bannerTitle\\\"]],\\\"Use a banner title (same as a chapter title)\\\"]],null],[1,\\\"\\\\n                            \\\"],[8,[39,30],null,[[\\\"@model\\\",\\\"@iCan\\\",\\\"@readOnly\\\"],[[30,5,[\\\"icon\\\"]],[30,0,[\\\"iCan\\\"]],[30,0,[\\\"readOnly\\\"]]]],null],[1,\\\"\\\\n                          \\\"],[13],[1,\\\"\\\\n                        \\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,5],[[30,0,[\\\"iCan\\\",\\\"editShortTitles\\\"]],[28,[37,7],[[30,3,[\\\"standalonePages\\\"]]],null]],null],[[[1,\\\"                          \\\"],[8,[39,27],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,0,[\\\"readOnly\\\"]],[30,5,[\\\"shortTitle\\\"]],\\\"Title to use on the client brief\\\",[28,[37,28],[\\\"(Defaults to \\\",[52,[30,5,[\\\"title\\\"]],[28,[37,28],[\\\"\\\",\\\" page.title \\\",\\\"\\\"],null],\\\"the title above\\\"],\\\")\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,4],[[28,[37,7],[[30,5,[\\\"created\\\"]]],null],[30,0,[\\\"iCan\\\",\\\"editIDs\\\"]]],null],[[[1,\\\"                          \\\"],[8,[39,27],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,0,[\\\"readOnly\\\"]],[30,5,[\\\"id\\\"]],\\\"ID (must be unique among all pages in this chapter)\\\",\\\"For example, saleofland, registercompany, motorvehicleaccident\\\"]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[30,0,[\\\"iCan\\\",\\\"editIDs\\\"]],[30,5,[\\\"created\\\"]]],null],[[[1,\\\"                            \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                              \\\"],[10,\\\"b\\\"],[14,0,\\\"negative\\\"],[12],[1,\\\"Warning:\\\"],[13],[1,\\\"\\\\n                              Changing an id can break references (eg, displayIf logic or {parsed text})\\\\n                            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"                        \\\"],[8,[39,29],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@rows\\\"],[[30,0,[\\\"readOnly\\\"]],[30,5,[\\\"helpText\\\"]],\\\"Helpful text if the client is not sure how to answer the questions on this page\\\",2]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"iCan\\\",\\\"editDisplayIf\\\"]],[[[1,\\\"                          \\\"],[8,[39,35],null,[[\\\"@disabled\\\",\\\"@model\\\"],[[30,0,[\\\"readOnly\\\"]],[30,5,[\\\"displayIf\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                      \\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"iCan\\\",\\\"useAnswersLocation\\\"]],[[[1,\\\"                        \\\"],[8,[39,27],null,[[\\\"@disabled\\\",\\\"@model\\\"],[[30,0,[\\\"readOnly\\\"]],[30,5,[\\\"answersLocation\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                          (Advanced) Storage location for answers on this page\\\\n                        \\\"]],[]]]]],[1,\\\"\\\\n                        \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,5,[\\\"answersLocation\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                          \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                            \\\"],[8,[39,31],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,0,[\\\"readOnly\\\"]],[30,5,[\\\"answersLocationLoop\\\"]],\\\"This location is a list of objects, and I want to loop through them one by one\\\"]],null],[1,\\\"\\\\n                          \\\"],[13],[1,\\\"\\\\n                        \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n                      \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[28,[37,7],[[28,[37,38],[[28,[37,39],[[30,0,[\\\"uniqueStandalonePages\\\"]],\\\"value\\\"],null],[30,5,[\\\"id\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"iCan\\\",\\\"hideItemsOnTheBrief\\\"]],[[[1,\\\"                          \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                            \\\"],[8,[39,31],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,0,[\\\"readOnly\\\"]],[30,5,[\\\"hideInClientSummary\\\"]],\\\"Hide this page on the client-facing brief\\\"]],null],[1,\\\"\\\\n                            \\\"],[8,[39,31],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,0,[\\\"readOnly\\\"]],[30,5,[\\\"hideFromFirm\\\"]],\\\"Hide this page on the firm-facing brief\\\"]],null],[1,\\\"\\\\n                          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"iCan\\\",\\\"hideChapterTitles\\\"]],[[[1,\\\"                          \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                            \\\"],[8,[39,31],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,0,[\\\"readOnly\\\"]],[30,5,[\\\"hideChapterTitle\\\"]],\\\"Hide the chapter title on this page\\\"]],null],[1,\\\"\\\\n                          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,5],[[30,0,[\\\"iCan\\\",\\\"hideFirmLogoOnPage\\\"]],[30,3,[\\\"showFirmLogo\\\"]]],null],[[[1,\\\"                          \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                            \\\"],[8,[39,31],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,0,[\\\"readOnly\\\"]],[30,5,[\\\"hideFirmLogo\\\"]],\\\"Hide the firm logo on this page\\\"]],null],[1,\\\"\\\\n                          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"iCan\\\",\\\"showFirmsLetterheadOnPage\\\"]],[[[1,\\\"                          \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                            \\\"],[8,[39,31],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,0,[\\\"readOnly\\\"]],[30,5,[\\\"showFirmsLetterhead\\\"]],\\\"Display the firm letterhead on this page\\\"]],null],[1,\\\"\\\\n                          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"iCan\\\",\\\"customiseNextButtonNavigation\\\"]],[[[1,\\\"                          \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                            \\\"],[8,[39,31],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,0,[\\\"readOnly\\\"]],[30,5,[\\\"useCustomNextButtonNavigation\\\"]],\\\"Specify an alternative location for the 'next' button to lead to\\\"]],null],[1,\\\"\\\\n                            \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,5,[\\\"useCustomNextButtonNavigation\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                              \\\"],[10,0],[14,0,\\\"marginleft-2\\\"],[12],[1,\\\"\\\\n                                \\\"],[8,[39,40],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[[30,0,[\\\"readOnly\\\"]],[30,5,[\\\"customNextButtonTargetLocation\\\"]],\\\"Target route name\\\",\\\"target-route-name\\\",[30,0,[\\\"customNextButtonRoutes\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n                                \\\"],[8,[39,31],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,0,[\\\"readOnly\\\"]],[30,5,[\\\"customNextButtonCompletesInduction\\\"]],\\\"This navigation should complete the induction\\\"]],null],[1,\\\"\\\\n                                \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,5,[\\\"customNextButtonCompletesInduction\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                                  \\\"],[10,0],[14,0,\\\"marginleft-2\\\"],[12],[1,\\\"\\\\n                                    \\\"],[8,[39,41],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\"],[\\\"Set detailedInductionComplete to true on navigation\\\",[30,5,[\\\"inductionTypeToComplete\\\"]],[27]]],null],[1,\\\"\\\\n                                    \\\"],[8,[39,41],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\"],[\\\"Set completedSimpleInduction to true on navigation\\\",[30,5,[\\\"inductionTypeToComplete\\\"]],\\\"completedSimpleInduction\\\"]],null],[1,\\\"\\\\n                                  \\\"],[13],[1,\\\"\\\\n                                \\\"]],[]]]]],[1,\\\"\\\\n                                \\\"],[8,[39,35],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,0,[\\\"readOnly\\\"]],[30,5,[\\\"customNextButtonCondition\\\"]],\\\"Conditional on (in JSON format)\\\"]],null],[1,\\\"\\\\n                              \\\"],[13],[1,\\\"\\\\n                            \\\"]],[]]]]],[1,\\\"\\\\n                          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                        \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[28,[37,5],[[30,0,[\\\"iCan\\\",\\\"toggleProgressIndicators\\\"]],[30,3,[\\\"displayProgressIndicator\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                          \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                            \\\"],[8,[39,31],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,0,[\\\"readOnly\\\"]],[30,5,[\\\"disableProgressIndicator\\\"]],\\\"Disable the progress indicator on this page\\\"]],null],[1,\\\"\\\\n                            \\\"],[8,[39,31],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@text\\\"],[[30,0,[\\\"readOnly\\\"]],[30,5,[\\\"hideFromProgressIndicator\\\"]],\\\"Hide this page from the progress indicator\\\"]],null],[1,\\\"\\\\n                          \\\"],[13],[1,\\\"\\\\n                        \\\"]],[]]]]],[1,\\\"\\\\n                      \\\"]],[]]]]],[1,\\\"\\\\n                      \\\"],[8,[39,36],null,[[\\\"@name\\\",\\\"@object\\\",\\\"@parentObject\\\",\\\"@parentKey\\\",\\\"@index\\\",\\\"@readOnly\\\",\\\"@iCan\\\"],[\\\"page\\\",[30,5],[30,3],\\\"pages\\\",[30,6],[30,0,[\\\"readOnly\\\"]],[30,0,[\\\"iCan\\\"]]]],null],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                    \\\"],[10,\\\"b\\\"],[12],[1,\\\"Questions:\\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"iCan\\\",\\\"addQuestions\\\"]],[[[1,\\\"                      \\\"],[11,0],[16,0,[29,[\\\"insert-bar clickable \\\",[52,[30,0,[\\\"readOnly\\\"]],\\\"no-display\\\"]]]],[4,[38,8],[[30,0],\\\"insertQuestionAfter\\\",[30,3],[30,5]],null],[12],[1,\\\"\\\\n                        \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Insert question here\\\"],[13],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[42,[28,[37,15],[[28,[37,15],[[30,5,[\\\"questions\\\"]]],null]],null],null,[[[1,\\\"                      \\\"],[10,\\\"h4\\\"],[15,0,[52,[30,7,[\\\"deleted\\\"]],\\\"disabled-placeholder\\\"]],[15,1,[28,[37,28],[[30,3,[\\\"id\\\"]],\\\".\\\",[30,5,[\\\"id\\\"]],\\\".\\\",[30,7,[\\\"id\\\"]]],null]],[12],[1,\\\"\\\\n                        \\\"],[11,1],[24,0,\\\"clickable\\\"],[4,[38,8],[[30,0],\\\"toggleExpand\\\",[30,7]],null],[12],[1,\\\"\\\\n                          \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-chevron-right \\\",[52,[30,7,[\\\"expand\\\"]],\\\"fa-rotate-90\\\"]]]],[12],[13],[1,\\\"\\\\n                          \\\"],[8,[39,33],null,[[\\\"@model\\\",\\\"@titleFor\\\",\\\"@includeID\\\",\\\"@clientRecord\\\",\\\"@context\\\",\\\"@chapterNumber\\\",\\\"@pageNumber\\\",\\\"@questionNumber\\\"],[[30,7],\\\"question\\\",true,[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[30,4],[30,6],[30,8]]],null],[1,\\\"\\\\n                        \\\"],[13],[1,\\\"\\\\n                        \\\"],[11,\\\"i\\\"],[24,0,\\\"fal fa-link clickable tight\\\"],[24,\\\"title\\\",\\\"Copy the full context ID of this question, for use elswhere in the form definition\\\"],[4,[38,8],[[30,0],\\\"copyToClipboard\\\",[28,[37,43],[[30,3],[30,5],[30,7]],null]],null],[12],[13],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n\\\\n                      \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,7,[\\\"expand\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                        \\\"],[11,0],[24,0,\\\"edge\\\"],[4,[38,8],[[30,0],\\\"toggleExpand\\\",[30,7]],null],[12],[13],[1,\\\"\\\\n                        \\\"],[10,0],[14,0,\\\"content\\\"],[12],[1,\\\"\\\\n                          \\\"],[8,[39,34],null,[[\\\"@model\\\"],[[30,7]]],null],[1,\\\"\\\\n                          \\\"],[8,[39,44],null,[[\\\"@iCan\\\",\\\"@readOnly\\\",\\\"@induction\\\",\\\"@chapter\\\",\\\"@page\\\",\\\"@q\\\",\\\"@client\\\",\\\"@editMode\\\",\\\"@questionIndex\\\",\\\"@questionCount\\\"],[[30,0,[\\\"iCan\\\"]],[30,0,[\\\"readOnly\\\"]],[30,0,[\\\"model\\\"]],[30,3],[30,5],[30,7],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"editMode\\\"]],[30,8],[30,5,[\\\"questions\\\",\\\"length\\\"]]]],null],[1,\\\"\\\\n                        \\\"],[13],[1,\\\"\\\\n                      \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"iCan\\\",\\\"addQuestions\\\"]],[[[1,\\\"                        \\\"],[11,0],[16,0,[29,[\\\"insert-bar clickable \\\",[52,[30,0,[\\\"readOnly\\\"]],\\\"no-display\\\"]]]],[4,[38,8],[[30,0],\\\"insertQuestionAfter\\\",[30,3],[30,5],[30,7]],null],[12],[1,\\\"\\\\n                          \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Insert question here\\\"],[13],[1,\\\"\\\\n                        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[7,8]],null],[1,\\\"                  \\\"],[13],[1,\\\"\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"iCan\\\",\\\"addPages\\\"]],[[[1,\\\"                  \\\"],[11,0],[16,0,[29,[\\\"insert-bar clickable \\\",[52,[30,0,[\\\"readOnly\\\"]],\\\"no-display\\\"]]]],[4,[38,8],[[30,0],\\\"insertPageAfter\\\",[30,3],[30,5]],null],[12],[1,\\\"\\\\n                    \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Insert page here\\\"],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[5,6]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[30,0,[\\\"iCan\\\",\\\"addChapters\\\"]],[28,[37,7],[[30,3,[\\\"standalonePages\\\"]]],null]],null],[[[1,\\\"            \\\"],[11,0],[16,0,[29,[\\\"insert-bar clickable \\\",[52,[30,0,[\\\"readOnly\\\"]],\\\"no-display\\\"]]]],[4,[38,8],[[30,0],\\\"insertChapterAfter\\\",[30,3]],null],[12],[1,\\\"\\\\n              \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Insert chapter here\\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[3,4]],null],[1,\\\"        \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[28,[37,7],[[30,0,[\\\"hasStandAloneChapter\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[11,1],[24,0,\\\"clickable\\\"],[4,[38,8],[[30,0],\\\"insertStandalonePage\\\"],null],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Add a standalone page\\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[28,[37,5],[[30,0,[\\\"remainingUniqueStandalonePages\\\",\\\"length\\\"]],[30,0,[\\\"iCan\\\",\\\"addUniquePages\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,15],[[28,[37,15],[[30,0,[\\\"remainingUniqueStandalonePages\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[11,1],[24,0,\\\"clickable\\\"],[4,[38,8],[[30,0],\\\"insertStandalonePage\\\",[30,9,[\\\"value\\\"]]],null],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,[30,9,[\\\"label\\\"]]],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[9]],null],[1,\\\"        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[28,[37,6],[[30,0,[\\\"viewMode\\\"]],\\\"summary\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[44,[[30,0,[\\\"mockData\\\"]]],[[[1,\\\"          \\\"],[8,[39,46],null,[[\\\"@model\\\"],[[30,10]]],null],[1,\\\"\\\\n\\\"]],[10]]],[1,\\\"      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[28,[37,6],[[30,0,[\\\"viewMode\\\"]],\\\"blueprint\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,0,[\\\"blueprintDiff\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,0],[14,1,\\\"condensed-blueprint-output\\\"],[14,0,\\\"condensed-summary settify-for-everything blueprint-output\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[30,0,[\\\"blueprintDiff\\\"]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[28,[37,7],[[30,0,[\\\"blueprintDiff\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,0],[14,1,\\\"form-blueprints\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,47],null,[[\\\"@blueprint\\\",\\\"@clientRecord\\\",\\\"@induction\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"induction\\\"]]]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"masterBlueprint\\\"]],[[[1,\\\"            \\\"],[10,0],[14,0,\\\"display-none\\\"],[14,1,\\\"master-blueprints\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,47],null,[[\\\"@blueprint\\\",\\\"@clientRecord\\\",\\\"@induction\\\",\\\"@onFinishedRendering\\\"],[[30,0,[\\\"masterBlueprint\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"induction\\\"]],[28,[37,8],[[30,0],\\\"compareBlueprints\\\"],null]]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[28,[37,6],[[30,0,[\\\"viewMode\\\"]],\\\"json\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[39,35],null,[[\\\"@model\\\",\\\"@rows\\\",\\\"@max\\\",\\\"@label\\\",\\\"@readOnly\\\"],[[30,0,[\\\"model\\\"]],30,4097152,\\\"Raw JSON\\\",[30,0,[\\\"readOnly\\\"]]]],null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[28,[37,6],[[30,0,[\\\"viewMode\\\"]],\\\"formVariables\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[11,0],[16,0,[29,[\\\"insert-bar clickable \\\",[52,[30,0,[\\\"readOnly\\\"]],\\\"no-display\\\"]]]],[4,[38,8],[[30,0],\\\"addObjectToArray\\\",[30,0,[\\\"customVariableIndex\\\"]],\\\"customVariables\\\"],null],[12],[1,\\\"\\\\n          \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Add new variable here\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,15],[[28,[37,15],[[30,0,[\\\"model\\\",\\\"customVariables\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[10,0],[14,0,\\\"display-flex\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"h4\\\"],[12],[1,\\\"\\\\n              \\\"],[11,1],[24,0,\\\"clickable\\\"],[4,[38,8],[[30,0],\\\"toggleExpand\\\",[30,11]],null],[12],[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-chevron-right \\\",[52,[30,11,[\\\"expand\\\"]],\\\"fa-rotate-90\\\"]]]],[12],[13],[1,\\\"\\\\n                \\\"],[10,1],[14,0,\\\"ellipsis-text\\\"],[12],[1,\\\"\\\\n                  \\\"],[1,[28,[35,4],[[30,11,[\\\"id\\\"]],\\\"New variable\\\"],null]],[1,\\\"\\\\n                  \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                    \\\"],[1,[28,[35,4],[[30,11,[\\\"type\\\"]],\\\"displayIf\\\"],null]],[1,\\\"\\\\n                    variable\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[11,\\\"i\\\"],[24,0,\\\"fal fa-clipboard clickable\\\"],[24,\\\"title\\\",\\\"Copy this variable name\\\"],[4,[38,8],[[30,0],\\\"copyToClipboard\\\",[30,11,[\\\"id\\\"]]],null],[12],[13],[1,\\\"\\\\n            \\\"],[11,\\\"i\\\"],[24,0,\\\"fal fa-times-circle clickable icon-delete\\\"],[24,\\\"title\\\",\\\"Delete this variable\\\"],[4,[38,8],[[30,0],\\\"removeObjectFromArray\\\",[30,12],\\\"customVariables\\\"],null],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,11,[\\\"expand\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[11,0],[24,0,\\\"edge\\\"],[4,[38,8],[[30,0],\\\"toggleExpand\\\",[30,11]],null],[12],[13],[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"content\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,27],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,0,[\\\"readOnly\\\"]],[30,11,[\\\"id\\\"]],\\\"Variable name\\\"]],null],[1,\\\"\\\\n              \\\"],[8,[39,41],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\"],[\\\"Evaluate using display-if logic\\\",[27],[30,11,[\\\"type\\\"]]]],null],[1,\\\"\\\\n              \\\"],[8,[39,41],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\"],[\\\"Evaluate a parse-text string\\\",\\\"parseText\\\",[30,11,[\\\"type\\\"]]]],null],[1,\\\"\\\\n              \\\"],[8,[39,41],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\"],[\\\"Set as a constant\\\",\\\"constant\\\",[30,11,[\\\"type\\\"]]]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,7],[[30,11,[\\\"type\\\"]]],null],[[[1,\\\"                \\\"],[8,[39,35],null,[[\\\"@model\\\",\\\"@label\\\"],[[30,11,[\\\"displayIf\\\"]],\\\"Display-if logic (in JSON format)\\\"]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,6],[[30,11,[\\\"type\\\"]],\\\"parseText\\\"],null],[[[1,\\\"                \\\"],[8,[39,29],null,[[\\\"@model\\\",\\\"@label\\\"],[[30,11,[\\\"parseTextCalculation\\\"]],\\\"Parse-text string\\\"]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,6],[[30,11,[\\\"type\\\"]],\\\"constant\\\"],null],[[[1,\\\"                \\\"],[8,[39,29],null,[[\\\"@model\\\",\\\"@label\\\"],[[30,11,[\\\"constantValue\\\"]],\\\"Constant value (in JSON format)\\\"]],null],[1,\\\"\\\\n              \\\"]],[]],null]],[]]]],[]]],[1,\\\"            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[11,0],[16,0,[29,[\\\"insert-bar clickable \\\",[52,[30,0,[\\\"readOnly\\\"]],\\\"no-display\\\"]]]],[4,[38,8],[[30,0],\\\"addObjectToArray\\\",[30,12],\\\"customVariables\\\"],null],[12],[1,\\\"\\\\n            \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Add new variable here\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[11,12]],null],[1,\\\"      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[28,[37,6],[[30,0,[\\\"viewMode\\\"]],\\\"chronology\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[11,0],[16,0,[29,[\\\"insert-bar clickable \\\",[52,[30,0,[\\\"readOnly\\\"]],\\\"no-display\\\"]]]],[4,[38,8],[[30,0],\\\"addObjectToArray\\\",[30,0,[\\\"eventIndex\\\"]],\\\"chronologyEvents\\\"],null],[12],[1,\\\"\\\\n          \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Add new events here\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,15],[[28,[37,15],[[30,0,[\\\"model\\\",\\\"chronologyEvents\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[10,0],[14,0,\\\"display-flex\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"h4\\\"],[12],[1,\\\"\\\\n              \\\"],[11,1],[24,0,\\\"clickable\\\"],[4,[38,8],[[30,0],\\\"toggleExpand\\\",[30,13]],null],[12],[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-chevron-right \\\",[52,[30,13,[\\\"expand\\\"]],\\\"fa-rotate-90\\\"]]]],[12],[13],[1,\\\"\\\\n                \\\"],[10,1],[14,0,\\\"ellipsis-text\\\"],[12],[1,\\\"\\\\n                  \\\"],[1,[28,[35,4],[[30,13,[\\\"answerLocation\\\"]],\\\"New event\\\"],null]],[1,\\\"\\\\n                  \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                    \\\"],[1,[30,13,[\\\"text\\\"]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[11,\\\"i\\\"],[24,0,\\\"fal fa-times-circle clickable icon-delete\\\"],[24,\\\"title\\\",\\\"Delete this event\\\"],[4,[38,8],[[30,0],\\\"removeObjectFromArray\\\",[30,14],\\\"chronologyEvents\\\"],null],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,13,[\\\"expand\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[11,0],[24,0,\\\"edge\\\"],[4,[38,8],[[30,0],\\\"toggleExpand\\\",[30,13]],null],[12],[13],[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"content\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,27],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,0,[\\\"readOnly\\\"]],[30,13,[\\\"answerLocation\\\"]],\\\"Date answer parent (eg. the page or other object that holds the question, or an array of objects)\\\"]],null],[1,\\\"\\\\n              \\\"],[8,[39,27],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,0,[\\\"readOnly\\\"]],[30,13,[\\\"answerKey\\\"]],\\\"Date answer key (eg. the id of the date question, leave blank if the parent object is already in {year, month, day} form)\\\"]],null],[1,\\\"\\\\n              \\\"],[8,[39,29],null,[[\\\"@disabled\\\",\\\"@model\\\",\\\"@label\\\"],[[30,0,[\\\"readOnly\\\"]],[30,13,[\\\"text\\\"]],\\\"Chronology text\\\"]],null],[1,\\\"\\\\n              \\\"],[8,[39,35],null,[[\\\"@model\\\"],[[30,13,[\\\"displayIf\\\"]]]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[11,0],[16,0,[29,[\\\"insert-bar clickable \\\",[52,[30,0,[\\\"readOnly\\\"]],\\\"no-display\\\"]]]],[4,[38,8],[[30,0],\\\"addObjectToArray\\\",[30,14],\\\"chronologyEvents\\\"],null],[12],[1,\\\"\\\\n            \\\"],[10,1],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle tight\\\"],[12],[13],[1,\\\"Add new event here\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[13,14]],null],[1,\\\"      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[28,[37,6],[[30,0,[\\\"viewMode\\\"]],\\\"integration\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[39,35],null,[[\\\"@model\\\",\\\"@rows\\\",\\\"@label\\\"],[[30,0,[\\\"model\\\",\\\"integrationObject\\\"]],10,\\\"Integration object (in JSON format)\\\"]],null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[28,[37,6],[[30,0,[\\\"viewMode\\\"]],\\\"firmSummary\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,0,[\\\"iCan\\\",\\\"editFirmSummary\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[39,41],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\"],[\\\"Same as client-facing summary\\\",false,[30,0,[\\\"model\\\",\\\"useCustomDefinition\\\"]]]],null],[1,\\\"\\\\n          \\\"],[8,[39,41],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\"],[\\\"Different summary for lawyers\\\",true,[30,0,[\\\"model\\\",\\\"useCustomDefinition\\\"]]]],null],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,0,[\\\"model\\\",\\\"useCustomDefinition\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[39,48],null,[[\\\"@inductions\\\"],[[30,0,[\\\"inductionAsArray\\\"]]]],null],[1,\\\"\\\\n          \\\"],[8,[39,46],null,[[\\\"@model\\\",\\\"@adminMode\\\",\\\"@iCan\\\"],[[28,[37,22],null,[[\\\"client\\\",\\\"inductions\\\"],[[30,0,[\\\"mockData\\\",\\\"client\\\"]],[30,0,[\\\"inductionAsArray\\\"]]]]],true,[30,0,[\\\"iCan\\\"]]]],null],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,49],null,null,null]],[\\\"filter\\\",\\\"change\\\",\\\"chapter\\\",\\\"chapterIndex\\\",\\\"page\\\",\\\"pageIndex\\\",\\\"q\\\",\\\"questionIndex\\\",\\\"uniqueStandalonePage\\\",\\\"model\\\",\\\"customVariable\\\",\\\"customVariableIndex\\\",\\\"event\\\",\\\"eventIndex\\\"],false,[\\\"animated-header\\\",\\\"if\\\",\\\"div\\\",\\\"unless\\\",\\\"or\\\",\\\"and\\\",\\\"eq\\\",\\\"not\\\",\\\"action\\\",\\\"liquid-if\\\",\\\"small\\\",\\\"i\\\",\\\"span\\\",\\\"variable-printer\\\",\\\"each\\\",\\\"-track-array\\\",\\\"parse-text\\\",\\\"a\\\",\\\"br\\\",\\\"loading-spinner\\\",\\\"p\\\",\\\"link-to\\\",\\\"hash\\\",\\\"h1\\\",\\\"pretty-date\\\",\\\"b\\\",\\\"not-eq\\\",\\\"settify-textline\\\",\\\"sum\\\",\\\"settify-textarea\\\",\\\"edit-icon-picker\\\",\\\"check-box\\\",\\\"h2\\\",\\\"title-printer\\\",\\\"compare-form-changes\\\",\\\"edit-json\\\",\\\"edit-common-tasks\\\",\\\"h3\\\",\\\"includes\\\",\\\"get-each\\\",\\\"settify-select\\\",\\\"radio-buttons\\\",\\\"h4\\\",\\\"question-context-string\\\",\\\"edit-question\\\",\\\"let\\\",\\\"summary-printer\\\",\\\"blueprint-display\\\",\\\"form-safety-check\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/config/editform.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/config/editteam\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Your Team\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn firm-details\">\n        <br />\n        <div>\n          <p><small><LinkTo @route=\"admin.config.team\" @query={{hash firmID=this.firmID}}><i class=\"fal fa-arrow-circle-left\" />Back</LinkTo></small></p>\n        </div>\n        <LoadingDisplay @loading={{this.saving}} @success={{this.saveComplete}} @error={{this.loadingError}} @showError={{true}}>\n          {{if this.model.creating \"Team member created\" \"Changes saved\"}}\n        </LoadingDisplay>\n        <LiquidIf @predicate={{not this.lawyerScrapeWorked}}>\n          <p>Sorry, we were unable to automatically get the team member's information, please enter it below.</p>\n        </LiquidIf>\n        {{#if this.model}}\n          <div class=\"header-section\">\n            <h2>\n              {{#if this.model.creating}}\n                Create a new team member\n              {{else}}\n                Editing\n                {{#if this.model.name}}\n                  {{this.model.name}}\n                  {{#if this.model.tag}}\n                    ({{this.model.tag}})\n                  {{/if}}\n                {{else}}\n                  team member\n                {{/if}}\n              {{/if}}\n            </h2>\n            <Admin::EditTeamButtons\n              @creating={{this.model.creating}}\n              @createLawyer={{action \"createLawyer\"}}\n              @saveChanges={{action \"saveChanges\"}}\n              @cancelChanges={{action \"cancelChanges\"}}\n            />\n            <LiquidIf @predicate={{this.highlightRequiredFields}}>\n              <div class=\"negative\">\n                <small>\n                  Please enter Full name and Email address before\n                  {{#if this.model.creating}}\n                    creating\n                  {{else}}\n                    saving\n                  {{/if}}\n                </small>\n              </div>\n            </LiquidIf>\n          </div>\n          <div class=\"clickable person-photo-small\" title=\"Upload a new photo\" {{action \"toggleShowPhotoUpload\"}}>\n            <FileVirusScanStatus @bucket={{this.photoUploadBucket}} @key={{this.photoUploadKey}} as |fileIsSafe|>\n              {{#if fileIsSafe}}\n                <img src={{or this.model.photoURL \"/assets/images/nophoto.png\"}} alt={{if this.model.photoURL this.model.name}} role={{if this.model.photoURL \"\" \"presentation\"}} />\n                <span>{{if this.model.photoURL \"Change Photo\" \"Add Photo\"}}</span>\n              {{else}}\n                <img src=\"/assets/images/nophoto.png\" alt=\"\" />\n              {{/if}}\n            </FileVirusScanStatus>\n          </div>\n          <div class=\"clearboth\"></div>\n          <LiquidIf @predicate={{this.showPhotoUpload}}>\n            <div class=\"photo-upload\">\n              <LiquidIf @predicate={{this.uploading}}>\n                <LoadingSpinner />\n              </LiquidIf>\n              <LiquidIf @predicate={{this.s3result}}>\n                <b>{{this.s3result}}</b>\n              </LiquidIf>\n              <div\n                class=\"form-group\"\n                ondragenter={{action \"startDraggingFile\"}}\n                ondragleave={{action \"stopDraggingFile\"}}\n                ondragover={{action \"dragOver\"}}\n                ondrop={{action \"dropFile\"}}\n              >\n                <input type=\"file\" id={{sum \"file-chooser-\" this.model.personID}} accept=\".jpg,.png,.jpeg,.JPG,.PNG,.JPEG\" class=\"fileselect\" onchange={{action \"uploadFile\"}} />\n                <label for={{sum \"file-chooser-\" this.model.personID}} class={{if this.fileDragging \"dragging\"}}>\n                  <i class=\"fal fa-cloud-upload-alt\"></i>\n                  <span>Upload a professional headshot</span><br /><br />\n                  <span><small>Headshots must be in JPG or PNG format, and no greater than 200kb in size</small></span>\n                </label>\n              </div>\n  \n            </div>\n          </LiquidIf>\n  \n          <table class=\"settings\">\n            <tbody>\n              <tr>\n                <td class={{if this.highlightRequiredFields \"negative\"}}>\n                  Full name\n                </td>\n                <td>\n                  <SettifyTextline @model={{this.model.name}} @placeholder=\"Laura Lawyer\" />\n                </td>\n              </tr>\n              <tr>\n                <td>\n                  Role\n                  <HelpToggle>\n                    This toggle will affect which team members are shown on the various Settify pages. For example, assistants are not displayed on the appointment confirmation\n                    screen, but are displayed on the 'email a PDF of this record' screen.\n                  </HelpToggle>\n                </td>\n                <td>\n                  <SettifySelect @model={{this.model.personType}} @name=\"role\" @content={{this.roles}} @labelPath=\"label\" @valuePath=\"value\" />\n                </td>\n              </tr>\n              <tr>\n                <td>\n                  Title / Position (optional)\n                  <HelpToggle>\n                    Some firms use a title or position as part of the text of their appointment confirmation emails.\n                  </HelpToggle>\n                </td>\n                <td>\n                  <SettifyTextline @model={{this.model.title}} @placeholder=\"Partner, Associate, etc\" />\n                </td>\n              </tr>\n              <tr>\n                <td class={{if this.highlightRequiredFields \"negative\"}}>\n                  Email address\n                </td>\n                <td>\n                  <SettifyEmailInput @model={{this.model.email}} @placeholder=\"laura.lawyer@yourfirm.com\" />\n                </td>\n              </tr>\n              <tr>\n                <td>\n                  Charge out rate (optional)\n                  <HelpToggle>\n                    Some firms include information about charge out rates in their appointment confirmation emails.\n                  </HelpToggle>\n                </td>\n                <td>\n                  <table>\n                    <tbody>\n                      <tr>\n                        <td>\n                          $\n                        </td>\n                        <td>\n                          <SettifyTextline @model={{this.model.chargeOutRate}} @money={{true}} />\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </td>\n              </tr>\n              {{#if (eq this.model.personType \"lawyer\")}}\n                {{#if this.firm.settings.admin.allowLawyerTags}}\n                  <tr>\n                    <td>\n                      Tag\n                    </td>\n                    <td>\n                      <SettifyTextline @model={{this.model.tag}} />\n                    </td>\n                  </tr>\n                {{/if}}\n                <tr>\n                  <td>\n                    Phone number (optional)\n                    <HelpToggle>\n                      By default, emails from Settify will include\n                      {{this.firm.phone}}\n                      in the signature. You can specify a different phone number to be used in emails from this team member.\n                    </HelpToggle>\n                  </td>\n                  <td>\n                    <SettifyTextline @model={{this.model.phone}} />\n                  </td>\n                </tr>\n                <tr>\n                  <td>\n                    Alternative phone number (optional)\n                    <HelpToggle>\n                      You can specify an alternative phone number, such as a mobile/cell number, to be used in emails from this team member.\n                    </HelpToggle>\n                  </td>\n                  <td>\n                    <SettifyTextline @model={{this.model.alternativePhone}} />\n                  </td>\n                </tr>\n                <tr>\n                  <td>\n                    Fax number\n                  </td>\n                  <td>\n                    <SettifyTextline @model={{this.model.fax}} />\n                  </td>\n                </tr>\n                <tr>\n                  <td>\n                    Pronouns\n                  </td>\n                  <td>\n                    <SettifyTextline @model={{this.model.pronoun}} @placeholder=\"eg. She/Her, Xe/Xem\" />\n                  </td>\n                </tr>\n                <tr>\n                  <td>\n                    Client-facing name\n                    <HelpToggle>\n                      Some firms prefer to have their lawyers addressed in a different way on the client side of the system. For example, a lawyer with the name \"Laura Smith\" might\n                      be addressed as \"Ms. Smith\" or simply just \"Laura\".\n                    </HelpToggle>\n                  </td>\n                  <td>\n                    <SettifyTextline @model={{this.model.clientFacingName}} @placeholder=\"Ms. Lawyer\" />\n                  </td>\n                </tr>\n                <tr>\n                  <td>\n                    Brief biography\n                    <HelpToggle>\n                      This will be included in the appointment confirmation emails sent through Settify.\n                    </HelpToggle>\n                  </td>\n                  <td>\n                    <SettifyTextarea\n                      @model={{this.model.bio}}\n                      @rows={{9}}\n                      @placeholder=\"One-paragraph introduction to this team member, suitable for inclusion in emails to your clients\"\n                    />\n                  </td>\n                </tr>\n                <tr>\n                  <td>\n                    Link to\n                    {{#if this.model.name}}\n                      {{this.model.name}}'s\n                    {{else}}\n                      their\n                    {{/if}}\n                    profile on your website\n                    <HelpToggle>\n                      Appointment confirmation emails will include a \"read more\" link to this URL.\n                    </HelpToggle>\n                  </td>\n                  <td>\n                    <SettifyTextline @model={{this.model.readMoreURL}} />\n                  </td>\n                </tr>\n                <tr>\n                  <td>\n                    Initial consultation fee (optional)\n                    <HelpToggle>\n                      Some firms include information about initial consultation fees in their appointment confirmation emails.\n                    </HelpToggle>\n                  </td>\n                  <td>\n                    <table>\n                      <tbody>\n                        <tr>\n                          <td>\n                            $\n                          </td>\n                          <td>\n                            <SettifyTextline @model={{this.model.initialConsultationFee}} @money={{true}} />\n                          </td>\n                        </tr>\n                      </tbody>\n                    </table>\n                  </td>\n                </tr>\n                {{!-- <tr>\n                  <td>\n                    Accredited Specialist\n                  </td>\n                  <td>\n                    {{settify-textline model=model.accreditedSpecialist}}\n                  </td>\n                </tr> --}}\n              {{/if}}\n              {{#if this.firm.otherSettifyURLs}}\n                <tr>\n                  <td>\n                    Practice areas\n                  </td>\n                  <td>\n                    <LiquidIf @predicate={{this.model.practiceAreas}}>\n                      {{#each-in this.firm.otherSettifyURLs as |key|}}\n                        <CheckBox @text={{key}} @model={{mut (get this.model.practiceAreas key)}} />\n                      {{/each-in}}\n                      <span class=\"padding\"><a class=\"clickable\" {{action \"allowAllPracticeAreas\"}}>Allow all practice areas</a></span>\n                    </LiquidIf>\n                    <LiquidIf @predicate={{not this.model.practiceAreas}}>\n                      <span class=\"padding\">All (<a class=\"clickable\" {{action \"specifyPracticeAreas\"}}>specify practice areas</a>)</span>\n                    </LiquidIf>\n                  </td>\n                </tr>\n              {{/if}}\n              <tr>\n                <td>\n                  {{#if (eq this.model.personType \"lawyer\")}}\n                    Assistants\n                  {{else}}\n                    Assists\n                  {{/if}}\n                </td>\n                <td>\n                  {{#if this.model.creating}}\n                    Relationships can be established once the team member has been created\n                  {{else}}\n                    <TeamMappingSelect @model={{this.model}} />\n                  {{/if}}\n                </td>\n              </tr>\n              {{#unless this.model.creating}}\n                <tr>\n                  <td>\n                    {{! Archived }}\n                  </td>\n                  <td>\n                    <LiquidIf @predicate={{this.model.disabled}}>\n                      <div class=\"archive-delete-buttons\">\n                        <button type=\"button\" class=\"clickable\" {{action \"enableUser\"}}>\n                          <i class=\"fal fa-archive\" />\n                          Unarchive\n                          {{this.model.name}}\n                        </button>\n                      </div>\n                    </LiquidIf>\n                    <LiquidIf @predicate={{not this.model.disabled}}>\n                      <div class=\"archive-delete-buttons\">\n                        <button type=\"button\" class=\"clickable\" {{action \"toggleConfirmation\" \"showArchive\"}}>\n                          <i class=\"fal fa-archive\" />\n                          Archive\n                        </button>\n                        <button type=\"button\" class=\"clickable\" {{action \"toggleConfirmation\" \"showDelete\"}}>\n                          <i class=\"fal fa-trash-alt\" />\n                          Delete\n                        </button>\n                      </div>\n                    </LiquidIf>\n                    <LiquidIf @predicate={{this.showArchive}}>\n                      <p>\n                        Archiving a team member keeps their details in the system, but hides them from day-to-day use. Some people like to use this feature to keep their Settify\n                        system neat and tidy when a team member takes maternity leave, or goes on a leave of absence. An archived team member can be reactivated at a later date.\n  \n                        <CheckBox @model={{this.model.disabled}}>\n                          Archive\n                          {{this.model.name}}\n                        </CheckBox>\n                      </p>\n                    </LiquidIf>\n                    <LiquidIf @predicate={{this.showDelete}}>\n                      <p>\n                        Deleting a team member removes their details from the system forever. This is best used when a team member permanently departs from the firm.\n                      </p>\n                      <p>\n                        Are you sure you want to delete\n                        {{this.model.name}}?\n                        <br />\n                        <a class=\"clickable negative\" {{action \"deleteLawyer\"}}>\n                          <i class=\"fal fa-trash-alt negative\" />\n                          Yes, delete them forever!\n                        </a><br />\n                        <a class=\"clickable\" {{action \"toggle\" \"showDelete\"}}>\n                          <i class=\"fal fa-times-circle\" />\n                          No, don't delete them!\n                        </a>\n                      </p>\n                    </LiquidIf>\n                  </td>\n                </tr>\n              {{/unless}}\n            </tbody>\n          </table>\n          <LiquidIf @predicate={{this.highlightRequiredFields}}>\n            <div class=\"negative\">\n              <small>\n                Please enter Full name and Email address before\n                {{#if this.model.creating}}\n                  creating\n                {{else}}\n                  saving\n                {{/if}}\n              </small>\n            </div>\n          </LiquidIf>\n          <LiquidIf @predicate={{this.createUserResponse}}>\n            {{this.createUserResponse}}\n            <a class=\"clickable\" {{action \"createLawyer\" true}}>I'm sure!</a>\n          </LiquidIf>\n          <LoadingDisplay @loading={{this.saving}} @success={{this.saveComplete}} @error={{this.loadingError}} @showError={{true}}>\n            {{if this.model.creating \"Team member created\" \"Changes saved\"}}\n          </LoadingDisplay>\n          <Admin::EditTeamButtons\n            @creating={{this.model.creating}}\n            @createLawyer={{action \"createLawyer\"}}\n            @saveChanges={{action \"saveChanges\"}}\n            @cancelChanges={{action \"cancelChanges\"}}\n          />\n        {{/if}}\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"MeRnIscz\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Your Team\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn firm-details\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,5],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.config.team\\\",[28,[37,6],null,[[\\\"firmID\\\"],[[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,8],null,[[\\\"@loading\\\",\\\"@success\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,0,[\\\"saving\\\"]],[30,0,[\\\"saveComplete\\\"]],[30,0,[\\\"loadingError\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[1,[52,[30,0,[\\\"model\\\",\\\"creating\\\"]],\\\"Team member created\\\",\\\"Changes saved\\\"]],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[28,[37,11],[[30,0,[\\\"lawyerScrapeWorked\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"Sorry, we were unable to automatically get the team member's information, please enter it below.\\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\"]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"header-section\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"h2\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"creating\\\"]],[[[1,\\\"              Create a new team member\\\\n\\\"]],[]],[[[1,\\\"              Editing\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"name\\\"]],[[[1,\\\"                \\\"],[1,[30,0,[\\\"model\\\",\\\"name\\\"]]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"tag\\\"]],[[[1,\\\"                  (\\\"],[1,[30,0,[\\\"model\\\",\\\"tag\\\"]]],[1,\\\")\\\\n\\\"]],[]],null]],[]],[[[1,\\\"                team member\\\\n\\\"]],[]]]],[]]],[1,\\\"          \\\"],[13],[1,\\\"\\\\n          \\\"],[8,[39,13],null,[[\\\"@creating\\\",\\\"@createLawyer\\\",\\\"@saveChanges\\\",\\\"@cancelChanges\\\"],[[30,0,[\\\"model\\\",\\\"creating\\\"]],[28,[37,14],[[30,0],\\\"createLawyer\\\"],null],[28,[37,14],[[30,0],\\\"saveChanges\\\"],null],[28,[37,14],[[30,0],\\\"cancelChanges\\\"],null]]],null],[1,\\\"\\\\n          \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[30,0,[\\\"highlightRequiredFields\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"negative\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                Please enter Full name and Email address before\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"creating\\\"]],[[[1,\\\"                  creating\\\\n\\\"]],[]],[[[1,\\\"                  saving\\\\n\\\"]],[]]],[1,\\\"              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[11,0],[24,0,\\\"clickable person-photo-small\\\"],[24,\\\"title\\\",\\\"Upload a new photo\\\"],[4,[38,14],[[30,0],\\\"toggleShowPhotoUpload\\\"],null],[12],[1,\\\"\\\\n          \\\"],[8,[39,15],null,[[\\\"@bucket\\\",\\\"@key\\\"],[[30,0,[\\\"photoUploadBucket\\\"]],[30,0,[\\\"photoUploadKey\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1],[[[1,\\\"              \\\"],[10,\\\"img\\\"],[15,\\\"src\\\",[28,[37,17],[[30,0,[\\\"model\\\",\\\"photoURL\\\"]],\\\"/assets/images/nophoto.png\\\"],null]],[15,\\\"alt\\\",[52,[30,0,[\\\"model\\\",\\\"photoURL\\\"]],[30,0,[\\\"model\\\",\\\"name\\\"]]]],[15,\\\"role\\\",[52,[30,0,[\\\"model\\\",\\\"photoURL\\\"]],\\\"\\\",\\\"presentation\\\"]],[12],[13],[1,\\\"\\\\n              \\\"],[10,1],[12],[1,[52,[30,0,[\\\"model\\\",\\\"photoURL\\\"]],\\\"Change Photo\\\",\\\"Add Photo\\\"]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"              \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"/assets/images/nophoto.png\\\"],[14,\\\"alt\\\",\\\"\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"          \\\"]],[1]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"clearboth\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showPhotoUpload\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"photo-upload\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[30,0,[\\\"uploading\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[39,19],null,null,null],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[30,0,[\\\"s3result\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,\\\"b\\\"],[12],[1,[30,0,[\\\"s3result\\\"]]],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"form-group\\\"],[15,\\\"ondragenter\\\",[28,[37,14],[[30,0],\\\"startDraggingFile\\\"],null]],[15,\\\"ondragleave\\\",[28,[37,14],[[30,0],\\\"stopDraggingFile\\\"],null]],[15,\\\"ondragover\\\",[28,[37,14],[[30,0],\\\"dragOver\\\"],null]],[15,\\\"ondrop\\\",[28,[37,14],[[30,0],\\\"dropFile\\\"],null]],[12],[1,\\\"\\\\n              \\\"],[10,\\\"input\\\"],[15,1,[28,[37,22],[\\\"file-chooser-\\\",[30,0,[\\\"model\\\",\\\"personID\\\"]]],null]],[14,\\\"accept\\\",\\\".jpg,.png,.jpeg,.JPG,.PNG,.JPEG\\\"],[14,0,\\\"fileselect\\\"],[15,\\\"onchange\\\",[28,[37,14],[[30,0],\\\"uploadFile\\\"],null]],[14,4,\\\"file\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[10,\\\"label\\\"],[15,\\\"for\\\",[28,[37,22],[\\\"file-chooser-\\\",[30,0,[\\\"model\\\",\\\"personID\\\"]]],null]],[15,0,[52,[30,0,[\\\"fileDragging\\\"]],\\\"dragging\\\"]],[12],[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-cloud-upload-alt\\\"],[12],[13],[1,\\\"\\\\n                \\\"],[10,1],[12],[1,\\\"Upload a professional headshot\\\"],[13],[10,\\\"br\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                \\\"],[10,1],[12],[10,\\\"small\\\"],[12],[1,\\\"Headshots must be in JPG or PNG format, and no greater than 200kb in size\\\"],[13],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\\n        \\\"],[10,\\\"table\\\"],[14,0,\\\"settings\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[15,0,[52,[30,0,[\\\"highlightRequiredFields\\\"]],\\\"negative\\\"]],[12],[1,\\\"\\\\n                Full name\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                \\\"],[8,[39,28],null,[[\\\"@model\\\",\\\"@placeholder\\\"],[[30,0,[\\\"model\\\",\\\"name\\\"]],\\\"Laura Lawyer\\\"]],null],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                Role\\\\n                \\\"],[8,[39,29],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                  This toggle will affect which team members are shown on the various Settify pages. For example, assistants are not displayed on the appointment confirmation\\\\n                  screen, but are displayed on the 'email a PDF of this record' screen.\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                \\\"],[8,[39,30],null,[[\\\"@model\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[[30,0,[\\\"model\\\",\\\"personType\\\"]],\\\"role\\\",[30,0,[\\\"roles\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                Title / Position (optional)\\\\n                \\\"],[8,[39,29],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                  Some firms use a title or position as part of the text of their appointment confirmation emails.\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                \\\"],[8,[39,28],null,[[\\\"@model\\\",\\\"@placeholder\\\"],[[30,0,[\\\"model\\\",\\\"title\\\"]],\\\"Partner, Associate, etc\\\"]],null],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[15,0,[52,[30,0,[\\\"highlightRequiredFields\\\"]],\\\"negative\\\"]],[12],[1,\\\"\\\\n                Email address\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                \\\"],[8,[39,31],null,[[\\\"@model\\\",\\\"@placeholder\\\"],[[30,0,[\\\"model\\\",\\\"email\\\"]],\\\"laura.lawyer@yourfirm.com\\\"]],null],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                Charge out rate (optional)\\\\n                \\\"],[8,[39,29],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                  Some firms include information about charge out rates in their appointment confirmation emails.\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"table\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                        $\\\\n                      \\\"],[13],[1,\\\"\\\\n                      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                        \\\"],[8,[39,28],null,[[\\\"@model\\\",\\\"@money\\\"],[[30,0,[\\\"model\\\",\\\"chargeOutRate\\\"]],true]],null],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,32],[[30,0,[\\\"model\\\",\\\"personType\\\"]],\\\"lawyer\\\"],null],[[[41,[30,0,[\\\"firm\\\",\\\"settings\\\",\\\"admin\\\",\\\"allowLawyerTags\\\"]],[[[1,\\\"                \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    Tag\\\\n                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    \\\"],[8,[39,28],null,[[\\\"@model\\\"],[[30,0,[\\\"model\\\",\\\"tag\\\"]]]],null],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  Phone number (optional)\\\\n                  \\\"],[8,[39,29],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                    By default, emails from Settify will include\\\\n                    \\\"],[1,[30,0,[\\\"firm\\\",\\\"phone\\\"]]],[1,\\\"\\\\n                    in the signature. You can specify a different phone number to be used in emails from this team member.\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,28],null,[[\\\"@model\\\"],[[30,0,[\\\"model\\\",\\\"phone\\\"]]]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  Alternative phone number (optional)\\\\n                  \\\"],[8,[39,29],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                    You can specify an alternative phone number, such as a mobile/cell number, to be used in emails from this team member.\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,28],null,[[\\\"@model\\\"],[[30,0,[\\\"model\\\",\\\"alternativePhone\\\"]]]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  Fax number\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,28],null,[[\\\"@model\\\"],[[30,0,[\\\"model\\\",\\\"fax\\\"]]]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  Pronouns\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,28],null,[[\\\"@model\\\",\\\"@placeholder\\\"],[[30,0,[\\\"model\\\",\\\"pronoun\\\"]],\\\"eg. She/Her, Xe/Xem\\\"]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  Client-facing name\\\\n                  \\\"],[8,[39,29],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                    Some firms prefer to have their lawyers addressed in a different way on the client side of the system. For example, a lawyer with the name \\\\\\\"Laura Smith\\\\\\\" might\\\\n                    be addressed as \\\\\\\"Ms. Smith\\\\\\\" or simply just \\\\\\\"Laura\\\\\\\".\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,28],null,[[\\\"@model\\\",\\\"@placeholder\\\"],[[30,0,[\\\"model\\\",\\\"clientFacingName\\\"]],\\\"Ms. Lawyer\\\"]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  Brief biography\\\\n                  \\\"],[8,[39,29],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                    This will be included in the appointment confirmation emails sent through Settify.\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,33],null,[[\\\"@model\\\",\\\"@rows\\\",\\\"@placeholder\\\"],[[30,0,[\\\"model\\\",\\\"bio\\\"]],9,\\\"One-paragraph introduction to this team member, suitable for inclusion in emails to your clients\\\"]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  Link to\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"name\\\"]],[[[1,\\\"                    \\\"],[1,[30,0,[\\\"model\\\",\\\"name\\\"]]],[1,\\\"'s\\\\n\\\"]],[]],[[[1,\\\"                    their\\\\n\\\"]],[]]],[1,\\\"                  profile on your website\\\\n                  \\\"],[8,[39,29],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                    Appointment confirmation emails will include a \\\\\\\"read more\\\\\\\" link to this URL.\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,28],null,[[\\\"@model\\\"],[[30,0,[\\\"model\\\",\\\"readMoreURL\\\"]]]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  Initial consultation fee (optional)\\\\n                  \\\"],[8,[39,29],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                    Some firms include information about initial consultation fees in their appointment confirmation emails.\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"table\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n                      \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                        \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                          $\\\\n                        \\\"],[13],[1,\\\"\\\\n                        \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                          \\\"],[8,[39,28],null,[[\\\"@model\\\",\\\"@money\\\"],[[30,0,[\\\"model\\\",\\\"initialConsultationFee\\\"]],true]],null],[1,\\\"\\\\n                        \\\"],[13],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"firm\\\",\\\"otherSettifyURLs\\\"]],[[[1,\\\"              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  Practice areas\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[30,0,[\\\"model\\\",\\\"practiceAreas\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,35],[[30,0,[\\\"firm\\\",\\\"otherSettifyURLs\\\"]]],null],null,[[[1,\\\"                      \\\"],[8,[39,36],null,[[\\\"@text\\\",\\\"@model\\\"],[[30,3],[28,[37,37],[[28,[37,38],[[30,0,[\\\"model\\\",\\\"practiceAreas\\\"]],[30,3]],null]],null]]],null],[1,\\\"\\\\n\\\"]],[2,3]],null],[1,\\\"                    \\\"],[10,1],[14,0,\\\"padding\\\"],[12],[11,3],[24,0,\\\"clickable\\\"],[4,[38,14],[[30,0],\\\"allowAllPracticeAreas\\\"],null],[12],[1,\\\"Allow all practice areas\\\"],[13],[13],[1,\\\"\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[28,[37,11],[[30,0,[\\\"model\\\",\\\"practiceAreas\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    \\\"],[10,1],[14,0,\\\"padding\\\"],[12],[1,\\\"All (\\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,14],[[30,0],\\\"specifyPracticeAreas\\\"],null],[12],[1,\\\"specify practice areas\\\"],[13],[1,\\\")\\\"],[13],[1,\\\"\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,32],[[30,0,[\\\"model\\\",\\\"personType\\\"]],\\\"lawyer\\\"],null],[[[1,\\\"                  Assistants\\\\n\\\"]],[]],[[[1,\\\"                  Assists\\\\n\\\"]],[]]],[1,\\\"              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"creating\\\"]],[[[1,\\\"                  Relationships can be established once the team member has been created\\\\n\\\"]],[]],[[[1,\\\"                  \\\"],[8,[39,40],null,[[\\\"@model\\\"],[[30,0,[\\\"model\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"model\\\",\\\"creating\\\"]]],[[[1,\\\"              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[30,0,[\\\"model\\\",\\\"disabled\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    \\\"],[10,0],[14,0,\\\"archive-delete-buttons\\\"],[12],[1,\\\"\\\\n                      \\\"],[11,\\\"button\\\"],[24,0,\\\"clickable\\\"],[24,4,\\\"button\\\"],[4,[38,14],[[30,0],\\\"enableUser\\\"],null],[12],[1,\\\"\\\\n                        \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-archive\\\"],[12],[13],[1,\\\"\\\\n                        Unarchive\\\\n                        \\\"],[1,[30,0,[\\\"model\\\",\\\"name\\\"]]],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[28,[37,11],[[30,0,[\\\"model\\\",\\\"disabled\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    \\\"],[10,0],[14,0,\\\"archive-delete-buttons\\\"],[12],[1,\\\"\\\\n                      \\\"],[11,\\\"button\\\"],[24,0,\\\"clickable\\\"],[24,4,\\\"button\\\"],[4,[38,14],[[30,0],\\\"toggleConfirmation\\\",\\\"showArchive\\\"],null],[12],[1,\\\"\\\\n                        \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-archive\\\"],[12],[13],[1,\\\"\\\\n                        Archive\\\\n                      \\\"],[13],[1,\\\"\\\\n                      \\\"],[11,\\\"button\\\"],[24,0,\\\"clickable\\\"],[24,4,\\\"button\\\"],[4,[38,14],[[30,0],\\\"toggleConfirmation\\\",\\\"showDelete\\\"],null],[12],[1,\\\"\\\\n                        \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-trash-alt\\\"],[12],[13],[1,\\\"\\\\n                        Delete\\\\n                      \\\"],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showArchive\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    \\\"],[10,2],[12],[1,\\\"\\\\n                      Archiving a team member keeps their details in the system, but hides them from day-to-day use. Some people like to use this feature to keep their Settify\\\\n                      system neat and tidy when a team member takes maternity leave, or goes on a leave of absence. An archived team member can be reactivated at a later date.\\\\n\\\\n                      \\\"],[8,[39,36],null,[[\\\"@model\\\"],[[30,0,[\\\"model\\\",\\\"disabled\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                        Archive\\\\n                        \\\"],[1,[30,0,[\\\"model\\\",\\\"name\\\"]]],[1,\\\"\\\\n                      \\\"]],[]]]]],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showDelete\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    \\\"],[10,2],[12],[1,\\\"\\\\n                      Deleting a team member removes their details from the system forever. This is best used when a team member permanently departs from the firm.\\\\n                    \\\"],[13],[1,\\\"\\\\n                    \\\"],[10,2],[12],[1,\\\"\\\\n                      Are you sure you want to delete\\\\n                      \\\"],[1,[30,0,[\\\"model\\\",\\\"name\\\"]]],[1,\\\"?\\\\n                      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                      \\\"],[11,3],[24,0,\\\"clickable negative\\\"],[4,[38,14],[[30,0],\\\"deleteLawyer\\\"],null],[12],[1,\\\"\\\\n                        \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-trash-alt negative\\\"],[12],[13],[1,\\\"\\\\n                        Yes, delete them forever!\\\\n                      \\\"],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                      \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,14],[[30,0],\\\"toggle\\\",\\\"showDelete\\\"],null],[12],[1,\\\"\\\\n                        \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-times-circle\\\"],[12],[13],[1,\\\"\\\\n                        No, don't delete them!\\\\n                      \\\"],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[30,0,[\\\"highlightRequiredFields\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"negative\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n              Please enter Full name and Email address before\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"creating\\\"]],[[[1,\\\"                creating\\\\n\\\"]],[]],[[[1,\\\"                saving\\\\n\\\"]],[]]],[1,\\\"            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[30,0,[\\\"createUserResponse\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[1,[30,0,[\\\"createUserResponse\\\"]]],[1,\\\"\\\\n          \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,14],[[30,0],\\\"createLawyer\\\",true],null],[12],[1,\\\"I'm sure!\\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,8],null,[[\\\"@loading\\\",\\\"@success\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,0,[\\\"saving\\\"]],[30,0,[\\\"saveComplete\\\"]],[30,0,[\\\"loadingError\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[1,[52,[30,0,[\\\"model\\\",\\\"creating\\\"]],\\\"Team member created\\\",\\\"Changes saved\\\"]],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,13],null,[[\\\"@creating\\\",\\\"@createLawyer\\\",\\\"@saveChanges\\\",\\\"@cancelChanges\\\"],[[30,0,[\\\"model\\\",\\\"creating\\\"]],[28,[37,14],[[30,0],\\\"createLawyer\\\"],null],[28,[37,14],[[30,0],\\\"saveChanges\\\"],null],[28,[37,14],[[30,0],\\\"cancelChanges\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,43],null,null,null]],[\\\"fileIsSafe\\\",\\\"( unused value )\\\",\\\"key\\\"],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"hash\\\",\\\"i\\\",\\\"loading-display\\\",\\\"if\\\",\\\"liquid-if\\\",\\\"not\\\",\\\"h2\\\",\\\"admin/edit-team-buttons\\\",\\\"action\\\",\\\"file-virus-scan-status\\\",\\\"img\\\",\\\"or\\\",\\\"span\\\",\\\"loading-spinner\\\",\\\"b\\\",\\\"input\\\",\\\"sum\\\",\\\"label\\\",\\\"table\\\",\\\"tbody\\\",\\\"tr\\\",\\\"td\\\",\\\"settify-textline\\\",\\\"help-toggle\\\",\\\"settify-select\\\",\\\"settify-email-input\\\",\\\"eq\\\",\\\"settify-textarea\\\",\\\"each\\\",\\\"-each-in\\\",\\\"check-box\\\",\\\"mut\\\",\\\"get\\\",\\\"a\\\",\\\"team-mapping-select\\\",\\\"unless\\\",\\\"button\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/config/editteam.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/config/emergency\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    {{this.firm.settings.emergency.emergencyTitle}}\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn firm-details\">\n        <br>\n        <div>\n          <p><small><LinkTo @route=\"admin.config\"><i class=\"fal fa-arrow-circle-left\" />Back</LinkTo></small></p>\n        </div>\n        <LiquidIf @predicate={{not this.filteredSettings}}>\n          <LoadingSpinner />\n        </LiquidIf>\n  \n        <LiquidIf @predicate={{this.filteredSettings}}>\n          <span class=\"config-header\"><LineIcon @src=\"/assets/images/icons/alarm.png\" /></span>\n  \n          <h1>{{this.firmSettings.settings.name}}</h1>\n  \n          {{#if this.firmSettings.settings.otherSettifyURLs}}\n            <p>\n              Viewing settings for <b>{{this.practiceArea}}</b>. Switch to:\n              {{#each-in this.firmSettings.settings.otherSettifyURLs as |area URL|}}\n                {{#if URL}}\n                  <LinkTo @route=\"admin.config.emergency\" @query={{hash firmID=this.firmID practiceArea=area}}>\n                    {{area}}\n                  </LinkTo>\n                {{/if}}\n              {{/each-in}}\n            </p>\n          {{/if}}\n          />\n  \n          <Admin::FilteredSettingsTable\n            @filteredSettings={{this.filteredSettings}}\n            @firmSettings={{this.firmSettings}}\n            @selectedPracticeAreaSettings={{this.selectedPracticeAreaSettings}}\n          />\n  \n          <Admin::SettingsSaveButtons\n            @savingChanges={{this.savingChanges}}\n            @savingChangesSuccess={{this.savingChangesSuccess}}\n            @savingChangesError={{this.savingChangesError}}\n            @saveChangesAction={{action \"saveChanges\"}}\n            @revertChangesAction={{action \"revertChanges\"}}\n          />\n  \n        </LiquidIf>\n  \n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"yl2vYYOg\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[1,[30,0,[\\\"firm\\\",\\\"settings\\\",\\\"emergency\\\",\\\"emergencyTitle\\\"]]],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn firm-details\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,5],null,[[\\\"@route\\\"],[\\\"admin.config\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,7],null,[[\\\"@predicate\\\"],[[28,[37,8],[[30,0,[\\\"filteredSettings\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[39,9],null,null,null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\\n      \\\"],[8,[39,7],null,[[\\\"@predicate\\\"],[[30,0,[\\\"filteredSettings\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"config-header\\\"],[12],[8,[39,11],null,[[\\\"@src\\\"],[\\\"/assets/images/icons/alarm.png\\\"]],null],[13],[1,\\\"\\\\n\\\\n        \\\"],[10,\\\"h1\\\"],[12],[1,[30,0,[\\\"firmSettings\\\",\\\"settings\\\",\\\"name\\\"]]],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"firmSettings\\\",\\\"settings\\\",\\\"otherSettifyURLs\\\"]],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            Viewing settings for \\\"],[10,\\\"b\\\"],[12],[1,[30,0,[\\\"practiceArea\\\"]]],[13],[1,\\\". Switch to:\\\\n\\\"],[42,[28,[37,16],[[30,0,[\\\"firmSettings\\\",\\\"settings\\\",\\\"otherSettifyURLs\\\"]]],null],null,[[[41,[30,1],[[[1,\\\"                \\\"],[8,[39,5],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.config.emergency\\\",[28,[37,17],null,[[\\\"firmID\\\",\\\"practiceArea\\\"],[[30,0,[\\\"firmID\\\"]],[30,2]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  \\\"],[1,[30,2]],[1,\\\"\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[1,2]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        />\\\\n\\\\n        \\\"],[8,[39,18],null,[[\\\"@filteredSettings\\\",\\\"@firmSettings\\\",\\\"@selectedPracticeAreaSettings\\\"],[[30,0,[\\\"filteredSettings\\\"]],[30,0,[\\\"firmSettings\\\"]],[30,0,[\\\"selectedPracticeAreaSettings\\\"]]]],null],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,19],null,[[\\\"@savingChanges\\\",\\\"@savingChangesSuccess\\\",\\\"@savingChangesError\\\",\\\"@saveChangesAction\\\",\\\"@revertChangesAction\\\"],[[30,0,[\\\"savingChanges\\\"]],[30,0,[\\\"savingChangesSuccess\\\"]],[30,0,[\\\"savingChangesError\\\"]],[28,[37,20],[[30,0],\\\"saveChanges\\\"],null],[28,[37,20],[[30,0],\\\"revertChanges\\\"],null]]],null],[1,\\\"\\\\n\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,21],null,null,null]],[\\\"URL\\\",\\\"area\\\"],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"i\\\",\\\"liquid-if\\\",\\\"not\\\",\\\"loading-spinner\\\",\\\"span\\\",\\\"line-icon\\\",\\\"h1\\\",\\\"if\\\",\\\"b\\\",\\\"each\\\",\\\"-each-in\\\",\\\"hash\\\",\\\"admin/filtered-settings-table\\\",\\\"admin/settings-save-buttons\\\",\\\"action\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/config/emergency.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/config/forms\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Edit Forms\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <br>\n        <div>\n          <p><small><LinkTo @route=\"admin.firms\" @query={{hash selectedFirmID=this.firmID}}><i class=\"fal fa-arrow-circle-left\" />Back</LinkTo></small></p>\n        </div>\n        <span class=\"config-header\"><LineIcon @src=\"/assets/images/icons/sign-form.png\" /></span>\n  \n        <h2>{{this.firmName}} forms</h2>\n        {{#if (eq this.model.masterFirmID this.firmID)}}\n          <div style=\"border-radius: 4px; border: 1px solid #9C0006; padding: 5px; margin: 10px 0; text-align: center; font-weight: 500; text-transform: uppercase; display: flex;\">\n            <i class=\"fal fa-warning tight\" style=\"color:#9C0006\"/>\n            <span style=\"flex-grow: 1\">Master Firm - Be Careful</span>\n            <i class=\"fal fa-warning tight\" style=\"color:#9C0006\"/>\n          </div>      \n        {{/if}}\n        <LiquidIf @predicate={{and (not this.model.forms) (not-eq this.model.forms.length 0)}}>\n          <LoadingSpinner />\n        </LiquidIf>\n        <LoadingDisplay @loading={{this.deletingForm}} @success={{this.deletingFormSuccess}} @error={{this.deletingFormError}} @showError={{true}}>\n          The form was deleted successfully.\n        </LoadingDisplay>\n  \n        <h4>Existing Forms</h4>\n        {{#each this.model.forms as |induction|}}\n        <div>\n          <span class=\"{{if induction.practiceArea \"new-client-bubble\" \"unseen-changes-bubble\"}}\">{{or induction.practiceArea \"unknown\"}}</span>\n          <LinkTo @route=\"admin.config.editform\" @model={{induction.formID}} @query={{hash firmID=this.firmID}}>{{induction.displayTitle}}</LinkTo>\n          <br/>\n          <small>\n            <a class=\"clickable\" {{action 'branchForm' induction}}><i class=\"fal fa-code-branch\"/>Create a new form based on this one</a>\n            {{#if induction.basedOnFormID}}\n              <i class=\"fal fa-trash-alt clickable negative\" {{action 'deleteForm' induction}}/>\n            {{else}}\n              (<i class=\"fal fa-flag tight\"/> Master Form)\n            {{/if}}\n            </small>\n          </div>\n        {{/each}}\n        \n        <h4 style=\"margin-top: 10px\">Create Forms</h4>\n        <LinkTo @route=\"admin.config.editform\" @model=\"create\" @query={{hash firmID=this.firmID}}>\n          <i class=\"fal fa-plus-circle\" />\n          New Family Law Form\n        </LinkTo><br/>\n        {{#unless (eq this.model.masterFirmID this.firmID)}}\n          <i class=\"fal fa-code-branch\"/>\n           Branch from Master Firm <small>({{this.model.masterFirmID}})</small>\n          <ul>\n            {{#each this.model.masterForms as |induction|}}\n              {{!-- only show master forms that have a practice area --}}\n              {{#if (and (not induction.basedOnFormID) induction.practiceArea)}}\n              <li>\n                - <span class=\"new-client-bubble\">{{induction.practiceArea}}</span>\n                <a class=\"clickable\" {{action 'branchForm' induction}}>{{induction.displayTitle}}</a><br/>\n              </li>\n            {{/if}} \n            {{/each}}\n          </ul>\n          {{/unless}}\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"8B64AThe\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Edit Forms\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,5],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.firms\\\",[28,[37,6],null,[[\\\"selectedFirmID\\\"],[[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"config-header\\\"],[12],[8,[39,9],null,[[\\\"@src\\\"],[\\\"/assets/images/icons/sign-form.png\\\"]],null],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,\\\"h2\\\"],[12],[1,[30,0,[\\\"firmName\\\"]]],[1,\\\" forms\\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,12],[[30,0,[\\\"model\\\",\\\"masterFirmID\\\"]],[30,0,[\\\"firmID\\\"]]],null],[[[1,\\\"        \\\"],[10,0],[14,5,\\\"border-radius: 4px; border: 1px solid #9C0006; padding: 5px; margin: 10px 0; text-align: center; font-weight: 500; text-transform: uppercase; display: flex;\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-warning tight\\\"],[14,5,\\\"color:#9C0006\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[10,1],[14,5,\\\"flex-grow: 1\\\"],[12],[1,\\\"Master Firm - Be Careful\\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-warning tight\\\"],[14,5,\\\"color:#9C0006\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"      \\\\n\\\"]],[]],null],[1,\\\"      \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[28,[37,14],[[28,[37,15],[[30,0,[\\\"model\\\",\\\"forms\\\"]]],null],[28,[37,16],[[30,0,[\\\"model\\\",\\\"forms\\\",\\\"length\\\"]],0],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[39,17],null,null,null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[39,18],null,[[\\\"@loading\\\",\\\"@success\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,0,[\\\"deletingForm\\\"]],[30,0,[\\\"deletingFormSuccess\\\"]],[30,0,[\\\"deletingFormError\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        The form was deleted successfully.\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\\n      \\\"],[10,\\\"h4\\\"],[12],[1,\\\"Existing Forms\\\"],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,21],[[28,[37,21],[[30,0,[\\\"model\\\",\\\"forms\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,1],[15,0,[29,[[52,[30,1,[\\\"practiceArea\\\"]],\\\"new-client-bubble\\\",\\\"unseen-changes-bubble\\\"]]]],[12],[1,[28,[35,22],[[30,1,[\\\"practiceArea\\\"]],\\\"unknown\\\"],null]],[13],[1,\\\"\\\\n        \\\"],[8,[39,5],null,[[\\\"@route\\\",\\\"@model\\\",\\\"@query\\\"],[\\\"admin.config.editform\\\",[30,1,[\\\"formID\\\"]],[28,[37,6],null,[[\\\"firmID\\\"],[[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[1,[30,1,[\\\"displayTitle\\\"]]]],[]]]]],[1,\\\"\\\\n        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n          \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,24],[[30,0],\\\"branchForm\\\",[30,1]],null],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-code-branch\\\"],[12],[13],[1,\\\"Create a new form based on this one\\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"basedOnFormID\\\"]],[[[1,\\\"            \\\"],[11,\\\"i\\\"],[24,0,\\\"fal fa-trash-alt clickable negative\\\"],[4,[38,24],[[30,0],\\\"deleteForm\\\",[30,1]],null],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"            (\\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-flag tight\\\"],[12],[13],[1,\\\" Master Form)\\\\n\\\"]],[]]],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"      \\\\n      \\\"],[10,\\\"h4\\\"],[14,5,\\\"margin-top: 10px\\\"],[12],[1,\\\"Create Forms\\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,5],null,[[\\\"@route\\\",\\\"@model\\\",\\\"@query\\\"],[\\\"admin.config.editform\\\",\\\"create\\\",[28,[37,6],null,[[\\\"firmID\\\"],[[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle\\\"],[12],[13],[1,\\\"\\\\n        New Family Law Form\\\\n      \\\"]],[]]]]],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"],[41,[51,[28,[37,12],[[30,0,[\\\"model\\\",\\\"masterFirmID\\\"]],[30,0,[\\\"firmID\\\"]]],null]],[[[1,\\\"        \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-code-branch\\\"],[12],[13],[1,\\\"\\\\n         Branch from Master Firm \\\"],[10,\\\"small\\\"],[12],[1,\\\"(\\\"],[1,[30,0,[\\\"model\\\",\\\"masterFirmID\\\"]]],[1,\\\")\\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"ul\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,21],[[28,[37,21],[[30,0,[\\\"model\\\",\\\"masterForms\\\"]]],null]],null],null,[[[41,[28,[37,14],[[28,[37,15],[[30,2,[\\\"basedOnFormID\\\"]]],null],[30,2,[\\\"practiceArea\\\"]]],null],[[[1,\\\"            \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n              - \\\"],[10,1],[14,0,\\\"new-client-bubble\\\"],[12],[1,[30,2,[\\\"practiceArea\\\"]]],[13],[1,\\\"\\\\n              \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,24],[[30,0],\\\"branchForm\\\",[30,2]],null],[12],[1,[30,2,[\\\"displayTitle\\\"]]],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[2]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,28],null,null,null]],[\\\"induction\\\",\\\"induction\\\"],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"hash\\\",\\\"i\\\",\\\"span\\\",\\\"line-icon\\\",\\\"h2\\\",\\\"if\\\",\\\"eq\\\",\\\"liquid-if\\\",\\\"and\\\",\\\"not\\\",\\\"not-eq\\\",\\\"loading-spinner\\\",\\\"loading-display\\\",\\\"h4\\\",\\\"each\\\",\\\"-track-array\\\",\\\"or\\\",\\\"a\\\",\\\"action\\\",\\\"unless\\\",\\\"ul\\\",\\\"li\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/config/forms.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/config/index\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Configure Settify\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <br />\n        <div>\n          <p><small><LinkTo @route=\"index\"><i class=\"fal fa-home-lg-alt\" />Home</LinkTo></small></p>\n        </div>\n        <div class=\"config-menu\">\n          <p>\n            <LinkTo @route=\"admin.config.team\">\n              <LineIcon @src=\"/assets/images/icons/team.png\" />\n              Your team\n            </LinkTo>\n          </p>\n          <p>\n            <LinkTo @route=\"admin.config.offices\">\n              <LineIcon @src=\"/assets/images/icons/office.png\" />\n              Office details\n            </LinkTo>\n          </p>\n          <p>\n            <LinkTo @route=\"admin.config.integrations\">\n              <LineIcon @src=\"/assets/images/icons/integration.png\" />\n              Integrations\n            </LinkTo>\n          </p>\n          <p>\n            <LinkTo @route=\"admin.config.accounts\">\n              <LineIcon @src=\"/assets/images/icons/bill.png\" />\n              Billing and accounts\n            </LinkTo>\n          </p>\n          <p>\n            <LinkTo @route=\"admin.config.induction\">\n              <LineIcon @src=\"/assets/images/icons/startup.png\" />\n              Customise the client experience\n            </LinkTo>\n          </p>\n          <p>\n            <LinkTo @route=\"admin.config.dashboard\">\n              <LineIcon @src=\"/assets/images/icons/configure.png\" />\n              Customise the admin experience\n            </LinkTo>\n          </p>\n          <p>\n            <LinkTo @route=\"admin.config.invitations\">\n              <LineIcon @src=\"/assets/images/icons/email.png\" />\n              Invitations\n            </LinkTo>\n          </p>\n          <p>\n            <LinkTo @route=\"admin.config.links\">\n              <LineIcon @src=\"/assets/images/icons/click.png\" />\n              Settify links\n            </LinkTo>\n          </p>\n          {{#if this.firm.settings.emergency.showEmergencyOptions}}\n            <p>\n              <LinkTo @route=\"admin.config.emergency\">\n                <LineIcon @src=\"/assets/images/icons/alarm.png\" />\n                {{this.firm.settings.emergency.emergencyTitle}}\n              </LinkTo>\n            </p>\n          {{/if}}\n        </div>\n  \n        {{! MVPTODO: Only show this option if the relevant setting is enabled }}\n        {{! MVPTODO: Only show this option if the current user has permissions to see it }}\n        {{!--\n        {{#if this.session.data.authenticated.isSettifyAdmin}}\n          <br>\n          <h5>Settify only options</h5>\n          <div class=\"config-menu\">\n            <p>\n              <LinkTo @route=\"admin.config.forms\">\n                <LineIcon @src=\"/assets/images/icons/sign-form.png\" /> Edit your forms\n              </LinkTo>\n            </p>\n            <p>\n              <a {{action \"triggerSentryError\"}}><LineIcon @src=\"/assets/images/icons/048-attack.png\" /> Trigger Sentry Error</a>\n            </p>\n          </div>\n        {{/if}}\n        --}}\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"deZVV7ZH\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Configure Settify\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,5],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-home-lg-alt\\\"],[12],[13],[1,\\\"Home\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"config-menu\\\"],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[8,[39,5],null,[[\\\"@route\\\"],[\\\"admin.config.team\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,7],null,[[\\\"@src\\\"],[\\\"/assets/images/icons/team.png\\\"]],null],[1,\\\"\\\\n            Your team\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[8,[39,5],null,[[\\\"@route\\\"],[\\\"admin.config.offices\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,7],null,[[\\\"@src\\\"],[\\\"/assets/images/icons/office.png\\\"]],null],[1,\\\"\\\\n            Office details\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[8,[39,5],null,[[\\\"@route\\\"],[\\\"admin.config.integrations\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,7],null,[[\\\"@src\\\"],[\\\"/assets/images/icons/integration.png\\\"]],null],[1,\\\"\\\\n            Integrations\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[8,[39,5],null,[[\\\"@route\\\"],[\\\"admin.config.accounts\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,7],null,[[\\\"@src\\\"],[\\\"/assets/images/icons/bill.png\\\"]],null],[1,\\\"\\\\n            Billing and accounts\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[8,[39,5],null,[[\\\"@route\\\"],[\\\"admin.config.induction\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,7],null,[[\\\"@src\\\"],[\\\"/assets/images/icons/startup.png\\\"]],null],[1,\\\"\\\\n            Customise the client experience\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[8,[39,5],null,[[\\\"@route\\\"],[\\\"admin.config.dashboard\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,7],null,[[\\\"@src\\\"],[\\\"/assets/images/icons/configure.png\\\"]],null],[1,\\\"\\\\n            Customise the admin experience\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[8,[39,5],null,[[\\\"@route\\\"],[\\\"admin.config.invitations\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,7],null,[[\\\"@src\\\"],[\\\"/assets/images/icons/email.png\\\"]],null],[1,\\\"\\\\n            Invitations\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[8,[39,5],null,[[\\\"@route\\\"],[\\\"admin.config.links\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,7],null,[[\\\"@src\\\"],[\\\"/assets/images/icons/click.png\\\"]],null],[1,\\\"\\\\n            Settify links\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"firm\\\",\\\"settings\\\",\\\"emergency\\\",\\\"showEmergencyOptions\\\"]],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[8,[39,5],null,[[\\\"@route\\\"],[\\\"admin.config.emergency\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[39,7],null,[[\\\"@src\\\"],[\\\"/assets/images/icons/alarm.png\\\"]],null],[1,\\\"\\\\n              \\\"],[1,[30,0,[\\\"firm\\\",\\\"settings\\\",\\\"emergency\\\",\\\"emergencyTitle\\\"]]],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,9],null,null,null]],[],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"i\\\",\\\"line-icon\\\",\\\"if\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/config/index.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/config/induction\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Client Experience\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn firm-details\">\n        <br>\n        <div>\n          <p><small><LinkTo @route=\"admin.firms\" @query={{hash selectedFirmID=this.firmID}}><i class=\"fal fa-arrow-circle-left\" />Back</LinkTo></small></p>\n        </div>\n        <LiquidIf @predicate={{not this.filteredSettings}}>\n          <LoadingSpinner />\n        </LiquidIf>\n  \n        <LiquidIf @predicate={{this.filteredSettings}}>\n          <span class=\"config-header\"><LineIcon @src=\"/assets/images/icons/startup.png\" /></span>\n  \n          {{#if this.firmSettings.settings.otherSettifyURLs}}\n            <p>\n              Viewing settings for <b>{{this.practiceArea}}</b>. Switch to:\n              {{#each-in this.firmSettings.settings.otherSettifyURLs as |area URL|}}\n                {{#if URL}}\n                  <LinkTo @route=\"admin.config.induction\" @query={{hash firmID=this.firmID practiceArea=area}}>\n                    {{area}}\n                  </LinkTo>\n                {{/if}}\n              {{/each-in}}\n            </p>\n          {{/if}}\n          \n  \n          <Admin::FilteredSettingsTable\n            @filteredSettings={{this.filteredSettings}}\n            @firmSettings={{this.firmSettings}}\n            @selectedPracticeAreaSettings={{this.selectedPracticeAreaSettings}}\n          />\n  \n          <Admin::SettingsSaveButtons\n            @savingChanges={{this.savingChanges}}\n            @savingChangesSuccess={{this.savingChangesSuccess}}\n            @savingChangesError={{this.savingChangesError}}\n            @saveChangesAction={{action \"saveChanges\"}}\n            @revertChangesAction={{action \"revertChanges\"}}\n          />\n  \n        </LiquidIf>\n  \n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"qTL+DV/8\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Client Experience\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn firm-details\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,5],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.firms\\\",[28,[37,6],null,[[\\\"selectedFirmID\\\"],[[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,9],[[30,0,[\\\"filteredSettings\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[39,10],null,null,null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\\n      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"filteredSettings\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"config-header\\\"],[12],[8,[39,12],null,[[\\\"@src\\\"],[\\\"/assets/images/icons/startup.png\\\"]],null],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"firmSettings\\\",\\\"settings\\\",\\\"otherSettifyURLs\\\"]],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            Viewing settings for \\\"],[10,\\\"b\\\"],[12],[1,[30,0,[\\\"practiceArea\\\"]]],[13],[1,\\\". Switch to:\\\\n\\\"],[42,[28,[37,16],[[30,0,[\\\"firmSettings\\\",\\\"settings\\\",\\\"otherSettifyURLs\\\"]]],null],null,[[[41,[30,1],[[[1,\\\"                \\\"],[8,[39,5],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.config.induction\\\",[28,[37,6],null,[[\\\"firmID\\\",\\\"practiceArea\\\"],[[30,0,[\\\"firmID\\\"]],[30,2]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  \\\"],[1,[30,2]],[1,\\\"\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[1,2]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\\n\\\\n        \\\"],[8,[39,17],null,[[\\\"@filteredSettings\\\",\\\"@firmSettings\\\",\\\"@selectedPracticeAreaSettings\\\"],[[30,0,[\\\"filteredSettings\\\"]],[30,0,[\\\"firmSettings\\\"]],[30,0,[\\\"selectedPracticeAreaSettings\\\"]]]],null],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,18],null,[[\\\"@savingChanges\\\",\\\"@savingChangesSuccess\\\",\\\"@savingChangesError\\\",\\\"@saveChangesAction\\\",\\\"@revertChangesAction\\\"],[[30,0,[\\\"savingChanges\\\"]],[30,0,[\\\"savingChangesSuccess\\\"]],[30,0,[\\\"savingChangesError\\\"]],[28,[37,19],[[30,0],\\\"saveChanges\\\"],null],[28,[37,19],[[30,0],\\\"revertChanges\\\"],null]]],null],[1,\\\"\\\\n\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,20],null,null,null]],[\\\"URL\\\",\\\"area\\\"],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"hash\\\",\\\"i\\\",\\\"liquid-if\\\",\\\"not\\\",\\\"loading-spinner\\\",\\\"span\\\",\\\"line-icon\\\",\\\"if\\\",\\\"b\\\",\\\"each\\\",\\\"-each-in\\\",\\\"admin/filtered-settings-table\\\",\\\"admin/settings-save-buttons\\\",\\\"action\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/config/induction.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/config/integrationmanager\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Integrations\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <div>\n          <p><small><LinkTo @route=\"admin.firms\" @query={{hash selectedFirmID=this.firmID}}><i class=\"fal fa-arrow-circle-left\" />Back</LinkTo></small></p>\n        </div>\n  \n        {{#if this.hasPMSID}}\n          <div class=\"firm-details\">\n            <h3>\n              {{#if this.authenticated}}\n                This firm has set up the integration with\n              {{else}}\n                This firm is in the process of setting up the integration with\n              {{/if}}\n              {{this.firmSettings.settings.settings.admin.integrations.pmsID}}.\n            </h3>\n            {{#unless this.authenticated}}\n              <table class=\"settings\">\n                {{#each this.adminSettings as |setting|}}\n                  <tr>\n                    <td>\n                      {{setting.label}}\n                    </td>\n                    <td>\n                      {{#if (eq setting.type \"string\")}}\n                        <SettifyTextline @model={{mut (get this.pmsAdminSettings setting.name)}} @onChange={{action \"onChange\"}} @required={{setting.required}} />\n                      {{/if}}\n                      {{#if (eq setting.type \"json\")}}\n                        <SettifyTextarea @model={{mut (get this.pmsAdminSettings setting.name)}} @onChange={{action \"onChange\"}} @required={{setting.required}} />\n                      {{/if}}\n                    </td>\n                  </tr>\n                {{/each}}\n              </table>\n              <p style=\"text-align: right;\">\n                <button\n                  class=\"next-button hvr-float-shadow hvr-grow {{unless this.activateSubmitButton 'disabled-button'}}\"\n                  type=\"button\"\n                  {{action (if this.activateSubmitButton \"submitSettings\" \"nullAction\")}}\n                >\n                  Submit\n                </button>\n              </p>\n            {{/unless}}\n          </div>\n  \n          <LoadingDisplay @loading={{this.loading}} @success={{this.submitComplete}} @error={{this.submitError}} @showError={{true}}>\n            The integration between Settify and\n            {{this.firmSettings.settings.settings.admin.integrations.pmsID}}. has been successfully connected.\n          </LoadingDisplay>\n        {{else}}\n          <h3>This firm has no integration settings to manage.</h3>\n        {{/if}}\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"uBRgVdOe\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Integrations\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,4],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.firms\\\",[28,[37,5],null,[[\\\"selectedFirmID\\\"],[[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"hasPMSID\\\"]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"firm-details\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"h3\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"authenticated\\\"]],[[[1,\\\"              This firm has set up the integration with\\\\n\\\"]],[]],[[[1,\\\"              This firm is in the process of setting up the integration with\\\\n\\\"]],[]]],[1,\\\"            \\\"],[1,[30,0,[\\\"firmSettings\\\",\\\"settings\\\",\\\"settings\\\",\\\"admin\\\",\\\"integrations\\\",\\\"pmsID\\\"]]],[1,\\\".\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"authenticated\\\"]]],[[[1,\\\"            \\\"],[10,\\\"table\\\"],[14,0,\\\"settings\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,12],[[28,[37,12],[[30,0,[\\\"adminSettings\\\"]]],null]],null],null,[[[1,\\\"                \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    \\\"],[1,[30,1,[\\\"label\\\"]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,15],[[30,1,[\\\"type\\\"]],\\\"string\\\"],null],[[[1,\\\"                      \\\"],[8,[39,16],null,[[\\\"@model\\\",\\\"@onChange\\\",\\\"@required\\\"],[[28,[37,17],[[28,[37,18],[[30,0,[\\\"pmsAdminSettings\\\"]],[30,1,[\\\"name\\\"]]],null]],null],[28,[37,19],[[30,0],\\\"onChange\\\"],null],[30,1,[\\\"required\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,15],[[30,1,[\\\"type\\\"]],\\\"json\\\"],null],[[[1,\\\"                      \\\"],[8,[39,20],null,[[\\\"@model\\\",\\\"@onChange\\\",\\\"@required\\\"],[[28,[37,17],[[28,[37,18],[[30,0,[\\\"pmsAdminSettings\\\"]],[30,1,[\\\"name\\\"]]],null]],null],[28,[37,19],[[30,0],\\\"onChange\\\"],null],[30,1,[\\\"required\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,2],[14,5,\\\"text-align: right;\\\"],[12],[1,\\\"\\\\n              \\\"],[11,\\\"button\\\"],[16,0,[29,[\\\"next-button hvr-float-shadow hvr-grow \\\",[52,[51,[30,0,[\\\"activateSubmitButton\\\"]]],\\\"disabled-button\\\"]]]],[24,4,\\\"button\\\"],[4,[38,19],[[30,0],[52,[30,0,[\\\"activateSubmitButton\\\"]],\\\"submitSettings\\\",\\\"nullAction\\\"]],null],[12],[1,\\\"\\\\n                Submit\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,22],null,[[\\\"@loading\\\",\\\"@success\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,0,[\\\"loading\\\"]],[30,0,[\\\"submitComplete\\\"]],[30,0,[\\\"submitError\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          The integration between Settify and\\\\n          \\\"],[1,[30,0,[\\\"firmSettings\\\",\\\"settings\\\",\\\"settings\\\",\\\"admin\\\",\\\"integrations\\\",\\\"pmsID\\\"]]],[1,\\\". has been successfully connected.\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,\\\"h3\\\"],[12],[1,\\\"This firm has no integration settings to manage.\\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,23],null,null,null]],[\\\"setting\\\"],false,[\\\"animated-header\\\",\\\"div\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"hash\\\",\\\"i\\\",\\\"if\\\",\\\"h3\\\",\\\"unless\\\",\\\"table\\\",\\\"each\\\",\\\"-track-array\\\",\\\"tr\\\",\\\"td\\\",\\\"eq\\\",\\\"settify-textline\\\",\\\"mut\\\",\\\"get\\\",\\\"action\\\",\\\"settify-textarea\\\",\\\"button\\\",\\\"loading-display\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/config/integrationmanager.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/config/integrations\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Integrations\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn firm-details\">\n        <br>\n        <div>\n          <p><small><LinkTo @route=\"admin.firms\" @query={{hash selectedFirmID=this.firmID}}><i class=\"fal fa-arrow-circle-left\" />Back</LinkTo></small></p>\n        </div>\n        <LiquidIf @predicate={{not this.filteredSettings}}>\n          <LoadingSpinner />\n        </LiquidIf>\n  \n        <LiquidIf @predicate={{this.filteredSettings}}>\n          <span class=\"config-header\"><LineIcon @src=\"/assets/images/icons/integration.png\" /></span>\n  \n          <PracticeAreaWarning @pageName=\"integration screen\" @practiceArea={{this.selectedPracticeArea}} @changePracticeArea={{action \"changePracticeArea\"}} />\n  \n          <h3>Which practice management system are you using at {{this.firm.name}}?</h3>\n  \n          <p>\n            <SettifySelect name=\"pms\" @labelPath=\"label\" @valuePath=\"value\" @model={{this.pmsID}} @content={{this.pmsSelects}} />\n          </p>\n  \n          <LiquidIf @predicate={{this.pmsMetadata}}>\n            {{#if this.pmsMetadata.logoUrl}}\n              <p class=\"centertext\">\n                <img src={{this.pmsMetadata.logoUrl}} class=\"pms-data-logo\" alt=\"{{this.pmsMetadata.name}}\" />\n              </p>\n            {{/if}}\n            {{#if this.pmsMetadata.blurb}}\n              <p class=\"centertext\">\n                {{this.pmsMetadata.blurb}}\n              </p>\n            {{/if}}\n          </LiquidIf>\n  \n          <LoadingDisplay @loading={{this.disconnecting}} @success={{this.disconnected}} @error={{this.disconnectErrorMessage}} @showError={{true}}>\n            Disconnected\n          </LoadingDisplay>\n  \n          <LiquidIf @predicate={{this.showAuthenticationOptions}}>\n            <i class=\"fal fa-plug negative\" />\n            The integration between Settify and\n            {{this.pmsMetadata.name}}\n            is not yet connected. To connect the integration, click the button below.\n            <br />\n            <div class=\"centertext\">\n              <button type=\"button\" {{action \"startAuthenticationProcess\"}} class=\"next-button\">Connect</button>\n            </div>\n          </LiquidIf>\n  \n          <LiquidIf @predicate={{this.loading}}>\n            <LoadingSpinner />\n          </LiquidIf>\n          <LiquidIf @predicate={{not this.loading}}>\n            <LoadingDisplay @loading={{this.loadingInitialProcess}} @success={{this.inProgress}} @error={{this.initialAuthenticationRequestError}} @showError={{true}}>\n              The set up for the integration between Settify and\n              {{this.pmsMetadata.name}}\n              has been started.\n              <br /><br />\n              {{this.initialAuthenticationMessage}}\n              You will receive an email when it has been completed.\n            </LoadingDisplay>\n  \n            <LiquidIf @predicate={{this.pmsMetadata.authentication}}>\n              <LoadingDisplay @loading={{this.authenticating}} @success={{this.authenticated}} @error={{this.authenticationErrorMessage}} @showError={{true}}>\n                The integration between Settify and\n                {{this.pmsMetadata.name}}\n                has been successfully connected.\n  \n                {{#if this.pmsMetadata.authentication.disconnectLambda}}\n                  <p>\n                    <small>\n                      <a class=\"clickable\" {{action \"disconnect\"}}>\n                        <i class=\"fal fa-plug negative\" />\n                        Click here to disconnect the integration\n                      </a>\n                    </small>\n                  </p>\n                {{/if}}\n              </LoadingDisplay>\n            </LiquidIf>\n  \n            <LiquidIf @predicate={{and this.authenticated (or this.getSendToPmsMetadata this.loadingPmsSettings)}}>\n              <PmsSettingsConfig\n                @loadingPmsSettings={{this.loadingPmsSettings}}\n                @getSendToPmsMetadata={{this.getSendToPmsMetadata}}\n                @settingsModel={{this.selectedPracticeAreaSettings}}\n              />\n              <Admin::SettingsSaveButtons\n                @savingChanges={{this.savingChanges}}\n                @savingChangesSuccess={{this.savingChangesSuccess}}\n                @savingChangesError={{this.savingChangesError}}\n                @saveChangesAction={{action \"saveChanges\"}}\n                @revertChangesAction={{action \"revertChanges\"}}\n              />\n            </LiquidIf>\n          </LiquidIf>\n        </LiquidIf>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"BwKcYYB7\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Integrations\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn firm-details\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,5],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.firms\\\",[28,[37,6],null,[[\\\"selectedFirmID\\\"],[[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,9],[[30,0,[\\\"filteredSettings\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[39,10],null,null,null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\\n      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"filteredSettings\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"config-header\\\"],[12],[8,[39,12],null,[[\\\"@src\\\"],[\\\"/assets/images/icons/integration.png\\\"]],null],[13],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,13],null,[[\\\"@pageName\\\",\\\"@practiceArea\\\",\\\"@changePracticeArea\\\"],[\\\"integration screen\\\",[30,0,[\\\"selectedPracticeArea\\\"]],[28,[37,14],[[30,0],\\\"changePracticeArea\\\"],null]]],null],[1,\\\"\\\\n\\\\n        \\\"],[10,\\\"h3\\\"],[12],[1,\\\"Which practice management system are you using at \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\"?\\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[8,[39,16],[[24,3,\\\"pms\\\"]],[[\\\"@labelPath\\\",\\\"@valuePath\\\",\\\"@model\\\",\\\"@content\\\"],[\\\"label\\\",\\\"value\\\",[30,0,[\\\"pmsID\\\"]],[30,0,[\\\"pmsSelects\\\"]]]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"pmsMetadata\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"pmsMetadata\\\",\\\"logoUrl\\\"]],[[[1,\\\"            \\\"],[10,2],[14,0,\\\"centertext\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"img\\\"],[15,\\\"src\\\",[30,0,[\\\"pmsMetadata\\\",\\\"logoUrl\\\"]]],[14,0,\\\"pms-data-logo\\\"],[15,\\\"alt\\\",[29,[[30,0,[\\\"pmsMetadata\\\",\\\"name\\\"]]]]],[12],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"pmsMetadata\\\",\\\"blurb\\\"]],[[[1,\\\"            \\\"],[10,2],[14,0,\\\"centertext\\\"],[12],[1,\\\"\\\\n              \\\"],[1,[30,0,[\\\"pmsMetadata\\\",\\\"blurb\\\"]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"]],[]]]]],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,19],null,[[\\\"@loading\\\",\\\"@success\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,0,[\\\"disconnecting\\\"]],[30,0,[\\\"disconnected\\\"]],[30,0,[\\\"disconnectErrorMessage\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          Disconnected\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showAuthenticationOptions\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-plug negative\\\"],[12],[13],[1,\\\"\\\\n          The integration between Settify and\\\\n          \\\"],[1,[30,0,[\\\"pmsMetadata\\\",\\\"name\\\"]]],[1,\\\"\\\\n          is not yet connected. To connect the integration, click the button below.\\\\n          \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"centertext\\\"],[12],[1,\\\"\\\\n            \\\"],[11,\\\"button\\\"],[24,0,\\\"next-button\\\"],[24,4,\\\"button\\\"],[4,[38,14],[[30,0],\\\"startAuthenticationProcess\\\"],null],[12],[1,\\\"Connect\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"loading\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[39,10],null,null,null],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,9],[[30,0,[\\\"loading\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[39,19],null,[[\\\"@loading\\\",\\\"@success\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,0,[\\\"loadingInitialProcess\\\"]],[30,0,[\\\"inProgress\\\"]],[30,0,[\\\"initialAuthenticationRequestError\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            The set up for the integration between Settify and\\\\n            \\\"],[1,[30,0,[\\\"pmsMetadata\\\",\\\"name\\\"]]],[1,\\\"\\\\n            has been started.\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n            \\\"],[1,[30,0,[\\\"initialAuthenticationMessage\\\"]]],[1,\\\"\\\\n            You will receive an email when it has been completed.\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\\n          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"pmsMetadata\\\",\\\"authentication\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,19],null,[[\\\"@loading\\\",\\\"@success\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,0,[\\\"authenticating\\\"]],[30,0,[\\\"authenticated\\\"]],[30,0,[\\\"authenticationErrorMessage\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              The integration between Settify and\\\\n              \\\"],[1,[30,0,[\\\"pmsMetadata\\\",\\\"name\\\"]]],[1,\\\"\\\\n              has been successfully connected.\\\\n\\\\n\\\"],[41,[30,0,[\\\"pmsMetadata\\\",\\\"authentication\\\",\\\"disconnectLambda\\\"]],[[[1,\\\"                \\\"],[10,2],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                    \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,14],[[30,0],\\\"disconnect\\\"],null],[12],[1,\\\"\\\\n                      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-plug negative\\\"],[12],[13],[1,\\\"\\\\n                      Click here to disconnect the integration\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\\n          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,22],[[30,0,[\\\"authenticated\\\"]],[28,[37,23],[[30,0,[\\\"getSendToPmsMetadata\\\"]],[30,0,[\\\"loadingPmsSettings\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,24],null,[[\\\"@loadingPmsSettings\\\",\\\"@getSendToPmsMetadata\\\",\\\"@settingsModel\\\"],[[30,0,[\\\"loadingPmsSettings\\\"]],[30,0,[\\\"getSendToPmsMetadata\\\"]],[30,0,[\\\"selectedPracticeAreaSettings\\\"]]]],null],[1,\\\"\\\\n            \\\"],[8,[39,25],null,[[\\\"@savingChanges\\\",\\\"@savingChangesSuccess\\\",\\\"@savingChangesError\\\",\\\"@saveChangesAction\\\",\\\"@revertChangesAction\\\"],[[30,0,[\\\"savingChanges\\\"]],[30,0,[\\\"savingChangesSuccess\\\"]],[30,0,[\\\"savingChangesError\\\"]],[28,[37,14],[[30,0],\\\"saveChanges\\\"],null],[28,[37,14],[[30,0],\\\"revertChanges\\\"],null]]],null],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,26],null,null,null]],[],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"hash\\\",\\\"i\\\",\\\"liquid-if\\\",\\\"not\\\",\\\"loading-spinner\\\",\\\"span\\\",\\\"line-icon\\\",\\\"practice-area-warning\\\",\\\"action\\\",\\\"h3\\\",\\\"settify-select\\\",\\\"if\\\",\\\"img\\\",\\\"loading-display\\\",\\\"button\\\",\\\"a\\\",\\\"and\\\",\\\"or\\\",\\\"pms-settings-config\\\",\\\"admin/settings-save-buttons\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/config/integrations.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/config/invitations\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Invitations\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn firm-details\">\n        <br>\n        <div>\n          <p><small><LinkTo @route=\"admin.firms\" @query={{hash selectedFirmID=this.firmID}}><i class=\"fal fa-arrow-circle-left\" />Back</LinkTo></small></p>\n        </div>\n        <LiquidIf @predicate={{not this.filteredSettings}}>\n          <LoadingSpinner />\n        </LiquidIf>\n  \n        <LiquidIf @predicate={{this.filteredSettings}}>\n          <span class=\"config-header\"><LineIcon @src=\"/assets/images/icons/email.png\" /></span>\n  \n          <h1>{{this.firmSettings.settings.name}}</h1>\n          \n          {{#if this.firmSettings.settings.otherSettifyURLs}}\n            <p>\n              Viewing settings for <b>{{this.practiceArea}}</b>. Switch to:\n              {{#each-in this.firmSettings.settings.otherSettifyURLs as |area URL|}}\n                {{#if URL}}\n                  <LinkTo @route=\"admin.config.invitations\" @query={{hash firmID=this.firmID practiceArea=area}}>\n                    {{area}}\n                  </LinkTo>\n                {{/if}}\n              {{/each-in}}\n            </p>\n          {{/if}}\n          \n  \n          <Admin::FilteredSettingsTable\n            @filteredSettings={{this.filteredSettings}}\n            @firmSettings={{this.firmSettings}}\n            @selectedPracticeAreaSettings={{this.selectedPracticeAreaSettings}}\n          />\n  \n          <Admin::SettingsSaveButtons\n            @savingChanges={{this.savingChanges}}\n            @savingChangesSuccess={{this.savingChangesSuccess}}\n            @savingChangesError={{this.savingChangesError}}\n            @saveChangesAction={{action \"saveChanges\"}}\n            @revertChangesAction={{action \"revertChanges\"}}\n          />\n  \n        </LiquidIf>\n  \n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"bh0bFc5j\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Invitations\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn firm-details\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,5],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.firms\\\",[28,[37,6],null,[[\\\"selectedFirmID\\\"],[[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,9],[[30,0,[\\\"filteredSettings\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[39,10],null,null,null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\\n      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"filteredSettings\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"config-header\\\"],[12],[8,[39,12],null,[[\\\"@src\\\"],[\\\"/assets/images/icons/email.png\\\"]],null],[13],[1,\\\"\\\\n\\\\n        \\\"],[10,\\\"h1\\\"],[12],[1,[30,0,[\\\"firmSettings\\\",\\\"settings\\\",\\\"name\\\"]]],[13],[1,\\\"\\\\n        \\\\n\\\"],[41,[30,0,[\\\"firmSettings\\\",\\\"settings\\\",\\\"otherSettifyURLs\\\"]],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            Viewing settings for \\\"],[10,\\\"b\\\"],[12],[1,[30,0,[\\\"practiceArea\\\"]]],[13],[1,\\\". Switch to:\\\\n\\\"],[42,[28,[37,17],[[30,0,[\\\"firmSettings\\\",\\\"settings\\\",\\\"otherSettifyURLs\\\"]]],null],null,[[[41,[30,1],[[[1,\\\"                \\\"],[8,[39,5],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.config.invitations\\\",[28,[37,6],null,[[\\\"firmID\\\",\\\"practiceArea\\\"],[[30,0,[\\\"firmID\\\"]],[30,2]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  \\\"],[1,[30,2]],[1,\\\"\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[1,2]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\\n\\\\n        \\\"],[8,[39,18],null,[[\\\"@filteredSettings\\\",\\\"@firmSettings\\\",\\\"@selectedPracticeAreaSettings\\\"],[[30,0,[\\\"filteredSettings\\\"]],[30,0,[\\\"firmSettings\\\"]],[30,0,[\\\"selectedPracticeAreaSettings\\\"]]]],null],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,19],null,[[\\\"@savingChanges\\\",\\\"@savingChangesSuccess\\\",\\\"@savingChangesError\\\",\\\"@saveChangesAction\\\",\\\"@revertChangesAction\\\"],[[30,0,[\\\"savingChanges\\\"]],[30,0,[\\\"savingChangesSuccess\\\"]],[30,0,[\\\"savingChangesError\\\"]],[28,[37,20],[[30,0],\\\"saveChanges\\\"],null],[28,[37,20],[[30,0],\\\"revertChanges\\\"],null]]],null],[1,\\\"\\\\n\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,21],null,null,null]],[\\\"URL\\\",\\\"area\\\"],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"hash\\\",\\\"i\\\",\\\"liquid-if\\\",\\\"not\\\",\\\"loading-spinner\\\",\\\"span\\\",\\\"line-icon\\\",\\\"h1\\\",\\\"if\\\",\\\"b\\\",\\\"each\\\",\\\"-each-in\\\",\\\"admin/filtered-settings-table\\\",\\\"admin/settings-save-buttons\\\",\\\"action\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/config/invitations.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/config/invoices\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Past invoices\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn firm-details\">\n        <br />\n        <div>\n          <p><small><LinkTo @route=\"admin.firms\" @query={{hash selectedFirmID=this.firmID}}><i class=\"fal fa-arrow-circle-left\" />Back</LinkTo></small></p>\n        </div>\n        <span class=\"config-header\"><LineIcon @src=\"/assets/images/icons/033-invoice.png\" /></span>\n        <h2 class=\"text-center\">Viewing invoices for {{this.firmName}}</h2>\n        <h3>Original PDFs</h3>\n        <p>These are only available from about September 2021 onwards.</p>\n        {{#if this.model.invoicePDFs.length}}\n          <p>\n            <ul>\n              {{#each this.model.invoicePDFs as |pdf|}}\n                <li>\n                  <a class=\"clickable\" {{action 'downloadFile' pdf}}><img src=\"/assets/images/pdf.png\" alt=\"PDF\" style=\"width: 24px; height:24px; margin-right: 5px\" />{{pdf.fileName}}</a>\n                  ({{pretty-date pdf.LastModified}})\n                </li>\n                <LoadingDisplay @loading={{pdf.downloading}} @success={{pdf.downloadingSuccess}} @error={{pdf.downloadingError}} />\n              {{/each}}\n            </ul>\n          </p>\n        {{else}}\n          <p>\n            <b>No invoice PDFs found for this firm. Please contact the CFO or CTO and ask them if they can dig out the invoice from the archives.accounts mailbox.</b>\n          </p>\n        {{/if}}\n        <h3>Billing requests</h3>\n        <ul class=\"invoice-list\">\n          {{#each this.model.requests as |invoice|}}\n            <InvoiceItem @invoice={{invoice}} @emails={{this.emails}} @names={{this.generalContactNames}} @firm={{this.model.firmSettings}} @firmID={{this.firmID}} @reload={{action \"refreshModel\"}} />\n          {{/each}}\n        </ul>\n      </div>\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"2/hSVLUG\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Past invoices\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn firm-details\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,5],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.firms\\\",[28,[37,6],null,[[\\\"selectedFirmID\\\"],[[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"config-header\\\"],[12],[8,[39,9],null,[[\\\"@src\\\"],[\\\"/assets/images/icons/033-invoice.png\\\"]],null],[13],[1,\\\"\\\\n      \\\"],[10,\\\"h2\\\"],[14,0,\\\"text-center\\\"],[12],[1,\\\"Viewing invoices for \\\"],[1,[30,0,[\\\"firmName\\\"]]],[13],[1,\\\"\\\\n      \\\"],[10,\\\"h3\\\"],[12],[1,\\\"Original PDFs\\\"],[13],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"These are only available from about September 2021 onwards.\\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"invoicePDFs\\\",\\\"length\\\"]],[[[1,\\\"        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[10,\\\"ul\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,15],[[28,[37,15],[[30,0,[\\\"model\\\",\\\"invoicePDFs\\\"]]],null]],null],null,[[[1,\\\"              \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n                \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,18],[[30,0],\\\"downloadFile\\\",[30,1]],null],[12],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"/assets/images/pdf.png\\\"],[14,\\\"alt\\\",\\\"PDF\\\"],[14,5,\\\"width: 24px; height:24px; margin-right: 5px\\\"],[12],[13],[1,[30,1,[\\\"fileName\\\"]]],[13],[1,\\\"\\\\n                (\\\"],[1,[28,[35,20],[[30,1,[\\\"LastModified\\\"]]],null]],[1,\\\")\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[8,[39,21],null,[[\\\"@loading\\\",\\\"@success\\\",\\\"@error\\\"],[[30,1,[\\\"downloading\\\"]],[30,1,[\\\"downloadingSuccess\\\"]],[30,1,[\\\"downloadingError\\\"]]]],null],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[10,\\\"b\\\"],[12],[1,\\\"No invoice PDFs found for this firm. Please contact the CFO or CTO and ask them if they can dig out the invoice from the archives.accounts mailbox.\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"      \\\"],[10,\\\"h3\\\"],[12],[1,\\\"Billing requests\\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"ul\\\"],[14,0,\\\"invoice-list\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,15],[[28,[37,15],[[30,0,[\\\"model\\\",\\\"requests\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[8,[39,23],null,[[\\\"@invoice\\\",\\\"@emails\\\",\\\"@names\\\",\\\"@firm\\\",\\\"@firmID\\\",\\\"@reload\\\"],[[30,2],[30,0,[\\\"emails\\\"]],[30,0,[\\\"generalContactNames\\\"]],[30,0,[\\\"model\\\",\\\"firmSettings\\\"]],[30,0,[\\\"firmID\\\"]],[28,[37,18],[[30,0],\\\"refreshModel\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"pdf\\\",\\\"invoice\\\"],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"hash\\\",\\\"i\\\",\\\"span\\\",\\\"line-icon\\\",\\\"h2\\\",\\\"h3\\\",\\\"if\\\",\\\"ul\\\",\\\"each\\\",\\\"-track-array\\\",\\\"li\\\",\\\"a\\\",\\\"action\\\",\\\"img\\\",\\\"pretty-date\\\",\\\"loading-display\\\",\\\"b\\\",\\\"invoice-item\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/config/invoices.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/config/lineitems\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Future invoice line items\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <br />\n        <div>\n          <p><small><LinkTo @route=\"admin.firms\" @query={{hash selectedFirmID=this.firmID}}><i class=\"fal fa-arrow-circle-left\" />Back</LinkTo></small></p>\n        </div>\n  \n        <h1>{{get this.model.firmdetails.practiceAreas \"0.name\"}}</h1>\n  \n        <table class=\"line-items-table\">\n          <tr>\n            <th title=\"Practice area\">\n              Practice area\n            </th>\n            <th title=\"Line item description\">\n              Description\n            </th>\n            <th title=\"Line item date\">\n              Date\n            </th>\n            <th title=\"Line item total invoice amount\">\n              Total amount\n            </th>\n            <th title=\"Line item category\">\n              Category\n            </th>\n            <th title=\"Delete line item\">\n              Action\n            </th>\n          </tr>\n          {{#each this.lineitems as |lineitem|}}\n            <tr>\n              <td>\n                <PracticeAreaIcon @practiceArea={{lineitem.practiceArea}} @alwaysShow={{true}} />\n              </td>\n              <td>\n                {{lineitem.description}}\n              </td>\n              <td>\n                {{pretty-date lineitem.displayDate}}\n              </td>\n              <td>\n                {{lineitem.currency}}\n                <CentsToDollars @model={{lineitem.invoiceTotalAmountCents}} @noCurrencySign={{true}} /><br />\n                (<CentsToDollars @model={{lineitem.invoiceAmountCents}} @noCurrencySign={{true}} />\n                +\n                <CentsToDollars @model={{lineitem.invoiceGSTAmountCents}} @noCurrencySign={{true}} />\n                tax)\n              </td>\n              <td>\n                {{lineitem.category}}\n              </td>\n              <td>\n                <span class=\"clickable\" {{action \"toggleDeleteLineItem\" lineitem}}>\n                  <i class=\"fal fa-trash-alt\" />\n                </span>\n              </td>\n            </tr>\n            <tr>\n              <td colspan=\"6\">\n                <LiquidIf @predicate={{lineitem.isDeleting}}>\n                  <p>\n                    Are you sure you want to delete this line item?\n                    <br />\n                    <a class=\"clickable\" {{action \"deleteLineItem\" lineitem}}>Yes, remove it</a>\n                    <br />\n                    <a class=\"clickable\" {{action \"toggleDeleteLineItem\" lineitem}}>No, keep it</a>\n                  </p>\n                </LiquidIf>\n              </td>\n            </tr>\n          {{else}}\n            <tr>\n              <td colspan=\"6\">\n                No unbilled line items found.\n              </td>\n            </tr>\n          {{/each}}\n        </table>\n        <LoadingDisplay @loading={{this.loading}} @success={{this.successMessage}} @error={{this.errorMessage}} @showError={{true}}>\n          {{this.successMessage}}\n        </LoadingDisplay>\n        <LiquidIf @predicate={{not this.isCreating}}>\n          <p>\n            <a class=\"clickable\" {{action \"toggleLineItemCreation\"}}>\n              <i class=\"fal fa-plus-circle\" />Add a new line item\n            </a>\n          </p>\n        </LiquidIf>\n        <LiquidIf @predicate={{and this.isCreating (not this.loading)}}>\n          <p>\n            To create a new line item, fill in the details below.\n            <SettifyNumber @model={{this.lineItemAmount}} @nocommas={{true}} @label=\"Amount in cents\" @required={{true}} />\n            <CentsToDollars @model={{this.lineItemAmount}} />\n            <SettifyTextline @model={{this.lineItemDescription}} @label=\"Description\" @required={{true}} />\n            <div class=\"datepicker-wrapper\" style=\"margin-top: 10px;\">\n              <DatePicker @date={{this.lineItemDate}} @valueFormat=\"date\" @format=\"DD-MM-YYYY\" @placeholder=\"Click here to select a date\" />\n              <br />\n              <small>Note: This is the date that will appear next to the line item on the invoice. Importantly, any line items with a date in July will not be invoiced until August,\n                and similarly for other months.</small>\n            </div>\n            <SettifySelect @model={{this.lineItemCategory}} @content={{this.categoriesCollection}} @labelPath=\"name\" @valuePath=\"code\" @label=\"Select category\" @required={{true}} />\n            <SettifySelect\n              @model={{this.lineItemPracticeArea}}\n              @content={{this.practiceAreaCollection}}\n              @labelPath=\"name\"\n              @valuePath=\"code\"\n              @label=\"Select practice area\"\n              @required={{true}}\n            />\n          </p>\n          <p>\n            <button\n              class=\"next-button {{unless this.canCreateNewLineItem 'disabled-button'}}\"\n              type=\"button\"\n              {{action (if this.canCreateNewLineItem \"createLineItem\" \"nullAction\")}}\n            >Create line item</button>\n            <button class=\"next-button dangerous-button\" type=\"button\" {{action \"toggleLineItemCreation\"}}>Cancel</button>\n          </p>\n        </LiquidIf>\n        <p>\n          If you need to edit an existing line item, please create a new line item with the new information, then delete the old line item.\n        </p>\n        <p>\n          <i class=\"fal fa-exclamation tight\" />\n          Please note that\n          <b>licence fees</b>\n          will be automatically deleted or pro-rated if they occur before the \"went live\" date for the relevant practice area. For example, if there are $99 licence fee line items in\n          the system for 1 October and 1 November, and the firm ends up going live on 20 November, then:\n          <ul>\n            <li>\n              The October licence fee will be deleted\n            </li>\n            <li>\n              The November licence fee will be moved to 20 November, and pro-rated (eg a $33 fee on 20 November)\n            </li>\n          </ul>\n        </p>\n      </div>\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"KQAUEdTt\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Future invoice line items\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,5],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.firms\\\",[28,[37,6],null,[[\\\"selectedFirmID\\\"],[[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,\\\"h1\\\"],[12],[1,[28,[35,9],[[30,0,[\\\"model\\\",\\\"firmdetails\\\",\\\"practiceAreas\\\"]],\\\"0.name\\\"],null]],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,\\\"table\\\"],[14,0,\\\"line-items-table\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"th\\\"],[14,\\\"title\\\",\\\"Practice area\\\"],[12],[1,\\\"\\\\n            Practice area\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"th\\\"],[14,\\\"title\\\",\\\"Line item description\\\"],[12],[1,\\\"\\\\n            Description\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"th\\\"],[14,\\\"title\\\",\\\"Line item date\\\"],[12],[1,\\\"\\\\n            Date\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"th\\\"],[14,\\\"title\\\",\\\"Line item total invoice amount\\\"],[12],[1,\\\"\\\\n            Total amount\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"th\\\"],[14,\\\"title\\\",\\\"Line item category\\\"],[12],[1,\\\"\\\\n            Category\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"th\\\"],[14,\\\"title\\\",\\\"Delete line item\\\"],[12],[1,\\\"\\\\n            Action\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,14],[[28,[37,14],[[30,0,[\\\"lineitems\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,16],null,[[\\\"@practiceArea\\\",\\\"@alwaysShow\\\"],[[30,1,[\\\"practiceArea\\\"]],true]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n              \\\"],[1,[30,1,[\\\"description\\\"]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n              \\\"],[1,[28,[35,17],[[30,1,[\\\"displayDate\\\"]]],null]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n              \\\"],[1,[30,1,[\\\"currency\\\"]]],[1,\\\"\\\\n              \\\"],[8,[39,18],null,[[\\\"@model\\\",\\\"@noCurrencySign\\\"],[[30,1,[\\\"invoiceTotalAmountCents\\\"]],true]],null],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n              (\\\"],[8,[39,18],null,[[\\\"@model\\\",\\\"@noCurrencySign\\\"],[[30,1,[\\\"invoiceAmountCents\\\"]],true]],null],[1,\\\"\\\\n              +\\\\n              \\\"],[8,[39,18],null,[[\\\"@model\\\",\\\"@noCurrencySign\\\"],[[30,1,[\\\"invoiceGSTAmountCents\\\"]],true]],null],[1,\\\"\\\\n              tax)\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n              \\\"],[1,[30,1,[\\\"category\\\"]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n              \\\"],[11,1],[24,0,\\\"clickable\\\"],[4,[38,20],[[30,0],\\\"toggleDeleteLineItem\\\",[30,1]],null],[12],[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-trash-alt\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[14,\\\"colspan\\\",\\\"6\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,21],null,[[\\\"@predicate\\\"],[[30,1,[\\\"isDeleting\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,2],[12],[1,\\\"\\\\n                  Are you sure you want to delete this line item?\\\\n                  \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                  \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,20],[[30,0],\\\"deleteLineItem\\\",[30,1]],null],[12],[1,\\\"Yes, remove it\\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                  \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,20],[[30,0],\\\"toggleDeleteLineItem\\\",[30,1]],null],[12],[1,\\\"No, keep it\\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],[[[1,\\\"          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[14,\\\"colspan\\\",\\\"6\\\"],[12],[1,\\\"\\\\n              No unbilled line items found.\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,23],null,[[\\\"@loading\\\",\\\"@success\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,0,[\\\"loading\\\"]],[30,0,[\\\"successMessage\\\"]],[30,0,[\\\"errorMessage\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[1,[30,0,[\\\"successMessage\\\"]]],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[39,21],null,[[\\\"@predicate\\\"],[[28,[37,24],[[30,0,[\\\"isCreating\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,20],[[30,0],\\\"toggleLineItemCreation\\\"],null],[12],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle\\\"],[12],[13],[1,\\\"Add a new line item\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[39,21],null,[[\\\"@predicate\\\"],[[28,[37,25],[[30,0,[\\\"isCreating\\\"]],[28,[37,24],[[30,0,[\\\"loading\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          To create a new line item, fill in the details below.\\\\n          \\\"],[8,[39,26],null,[[\\\"@model\\\",\\\"@nocommas\\\",\\\"@label\\\",\\\"@required\\\"],[[30,0,[\\\"lineItemAmount\\\"]],true,\\\"Amount in cents\\\",true]],null],[1,\\\"\\\\n          \\\"],[8,[39,18],null,[[\\\"@model\\\"],[[30,0,[\\\"lineItemAmount\\\"]]]],null],[1,\\\"\\\\n          \\\"],[8,[39,27],null,[[\\\"@model\\\",\\\"@label\\\",\\\"@required\\\"],[[30,0,[\\\"lineItemDescription\\\"]],\\\"Description\\\",true]],null],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"datepicker-wrapper\\\"],[14,5,\\\"margin-top: 10px;\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,28],null,[[\\\"@date\\\",\\\"@valueFormat\\\",\\\"@format\\\",\\\"@placeholder\\\"],[[30,0,[\\\"lineItemDate\\\"]],\\\"date\\\",\\\"DD-MM-YYYY\\\",\\\"Click here to select a date\\\"]],null],[1,\\\"\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n            \\\"],[10,\\\"small\\\"],[12],[1,\\\"Note: This is the date that will appear next to the line item on the invoice. Importantly, any line items with a date in July will not be invoiced until August,\\\\n              and similarly for other months.\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[8,[39,29],null,[[\\\"@model\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\",\\\"@label\\\",\\\"@required\\\"],[[30,0,[\\\"lineItemCategory\\\"]],[30,0,[\\\"categoriesCollection\\\"]],\\\"name\\\",\\\"code\\\",\\\"Select category\\\",true]],null],[1,\\\"\\\\n          \\\"],[8,[39,29],null,[[\\\"@model\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\",\\\"@label\\\",\\\"@required\\\"],[[30,0,[\\\"lineItemPracticeArea\\\"]],[30,0,[\\\"practiceAreaCollection\\\"]],\\\"name\\\",\\\"code\\\",\\\"Select practice area\\\",true]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[11,\\\"button\\\"],[16,0,[29,[\\\"next-button \\\",[52,[51,[30,0,[\\\"canCreateNewLineItem\\\"]]],\\\"disabled-button\\\"]]]],[24,4,\\\"button\\\"],[4,[38,20],[[30,0],[52,[30,0,[\\\"canCreateNewLineItem\\\"]],\\\"createLineItem\\\",\\\"nullAction\\\"]],null],[12],[1,\\\"Create line item\\\"],[13],[1,\\\"\\\\n          \\\"],[11,\\\"button\\\"],[24,0,\\\"next-button dangerous-button\\\"],[24,4,\\\"button\\\"],[4,[38,20],[[30,0],\\\"toggleLineItemCreation\\\"],null],[12],[1,\\\"Cancel\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        If you need to edit an existing line item, please create a new line item with the new information, then delete the old line item.\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-exclamation tight\\\"],[12],[13],[1,\\\"\\\\n        Please note that\\\\n        \\\"],[10,\\\"b\\\"],[12],[1,\\\"licence fees\\\"],[13],[1,\\\"\\\\n        will be automatically deleted or pro-rated if they occur before the \\\\\\\"went live\\\\\\\" date for the relevant practice area. For example, if there are $99 licence fee line items in\\\\n        the system for 1 October and 1 November, and the firm ends up going live on 20 November, then:\\\\n        \\\"],[10,\\\"ul\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n            The October licence fee will be deleted\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n            The November licence fee will be moved to 20 November, and pro-rated (eg a $33 fee on 20 November)\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"lineitem\\\"],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"hash\\\",\\\"i\\\",\\\"h1\\\",\\\"get\\\",\\\"table\\\",\\\"tr\\\",\\\"th\\\",\\\"each\\\",\\\"-track-array\\\",\\\"td\\\",\\\"practice-area-icon\\\",\\\"pretty-date\\\",\\\"cents-to-dollars\\\",\\\"span\\\",\\\"action\\\",\\\"liquid-if\\\",\\\"a\\\",\\\"loading-display\\\",\\\"not\\\",\\\"and\\\",\\\"settify-number\\\",\\\"settify-textline\\\",\\\"date-picker\\\",\\\"settify-select\\\",\\\"button\\\",\\\"unless\\\",\\\"if\\\",\\\"b\\\",\\\"ul\\\",\\\"li\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/config/lineitems.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/config/links\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Settify links\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn firm-details\">\n        <br />\n        <div>\n          <p><small><LinkTo @route=\"admin.firms\" @query={{hash selectedFirmID=this.firmID}}><i class=\"fal fa-arrow-circle-left\" />Back</LinkTo></small></p>\n        </div>\n        <span class=\"config-header\"><LineIcon @src=\"/assets/images/icons/click.png\" /></span>\n  \n        <p>\n          Use this page to generate links to use on your website, on social media, etc.\n        </p>\n  \n        <BannerLinkGenerator @practiceAreaSelects={{this.practiceAreaSelects}} @firm={{this.firmDetails.globalDetails}} />\n      </div>\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"6jchvWDK\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Settify links\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn firm-details\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,5],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.firms\\\",[28,[37,6],null,[[\\\"selectedFirmID\\\"],[[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"config-header\\\"],[12],[8,[39,9],null,[[\\\"@src\\\"],[\\\"/assets/images/icons/click.png\\\"]],null],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        Use this page to generate links to use on your website, on social media, etc.\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[8,[39,10],null,[[\\\"@practiceAreaSelects\\\",\\\"@firm\\\"],[[30,0,[\\\"practiceAreaSelects\\\"]],[30,0,[\\\"firmDetails\\\",\\\"globalDetails\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"hash\\\",\\\"i\\\",\\\"span\\\",\\\"line-icon\\\",\\\"banner-link-generator\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/config/links.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/config/offices\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Your Offices\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn firm-details\">\n        <br>\n        <div>\n          <p><small><LinkTo @route=\"admin.firms\" @query={{hash selectedFirmID=this.firmID}}><i class=\"fal fa-arrow-circle-left\" />Back</LinkTo></small></p>\n        </div>\n        <LiquidIf @predicate={{this.firmOffices.loading}}>\n          <LoadingSpinner />\n        </LiquidIf>\n  \n        <LiquidIf @predicate={{not this.firmOffices.loading}}>\n          <FreeList @model={{this.firmOffices.offices}} @itemName=\"office\" @defaults={{this.officeDefaults}} as |office|>\n            <div class=\"edit-office-block\">\n              {{#if (address-string office)}}\n                <LineIcon @src=\"/assets/images/icons/office.png\" />\n                <b><AddressSimple @address={{office}} /></b>\n                {{#if office.editingOffice}}\n                  (<a class=\"clickable\" {{action \"editOffice\" office}}>hide details</a>)\n                {{else}}\n                  (<a class=\"clickable\" {{action \"editOffice\" office}}>show details</a>)\n                {{/if}}\n              {{/if}}\n  \n              <LiquidIf @predicate={{office.editingOffice}}>\n                <br />\n                <p>\n                  <b>Address</b>\n                  <PropertyAddress @address={{office}} @hideunknown={{true}} />\n                </p>\n                <p>\n                  <b>Additional Settings</b>\n                  <table class=\"settings\">\n                    <tbody>\n                      <tr>\n                        <td>\n                          Is this the primary office for your firm?\n                        </td>\n                        <td>\n                          <CheckBox @model={{office.primaryOffice}} />\n                        </td>\n                      </tr>\n                      <tr>\n                        <td>\n                          Google Maps URL (or similar)\n                        </td>\n                        <td>\n                          <SettifyTextline @model={{office.mapURL}} @placeholder=\"https://www.google.com.au/maps...\" />\n                        </td>\n                      </tr>\n                      {{!-- <tr>\n                        <td>\n                          stateAbbreviation\n                        </td>\n                        <td>\n                          {{office.stateAbbreviation}}\n                        </td>\n                      </tr> --}}\n                      <tr>\n                        <td>\n                          Phone (if different to\n                          {{this.firm.phone}})\n                        </td>\n                        <td>\n                          <SettifyTextline @model={{office.phone}} @placeholder=\"(03) 9123 4567\" />\n                        </td>\n                      </tr>\n                      <tr>\n                        <td>\n                          Archive / disable this office\n                        </td>\n                        <td>\n                          <CheckBox @model={{office.disabled}} />\n                        </td>\n                      </tr>\n  \n                      {{#if this.firm.otherSettifyURLs}}\n                        <tr>\n                          <td>\n                            Practice areas at this office\n                          </td>\n                          <td>\n                            <LiquidIf @predicate={{office.practiceAreas}}>\n                              <CheckBox @text={{this.firm.practiceArea}} @model={{mut (get office.practiceAreas this.firm.practiceArea)}} />\n                              {{#each-in this.firm.otherSettifyURLs as |key|}}\n                                <CheckBox @text={{key}} @model={{mut (get office.practiceAreas key)}} />\n                              {{/each-in}}\n                              <span class=\"padding\"><a class=\"clickable\" {{action \"allowAllPracticeAreas\" office}}>Allow all practice areas</a></span>\n                            </LiquidIf>\n                            <LiquidIf @predicate={{not office.practiceAreas}}>\n                              <span class=\"padding\">All (<a class=\"clickable\" {{action \"specifyPracticeAreas\" office}}>specify practice areas</a>)</span>\n                            </LiquidIf>\n                          </td>\n                        </tr>\n                      {{/if}}\n                    </tbody>\n                  </table>\n                </p>\n              </LiquidIf>\n            </div>\n          </FreeList>\n  \n          <Admin::SettingsSaveButtons\n            @savingChanges={{this.savingChanges}}\n            @savingChangesSuccess={{this.savingChangesSuccess}}\n            @savingChangesError={{this.savingChangesError}}\n            @saveChangesAction={{action \"saveChanges\"}}\n            @revertChangesAction={{action \"revertChanges\"}}\n          />\n        </LiquidIf>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"f7cnhB45\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Your Offices\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn firm-details\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,5],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.firms\\\",[28,[37,6],null,[[\\\"selectedFirmID\\\"],[[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"firmOffices\\\",\\\"loading\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[39,9],null,null,null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\\n      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,10],[[30,0,[\\\"firmOffices\\\",\\\"loading\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[39,11],null,[[\\\"@model\\\",\\\"@itemName\\\",\\\"@defaults\\\"],[[30,0,[\\\"firmOffices\\\",\\\"offices\\\"]],\\\"office\\\",[30,0,[\\\"officeDefaults\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"edit-office-block\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,13],[[30,1]],null],[[[1,\\\"              \\\"],[8,[39,14],null,[[\\\"@src\\\"],[\\\"/assets/images/icons/office.png\\\"]],null],[1,\\\"\\\\n              \\\"],[10,\\\"b\\\"],[12],[8,[39,16],null,[[\\\"@address\\\"],[[30,1]]],null],[13],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"editingOffice\\\"]],[[[1,\\\"                (\\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,18],[[30,0],\\\"editOffice\\\",[30,1]],null],[12],[1,\\\"hide details\\\"],[13],[1,\\\")\\\\n\\\"]],[]],[[[1,\\\"                (\\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,18],[[30,0],\\\"editOffice\\\",[30,1]],null],[12],[1,\\\"show details\\\"],[13],[1,\\\")\\\\n\\\"]],[]]]],[]],null],[1,\\\"\\\\n            \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,1,[\\\"editingOffice\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[10,2],[12],[1,\\\"\\\\n                \\\"],[10,\\\"b\\\"],[12],[1,\\\"Address\\\"],[13],[1,\\\"\\\\n                \\\"],[8,[39,19],null,[[\\\"@address\\\",\\\"@hideunknown\\\"],[[30,1],true]],null],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,2],[12],[1,\\\"\\\\n                \\\"],[10,\\\"b\\\"],[12],[1,\\\"Additional Settings\\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"table\\\"],[14,0,\\\"settings\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                        Is this the primary office for your firm?\\\\n                      \\\"],[13],[1,\\\"\\\\n                      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                        \\\"],[8,[39,24],null,[[\\\"@model\\\"],[[30,1,[\\\"primaryOffice\\\"]]]],null],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                    \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                        Google Maps URL (or similar)\\\\n                      \\\"],[13],[1,\\\"\\\\n                      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                        \\\"],[8,[39,25],null,[[\\\"@model\\\",\\\"@placeholder\\\"],[[30,1,[\\\"mapURL\\\"]],\\\"https://www.google.com.au/maps...\\\"]],null],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n\\\"],[1,\\\"                    \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                        Phone (if different to\\\\n                        \\\"],[1,[30,0,[\\\"firm\\\",\\\"phone\\\"]]],[1,\\\")\\\\n                      \\\"],[13],[1,\\\"\\\\n                      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                        \\\"],[8,[39,25],null,[[\\\"@model\\\",\\\"@placeholder\\\"],[[30,1,[\\\"phone\\\"]],\\\"(03) 9123 4567\\\"]],null],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                    \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                        Archive / disable this office\\\\n                      \\\"],[13],[1,\\\"\\\\n                      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                        \\\"],[8,[39,24],null,[[\\\"@model\\\"],[[30,1,[\\\"disabled\\\"]]]],null],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"firm\\\",\\\"otherSettifyURLs\\\"]],[[[1,\\\"                      \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                        \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                          Practice areas at this office\\\\n                        \\\"],[13],[1,\\\"\\\\n                        \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,1,[\\\"practiceAreas\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                            \\\"],[8,[39,24],null,[[\\\"@text\\\",\\\"@model\\\"],[[30,0,[\\\"firm\\\",\\\"practiceArea\\\"]],[28,[37,26],[[28,[37,27],[[30,1,[\\\"practiceAreas\\\"]],[30,0,[\\\"firm\\\",\\\"practiceArea\\\"]]],null]],null]]],null],[1,\\\"\\\\n\\\"],[42,[28,[37,29],[[30,0,[\\\"firm\\\",\\\"otherSettifyURLs\\\"]]],null],null,[[[1,\\\"                              \\\"],[8,[39,24],null,[[\\\"@text\\\",\\\"@model\\\"],[[30,3],[28,[37,26],[[28,[37,27],[[30,1,[\\\"practiceAreas\\\"]],[30,3]],null]],null]]],null],[1,\\\"\\\\n\\\"]],[2,3]],null],[1,\\\"                            \\\"],[10,1],[14,0,\\\"padding\\\"],[12],[11,3],[24,0,\\\"clickable\\\"],[4,[38,18],[[30,0],\\\"allowAllPracticeAreas\\\",[30,1]],null],[12],[1,\\\"Allow all practice areas\\\"],[13],[13],[1,\\\"\\\\n                          \\\"]],[]]]]],[1,\\\"\\\\n                          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,10],[[30,1,[\\\"practiceAreas\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                            \\\"],[10,1],[14,0,\\\"padding\\\"],[12],[1,\\\"All (\\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,18],[[30,0],\\\"specifyPracticeAreas\\\",[30,1]],null],[12],[1,\\\"specify practice areas\\\"],[13],[1,\\\")\\\"],[13],[1,\\\"\\\\n                          \\\"]],[]]]]],[1,\\\"\\\\n                        \\\"],[13],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[1]]]]],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,31],null,[[\\\"@savingChanges\\\",\\\"@savingChangesSuccess\\\",\\\"@savingChangesError\\\",\\\"@saveChangesAction\\\",\\\"@revertChangesAction\\\"],[[30,0,[\\\"savingChanges\\\"]],[30,0,[\\\"savingChangesSuccess\\\"]],[30,0,[\\\"savingChangesError\\\"]],[28,[37,18],[[30,0],\\\"saveChanges\\\"],null],[28,[37,18],[[30,0],\\\"revertChanges\\\"],null]]],null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,32],null,null,null]],[\\\"office\\\",\\\"( unused value )\\\",\\\"key\\\"],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"hash\\\",\\\"i\\\",\\\"liquid-if\\\",\\\"loading-spinner\\\",\\\"not\\\",\\\"free-list\\\",\\\"if\\\",\\\"address-string\\\",\\\"line-icon\\\",\\\"b\\\",\\\"address-simple\\\",\\\"a\\\",\\\"action\\\",\\\"property-address\\\",\\\"table\\\",\\\"tbody\\\",\\\"tr\\\",\\\"td\\\",\\\"check-box\\\",\\\"settify-textline\\\",\\\"mut\\\",\\\"get\\\",\\\"each\\\",\\\"-each-in\\\",\\\"span\\\",\\\"admin/settings-save-buttons\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/config/offices.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/config/practiceclient\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Practice Clients\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <div>\n          <p><small><LinkTo @route=\"admin.firms\" @query={{hash selectedFirmID=this.firmID}}><i class=\"fal fa-arrow-circle-left\" />Back</LinkTo></small></p>\n        </div>\n  \n        <p>\n          I would like to send a:\n          <HelpToggle>\n            A firm will be notified about a practice client, a training client will silently appear in their lead list.\n          </HelpToggle>\n          <div style=\"margin-top: 0.25em;\">\n            <RadioButtons @text=\"Practice client\" @value=\"practice\" @model={{this.clientType}} />\n            <RadioButtons @text=\"Training client\" @value=\"training\" @model={{this.clientType}} />\n          </div>\n        </p>\n  \n        <p>\n          In the practice area:\n          <SettifySelect @model={{this.practiceArea}} @name=\"Practice Area\" @content={{this.practiceAreas}} @labelPath=\"label\" @valuePath=\"value\" />\n        </p>\n        <LiquidIf @predicate={{and this.clientType this.practiceArea}}>\n          <p style=\"margin-top: 5px\">Please enter <span class=\"highlight-text\">{{this.placeholderText}}</span> in the textbox below to confirm</p>\n          <SettifyTextline @placeholder={{this.placeholderText}} @model={{this.confirmationText}} />\n        </LiquidIf>\n        <p>\n          <button\n            type=\"submit\"\n            class=\"next-button hvr-float-shadow hvr-grow {{unless this.canSubmit 'disabled-button'}}\"\n            style=\"float:none;\"\n            {{action (if this.canSubmit \"sendClient\" \"nullAction\")}}\n          >Send</button>\n        </p>\n  \n        <LoadingDisplay @loading={{this.loading}} @success={{this.success}} @error={{this.errorMessage}} @showError={{true}}>\n          A\n          {{this.clientType}}\n          client was successfully sent\n        </LoadingDisplay>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"zicjFGFF\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Practice Clients\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,4],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.firms\\\",[28,[37,5],null,[[\\\"selectedFirmID\\\"],[[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        I would like to send a:\\\\n        \\\"],[8,[39,7],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n          A firm will be notified about a practice client, a training client will silently appear in their lead list.\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[10,0],[14,5,\\\"margin-top: 0.25em;\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,8],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\"],[\\\"Practice client\\\",\\\"practice\\\",[30,0,[\\\"clientType\\\"]]]],null],[1,\\\"\\\\n          \\\"],[8,[39,8],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\"],[\\\"Training client\\\",\\\"training\\\",[30,0,[\\\"clientType\\\"]]]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        In the practice area:\\\\n        \\\"],[8,[39,9],null,[[\\\"@model\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[[30,0,[\\\"practiceArea\\\"]],\\\"Practice Area\\\",[30,0,[\\\"practiceAreas\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[28,[37,11],[[30,0,[\\\"clientType\\\"]],[30,0,[\\\"practiceArea\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,2],[14,5,\\\"margin-top: 5px\\\"],[12],[1,\\\"Please enter \\\"],[10,1],[14,0,\\\"highlight-text\\\"],[12],[1,[30,0,[\\\"placeholderText\\\"]]],[13],[1,\\\" in the textbox below to confirm\\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,13],null,[[\\\"@placeholder\\\",\\\"@model\\\"],[[30,0,[\\\"placeholderText\\\"]],[30,0,[\\\"confirmationText\\\"]]]],null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        \\\"],[11,\\\"button\\\"],[16,0,[29,[\\\"next-button hvr-float-shadow hvr-grow \\\",[52,[51,[30,0,[\\\"canSubmit\\\"]]],\\\"disabled-button\\\"]]]],[24,5,\\\"float:none;\\\"],[24,4,\\\"submit\\\"],[4,[38,16],[[30,0],[52,[30,0,[\\\"canSubmit\\\"]],\\\"sendClient\\\",\\\"nullAction\\\"]],null],[12],[1,\\\"Send\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[8,[39,18],null,[[\\\"@loading\\\",\\\"@success\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,0,[\\\"loading\\\"]],[30,0,[\\\"success\\\"]],[30,0,[\\\"errorMessage\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        A\\\\n        \\\"],[1,[30,0,[\\\"clientType\\\"]]],[1,\\\"\\\\n        client was successfully sent\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,19],null,null,null]],[],false,[\\\"animated-header\\\",\\\"div\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"hash\\\",\\\"i\\\",\\\"help-toggle\\\",\\\"radio-buttons\\\",\\\"settify-select\\\",\\\"liquid-if\\\",\\\"and\\\",\\\"span\\\",\\\"settify-textline\\\",\\\"button\\\",\\\"unless\\\",\\\"action\\\",\\\"if\\\",\\\"loading-display\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/config/practiceclient.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/config/skinning\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Settify Skinning\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn firm-details\">\n        <br />\n        <div>\n          <p><small><LinkTo @route=\"admin.firms\" @query={{hash selectedFirmID=this.firmID}}><i class=\"fal fa-arrow-circle-left\" />Back</LinkTo></small></p>\n        </div>\n  \n        <div class=\"flex-top\">\n          <h2>{{this.firmSettings.settings.name}} skinning</h2>\n          {{#if this.firmSettings.settings.settings.admin.allowThemeCustomisation}}\n            <div style=\"position: relative;\">\n              <button type=\"submit\" class=\"next-button\" style=\"min-width: 135px;\" {{action \"saveStyles\"}}>\n                Save changes\n              </button>\n              <div style=\"position: absolute; left: 1em;\">\n                <LoadingDisplay @success={{this.savingSuccesful}} @error={{this.savingFailed}} @showError={{true}}>\n                  Saved\n                </LoadingDisplay>\n              </div>\n            </div>\n          {{/if}}\n        </div>\n  \n        {{#if this.firmSettings.settings.settings.admin.allowThemeCustomisation}}\n          <section style=\"margin-bottom: 2rem;\">\n            <h3>Firm colours</h3>\n            <p style=\"font-size: smaller; color: gray\">\n              Colour and font settings currently only work in the Next Gen system. For customisations of a legacy system, please create a Gitlab issue with the required changes.\n            </p>\n            <div style=\"width: fit-content;\">\n              {{#each this.editableColors as |color|}}\n                <div class=\"color-picker-box py-2\">\n                  <span>{{color.displayName}}:</span>\n                  <div class=\"color-picker\">\n                    <V2::Textline @value={{mut color.value}} name={{color.name}} class=\"p-0\" />\n                    <Input @type=\"color\" @value={{mut color.value}} class=\"color-select\" />\n                  </div>\n                </div>\n              {{/each}}\n            </div>\n          </section>\n  \n          <section>\n            <h3>Firm fonts</h3>\n            {{#each this.editableFonts as |font|}}\n              <span>{{font.displayName}}:</span>\n              {{#if (eq font.origin \"google\")}}\n                <p class=\"font-picker-box\">\n                  Font name:\n                  <div class=\"font-picker\">\n                    <SettifyTextline @value={{font.fontFamily}} @model={{mut font.fontFamily}} @class=\"font-select\" />\n                  </div>\n                </p>\n              {{/if}}\n              {{! TODO: Look into having custom fonts set and the theme updated }}\n              {{!--\n              {{#if (eq font.origin 'custom')}}\n                {{resource-upload\n                  firmID=firmID\n                  uploadType=\"font\"\n                  maxKB=font.maxKB\n                  uploadName=font.displayName\n                  accept=font.accept\n                  forceName=font.key\n                }}\n              {{/if}}\n              --}}\n            {{/each}}\n          </section>\n        {{else}}\n          <h3>Firm colours and fonts</h3>\n          <p>\n            Colours and fonts need to be customised by a developer. Please create a Gitlab issue with the required changes.\n          </p>\n        {{/if}}\n  \n        <section class=\"mb-5\">\n          {{#each this.landingImagesArray as |image|}}\n            <ResourceUpload\n              @firmID={{this.firmID}}\n              @size={{image.size}}\n              @referral={{image.referral}}\n              @uploadType={{image.uploadType}}\n              @maxKB={{image.maxKB}}\n              @uploadName={{image.uploadName}}\n              @accept={{image.accept}}\n              @adminMode={{image.adminMode}}\n              @forceName={{image.forceName}}\n              @forceConfirm={{image.forceConfirm}}\n              @showImagePreview={{image.showImagePreview}}\n              @callbackAction={{image.callbackAction}}\n              @practiceAreaSpecific={{image.practiceAreaSpecific}}\n              @practiceAreas={{this.landingTemplatesPracticeAreas}}\n            />\n          {{/each}}\n        </section>\n  \n        <section>\n          <h3>Firm images</h3>\n          {{#each this.assetsArray as |asset|}}\n            <ResourceUpload\n              @firmID={{this.firmID}}\n              @size={{asset.size}}\n              @referral={{asset.referral}}\n              @uploadType={{asset.uploadType}}\n              @maxKB={{asset.maxKB}}\n              @uploadName={{asset.uploadName}}\n              @accept={{asset.accept}}\n              @adminMode={{asset.adminMode}}\n              @forceName={{asset.forceName}}\n              @forceConfirm={{asset.forceConfirm}}\n              @showImagePreview={{asset.showImagePreview}}\n              @callbackAction={{asset.callbackAction}}\n              @practiceAreaSpecific={{asset.practiceAreaSpecific}}\n              @practiceAreas={{this.practiceAreas}}\n            />\n          {{/each}}\n        </section>\n  \n        <section>\n          <h3>Optional images</h3>\n          {{#each this.optionalAssetsArray as |asset|}}\n            <ResourceUpload\n              @firmID={{this.firmID}}\n              @size={{asset.size}}\n              @referral={{asset.referral}}\n              @uploadType={{asset.uploadType}}\n              @maxKB={{asset.maxKB}}\n              @uploadName={{asset.uploadName}}\n              @accept={{asset.accept}}\n              @adminMode={{asset.adminMode}}\n              @forceName={{asset.forceName}}\n              @forceConfirm={{asset.forceConfirm}}\n              @showImagePreview={{asset.showImagePreview}}\n              @callbackAction={{asset.callbackAction}}\n              @practiceAreaSpecific={{asset.practiceAreaSpecific}}\n              @practiceAreas={{this.practiceAreas}}\n            />\n          {{/each}}\n        </section>\n      </div>\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"CaOtHoEi\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Settify Skinning\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn firm-details\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,5],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.firms\\\",[28,[37,6],null,[[\\\"selectedFirmID\\\"],[[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,0],[14,0,\\\"flex-top\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"h2\\\"],[12],[1,[30,0,[\\\"firmSettings\\\",\\\"settings\\\",\\\"name\\\"]]],[1,\\\" skinning\\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"firmSettings\\\",\\\"settings\\\",\\\"settings\\\",\\\"admin\\\",\\\"allowThemeCustomisation\\\"]],[[[1,\\\"          \\\"],[10,0],[14,5,\\\"position: relative;\\\"],[12],[1,\\\"\\\\n            \\\"],[11,\\\"button\\\"],[24,0,\\\"next-button\\\"],[24,5,\\\"min-width: 135px;\\\"],[24,4,\\\"submit\\\"],[4,[38,11],[[30,0],\\\"saveStyles\\\"],null],[12],[1,\\\"\\\\n              Save changes\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,0],[14,5,\\\"position: absolute; left: 1em;\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,12],null,[[\\\"@success\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,0,[\\\"savingSuccesful\\\"]],[30,0,[\\\"savingFailed\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                Saved\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"firmSettings\\\",\\\"settings\\\",\\\"settings\\\",\\\"admin\\\",\\\"allowThemeCustomisation\\\"]],[[[1,\\\"        \\\"],[10,\\\"section\\\"],[14,5,\\\"margin-bottom: 2rem;\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"h3\\\"],[12],[1,\\\"Firm colours\\\"],[13],[1,\\\"\\\\n          \\\"],[10,2],[14,5,\\\"font-size: smaller; color: gray\\\"],[12],[1,\\\"\\\\n            Colour and font settings currently only work in the Next Gen system. For customisations of a legacy system, please create a Gitlab issue with the required changes.\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,5,\\\"width: fit-content;\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,16],[[28,[37,16],[[30,0,[\\\"editableColors\\\"]]],null]],null],null,[[[1,\\\"              \\\"],[10,0],[14,0,\\\"color-picker-box py-2\\\"],[12],[1,\\\"\\\\n                \\\"],[10,1],[12],[1,[30,1,[\\\"displayName\\\"]]],[1,\\\":\\\"],[13],[1,\\\"\\\\n                \\\"],[10,0],[14,0,\\\"color-picker\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,18],[[16,3,[30,1,[\\\"name\\\"]]],[24,0,\\\"p-0\\\"]],[[\\\"@value\\\"],[[28,[37,19],[[30,1,[\\\"value\\\"]]],null]]],null],[1,\\\"\\\\n                  \\\"],[8,[39,20],[[24,0,\\\"color-select\\\"]],[[\\\"@type\\\",\\\"@value\\\"],[\\\"color\\\",[28,[37,19],[[30,1,[\\\"value\\\"]]],null]]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[10,\\\"section\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"h3\\\"],[12],[1,\\\"Firm fonts\\\"],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,16],[[28,[37,16],[[30,0,[\\\"editableFonts\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[10,1],[12],[1,[30,2,[\\\"displayName\\\"]]],[1,\\\":\\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,21],[[30,2,[\\\"origin\\\"]],\\\"google\\\"],null],[[[1,\\\"              \\\"],[10,2],[14,0,\\\"font-picker-box\\\"],[12],[1,\\\"\\\\n                Font name:\\\\n                \\\"],[10,0],[14,0,\\\"font-picker\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,22],null,[[\\\"@value\\\",\\\"@model\\\",\\\"@class\\\"],[[30,2,[\\\"fontFamily\\\"]],[28,[37,19],[[30,2,[\\\"fontFamily\\\"]]],null],\\\"font-select\\\"]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[2]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,\\\"h3\\\"],[12],[1,\\\"Firm colours and fonts\\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          Colours and fonts need to be customised by a developer. Please create a Gitlab issue with the required changes.\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n      \\\"],[10,\\\"section\\\"],[14,0,\\\"mb-5\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,16],[[28,[37,16],[[30,0,[\\\"landingImagesArray\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[8,[39,23],null,[[\\\"@firmID\\\",\\\"@size\\\",\\\"@referral\\\",\\\"@uploadType\\\",\\\"@maxKB\\\",\\\"@uploadName\\\",\\\"@accept\\\",\\\"@adminMode\\\",\\\"@forceName\\\",\\\"@forceConfirm\\\",\\\"@showImagePreview\\\",\\\"@callbackAction\\\",\\\"@practiceAreaSpecific\\\",\\\"@practiceAreas\\\"],[[30,0,[\\\"firmID\\\"]],[30,3,[\\\"size\\\"]],[30,3,[\\\"referral\\\"]],[30,3,[\\\"uploadType\\\"]],[30,3,[\\\"maxKB\\\"]],[30,3,[\\\"uploadName\\\"]],[30,3,[\\\"accept\\\"]],[30,3,[\\\"adminMode\\\"]],[30,3,[\\\"forceName\\\"]],[30,3,[\\\"forceConfirm\\\"]],[30,3,[\\\"showImagePreview\\\"]],[30,3,[\\\"callbackAction\\\"]],[30,3,[\\\"practiceAreaSpecific\\\"]],[30,0,[\\\"landingTemplatesPracticeAreas\\\"]]]],null],[1,\\\"\\\\n\\\"]],[3]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,\\\"section\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"h3\\\"],[12],[1,\\\"Firm images\\\"],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,16],[[28,[37,16],[[30,0,[\\\"assetsArray\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[8,[39,23],null,[[\\\"@firmID\\\",\\\"@size\\\",\\\"@referral\\\",\\\"@uploadType\\\",\\\"@maxKB\\\",\\\"@uploadName\\\",\\\"@accept\\\",\\\"@adminMode\\\",\\\"@forceName\\\",\\\"@forceConfirm\\\",\\\"@showImagePreview\\\",\\\"@callbackAction\\\",\\\"@practiceAreaSpecific\\\",\\\"@practiceAreas\\\"],[[30,0,[\\\"firmID\\\"]],[30,4,[\\\"size\\\"]],[30,4,[\\\"referral\\\"]],[30,4,[\\\"uploadType\\\"]],[30,4,[\\\"maxKB\\\"]],[30,4,[\\\"uploadName\\\"]],[30,4,[\\\"accept\\\"]],[30,4,[\\\"adminMode\\\"]],[30,4,[\\\"forceName\\\"]],[30,4,[\\\"forceConfirm\\\"]],[30,4,[\\\"showImagePreview\\\"]],[30,4,[\\\"callbackAction\\\"]],[30,4,[\\\"practiceAreaSpecific\\\"]],[30,0,[\\\"practiceAreas\\\"]]]],null],[1,\\\"\\\\n\\\"]],[4]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,\\\"section\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"h3\\\"],[12],[1,\\\"Optional images\\\"],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,16],[[28,[37,16],[[30,0,[\\\"optionalAssetsArray\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[8,[39,23],null,[[\\\"@firmID\\\",\\\"@size\\\",\\\"@referral\\\",\\\"@uploadType\\\",\\\"@maxKB\\\",\\\"@uploadName\\\",\\\"@accept\\\",\\\"@adminMode\\\",\\\"@forceName\\\",\\\"@forceConfirm\\\",\\\"@showImagePreview\\\",\\\"@callbackAction\\\",\\\"@practiceAreaSpecific\\\",\\\"@practiceAreas\\\"],[[30,0,[\\\"firmID\\\"]],[30,5,[\\\"size\\\"]],[30,5,[\\\"referral\\\"]],[30,5,[\\\"uploadType\\\"]],[30,5,[\\\"maxKB\\\"]],[30,5,[\\\"uploadName\\\"]],[30,5,[\\\"accept\\\"]],[30,5,[\\\"adminMode\\\"]],[30,5,[\\\"forceName\\\"]],[30,5,[\\\"forceConfirm\\\"]],[30,5,[\\\"showImagePreview\\\"]],[30,5,[\\\"callbackAction\\\"]],[30,5,[\\\"practiceAreaSpecific\\\"]],[30,0,[\\\"practiceAreas\\\"]]]],null],[1,\\\"\\\\n\\\"]],[5]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"color\\\",\\\"font\\\",\\\"image\\\",\\\"asset\\\",\\\"asset\\\"],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"hash\\\",\\\"i\\\",\\\"h2\\\",\\\"if\\\",\\\"button\\\",\\\"action\\\",\\\"loading-display\\\",\\\"section\\\",\\\"h3\\\",\\\"each\\\",\\\"-track-array\\\",\\\"span\\\",\\\"v2/textline\\\",\\\"mut\\\",\\\"input\\\",\\\"eq\\\",\\\"settify-textline\\\",\\\"resource-upload\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/config/skinning.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/config/team\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Your Team\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <br>\n        <div>\n          <p><small><LinkTo @route=\"admin.firms\" @query={{hash selectedFirmID=this.firmID}}><i class=\"fal fa-arrow-circle-left\" />Back</LinkTo></small></p>\n        </div>\n        <LiquidIf @predicate={{not this.model}}>\n          <LoadingSpinner />\n        </LiquidIf>\n  \n        <LiquidIf @predicate={{this.model}}>\n          <h2>Lawyers</h2>\n          <table class=\"team-list\">\n            <tbody>\n              {{#each this.model.staffList as |person|}}\n                {{#if (eq person.personType \"lawyer\")}}\n                  <ConfigPersonBlock @person={{person}} @staffList={{this.model.staffList}} @firmID={{this.firmID}} />\n                {{/if}}\n              {{/each}}\n            </tbody>\n          </table>\n          <LinkTo @route=\"admin.config.editteam\" @model=\"createlawyer\" @query={{hash firmID=this.firmID}}>\n            <i class=\"fal fa-plus-circle\" />Add another lawyer\n          </LinkTo>\n  \n          <h2>Assistants and Administrative Support</h2>\n          <table class=\"team-list\">\n            <tbody>\n              {{#each this.model.staffList as |person|}}\n                {{#if (eq person.personType \"pa\")}}\n                  <ConfigPersonBlock @person={{person}} @staffList={{this.model.staffList}} @firmID={{this.firmID}} />\n                {{/if}}\n              {{/each}}\n            </tbody>\n          </table>\n  \n          <LinkTo @route=\"admin.config.editteam\" @model=\"createpa\" @query={{hash firmID=this.firmID}}>\n            <i class=\"fal fa-plus-circle\" />Add another assistant or administrative support person\n          </LinkTo>\n  \n          <h2>Other people with Settify access</h2>\n          <table class=\"team-list\">\n            <tbody>\n              {{#each this.model.staffList as |person|}}\n                {{#if (eq person.personType \"other\")}}\n                  <ConfigPersonBlock @person={{person}} @staffList={{this.model.staffList}} @hideActions={{true}} @deleteUser={{true}} @firmID={{this.firmID}} />\n                {{/if}}\n              {{/each}}\n            </tbody>\n          </table>\n  \n          <a class=\"clickable\" {{action \"addOther\"}}><i class=\"fal fa-plus-circle\" />Add another person with Settify access</a>\n        </LiquidIf>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"9oUktYNU\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Your Team\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,5],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.firms\\\",[28,[37,6],null,[[\\\"selectedFirmID\\\"],[[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,9],[[30,0,[\\\"model\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[39,10],null,null,null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\\n      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"model\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,\\\"h2\\\"],[12],[1,\\\"Lawyers\\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"table\\\"],[14,0,\\\"team-list\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,15],[[28,[37,15],[[30,0,[\\\"model\\\",\\\"staffList\\\"]]],null]],null],null,[[[41,[28,[37,17],[[30,1,[\\\"personType\\\"]],\\\"lawyer\\\"],null],[[[1,\\\"                \\\"],[8,[39,18],null,[[\\\"@person\\\",\\\"@staffList\\\",\\\"@firmID\\\"],[[30,1],[30,0,[\\\"model\\\",\\\"staffList\\\"]],[30,0,[\\\"firmID\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[1]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,5],null,[[\\\"@route\\\",\\\"@model\\\",\\\"@query\\\"],[\\\"admin.config.editteam\\\",\\\"createlawyer\\\",[28,[37,6],null,[[\\\"firmID\\\"],[[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle\\\"],[12],[13],[1,\\\"Add another lawyer\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\\n        \\\"],[10,\\\"h2\\\"],[12],[1,\\\"Assistants and Administrative Support\\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"table\\\"],[14,0,\\\"team-list\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,15],[[28,[37,15],[[30,0,[\\\"model\\\",\\\"staffList\\\"]]],null]],null],null,[[[41,[28,[37,17],[[30,2,[\\\"personType\\\"]],\\\"pa\\\"],null],[[[1,\\\"                \\\"],[8,[39,18],null,[[\\\"@person\\\",\\\"@staffList\\\",\\\"@firmID\\\"],[[30,2],[30,0,[\\\"model\\\",\\\"staffList\\\"]],[30,0,[\\\"firmID\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[2]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,5],null,[[\\\"@route\\\",\\\"@model\\\",\\\"@query\\\"],[\\\"admin.config.editteam\\\",\\\"createpa\\\",[28,[37,6],null,[[\\\"firmID\\\"],[[30,0,[\\\"firmID\\\"]]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle\\\"],[12],[13],[1,\\\"Add another assistant or administrative support person\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\\n        \\\"],[10,\\\"h2\\\"],[12],[1,\\\"Other people with Settify access\\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"table\\\"],[14,0,\\\"team-list\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,15],[[28,[37,15],[[30,0,[\\\"model\\\",\\\"staffList\\\"]]],null]],null],null,[[[41,[28,[37,17],[[30,3,[\\\"personType\\\"]],\\\"other\\\"],null],[[[1,\\\"                \\\"],[8,[39,18],null,[[\\\"@person\\\",\\\"@staffList\\\",\\\"@hideActions\\\",\\\"@deleteUser\\\",\\\"@firmID\\\"],[[30,3],[30,0,[\\\"model\\\",\\\"staffList\\\"]],true,true,[30,0,[\\\"firmID\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[3]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,20],[[30,0],\\\"addOther\\\"],null],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle\\\"],[12],[13],[1,\\\"Add another person with Settify access\\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,21],null,null,null]],[\\\"person\\\",\\\"person\\\",\\\"person\\\"],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"hash\\\",\\\"i\\\",\\\"liquid-if\\\",\\\"not\\\",\\\"loading-spinner\\\",\\\"h2\\\",\\\"table\\\",\\\"tbody\\\",\\\"each\\\",\\\"-track-array\\\",\\\"if\\\",\\\"eq\\\",\\\"config-person-block\\\",\\\"a\\\",\\\"action\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/config/team.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/displayemailtemplate\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Email Templates\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <div>\n          <p><small><LinkTo @route=\"index\"><i class=\"fal fa-home-lg-alt\" />Home</LinkTo></small></p>\n        </div>\n        <br />\n        <p>\n          <b>Select an email template:</b>\n          <SettifySelect\n            @prompt=\"Select an email category\"\n            @model={{this.selectedEmailCategory}}\n            @name=\"emailCategorySelect\"\n            @content={{this.emailCategorySelectOptions}}\n            @labelPath=\"label\"\n            @valuePath=\"value\"\n          />\n          {{#if this.selectedEmailCategory}}\n            <SettifySelect\n              @prompt=\"Select a template to view\"\n              @model={{this.selectedEmailTemplate}}\n              @name=\"emailTemplateSelect\"\n              @content={{this.emailTemplateSelectOptions}}\n              @labelPath=\"label\"\n              @valuePath=\"value\"\n            />\n          {{/if}}\n        </p>\n        <p>\n          {{#each this.templateVariations as |variation|}}\n            <SettifyTextline @label={{variation}} @model={{this.templateData.daysSinceRequest}} />\n          {{/each}}\n        </p>\n        <div>\n          {{#if this.selectedEmailTemplate}}\n            <CheckBox @text=\"Add Settify Wrapper\" @model={{this.addSettifyWrapper}} />\n            <LiquidIf @predicate={{this.addSettifyWrapper}}>\n              <div class=\"display-flex\">\n                <CheckBox @text=\"Minimal Formatting\" @model={{this.minimalFormatting}} />\n                <i class=\"clickable fal subdued-fal fa-question-circle text-18\" {{action \"toggleHelpInfo\"}}></i>\n              </div>\n              <LiquidIf @predicate={{this.helpInfo}}>\n                <p class=\"text-18\">This is a condensed version of the Settify email wrapper</p>\n              </LiquidIf>\n            </LiquidIf>\n          {{/if}}\n        </div>\n        <p class=\"rightalign\">\n          <button class=\"next-button hvr-float-shadow hvr-grow clickable\" type=\"button\" {{action \"getEmailTemplateFromS3\"}}>Display Template</button>\n        </p>\n        <p>\n          <LiquidIf @predicate={{this.loading}}>\n            <LoadingSpinner />\n          </LiquidIf>\n          {{#if this.success}}\n            <div class=\"preview-email\">\n              {{#if this.emailTemplateDataSubject}}\n                <p>\n                  <b>Subject:</b>\n                  {{html-safe this.emailTemplateDataSubject}}\n                </p>\n              {{/if}}\n              <div id=\"preview-email-body\">\n                <p>\n                  {{html-safe this.emailTemplateDataBody}}\n                </p>\n              </div>\n            </div>\n          {{/if}}\n        </p>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"lkGxwekn\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Email Templates\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,4],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-home-lg-alt\\\"],[12],[13],[1,\\\"Home\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        \\\"],[10,\\\"b\\\"],[12],[1,\\\"Select an email template:\\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,8],null,[[\\\"@prompt\\\",\\\"@model\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"Select an email category\\\",[30,0,[\\\"selectedEmailCategory\\\"]],\\\"emailCategorySelect\\\",[30,0,[\\\"emailCategorySelectOptions\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"selectedEmailCategory\\\"]],[[[1,\\\"          \\\"],[8,[39,8],null,[[\\\"@prompt\\\",\\\"@model\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"Select a template to view\\\",[30,0,[\\\"selectedEmailTemplate\\\"]],\\\"emailTemplateSelect\\\",[30,0,[\\\"emailTemplateSelectOptions\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"templateVariations\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[8,[39,12],null,[[\\\"@label\\\",\\\"@model\\\"],[[30,1],[30,0,[\\\"templateData\\\",\\\"daysSinceRequest\\\"]]]],null],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"selectedEmailTemplate\\\"]],[[[1,\\\"          \\\"],[8,[39,13],null,[[\\\"@text\\\",\\\"@model\\\"],[\\\"Add Settify Wrapper\\\",[30,0,[\\\"addSettifyWrapper\\\"]]]],null],[1,\\\"\\\\n          \\\"],[8,[39,14],null,[[\\\"@predicate\\\"],[[30,0,[\\\"addSettifyWrapper\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"display-flex\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,13],null,[[\\\"@text\\\",\\\"@model\\\"],[\\\"Minimal Formatting\\\",[30,0,[\\\"minimalFormatting\\\"]]]],null],[1,\\\"\\\\n              \\\"],[11,\\\"i\\\"],[24,0,\\\"clickable fal subdued-fal fa-question-circle text-18\\\"],[4,[38,15],[[30,0],\\\"toggleHelpInfo\\\"],null],[12],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[8,[39,14],null,[[\\\"@predicate\\\"],[[30,0,[\\\"helpInfo\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,2],[14,0,\\\"text-18\\\"],[12],[1,\\\"This is a condensed version of the Settify email wrapper\\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,2],[14,0,\\\"rightalign\\\"],[12],[1,\\\"\\\\n        \\\"],[11,\\\"button\\\"],[24,0,\\\"next-button hvr-float-shadow hvr-grow clickable\\\"],[24,4,\\\"button\\\"],[4,[38,15],[[30,0],\\\"getEmailTemplateFromS3\\\"],null],[12],[1,\\\"Display Template\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        \\\"],[8,[39,14],null,[[\\\"@predicate\\\"],[[30,0,[\\\"loading\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[39,17],null,null,null],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"success\\\"]],[[[1,\\\"          \\\"],[10,0],[14,0,\\\"preview-email\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"emailTemplateDataSubject\\\"]],[[[1,\\\"              \\\"],[10,2],[12],[1,\\\"\\\\n                \\\"],[10,\\\"b\\\"],[12],[1,\\\"Subject:\\\"],[13],[1,\\\"\\\\n                \\\"],[1,[28,[35,18],[[30,0,[\\\"emailTemplateDataSubject\\\"]]],null]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[10,0],[14,1,\\\"preview-email-body\\\"],[12],[1,\\\"\\\\n              \\\"],[10,2],[12],[1,\\\"\\\\n                \\\"],[1,[28,[35,18],[[30,0,[\\\"emailTemplateDataBody\\\"]]],null]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,19],null,null,null]],[\\\"variation\\\"],false,[\\\"animated-header\\\",\\\"div\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"i\\\",\\\"br\\\",\\\"b\\\",\\\"settify-select\\\",\\\"if\\\",\\\"each\\\",\\\"-track-array\\\",\\\"settify-textline\\\",\\\"check-box\\\",\\\"liquid-if\\\",\\\"action\\\",\\\"button\\\",\\\"loading-spinner\\\",\\\"html-safe\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/displayemailtemplate.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/files/download\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Download Files\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <br>\n        <div>\n          <p><small><LinkTo @route=\"index\"><i class=\"glyphicon glyphicon-home\" />Home</LinkTo></small></p>\n        </div>\n        <div class=\"admin-file-download\">\n          <h2>\n            {{this.model.metadata.clientName}}\n            sent you\n            {{if this.model.files.length this.model.files.length}}\n            {{if (eq this.model.files.length 1) \"file\" \"files\"}}\n            via Settify\n          </h2>\n          <p>\n            {{if (eq this.model.files.length 1) \"It was\" \"They were\"}}\n            sent on\n            {{pretty-date this.model.metadata.sendDate}}, and for security reasons\n            {{#if this.model.metadata.expired}}\n              expired\n            {{else}}\n              will expire\n            {{/if}}\n            three weeks later.\n            {{#unless this.model.metadata.expired}}\n              <b>Please make sure you download and save to your matter before {{pretty-date this.model.metadata.expiryDate}}.</b>\n            {{/unless}}\n          </p>\n          {{#if this.model.metadata.expired}}\n            <p>\n              <b>\n                For security reasons, these files expired on\n                {{pretty-date this.model.metadata.expiryDate}}\n                and are no longer available for download.\n              </b>\n            </p>\n          {{else}}\n            {{#if this.model.zipfile}}\n              <p>\n                <b>\n                  <a class=\"clickable\" {{action \"downloadFile\" this.model.zipfile}}><img src=\"/assets/images/fileicons/zip.png\" alt=\"\" /> Click here to download them all</a>\n                </b>\n                ({{format-number (mul this.model.zipfile.size 0.0009765625)}}\n                kB)\n              </p>\n            {{/if}}\n  \n            <LiquidIf @predicate={{and this.showUnsubscribeLink (not this.model.metadata.unsubscribed)}}>\n              <p>\n                We know documents are important, and we take security seriously.\n                {{if (eq this.model.files.length 1) \"This document\" \"These documents\"}}\n                will expire on\n                {{pretty-date this.model.metadata.expiryDate}}, after which date you won't be able to download them again.\n              </p>\n              <p>\n                Naturally, we'll send you email reminders as this date approaches. To\n                <b>turn off</b>\n                these reminders, and confirm that you have downloaded\n                {{if (eq this.model.files.length 1) \"this document\" \"these documents\"}}\n                and saved\n                {{if (eq this.model.files.length 1) \"it\" \"them\"}}\n                to the matter,\n                <a class=\"clickable\" {{action \"unsubscribe\"}}>click here</a>.\n              </p>\n              <LoadingDisplay @loading={{this.unsubscribeLoading}} @success={{this.unsubscribeSuccess}} @error={{this.unsubscribeError}} @showError={{false}}>\n                We won't send any more emails about these documents. You can still download them until\n                {{pretty-date this.model.metadata.expiryDate}}.\n              </LoadingDisplay>\n            </LiquidIf>\n            <p>\n              {{#if this.model.zipfile}}\n                Or download files individually below:\n              {{/if}}\n              <table>\n                <tbody>\n                  {{#each this.model.files as |file|}}\n                    <tr>\n                      <td>\n                        <a class=\"clickable\" {{action \"downloadFile\" file}}><FileTypeThumbnail @extension={{file.extension}} /></a>\n                      </td>\n                      <td>\n                        <a class=\"clickable\" {{action \"downloadFile\" file}}>{{file.displayName}}</a>\n                        ({{format-number (mul file.size 0.0009765625)}}\n                        kB)\n                      </td>\n                    </tr>\n                  {{/each}}\n                </tbody>\n              </table>\n            </p>\n          {{/if}}\n        </div>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"VJ3Tn/AK\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Download Files\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,5],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"glyphicon glyphicon-home\\\"],[12],[13],[1,\\\"Home\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"admin-file-download\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"h2\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"clientName\\\"]]],[1,\\\"\\\\n          sent you\\\\n          \\\"],[1,[52,[30,0,[\\\"model\\\",\\\"files\\\",\\\"length\\\"]],[30,0,[\\\"model\\\",\\\"files\\\",\\\"length\\\"]]]],[1,\\\"\\\\n          \\\"],[1,[52,[28,[37,9],[[30,0,[\\\"model\\\",\\\"files\\\",\\\"length\\\"]],1],null],\\\"file\\\",\\\"files\\\"]],[1,\\\"\\\\n          via Settify\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[1,[52,[28,[37,9],[[30,0,[\\\"model\\\",\\\"files\\\",\\\"length\\\"]],1],null],\\\"It was\\\",\\\"They were\\\"]],[1,\\\"\\\\n          sent on\\\\n          \\\"],[1,[28,[35,10],[[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"sendDate\\\"]]],null]],[1,\\\", and for security reasons\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"expired\\\"]],[[[1,\\\"            expired\\\\n\\\"]],[]],[[[1,\\\"            will expire\\\\n\\\"]],[]]],[1,\\\"          three weeks later.\\\\n\\\"],[41,[51,[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"expired\\\"]]],[[[1,\\\"            \\\"],[10,\\\"b\\\"],[12],[1,\\\"Please make sure you download and save to your matter before \\\"],[1,[28,[35,10],[[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"expiryDate\\\"]]],null]],[1,\\\".\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"expired\\\"]],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[10,\\\"b\\\"],[12],[1,\\\"\\\\n              For security reasons, these files expired on\\\\n              \\\"],[1,[28,[35,10],[[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"expiryDate\\\"]]],null]],[1,\\\"\\\\n              and are no longer available for download.\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"model\\\",\\\"zipfile\\\"]],[[[1,\\\"            \\\"],[10,2],[12],[1,\\\"\\\\n              \\\"],[10,\\\"b\\\"],[12],[1,\\\"\\\\n                \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,14],[[30,0],\\\"downloadFile\\\",[30,0,[\\\"model\\\",\\\"zipfile\\\"]]],null],[12],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"/assets/images/fileicons/zip.png\\\"],[14,\\\"alt\\\",\\\"\\\"],[12],[13],[1,\\\" Click here to download them all\\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              (\\\"],[1,[28,[35,16],[[28,[37,17],[[30,0,[\\\"model\\\",\\\"zipfile\\\",\\\"size\\\"]],0.0009765625],null]],null]],[1,\\\"\\\\n              kB)\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n          \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[28,[37,19],[[30,0,[\\\"showUnsubscribeLink\\\"]],[28,[37,20],[[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"unsubscribed\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              We know documents are important, and we take security seriously.\\\\n              \\\"],[1,[52,[28,[37,9],[[30,0,[\\\"model\\\",\\\"files\\\",\\\"length\\\"]],1],null],\\\"This document\\\",\\\"These documents\\\"]],[1,\\\"\\\\n              will expire on\\\\n              \\\"],[1,[28,[35,10],[[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"expiryDate\\\"]]],null]],[1,\\\", after which date you won't be able to download them again.\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              Naturally, we'll send you email reminders as this date approaches. To\\\\n              \\\"],[10,\\\"b\\\"],[12],[1,\\\"turn off\\\"],[13],[1,\\\"\\\\n              these reminders, and confirm that you have downloaded\\\\n              \\\"],[1,[52,[28,[37,9],[[30,0,[\\\"model\\\",\\\"files\\\",\\\"length\\\"]],1],null],\\\"this document\\\",\\\"these documents\\\"]],[1,\\\"\\\\n              and saved\\\\n              \\\"],[1,[52,[28,[37,9],[[30,0,[\\\"model\\\",\\\"files\\\",\\\"length\\\"]],1],null],\\\"it\\\",\\\"them\\\"]],[1,\\\"\\\\n              to the matter,\\\\n              \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,14],[[30,0],\\\"unsubscribe\\\"],null],[12],[1,\\\"click here\\\"],[13],[1,\\\".\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[8,[39,21],null,[[\\\"@loading\\\",\\\"@success\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,0,[\\\"unsubscribeLoading\\\"]],[30,0,[\\\"unsubscribeSuccess\\\"]],[30,0,[\\\"unsubscribeError\\\"]],false]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              We won't send any more emails about these documents. You can still download them until\\\\n              \\\"],[1,[28,[35,10],[[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"expiryDate\\\"]]],null]],[1,\\\".\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"zipfile\\\"]],[[[1,\\\"              Or download files individually below:\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[10,\\\"table\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,25],[[28,[37,25],[[30,0,[\\\"model\\\",\\\"files\\\"]]],null]],null],null,[[[1,\\\"                  \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                      \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,14],[[30,0],\\\"downloadFile\\\",[30,1]],null],[12],[8,[39,28],null,[[\\\"@extension\\\"],[[30,1,[\\\"extension\\\"]]]],null],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                    \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                      \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,14],[[30,0],\\\"downloadFile\\\",[30,1]],null],[12],[1,[30,1,[\\\"displayName\\\"]]],[13],[1,\\\"\\\\n                      (\\\"],[1,[28,[35,16],[[28,[37,17],[[30,1,[\\\"size\\\"]],0.0009765625],null]],null]],[1,\\\"\\\\n                      kB)\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,29],null,null,null]],[\\\"file\\\"],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"i\\\",\\\"h2\\\",\\\"if\\\",\\\"eq\\\",\\\"pretty-date\\\",\\\"unless\\\",\\\"b\\\",\\\"a\\\",\\\"action\\\",\\\"img\\\",\\\"format-number\\\",\\\"mul\\\",\\\"liquid-if\\\",\\\"and\\\",\\\"not\\\",\\\"loading-display\\\",\\\"table\\\",\\\"tbody\\\",\\\"each\\\",\\\"-track-array\\\",\\\"tr\\\",\\\"td\\\",\\\"file-type-thumbnail\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/files/download.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/files/invite\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Request Files\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <br>\n        <div>\n          <p><small><LinkTo @route=\"index\"><i class=\"glyphicon glyphicon-home\" />Home</LinkTo></small></p>\n        </div>\n        <div class=\"settify-form-wrapper {{if this.highlightRequiredFields 'highlight-required-fields'}}\">\n  \n          <LiquidIf @predicate={{not this.inviteSuccess}}>\n            <p>\n              <SettifyTextline @class=\"settify-sensitive\" @label=\"Search for your recipient\" @placeholder=\"First name, surname, or email address\" @model={{this.searchquery}} />\n            </p>\n  \n            {{#if (and this.searchLoading this.searchLongLoading)}}\n              <LoadingSpinner />\n            {{/if}}\n  \n            <LiquidIf @predicate={{and (not this.showFullInput) this.searchComplete}}>\n              {{#if this.searchResults.length}}\n                <LiquidSpacer>\n                  <ul>\n                    {{#each this.searchResults as |r|}}\n                      <li>\n                        <a class=\"clickable\" {{action \"selectSearchMatch\" r}}>{{r.name}}</a>\n                        {{pretty-date r.referredToFirm}}\n                        {{#if r.invitedClient}}\n                          (invited client)\n                        {{else}}\n                          (website lead)\n                        {{/if}}\n                      </li>\n                    {{/each}}\n                  </ul>\n                </LiquidSpacer>\n              {{/if}}\n              <LiquidIf @predicate={{not this.searchResults.length}}>\n                <p>\n                  No matches found. Please check your search query for any typos.\n                </p>\n              </LiquidIf>\n            </LiquidIf>\n  \n            <LiquidIf @predicate={{and this.firm.settings.admin.canSendFileInvitesToNonSettifyUsers (not this.showFullInput)}}>\n              <p>\n                <small>\n                  <a class=\"clickable\" {{action \"showFullInput\"}}>Or click here to request files from a non-Settify recipient.</a>\n                </small>\n              </p>\n            </LiquidIf>\n  \n            <LiquidIf @predicate={{this.showFullInput}}>\n              <p><SettifyTextline @class=\"settify-sensitive\" @label=\"Recipient's first name\" @placeholder=\"eg, Sam\" @model={{this.clientFirstName}} @required={{true}} /></p>\n              <p><SettifyTextline @class=\"settify-sensitive\" @label=\"Recipient's surname\" @placeholder=\"eg, Smith\" @model={{this.clientSurname}} @required={{true}} /></p>\n              <p><SettifyEmailInput\n                  @class=\"settify-sensitive\"\n                  @label=\"Recipient's email address\"\n                  @placeholder=\"eg, sam.smith@gmail.com\"\n                  @model={{this.clientEmail}}\n                  @required={{true}}\n                  @validation={{this.clientEmailValid}}\n                /></p>\n            </LiquidIf>\n  \n            <LiquidIf @predicate={{this.searchMatch}}>\n              <LiquidIf @predicate={{not this.clientFirstName}}>\n                <p>\n                  Loading...\n                </p>\n              </LiquidIf>\n              <LiquidIf @predicate={{this.clientFirstName}}>\n                <h2>\n                  Requesting files from\n                  <span class=\"settify-sensitive\">{{this.clientFirstName}} {{this.clientSurname}} ({{this.clientEmail}})</span>\n                </h2>\n              </LiquidIf>\n            </LiquidIf>\n  \n            <LiquidIf @predicate={{or this.showFullInput this.searchMatch}}>\n              <LawyerSelect\n                @label=\"Who should the request come from?\"\n                @forceLawyer={{this.forceLawyer}}\n                @lawyerName={{this.lawyerName}}\n                @lawyerEmail={{this.lawyerEmail}}\n                @lawyerEmailValid={{this.lawyerEmailValid}}\n                @lawyerBCCs={{this.lawyerBCCs}}\n                @lawyerCCs={{this.lawyerCCs}}\n                @lawyerBio={{this.lawyerBio}}\n                @lawyerReadMoreURL={{this.lawyerReadMoreURL}}\n                @lawyerPhotoURL={{this.lawyerPhotoURL}}\n                @lawyerDetails={{this.sendFrom}}\n                @noPAs={{false}}\n                @allPracticeAreas={{true}}\n                @required={{true}}\n                @prompt=\"--select--\"\n              />\n  \n              {{#each this.recipients as |recipient index|}}\n                <div class=\"recepient\">\n                  <LawyerSelect\n                    @lawyerName={{recipient.lawyerName}}\n                    @lawyerEmail={{recipient.lawyerEmail}}\n                    @lawyerEmailValid={{this.lawyerEmailValid}}\n                    @lawyerBCCs={{recipient.lawyerBCCs}}\n                    @lawyerCCs={{recipient.lawyerCCs}}\n                    @lawyerBio={{recipient.lawyerBio}}\n                    @lawyerReadMoreURL={{recipient.lawyerReadMoreURL}}\n                    @lawyerPhotoURL={{recipient.lawyerPhotoURL}}\n                    @compIndex={{index}}\n                    @updateRecipients={{this.updateRecipientsCallback}}\n                    @hideConfigLink={{true}}\n                    @noPAs={{false}}\n                    @allPracticeAreas={{true}}\n                  />\n                </div>\n                <i class=\"glyphicon glyphicon-remove clickable icon-delete floatright\" {{action \"removeRecipient\" recipient}}></i>\n              {{/each}}\n  \n              <div class=\"clickable another-recipient-label\" {{action \"addAdditionalRecipient\"}}>\n                <p>\n                  <i class=\"glyphicon glyphicon-plus\"></i>\n                  Add another recipient from your firm\n                </p>\n              </div>\n  \n              <p>\n                (Optional) Add a message to\n                {{#if this.clientFirstName}}\n                  <span class=\"settify-sensitive\">{{this.clientFirstName}}</span>\n                {{else}}\n                  the email\n                {{/if}}\n                <SettifyTextarea @rows={{6}} @model={{this.customMessage}} />\n              </p>\n            </LiquidIf>\n          </LiquidIf>\n  \n          <LoadingDisplay @loading={{this.inviteLoading}} @success={{this.inviteSuccess}} @error={{this.inviteError}} @showError={{false}}>\n            The request has been sent to\n            {{this.clientEmail}}. We've also copied it to\n            {{this.sendFrom.email}}\n            {{#if this.recipients.length}}\n              {{#each this.recipients as |r|}}\n                and\n                {{r.lawyerEmail}}\n              {{/each}}\n            {{/if}}\n          </LoadingDisplay>\n  \n          <LiquidIf @predicate={{or this.showFullInput this.searchMatch}}>\n            <LiquidIf @predicate={{not this.inviteSuccess}}>\n              <p>\n                <button\n                  type=\"button\"\n                  class=\"next-button hvr-float-shadow hvr-grow {{unless this.canInvite 'disabled-button'}}\"\n                  {{action (if this.canInvite \"inviteClient\" \"nullAction\")}}\n                >\n                  {{#if this.inviteError}}\n                    Try again\n                  {{else}}\n                    Send request\n                  {{/if}}\n                </button>\n              </p>\n            </LiquidIf>\n          </LiquidIf>\n        </div>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"FKh3NX+3\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Request Files\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,5],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"glyphicon glyphicon-home\\\"],[12],[13],[1,\\\"Home\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,0],[15,0,[29,[\\\"settify-form-wrapper \\\",[52,[30,0,[\\\"highlightRequiredFields\\\"]],\\\"highlight-required-fields\\\"]]]],[12],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,9],[[30,0,[\\\"inviteSuccess\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[8,[39,10],null,[[\\\"@class\\\",\\\"@label\\\",\\\"@placeholder\\\",\\\"@model\\\"],[\\\"settify-sensitive\\\",\\\"Search for your recipient\\\",\\\"First name, surname, or email address\\\",[30,0,[\\\"searchquery\\\"]]]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,11],[[30,0,[\\\"searchLoading\\\"]],[30,0,[\\\"searchLongLoading\\\"]]],null],[[[1,\\\"            \\\"],[8,[39,12],null,null,null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,11],[[28,[37,9],[[30,0,[\\\"showFullInput\\\"]]],null],[30,0,[\\\"searchComplete\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"searchResults\\\",\\\"length\\\"]],[[[1,\\\"              \\\"],[8,[39,13],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"ul\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,16],[[28,[37,16],[[30,0,[\\\"searchResults\\\"]]],null]],null],null,[[[1,\\\"                    \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n                      \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,19],[[30,0],\\\"selectSearchMatch\\\",[30,1]],null],[12],[1,[30,1,[\\\"name\\\"]]],[13],[1,\\\"\\\\n                      \\\"],[1,[28,[35,20],[[30,1,[\\\"referredToFirm\\\"]]],null]],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"invitedClient\\\"]],[[[1,\\\"                        (invited client)\\\\n\\\"]],[]],[[[1,\\\"                        (website lead)\\\\n\\\"]],[]]],[1,\\\"                    \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"                \\\"],[13],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,9],[[30,0,[\\\"searchResults\\\",\\\"length\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,2],[12],[1,\\\"\\\\n                No matches found. Please check your search query for any typos.\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\\n          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,11],[[30,0,[\\\"firm\\\",\\\"settings\\\",\\\"admin\\\",\\\"canSendFileInvitesToNonSettifyUsers\\\"]],[28,[37,9],[[30,0,[\\\"showFullInput\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,19],[[30,0],\\\"showFullInput\\\"],null],[12],[1,\\\"Or click here to request files from a non-Settify recipient.\\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\\n          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showFullInput\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,2],[12],[8,[39,10],null,[[\\\"@class\\\",\\\"@label\\\",\\\"@placeholder\\\",\\\"@model\\\",\\\"@required\\\"],[\\\"settify-sensitive\\\",\\\"Recipient's first name\\\",\\\"eg, Sam\\\",[30,0,[\\\"clientFirstName\\\"]],true]],null],[13],[1,\\\"\\\\n            \\\"],[10,2],[12],[8,[39,10],null,[[\\\"@class\\\",\\\"@label\\\",\\\"@placeholder\\\",\\\"@model\\\",\\\"@required\\\"],[\\\"settify-sensitive\\\",\\\"Recipient's surname\\\",\\\"eg, Smith\\\",[30,0,[\\\"clientSurname\\\"]],true]],null],[13],[1,\\\"\\\\n            \\\"],[10,2],[12],[8,[39,21],null,[[\\\"@class\\\",\\\"@label\\\",\\\"@placeholder\\\",\\\"@model\\\",\\\"@required\\\",\\\"@validation\\\"],[\\\"settify-sensitive\\\",\\\"Recipient's email address\\\",\\\"eg, sam.smith@gmail.com\\\",[30,0,[\\\"clientEmail\\\"]],true,[30,0,[\\\"clientEmailValid\\\"]]]],null],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\\n          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"searchMatch\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,9],[[30,0,[\\\"clientFirstName\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,2],[12],[1,\\\"\\\\n                Loading...\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"clientFirstName\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,\\\"h2\\\"],[12],[1,\\\"\\\\n                Requesting files from\\\\n                \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"clientFirstName\\\"]]],[1,\\\" \\\"],[1,[30,0,[\\\"clientSurname\\\"]]],[1,\\\" (\\\"],[1,[30,0,[\\\"clientEmail\\\"]]],[1,\\\")\\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\\n          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,24],[[30,0,[\\\"showFullInput\\\"]],[30,0,[\\\"searchMatch\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,25],null,[[\\\"@label\\\",\\\"@forceLawyer\\\",\\\"@lawyerName\\\",\\\"@lawyerEmail\\\",\\\"@lawyerEmailValid\\\",\\\"@lawyerBCCs\\\",\\\"@lawyerCCs\\\",\\\"@lawyerBio\\\",\\\"@lawyerReadMoreURL\\\",\\\"@lawyerPhotoURL\\\",\\\"@lawyerDetails\\\",\\\"@noPAs\\\",\\\"@allPracticeAreas\\\",\\\"@required\\\",\\\"@prompt\\\"],[\\\"Who should the request come from?\\\",[30,0,[\\\"forceLawyer\\\"]],[30,0,[\\\"lawyerName\\\"]],[30,0,[\\\"lawyerEmail\\\"]],[30,0,[\\\"lawyerEmailValid\\\"]],[30,0,[\\\"lawyerBCCs\\\"]],[30,0,[\\\"lawyerCCs\\\"]],[30,0,[\\\"lawyerBio\\\"]],[30,0,[\\\"lawyerReadMoreURL\\\"]],[30,0,[\\\"lawyerPhotoURL\\\"]],[30,0,[\\\"sendFrom\\\"]],false,true,true,\\\"--select--\\\"]],null],[1,\\\"\\\\n\\\\n\\\"],[42,[28,[37,16],[[28,[37,16],[[30,0,[\\\"recipients\\\"]]],null]],null],null,[[[1,\\\"              \\\"],[10,0],[14,0,\\\"recepient\\\"],[12],[1,\\\"\\\\n                \\\"],[8,[39,25],null,[[\\\"@lawyerName\\\",\\\"@lawyerEmail\\\",\\\"@lawyerEmailValid\\\",\\\"@lawyerBCCs\\\",\\\"@lawyerCCs\\\",\\\"@lawyerBio\\\",\\\"@lawyerReadMoreURL\\\",\\\"@lawyerPhotoURL\\\",\\\"@compIndex\\\",\\\"@updateRecipients\\\",\\\"@hideConfigLink\\\",\\\"@noPAs\\\",\\\"@allPracticeAreas\\\"],[[30,2,[\\\"lawyerName\\\"]],[30,2,[\\\"lawyerEmail\\\"]],[30,0,[\\\"lawyerEmailValid\\\"]],[30,2,[\\\"lawyerBCCs\\\"]],[30,2,[\\\"lawyerCCs\\\"]],[30,2,[\\\"lawyerBio\\\"]],[30,2,[\\\"lawyerReadMoreURL\\\"]],[30,2,[\\\"lawyerPhotoURL\\\"]],[30,3],[30,0,[\\\"updateRecipientsCallback\\\"]],true,false,true]],null],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[11,\\\"i\\\"],[24,0,\\\"glyphicon glyphicon-remove clickable icon-delete floatright\\\"],[4,[38,19],[[30,0],\\\"removeRecipient\\\",[30,2]],null],[12],[13],[1,\\\"\\\\n\\\"]],[2,3]],null],[1,\\\"\\\\n            \\\"],[11,0],[24,0,\\\"clickable another-recipient-label\\\"],[4,[38,19],[[30,0],\\\"addAdditionalRecipient\\\"],null],[12],[1,\\\"\\\\n              \\\"],[10,2],[12],[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"glyphicon glyphicon-plus\\\"],[12],[13],[1,\\\"\\\\n                Add another recipient from your firm\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              (Optional) Add a message to\\\\n\\\"],[41,[30,0,[\\\"clientFirstName\\\"]],[[[1,\\\"                \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"clientFirstName\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                the email\\\\n\\\"]],[]]],[1,\\\"              \\\"],[8,[39,26],null,[[\\\"@rows\\\",\\\"@model\\\"],[6,[30,0,[\\\"customMessage\\\"]]]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,27],null,[[\\\"@loading\\\",\\\"@success\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,0,[\\\"inviteLoading\\\"]],[30,0,[\\\"inviteSuccess\\\"]],[30,0,[\\\"inviteError\\\"]],false]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          The request has been sent to\\\\n          \\\"],[1,[30,0,[\\\"clientEmail\\\"]]],[1,\\\". We've also copied it to\\\\n          \\\"],[1,[30,0,[\\\"sendFrom\\\",\\\"email\\\"]]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"recipients\\\",\\\"length\\\"]],[[[42,[28,[37,16],[[28,[37,16],[[30,0,[\\\"recipients\\\"]]],null]],null],null,[[[1,\\\"              and\\\\n              \\\"],[1,[30,4,[\\\"lawyerEmail\\\"]]],[1,\\\"\\\\n\\\"]],[4]],null]],[]],null],[1,\\\"        \\\"]],[]]]]],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,24],[[30,0,[\\\"showFullInput\\\"]],[30,0,[\\\"searchMatch\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,9],[[30,0,[\\\"inviteSuccess\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              \\\"],[11,\\\"button\\\"],[16,0,[29,[\\\"next-button hvr-float-shadow hvr-grow \\\",[52,[51,[30,0,[\\\"canInvite\\\"]]],\\\"disabled-button\\\"]]]],[24,4,\\\"button\\\"],[4,[38,19],[[30,0],[52,[30,0,[\\\"canInvite\\\"]],\\\"inviteClient\\\",\\\"nullAction\\\"]],null],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"inviteError\\\"]],[[[1,\\\"                  Try again\\\\n\\\"]],[]],[[[1,\\\"                  Send request\\\\n\\\"]],[]]],[1,\\\"              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,30],null,null,null]],[\\\"r\\\",\\\"recipient\\\",\\\"index\\\",\\\"r\\\"],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"i\\\",\\\"if\\\",\\\"liquid-if\\\",\\\"not\\\",\\\"settify-textline\\\",\\\"and\\\",\\\"loading-spinner\\\",\\\"liquid-spacer\\\",\\\"ul\\\",\\\"each\\\",\\\"-track-array\\\",\\\"li\\\",\\\"a\\\",\\\"action\\\",\\\"pretty-date\\\",\\\"settify-email-input\\\",\\\"h2\\\",\\\"span\\\",\\\"or\\\",\\\"lawyer-select\\\",\\\"settify-textarea\\\",\\\"loading-display\\\",\\\"button\\\",\\\"unless\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/files/invite.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/firms\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Firm Details\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn firm-details\">\n        <div>\n          <p><small><LinkTo @route=\"index\"><i class=\"fal fa-home-lg-alt\" />Home</LinkTo></small></p>\n        </div>\n  \n        <p><b>Find by name:</b>\n          <SettifyTextline @model={{this.searchquery}} />\n        </p>\n        <LiquidIf @predicate={{and this.firmGuesses.length (not (eq (get this.firmGuesses \"0.firmID\") this.searchquery))}}>\n          <p>\n            {{#each this.firmGuesses as |guess|}}\n              <a class=\"clickable\" {{action \"selectFirm\" guess.firmID}}>{{guess.name}} ({{guess.firmID}})</a>\n              <br />\n            {{/each}}\n          </p>\n        </LiquidIf>\n        {{!--\n        {{#if this.firmSelectOptions}}\n          <p>\n            <b>Or select from the list:</b>\n            <SettifySelect @label=\"\" @model={{this.selectedFirmID}} @name=\"firmselect\" @content={{this.firmSelectOptions}} @labelPath=\"label\" @valuePath=\"value\" />\n          </p>\n        {{/if}}\n        --}}\n  \n        <LiquidIf @predicate={{this.selectedFirm}}>\n          <div style=\"font-weight: bold; margin-bottom: 5px\">{{this.selectedFirm.name}}</div>\n          <div style=\"display: grid; grid-template-columns: 1fr 1fr;\">\n            <ul>\n              <li>\n                <LinkTo @route=\"admin.config.induction\" @query={{hash firmID=this.selectedFirmID practiceArea=(get this.selectedFirmPracticeAreaDetails \"0.practiceArea\")}}>\n                  <i class=\"fal fa-laptop\" />\n                  Client Induction Settings\n                </LinkTo>\n              </li>\n              <li>\n                <LinkTo @route=\"admin.config.invitations\" @query={{hash firmID=this.selectedFirmID practiceArea=(get this.selectedFirmPracticeAreaDetails \"0.practiceArea\")}}>\n                  <i class=\"fal fa-envelope-open-text\" />\n                  Firm Invite Settings\n                </LinkTo>\n              </li>\n              <li>\n                <LinkTo @route=\"admin.config.dashboard\" @query={{hash firmID=this.selectedFirmID practiceArea=(get this.selectedFirmPracticeAreaDetails \"0.practiceArea\")}}>\n                  <i class=\"fal fa-user-cog\" />\n                  Firm Admin Settings\n                </LinkTo>\n              </li>\n              {{!--\n              <li>\n                <LinkTo @route=\"admin.config.links\" @query={{hash firmID=this.selectedFirmID}}>\n                  <i class=\"fal fa-link\" />\n                  Links and Buttons\n                </LinkTo>\n              </li>\n              TODO: Look at the call to listpmsmetadata as you can't pass a firmID for it to use\n              <li>\n                <LinkTo @route=\"admin.config.integrationmanager\" @query={{hash firmID=selectedFirmID}}>\n                  <i class=\"fal fa-arrows-alt-h\"/> Manage a firms integrations\n                </LinkTo>\n              </li>\n              --}}\n              <li>\n                <LinkTo @route=\"admin.config.skinning\" @query={{hash firmID=this.selectedFirmID}}>\n                  <i class=\"fal fa-paint-roller\" />\n                  Firm Branding\n                </LinkTo>\n              </li>\n              <li>\n                <LinkTo @route=\"admin.config.customisations\" @query={{hash firmID=this.selectedFirmID}}>\n                  <i class=\"fal fa-gear-code\" />\n                  Firm Customisations\n                </LinkTo>\n              </li>\n              {{#if this.firm.settings.emergency.showEmergencyOptions}}\n                <li>\n                  <LinkTo @route=\"admin.config.emergency\" @query={{hash firmID=this.selectedFirmID practiceArea=(get this.selectedFirmPracticeAreaDetails \"0.practiceArea\")}}>\n                    <i class=\"fal fa-siren-on\" />\n                    {{this.firm.settings.emergency.emergencyTitle}}\n                  </LinkTo>\n                </li>\n              {{/if}}\n            </ul>\n            <ul>\n              <li>\n                <LinkTo @route=\"admin.config.offices\" @query={{hash firmID=this.selectedFirmID}}>\n                  <i class=\"fal fa-building\" style=\"min-width: 25px;\" />\n                  Offices / addresses\n                </LinkTo>\n              </li>\n              <li>\n                <LinkTo @route=\"admin.config.team\" @query={{hash firmID=this.selectedFirmID}}>\n                  <i class=\"fal fa-users\" />\n                  Lawyers and assistants\n                </LinkTo>\n              </li>\n              <li>\n                <LinkTo @route=\"admin.config.accounts\" @query={{hash firmID=this.selectedFirmID}}>\n                  <i class=\"fal fa-file-invoice\" />\n                  View invoice history and details\n                </LinkTo>\n              </li>\n              <li>\n                <LinkTo @route=\"admin.config.lineitems\" @query={{hash firmID=this.selectedFirmID}}>\n                  <i class=\"fal fa-dollar\" />\n                  Review pending invoice charges\n                </LinkTo>\n              </li>\n              <li>\n                <LinkTo @route=\"admin.config.practiceclient\" @query={{hash firmID=this.selectedFirmID}}>\n                  <i class=\"fal fa-chalkboard-teacher\" />\n                  Send a practice client\n                </LinkTo>\n              </li>\n              <li>\n                <LinkTo @route=\"admin.history\" @query={{hash firmID=this.selectedFirmID practiceArea=\"global\"}}>\n                  <i class=\"fal fa-chart-line\" />\n                  View Settify Usage\n                </LinkTo>\n              </li>\n              {{!-- todo: only show this if you are a developer, for now hiding this route\n              <li>\n                <LinkTo @route=\"admin.config.forms\" @query={{hash firmID=this.selectedFirmID}}>\n                  <i class=\"fal fa-file-pen\" />\n                  Edit the firm's intake forms\n                </LinkTo>\n              </li>\n              --}}\n            </ul>\n          </div>\n  \n          <LiquidIf @predicate={{and (not this.loadingrequiredSettings) this.requiredSettingsList.length}}>\n            <h3 class=\"negative\">Required information is missing</h3>\n            <p>\n              <ul>\n                {{#each this.requiredSettingsList as |setting|}}\n                  <li>\n                    {{#if setting.link}}\n                      <LinkTo @route={{setting.link}} @query={{hash firmID=this.selectedFirmID practiceArea=setting.practiceArea}}>\n                        {{setting.requiredText}}\n                        ({{setting.practiceArea}})\n                      </LinkTo>\n                    {{else}}\n                      <a class=\"clickable\" {{action \"scrollToSetting\" setting}}>{{setting.requiredText}} ({{sentence-case setting.practiceArea}})</a>\n                    {{/if}}\n                  </li>\n                {{/each}}\n              </ul>\n            </p>\n          </LiquidIf>\n  \n          <h2>Global details</h2>\n          <LiquidIf @predicate={{not this.selectedFirmGlobalDetails}}>\n            <LoadingSpinner />\n          </LiquidIf>\n          <LiquidIf @predicate={{this.selectedFirmGlobalDetails}}>\n            <table class=\"settings\">\n              <tbody>\n                <tr>\n                  <td>\n                    Name\n                  </td>\n                  <td>\n                    <SettifyTextline @model={{this.selectedFirmGlobalDetails.name}} />\n                  </td>\n                </tr>\n                <tr>\n                  <td>\n                    ID\n                  </td>\n                  <td>\n                    {{this.selectedFirmGlobalDetails.firmID}}\n                  </td>\n                </tr>\n                <tr>\n                  <td>\n                    Billing entity name\n                    <HelpToggle>\n                      Some firms have multiple legal entities - one that services clients, and one that purchases their software, pays their rent, etc. Firms will usually tell us if\n                      we need to send invoices to a different legal entity.\n                    </HelpToggle>\n                  </td>\n                  <td>\n                    <SettifyTextline @model={{this.selectedFirmGlobalDetails.billingEntityName}} />\n                  </td>\n                </tr>\n                {{#if this.selectedFirmGlobalDetails.stripeID}}\n                  <tr>\n                    <td>\n                      Stripe\n                    </td>\n                    <td>\n                      <a href=\"https://billing.stripe.com/\" {{action \"goToStripePortal\"}}>View Stripe details</a>\n                      <LoadingDisplay @loading={{this.redirecting}} @error={{this.redirectingFailed}} @showError={{true}} />\n                    </td>\n                  </tr>\n                {{else}}\n                  <tr>\n                    <td>\n                      Xero\n                    </td>\n                    <td>\n                      <a href=\"https://go.xero.com/Contacts/View/{{this.selectedFirmGlobalDetails.xeroID}}\" target=\"_blank\" rel=\"noopener noreferrer\">View in Xero\n                        <i class=\"subdued-fal fal fa-external-link-alt\" /></a>\n                    </td>\n                  </tr>\n                {{/if}}\n                <tr>\n                  <td>\n                    Address\n                    <HelpToggle>\n                      Please use newlines and format the address like you would on an envelope. If the firm has multiple offices, this is just their primary office address.\n                    </HelpToggle>\n                  </td>\n                  <td>\n                    <SettifyTextarea @model={{this.selectedFirmGlobalDetails.address}} />\n                  </td>\n                </tr>\n                <tr>\n                  <td>\n                    ABN / NZ Business Number\n                    <HelpToggle>\n                      This should be set out in the contract. If not, refer to the following sites:\n                      <br />\n                      <a href=\"http://abr.business.gov.au/\" target=\"_blank\" rel=\"noopener noreferrer\">Australian Business Register lookup\n                        <i class=\"subdued-fal fal fa-external-link-alt\" /></a>\n                      <br />\n                      <a href=\"https://www.nzbn.govt.nz/\" target=\"_blank\" rel=\"noopener noreferrer\">New Zealand business lookup <i class=\"subdued-fal fal fa-external-link-alt\" /></a>\n                    </HelpToggle>\n                  </td>\n                  <td>\n                    <SettifyTextline @model={{this.selectedFirmGlobalDetails.abn}} />\n                  </td>\n                </tr>\n                <tr>\n                  <td>\n                    All contracts terminated\n                    <HelpToggle>\n                      When a termination date is added to a practice area, this will be set if all other practice areas are terminated. Please note, this can not be updated manually.\n                    </HelpToggle>\n                  </td>\n                  <td>\n                    <CheckBox @model={{this.selectedFirmGlobalDetails.allContractsTerminated}} @disabled={{true}} />\n                  </td>\n                </tr>\n                <tr>\n                  <td>\n                    Send invoices (noting that invoices will only be sent once a firm is ‘live’)\n                    <HelpToggle>\n                      For a firm to receive invoices for a given practice area, the global 'send invoices' setting must be on, AND the practice area 'send invoices' setting must be\n                      on, AND the practice area 'went live' date must be set. You would normally only disable this setting if a firm has cancelled all its subscription, or if you\n                      want to make sure that no invoices go out in a particular month, for some reason.\n                    </HelpToggle>\n                  </td>\n                  <td>\n                    <CheckBox @model={{this.selectedFirmGlobalDetails.sendInvoices}} />\n                  </td>\n                </tr>\n                {{#if this.selectedFirmSettings.global}}\n                  <tr>\n                    <td>\n                      Enable automatic invoice payments\n                      <HelpToggle>\n                        If enabled, and the firm has a default card set in Stripe, payments will automatically be charged.\n                      </HelpToggle>\n                    </td>\n                    <td>\n                      <CheckBox @model={{this.selectedFirmSettings.global.settings.invoiceDirectDebit}} @onChange={{action \"onInvoiceDirectDebitChange\"}} />\n                    </td>\n                  </tr>\n                {{/if}}\n                <tr>\n                  <td>\n                    Person / people who will review the monthly billing report\n                    <HelpToggle>\n                      The name, or names, or the people to whom our emails will be addressed. You should provide something that can sensibly fill this blank: \"Dear&nbsp;______,\".\n                      Please don't have any extra spaces at the start or end.\n                    </HelpToggle>\n                  </td>\n                  <td>\n                    <SettifyTextline @model={{this.selectedFirmGlobalDetails.generalContactNames}} @placeholder=\"Eg, John and Susan\" />\n                  </td>\n                </tr>\n                <tr>\n                  <td>\n                    Emails of that person / those people\n                    <HelpToggle>\n                      The email addresses of the person or people referred to above. If there are multiple email addresses, separate them with a comma and a space, like so:\n                      first@firm.com.au, second@firm.com.au\n                    </HelpToggle>\n                  </td>\n                  <td>\n                    <SettifyEmailInput @model={{this.selectedFirmGlobalDetails.generalContactEmails}} @allowMultipleEmails={{true}} @placeholder=\"One or more email addresses\" />\n                  </td>\n                </tr>\n                {{#unless this.selectedFirmGlobalDetails.stripeID}}\n                  <tr id=\"global-accountsPayableNames\" class={{unless this.selectedFirmGlobalDetails.accountsPayableNames \"highlight-required-fields\"}}>\n                    <td>\n                      Person / people to whom invoices will be sent\n                      <HelpToggle>\n                        The name, or names, or the people to whom our invoies will be sent. You should provide something that can sensibly fill this blank: \"Dear&nbsp;______,\".\n                        Please don't have any extra spaces at the start or end.\n                      </HelpToggle>\n                    </td>\n                    <td>\n                      <SettifyTextline @model={{this.selectedFirmGlobalDetails.accountsPayableNames}} @placeholder=\"Eg, Peter and the accounts team\" />\n                    </td>\n                  </tr>\n                  <tr id=\"global-accountsPayableEmails\" class={{unless this.selectedFirmGlobalDetails.accountsPayableEmails \"highlight-required-fields\"}}>\n                    <td>\n                      Emails of that person / those people\n                      <HelpToggle>\n                        The email addresses of the person or people referred to above. If there are multiple email addresses, separate them with a comma and a space, like so:\n                        first@firm.com.au, second@firm.com.au\n                      </HelpToggle>\n                    </td>\n                    <td>\n                      <SettifyEmailInput @model={{this.selectedFirmGlobalDetails.accountsPayableEmails}} @allowMultipleEmails={{true}} @placeholder=\"One or more email addresses\" />\n                    </td>\n                  </tr>\n                {{/unless}}\n                <tr>\n                  <td>\n                    Timezone\n                    <HelpToggle>\n                      The timezone of the firm's primary office.\n                    </HelpToggle>\n                  </td>\n                  <td>\n                    <SettifySelect @label=\"\" @model={{this.selectedFirmGlobalDetails.timezone}} @name=\"timezone\" @content={{this.timezones}} @labelPath=\"value\" @valuePath=\"value\" />\n                  </td>\n                </tr>\n                <tr>\n                  <td>\n                    Currency\n                    <HelpToggle>\n                      The currency in which we are invoicing this customer.\n                    </HelpToggle>\n                  </td>\n                  <td>\n                    <SettifySelect @label=\"\" @model={{this.selectedFirmGlobalDetails.currency}} @name=\"currency\" @content={{this.currencies}} @labelPath=\"value\" @valuePath=\"value\" />\n                  </td>\n                </tr>\n                <tr>\n                  <td>\n                    Charge GST\n                    <HelpToggle>\n                      Should we charge GST to this customer? The general rule is that if the customer is Australian, we DO charge GST, but if the customer is not Australian, we DO\n                      NOT charge GST.\n                    </HelpToggle>\n                  </td>\n                  <td>\n                    <CheckBox @model={{this.selectedFirmGlobalDetails.hasGST}} />\n                  </td>\n                </tr>\n                <tr>\n                  <td>\n                    GST/VAT region\n                    <HelpToggle>\n                      We have different GST/VAT obligations in different regions. Choose their region and we will automatically calculate the right amount. Note that this\n                      <i>should</i>\n                      be set correctly when the firm is created.\n                    </HelpToggle>\n                  </td>\n                  <td>\n                    <SettifySelect @label=\"\" @model={{this.selectedFirmGlobalDetails.gstCode}} @name=\"gst code\" @content={{this.gstCodes}} @labelPath=\"label\" @valuePath=\"value\" />\n                  </td>\n                </tr>\n                <tr>\n                  <td>\n                    Suppress Unseen Client warnings\n                    <HelpToggle>\n                      This is a bit of a niche setting, and is almost always disabled. \"Unseen client warnings\" are the emails we sent to a firm if a client requests an appointment\n                      and the firm hasn't run a conflict check within one business day. However, some firms never run the conflict check until the day of the client's appointment.\n                      For such firms, sending a reminder to complete a conflict check would just be annoying.\n                    </HelpToggle>\n                  </td>\n                  <td>\n                    <CheckBox @model={{this.selectedFirmGlobalDetails.supressUnseenClientWarnings}} />\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </LiquidIf>\n  \n          <LiquidIf @predicate={{this.selectedFirmPracticeAreaDetails}}>\n            {{#each this.selectedFirmPracticeAreaDetails as |paDetails|}}\n              <h2>Practice Area: {{paDetails.practiceArea}}</h2>\n              <table class=\"settings\">\n                <tbody>\n                  {{#if (get this.selectedFirmSettings paDetails.practiceArea)}}\n                    <tr>\n                      <td>\n                        System type\n                      </td>\n                      <td>\n                        <SettifySelect\n                          @label=\"\"\n                          @model={{get (get this.selectedFirmSettings paDetails.practiceArea) \"webapp\"}}\n                          @name=\"system type\"\n                          @content={{this.webappTypes}}\n                          @labelPath=\"label\"\n                          @valuePath=\"value\"\n                          @onChange={{action \"onWebappTypeChange\" paDetails.practiceArea}}\n                          @disabled={{true}}\n                        />\n                      </td>\n                    </tr>\n                  {{/if}}\n                  <tr>\n                    <td>\n                      Lawyer count\n                      <HelpToggle>\n                        How many lawyers do they have practising\n                        {{paDetails.practiceArea}}\n                        law? We don't have to be exact &mdash; look at their website and/or at their practice integration plan. Currently, the purpose of collecting this information\n                        is to help us gauge revenue per lawyer, matters per lawyer, etc, in order to determine the health of a particular firm.\n                      </HelpToggle>\n                    </td>\n                    <td>\n                      <SettifyNumber @model={{paDetails.lawyerCount}} @min={{0}} @placeholder={{sum \"Number of lawyers who practice \" paDetails.practiceArea \" law\"}} />\n                    </td>\n                  </tr>\n                  <tr>\n                    <td>\n                      Monthly licence fee\n                      <HelpToggle>\n                        If the contract specifies a single monthly licence fee, across multiple practice areas, we should divide it evenly. Eg if it's $199/month for Family Law and\n                        Wills, apportion it $99.50 for Family, and $99.50 for Wills.\n                      </HelpToggle>\n                    </td>\n                    <td>\n                      <SettifyNumber @model={{paDetails.licenceFeeInCents}} @nocommas={{true}} @placeholder=\"Amount in cents\" />\n                      Which corresponds to\n                      <b><CentsToDollars @model={{paDetails.licenceFeeInCents}} @firm={{this.selectedFirmGlobalDetails}} /></b>\n  \n                      <LiquidIf @predicate={{paDetails.licenceFeeChanged}}>\n                        <br /><br />\n                        <i class=\"fal fa-exclamation-triangle tight\" />\n                        <b>When should the change from\n                          <CentsToDollars @model={{paDetails.currentFee}} @firm={{this.selectedFirmGlobalDetails}} />\n                          to\n                          <CentsToDollars @model={{paDetails.licenceFeeInCents}} @firm={{this.selectedFirmGlobalDetails}} />\n                          take effect?</b>\n                        <br />\n                        <DatePicker\n                          @utc={{false}}\n                          @date={{paDetails.licenceFeeUpdateDate}}\n                          @valueFormat=\"date\"\n                          @minDate={{this.firstDayOfThisMonth}}\n                          @format=\"dddd D MMMM YYYY\"\n                          @allowBlank={{true}}\n                          @placeholder=\"Click here to select a date\"\n                        />\n                      </LiquidIf>\n                    </td>\n                  </tr>\n                  {{#let (get this.queuedLicenceFees paDetails.practiceArea) as |licenceFees|}}\n                    {{#if this.licenceFees.length}}\n                      <tr>\n                        <td>Queued licence fees</td>\n                        <td>\n                          Even though the monthly licence fee is set to\n                          <CentsToDollars @model={{paDetails.licenceFeeInCents}} @firm={{this.selectedFirmGlobalDetails}} />\n                          the following licence fees are already queued in the system, and will not be overwritten. Furthermore, if a particular licence fee is dated before the firm\n                          went live, it will be deleted or pro-rated based on the date the firm actually goes live.\n                          <br />\n                          <ul>\n                            {{#each this.licenceFees as |f|}}\n                              <li>\n                                {{pretty-date f.displayDate}}:\n                                <CentsToDollars @model={{f.invoiceAmountCents}} @firm={{this.selectedFirmGlobalDetails}} />\n                              </li>\n                            {{/each}}\n                          </ul>\n  \n                          <LinkTo @route=\"admin.config.lineitems\" @query={{hash firmID=this.selectedFirmID}} target=\"_blank\">Click here to amend these queued licence fees\n                            <i class=\"fal fa-external-link tight\" /></LinkTo>\n                        </td>\n                      </tr>\n                    {{/if}}\n                  {{/let}}\n                  <tr id=\"{{get paDetails 'practiceArea'}}-conversionGroup\" class={{unless paDetails.conversionGroup \"highlight-required-fields\"}}>\n                    <td>\n                      Billing type\n                      <HelpToggle>\n                        How is this firm being charged? The main ones are DEFAULT (we charge for every client) and UNLIMITED (we charge a fixed monthly fee for unlimited usage).\n                        There is also FREE_INVITES (exactly what it sounds like) and a few other special structures negotiated on an ad-hoc basis.\n                      </HelpToggle>\n                    </td>\n                    <td>\n                      <SettifySelect\n                        @label=\"\"\n                        @model={{paDetails.conversionGroup}}\n                        @name={{sum \"billingcode-\" paDetails.practiceArea}}\n                        @content={{paDetails.allBillingCodes}}\n                        @labelPath=\"groupName\"\n                        @valuePath=\"groupName\"\n                      />\n                      <LiquidIf @predicate={{and paDetails.conversionGroup (not paDetails.conversionGroupDetails)}}>\n                        <LoadingSpinner />\n                      </LiquidIf>\n                      <LiquidIf @predicate={{paDetails.conversionGroupDetails}}>\n                        {{#each paDetails.conversionGroupDetails as |conversionOption|}}\n                          <i class=\"fal fa-{{conversionOption.fontawesome}}\" />\n                          {{conversionOption.longName}}:\n                          <CentsToDollars @model={{conversionOption.invoiceAmountCents}} @firm={{this.selectedFirmGlobalDetails}} />\n                          {{#unless conversionOption.allowedForInvites}}\n                            (Website users only)\n                          {{/unless}}\n                          {{#unless conversionOption.allowedForWebsites}}\n                            (Invited users only)\n                          {{/unless}}\n                          {{#if conversionOption.requiredBillingFlags}}\n                            ({{conversionOption.requiredBillingFlags}}\n                            only)\n                          {{/if}}\n                          <br />\n                        {{/each}}\n                      </LiquidIf>\n                    </td>\n                  </tr>\n                  <tr id=\"{{get paDetails 'practiceArea'}}-wentLive\" class={{unless paDetails.wentLive \"highlight-required-fields\"}}>\n                    <td>\n                      Went live date\n                      <HelpToggle>\n                        The day that the firm \"went live\" - basically, the day on which the firm could first use Settify properly, whether that's being able to invite their clients,\n                        or having links posted on the website so they can get new clients that way.\n                        <br /><br />\n                        The went live date is useful for two things: First, it controls when we start invoicing the monthly licence fee. Second, it controls whether the\n                        family-to-wills bridge is shown to the firm's clients (only shown once both practice areas are live).\n                        <br /><br />\n                        It's really important to note that this DOES NOT have any impact on whether or not the firm is ACTUALLY live. It is JUST about whether to charge the monthly\n                        licence fee, and whether to enable the family-to-wills bridge. It most definitely has absolutely nothing to do with when we send the rollout invoice (that\n                        always happens when the rollout starts).\n                      </HelpToggle>\n                    </td>\n                    <td>\n                      <div class=\"datepicker-wrapper\">\n                        <DatePicker\n                          @utc={{true}}\n                          @date={{paDetails.wentLive}}\n                          @valueFormat=\"date\"\n                          @format=\"dddd D MMMM YYYY\"\n                          @allowBlank={{true}}\n                          @placeholder=\"Click here to select a date\"\n                        />\n                      </div>\n                    </td>\n                  </tr>\n                  <tr id=\"{{get paDetails 'practiceArea'}}-contractExpiry\" class={{unless paDetails.contractExpiry \"highlight-required-fields\"}}>\n                    <td>\n                      Contract expiry\n                      <HelpToggle>\n                        When is our contract due to expire? This will often be 12 months after the date the contract was signed. Sometimes the 'term' is less than 12 months though -\n                        please refer to the first page of the contract.\n                      </HelpToggle>\n                    </td>\n                    <td>\n                      <div class=\"datepicker-wrapper\">\n                        <DatePicker\n                          @utc={{true}}\n                          @date={{paDetails.contractExpiry}}\n                          @valueFormat=\"date\"\n                          @format=\"dddd D MMMM YYYY\"\n                          @allowBlank={{true}}\n                          @placeholder=\"Click here to select a date\"\n                        />\n                      </div>\n                    </td>\n                  </tr>\n                  <tr>\n                    <td>\n                      Contract terminated date\n                      <HelpToggle>\n                        If the firm has terminated their service, put the date of termination here.\n                      </HelpToggle>\n                    </td>\n                    <td>\n                      <div class=\"datepicker-wrapper\">\n                        <DatePicker\n                          @utc={{true}}\n                          @date={{paDetails.terminatedContract}}\n                          @valueFormat=\"date\"\n                          @format=\"dddd D MMMM YYYY\"\n                          @allowBlank={{true}}\n                          @placeholder=\"Click here to select a date\"\n                        />\n                      </div>\n                    </td>\n                  </tr>\n                  {{#if paDetails.terminatedContract}}\n                    <tr>\n                      <td>\n                        Grace period\n                        <HelpToggle>\n                          The number of days the firm will still have access to view or download clients of this practice area.\n                        </HelpToggle>\n                      </td>\n                      <td>\n                        <SettifyNumber @model={{paDetails.gracePeriod}} @min={{0}} @max={{90}} @placeholder=\"Number of days\" />\n                      </td>\n                    </tr>\n                  {{/if}}\n                  <tr>\n                    <td>\n                      Send invoices (for this practice group)\n                      <HelpToggle>\n                        For a firm to receive invoices for a given practice area, the global 'send invoices' setting must be on, AND the practice area 'send invoices' setting must be\n                        on, AND the practice area 'went live' date must be set. You would normally only disable this setting if a firm has cancelled all its subscription, or if you\n                        want to make sure that no invoices go out in a particular month, for some reason.\n                      </HelpToggle>\n                    </td>\n                    <td>\n                      <CheckBox @model={{paDetails.sendInvoices}} />\n                    </td>\n                  </tr>\n                  <tr>\n                    <td>\n                      Disbursing the Settify fee\n                      <HelpToggle>\n                        Is the firm passing the Settify fee on to its clients? If so, they are said to be \"disbursing it\". You will find this information in their marked-up Settify\n                        blueprints, where there's an option for firms to either disburse the fee, or absorb it.\n                      </HelpToggle>\n                    </td>\n                    <td>\n                      <CheckBox @model={{paDetails.disbursesFee}} />\n                    </td>\n                  </tr>\n                  <tr>\n                    <td>\n                      Settify URL\n                    </td>\n                    <td>\n                      <a href={{paDetails.settifyURL}} target=\"_blank\" rel=\"noopener noreferrer\">{{paDetails.settifyURL}} <i class=\"subdued-fal fal fa-external-link-alt\" /></a>\n                    </td>\n                  </tr>\n                </tbody>\n              </table>\n            {{/each}}\n          </LiquidIf>\n  \n          <LiquidIf @predicate={{this.selectedFirmRecurringFees}}>\n            <h2>Additional recurring fees</h2>\n            {{#each this.selectedFirmRecurringFees as |fee|}}\n              <li>{{fee.description}}:\n                <CentsToDollars @model={{fee.invoiceAmountCents}} @firm={{this.selectedFirmGlobalDetails}} />\n                per month</li>\n            {{else}}\n              None\n            {{/each}}\n          </LiquidIf>\n  \n          <LiquidIf @predicate={{this.savingChanges}}>\n            <LoadingSpinner />\n          </LiquidIf>\n          <LiquidIf @predicate={{this.savingChangesSuccess}}>\n            <i class=\"fal fa-check-circle\" />\n            Changes saved successfully\n          </LiquidIf>\n          <LiquidIf @predicate={{this.savingChangesError}}>\n            <i class=\"fal fa-exclamation-circle negative\" />\n            Uh oh - an error occurred!\n          </LiquidIf>\n          {{#each this.updateFeeStatus as |statusObject|}}\n            <LiquidIf @predicate={{statusObject.successStatus}}>\n              {{this.selectedFirmGlobalDetails.name}}'s\n              {{statusObject.practiceArea}}\n              monthly licence fee will be updated to\n              <CentsToDollars @model={{statusObject.val}} @firm={{this.selectedFirmGlobalDetails}} />\n              on\n              {{pretty-date statusObject.date}}\n            </LiquidIf>\n  \n            <LiquidIf @predicate={{statusObject.dateNotProvidedError}}>\n              No date provided to update\n              {{this.selectedFirmGlobalDetails.name}}'s\n              {{statusObject.practiceArea}}\n              monthly licence fee. You must provide a date on which this change will occur.\n            </LiquidIf>\n  \n            <LiquidIf @predicate={{statusObject.failureStatus}}>\n              It looks like we failed to update\n              {{this.selectedFirmGlobalDetails.name}}'s\n              {{statusObject.practiceArea}}\n              monthly licence fee.\n              <LiquidIf @predicate={{not this.savingChanges}}>\n                Please\n                <LinkTo @route=\"admin.config.lineitems\" @query={{hash firmID=this.selectedFirmID}}>review the upcoming line items</LinkTo>\n                to make sure that everything is clean. You may need to delete some pending line items to get things \"clean\", and then try again. Or, it may have all worked fine... in\n                which case you may not need to do anything 🤷‍♂️\n              </LiquidIf>\n            </LiquidIf>\n          {{/each}}\n          <LiquidIf @predicate={{and this.anyFeeChanged (not this.savingChanges)}}>\n            Please\n            <LinkTo @route=\"admin.config.lineitems\" @query={{hash firmID=this.selectedFirmID}}>review the line items added by this change</LinkTo>\n            to make sure that everything looks as you expect.\n          </LiquidIf>\n  \n          <button class=\"previous-button dangerous-button hvr-float-shadow hvr-grow\" type=\"button\" {{action \"revertChanges\"}}>Revert changes</button>\n  \n          <button class=\"next-button hvr-float-shadow hvr-grow\" type=\"button\" {{action \"saveChanges\"}}>Save changes</button>\n  \n        </LiquidIf>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"wooKYmJW\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Firm Details\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn firm-details\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,4],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-home-lg-alt\\\"],[12],[13],[1,\\\"Home\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,2],[12],[10,\\\"b\\\"],[12],[1,\\\"Find by name:\\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,7],null,[[\\\"@model\\\"],[[30,0,[\\\"searchquery\\\"]]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,9],[[30,0,[\\\"firmGuesses\\\",\\\"length\\\"]],[28,[37,10],[[28,[37,11],[[28,[37,12],[[30,0,[\\\"firmGuesses\\\"]],\\\"0.firmID\\\"],null],[30,0,[\\\"searchquery\\\"]]],null]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,14],[[28,[37,14],[[30,0,[\\\"firmGuesses\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,16],[[30,0],\\\"selectFirm\\\",[30,1,[\\\"firmID\\\"]]],null],[12],[1,[30,1,[\\\"name\\\"]]],[1,\\\" (\\\"],[1,[30,1,[\\\"firmID\\\"]]],[1,\\\")\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[1,\\\"\\\\n      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"selectedFirm\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,0],[14,5,\\\"font-weight: bold; margin-bottom: 5px\\\"],[12],[1,[30,0,[\\\"selectedFirm\\\",\\\"name\\\"]]],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,5,\\\"display: grid; grid-template-columns: 1fr 1fr;\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"ul\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,4],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.config.induction\\\",[28,[37,20],null,[[\\\"firmID\\\",\\\"practiceArea\\\"],[[30,0,[\\\"selectedFirmID\\\"]],[28,[37,12],[[30,0,[\\\"selectedFirmPracticeAreaDetails\\\"]],\\\"0.practiceArea\\\"],null]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-laptop\\\"],[12],[13],[1,\\\"\\\\n                Client Induction Settings\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,4],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.config.invitations\\\",[28,[37,20],null,[[\\\"firmID\\\",\\\"practiceArea\\\"],[[30,0,[\\\"selectedFirmID\\\"]],[28,[37,12],[[30,0,[\\\"selectedFirmPracticeAreaDetails\\\"]],\\\"0.practiceArea\\\"],null]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-envelope-open-text\\\"],[12],[13],[1,\\\"\\\\n                Firm Invite Settings\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,4],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.config.dashboard\\\",[28,[37,20],null,[[\\\"firmID\\\",\\\"practiceArea\\\"],[[30,0,[\\\"selectedFirmID\\\"]],[28,[37,12],[[30,0,[\\\"selectedFirmPracticeAreaDetails\\\"]],\\\"0.practiceArea\\\"],null]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-user-cog\\\"],[12],[13],[1,\\\"\\\\n                Firm Admin Settings\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"],[1,\\\"            \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,4],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.config.skinning\\\",[28,[37,20],null,[[\\\"firmID\\\"],[[30,0,[\\\"selectedFirmID\\\"]]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-paint-roller\\\"],[12],[13],[1,\\\"\\\\n                Firm Branding\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,4],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.config.customisations\\\",[28,[37,20],null,[[\\\"firmID\\\"],[[30,0,[\\\"selectedFirmID\\\"]]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-gear-code\\\"],[12],[13],[1,\\\"\\\\n                Firm Customisations\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"firm\\\",\\\"settings\\\",\\\"emergency\\\",\\\"showEmergencyOptions\\\"]],[[[1,\\\"              \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n                \\\"],[8,[39,4],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.config.emergency\\\",[28,[37,20],null,[[\\\"firmID\\\",\\\"practiceArea\\\"],[[30,0,[\\\"selectedFirmID\\\"]],[28,[37,12],[[30,0,[\\\"selectedFirmPracticeAreaDetails\\\"]],\\\"0.practiceArea\\\"],null]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-siren-on\\\"],[12],[13],[1,\\\"\\\\n                  \\\"],[1,[30,0,[\\\"firm\\\",\\\"settings\\\",\\\"emergency\\\",\\\"emergencyTitle\\\"]]],[1,\\\"\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"ul\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,4],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.config.offices\\\",[28,[37,20],null,[[\\\"firmID\\\"],[[30,0,[\\\"selectedFirmID\\\"]]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-building\\\"],[14,5,\\\"min-width: 25px;\\\"],[12],[13],[1,\\\"\\\\n                Offices / addresses\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,4],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.config.team\\\",[28,[37,20],null,[[\\\"firmID\\\"],[[30,0,[\\\"selectedFirmID\\\"]]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-users\\\"],[12],[13],[1,\\\"\\\\n                Lawyers and assistants\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,4],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.config.accounts\\\",[28,[37,20],null,[[\\\"firmID\\\"],[[30,0,[\\\"selectedFirmID\\\"]]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-file-invoice\\\"],[12],[13],[1,\\\"\\\\n                View invoice history and details\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,4],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.config.lineitems\\\",[28,[37,20],null,[[\\\"firmID\\\"],[[30,0,[\\\"selectedFirmID\\\"]]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-dollar\\\"],[12],[13],[1,\\\"\\\\n                Review pending invoice charges\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,4],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.config.practiceclient\\\",[28,[37,20],null,[[\\\"firmID\\\"],[[30,0,[\\\"selectedFirmID\\\"]]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-chalkboard-teacher\\\"],[12],[13],[1,\\\"\\\\n                Send a practice client\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,4],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.history\\\",[28,[37,20],null,[[\\\"firmID\\\",\\\"practiceArea\\\"],[[30,0,[\\\"selectedFirmID\\\"]],\\\"global\\\"]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-chart-line\\\"],[12],[13],[1,\\\"\\\\n                View Settify Usage\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,9],[[28,[37,10],[[30,0,[\\\"loadingrequiredSettings\\\"]]],null],[30,0,[\\\"requiredSettingsList\\\",\\\"length\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,\\\"h3\\\"],[14,0,\\\"negative\\\"],[12],[1,\\\"Required information is missing\\\"],[13],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[10,\\\"ul\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,14],[[28,[37,14],[[30,0,[\\\"requiredSettingsList\\\"]]],null]],null],null,[[[1,\\\"                \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,2,[\\\"link\\\"]],[[[1,\\\"                    \\\"],[8,[39,4],null,[[\\\"@route\\\",\\\"@query\\\"],[[30,2,[\\\"link\\\"]],[28,[37,20],null,[[\\\"firmID\\\",\\\"practiceArea\\\"],[[30,0,[\\\"selectedFirmID\\\"]],[30,2,[\\\"practiceArea\\\"]]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                      \\\"],[1,[30,2,[\\\"requiredText\\\"]]],[1,\\\"\\\\n                      (\\\"],[1,[30,2,[\\\"practiceArea\\\"]]],[1,\\\")\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                    \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,16],[[30,0],\\\"scrollToSetting\\\",[30,2]],null],[12],[1,[30,2,[\\\"requiredText\\\"]]],[1,\\\" (\\\"],[1,[28,[35,23],[[30,2,[\\\"practiceArea\\\"]]],null]],[1,\\\")\\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"                \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\\n        \\\"],[10,\\\"h2\\\"],[12],[1,\\\"Global details\\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,10],[[30,0,[\\\"selectedFirmGlobalDetails\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[39,25],null,null,null],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"selectedFirmGlobalDetails\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,\\\"table\\\"],[14,0,\\\"settings\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  Name\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,7],null,[[\\\"@model\\\"],[[30,0,[\\\"selectedFirmGlobalDetails\\\",\\\"name\\\"]]]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  ID\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[1,[30,0,[\\\"selectedFirmGlobalDetails\\\",\\\"firmID\\\"]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  Billing entity name\\\\n                  \\\"],[8,[39,30],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                    Some firms have multiple legal entities - one that services clients, and one that purchases their software, pays their rent, etc. Firms will usually tell us if\\\\n                    we need to send invoices to a different legal entity.\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,7],null,[[\\\"@model\\\"],[[30,0,[\\\"selectedFirmGlobalDetails\\\",\\\"billingEntityName\\\"]]]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"selectedFirmGlobalDetails\\\",\\\"stripeID\\\"]],[[[1,\\\"                \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    Stripe\\\\n                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    \\\"],[11,3],[24,6,\\\"https://billing.stripe.com/\\\"],[4,[38,16],[[30,0],\\\"goToStripePortal\\\"],null],[12],[1,\\\"View Stripe details\\\"],[13],[1,\\\"\\\\n                    \\\"],[8,[39,31],null,[[\\\"@loading\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,0,[\\\"redirecting\\\"]],[30,0,[\\\"redirectingFailed\\\"]],true]],null],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    Xero\\\\n                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,3],[15,6,[29,[\\\"https://go.xero.com/Contacts/View/\\\",[30,0,[\\\"selectedFirmGlobalDetails\\\",\\\"xeroID\\\"]]]]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"View in Xero\\\\n                      \\\"],[10,\\\"i\\\"],[14,0,\\\"subdued-fal fal fa-external-link-alt\\\"],[12],[13],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  Address\\\\n                  \\\"],[8,[39,30],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                    Please use newlines and format the address like you would on an envelope. If the firm has multiple offices, this is just their primary office address.\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,32],null,[[\\\"@model\\\"],[[30,0,[\\\"selectedFirmGlobalDetails\\\",\\\"address\\\"]]]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  ABN / NZ Business Number\\\\n                  \\\"],[8,[39,30],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                    This should be set out in the contract. If not, refer to the following sites:\\\\n                    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                    \\\"],[10,3],[14,6,\\\"http://abr.business.gov.au/\\\"],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"Australian Business Register lookup\\\\n                      \\\"],[10,\\\"i\\\"],[14,0,\\\"subdued-fal fal fa-external-link-alt\\\"],[12],[13],[13],[1,\\\"\\\\n                    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                    \\\"],[10,3],[14,6,\\\"https://www.nzbn.govt.nz/\\\"],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"New Zealand business lookup \\\"],[10,\\\"i\\\"],[14,0,\\\"subdued-fal fal fa-external-link-alt\\\"],[12],[13],[13],[1,\\\"\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,7],null,[[\\\"@model\\\"],[[30,0,[\\\"selectedFirmGlobalDetails\\\",\\\"abn\\\"]]]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  All contracts terminated\\\\n                  \\\"],[8,[39,30],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                    When a termination date is added to a practice area, this will be set if all other practice areas are terminated. Please note, this can not be updated manually.\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,33],null,[[\\\"@model\\\",\\\"@disabled\\\"],[[30,0,[\\\"selectedFirmGlobalDetails\\\",\\\"allContractsTerminated\\\"]],true]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  Send invoices (noting that invoices will only be sent once a firm is ‘live’)\\\\n                  \\\"],[8,[39,30],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                    For a firm to receive invoices for a given practice area, the global 'send invoices' setting must be on, AND the practice area 'send invoices' setting must be\\\\n                    on, AND the practice area 'went live' date must be set. You would normally only disable this setting if a firm has cancelled all its subscription, or if you\\\\n                    want to make sure that no invoices go out in a particular month, for some reason.\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,33],null,[[\\\"@model\\\"],[[30,0,[\\\"selectedFirmGlobalDetails\\\",\\\"sendInvoices\\\"]]]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"selectedFirmSettings\\\",\\\"global\\\"]],[[[1,\\\"                \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    Enable automatic invoice payments\\\\n                    \\\"],[8,[39,30],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                      If enabled, and the firm has a default card set in Stripe, payments will automatically be charged.\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    \\\"],[8,[39,33],null,[[\\\"@model\\\",\\\"@onChange\\\"],[[30,0,[\\\"selectedFirmSettings\\\",\\\"global\\\",\\\"settings\\\",\\\"invoiceDirectDebit\\\"]],[28,[37,16],[[30,0],\\\"onInvoiceDirectDebitChange\\\"],null]]],null],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  Person / people who will review the monthly billing report\\\\n                  \\\"],[8,[39,30],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                    The name, or names, or the people to whom our emails will be addressed. You should provide something that can sensibly fill this blank: \\\\\\\"Dear ______,\\\\\\\".\\\\n                    Please don't have any extra spaces at the start or end.\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,7],null,[[\\\"@model\\\",\\\"@placeholder\\\"],[[30,0,[\\\"selectedFirmGlobalDetails\\\",\\\"generalContactNames\\\"]],\\\"Eg, John and Susan\\\"]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  Emails of that person / those people\\\\n                  \\\"],[8,[39,30],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                    The email addresses of the person or people referred to above. If there are multiple email addresses, separate them with a comma and a space, like so:\\\\n                    first@firm.com.au, second@firm.com.au\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,34],null,[[\\\"@model\\\",\\\"@allowMultipleEmails\\\",\\\"@placeholder\\\"],[[30,0,[\\\"selectedFirmGlobalDetails\\\",\\\"generalContactEmails\\\"]],true,\\\"One or more email addresses\\\"]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"selectedFirmGlobalDetails\\\",\\\"stripeID\\\"]]],[[[1,\\\"                \\\"],[10,\\\"tr\\\"],[14,1,\\\"global-accountsPayableNames\\\"],[15,0,[52,[51,[30,0,[\\\"selectedFirmGlobalDetails\\\",\\\"accountsPayableNames\\\"]]],\\\"highlight-required-fields\\\"]],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    Person / people to whom invoices will be sent\\\\n                    \\\"],[8,[39,30],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                      The name, or names, or the people to whom our invoies will be sent. You should provide something that can sensibly fill this blank: \\\\\\\"Dear ______,\\\\\\\".\\\\n                      Please don't have any extra spaces at the start or end.\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    \\\"],[8,[39,7],null,[[\\\"@model\\\",\\\"@placeholder\\\"],[[30,0,[\\\"selectedFirmGlobalDetails\\\",\\\"accountsPayableNames\\\"]],\\\"Eg, Peter and the accounts team\\\"]],null],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"tr\\\"],[14,1,\\\"global-accountsPayableEmails\\\"],[15,0,[52,[51,[30,0,[\\\"selectedFirmGlobalDetails\\\",\\\"accountsPayableEmails\\\"]]],\\\"highlight-required-fields\\\"]],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    Emails of that person / those people\\\\n                    \\\"],[8,[39,30],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                      The email addresses of the person or people referred to above. If there are multiple email addresses, separate them with a comma and a space, like so:\\\\n                      first@firm.com.au, second@firm.com.au\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    \\\"],[8,[39,34],null,[[\\\"@model\\\",\\\"@allowMultipleEmails\\\",\\\"@placeholder\\\"],[[30,0,[\\\"selectedFirmGlobalDetails\\\",\\\"accountsPayableEmails\\\"]],true,\\\"One or more email addresses\\\"]],null],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  Timezone\\\\n                  \\\"],[8,[39,30],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                    The timezone of the firm's primary office.\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,36],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"\\\",[30,0,[\\\"selectedFirmGlobalDetails\\\",\\\"timezone\\\"]],\\\"timezone\\\",[30,0,[\\\"timezones\\\"]],\\\"value\\\",\\\"value\\\"]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  Currency\\\\n                  \\\"],[8,[39,30],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                    The currency in which we are invoicing this customer.\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,36],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"\\\",[30,0,[\\\"selectedFirmGlobalDetails\\\",\\\"currency\\\"]],\\\"currency\\\",[30,0,[\\\"currencies\\\"]],\\\"value\\\",\\\"value\\\"]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  Charge GST\\\\n                  \\\"],[8,[39,30],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                    Should we charge GST to this customer? The general rule is that if the customer is Australian, we DO charge GST, but if the customer is not Australian, we DO\\\\n                    NOT charge GST.\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,33],null,[[\\\"@model\\\"],[[30,0,[\\\"selectedFirmGlobalDetails\\\",\\\"hasGST\\\"]]]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  GST/VAT region\\\\n                  \\\"],[8,[39,30],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                    We have different GST/VAT obligations in different regions. Choose their region and we will automatically calculate the right amount. Note that this\\\\n                    \\\"],[10,\\\"i\\\"],[12],[1,\\\"should\\\"],[13],[1,\\\"\\\\n                    be set correctly when the firm is created.\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,36],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"\\\",[30,0,[\\\"selectedFirmGlobalDetails\\\",\\\"gstCode\\\"]],\\\"gst code\\\",[30,0,[\\\"gstCodes\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  Suppress Unseen Client warnings\\\\n                  \\\"],[8,[39,30],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                    This is a bit of a niche setting, and is almost always disabled. \\\\\\\"Unseen client warnings\\\\\\\" are the emails we sent to a firm if a client requests an appointment\\\\n                    and the firm hasn't run a conflict check within one business day. However, some firms never run the conflict check until the day of the client's appointment.\\\\n                    For such firms, sending a reminder to complete a conflict check would just be annoying.\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,33],null,[[\\\"@model\\\"],[[30,0,[\\\"selectedFirmGlobalDetails\\\",\\\"supressUnseenClientWarnings\\\"]]]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"selectedFirmPracticeAreaDetails\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,14],[[28,[37,14],[[30,0,[\\\"selectedFirmPracticeAreaDetails\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[10,\\\"h2\\\"],[12],[1,\\\"Practice Area: \\\"],[1,[30,3,[\\\"practiceArea\\\"]]],[13],[1,\\\"\\\\n            \\\"],[10,\\\"table\\\"],[14,0,\\\"settings\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,12],[[30,0,[\\\"selectedFirmSettings\\\"]],[30,3,[\\\"practiceArea\\\"]]],null],[[[1,\\\"                  \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                      System type\\\\n                    \\\"],[13],[1,\\\"\\\\n                    \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                      \\\"],[8,[39,36],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\",\\\"@onChange\\\",\\\"@disabled\\\"],[\\\"\\\",[28,[37,12],[[28,[37,12],[[30,0,[\\\"selectedFirmSettings\\\"]],[30,3,[\\\"practiceArea\\\"]]],null],\\\"webapp\\\"],null],\\\"system type\\\",[30,0,[\\\"webappTypes\\\"]],\\\"label\\\",\\\"value\\\",[28,[37,16],[[30,0],\\\"onWebappTypeChange\\\",[30,3,[\\\"practiceArea\\\"]]],null],true]],null],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    Lawyer count\\\\n                    \\\"],[8,[39,30],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                      How many lawyers do they have practising\\\\n                      \\\"],[1,[30,3,[\\\"practiceArea\\\"]]],[1,\\\"\\\\n                      law? We don't have to be exact — look at their website and/or at their practice integration plan. Currently, the purpose of collecting this information\\\\n                      is to help us gauge revenue per lawyer, matters per lawyer, etc, in order to determine the health of a particular firm.\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    \\\"],[8,[39,37],null,[[\\\"@model\\\",\\\"@min\\\",\\\"@placeholder\\\"],[[30,3,[\\\"lawyerCount\\\"]],0,[28,[37,38],[\\\"Number of lawyers who practice \\\",[30,3,[\\\"practiceArea\\\"]],\\\" law\\\"],null]]],null],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    Monthly licence fee\\\\n                    \\\"],[8,[39,30],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                      If the contract specifies a single monthly licence fee, across multiple practice areas, we should divide it evenly. Eg if it's $199/month for Family Law and\\\\n                      Wills, apportion it $99.50 for Family, and $99.50 for Wills.\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    \\\"],[8,[39,37],null,[[\\\"@model\\\",\\\"@nocommas\\\",\\\"@placeholder\\\"],[[30,3,[\\\"licenceFeeInCents\\\"]],true,\\\"Amount in cents\\\"]],null],[1,\\\"\\\\n                    Which corresponds to\\\\n                    \\\"],[10,\\\"b\\\"],[12],[8,[39,39],null,[[\\\"@model\\\",\\\"@firm\\\"],[[30,3,[\\\"licenceFeeInCents\\\"]],[30,0,[\\\"selectedFirmGlobalDetails\\\"]]]],null],[13],[1,\\\"\\\\n\\\\n                    \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,3,[\\\"licenceFeeChanged\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                      \\\"],[10,\\\"br\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-exclamation-triangle tight\\\"],[12],[13],[1,\\\"\\\\n                      \\\"],[10,\\\"b\\\"],[12],[1,\\\"When should the change from\\\\n                        \\\"],[8,[39,39],null,[[\\\"@model\\\",\\\"@firm\\\"],[[30,3,[\\\"currentFee\\\"]],[30,0,[\\\"selectedFirmGlobalDetails\\\"]]]],null],[1,\\\"\\\\n                        to\\\\n                        \\\"],[8,[39,39],null,[[\\\"@model\\\",\\\"@firm\\\"],[[30,3,[\\\"licenceFeeInCents\\\"]],[30,0,[\\\"selectedFirmGlobalDetails\\\"]]]],null],[1,\\\"\\\\n                        take effect?\\\"],[13],[1,\\\"\\\\n                      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                      \\\"],[8,[39,40],null,[[\\\"@utc\\\",\\\"@date\\\",\\\"@valueFormat\\\",\\\"@minDate\\\",\\\"@format\\\",\\\"@allowBlank\\\",\\\"@placeholder\\\"],[false,[30,3,[\\\"licenceFeeUpdateDate\\\"]],\\\"date\\\",[30,0,[\\\"firstDayOfThisMonth\\\"]],\\\"dddd D MMMM YYYY\\\",true,\\\"Click here to select a date\\\"]],null],[1,\\\"\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"],[44,[[28,[37,12],[[30,0,[\\\"queuedLicenceFees\\\"]],[30,3,[\\\"practiceArea\\\"]]],null]],[[[41,[30,0,[\\\"licenceFees\\\",\\\"length\\\"]],[[[1,\\\"                    \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                      \\\"],[10,\\\"td\\\"],[12],[1,\\\"Queued licence fees\\\"],[13],[1,\\\"\\\\n                      \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                        Even though the monthly licence fee is set to\\\\n                        \\\"],[8,[39,39],null,[[\\\"@model\\\",\\\"@firm\\\"],[[30,3,[\\\"licenceFeeInCents\\\"]],[30,0,[\\\"selectedFirmGlobalDetails\\\"]]]],null],[1,\\\"\\\\n                        the following licence fees are already queued in the system, and will not be overwritten. Furthermore, if a particular licence fee is dated before the firm\\\\n                        went live, it will be deleted or pro-rated based on the date the firm actually goes live.\\\\n                        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                        \\\"],[10,\\\"ul\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,14],[[28,[37,14],[[30,0,[\\\"licenceFees\\\"]]],null]],null],null,[[[1,\\\"                            \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n                              \\\"],[1,[28,[35,42],[[30,5,[\\\"displayDate\\\"]]],null]],[1,\\\":\\\\n                              \\\"],[8,[39,39],null,[[\\\"@model\\\",\\\"@firm\\\"],[[30,5,[\\\"invoiceAmountCents\\\"]],[30,0,[\\\"selectedFirmGlobalDetails\\\"]]]],null],[1,\\\"\\\\n                            \\\"],[13],[1,\\\"\\\\n\\\"]],[5]],null],[1,\\\"                        \\\"],[13],[1,\\\"\\\\n\\\\n                        \\\"],[8,[39,4],[[24,\\\"target\\\",\\\"_blank\\\"]],[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.config.lineitems\\\",[28,[37,20],null,[[\\\"firmID\\\"],[[30,0,[\\\"selectedFirmID\\\"]]]]]]],[[\\\"default\\\"],[[[[1,\\\"Click here to amend these queued licence fees\\\\n                          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-external-link tight\\\"],[12],[13]],[]]]]],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[4]]],[1,\\\"                \\\"],[10,\\\"tr\\\"],[15,1,[29,[[28,[37,12],[[30,3],\\\"practiceArea\\\"],null],\\\"-conversionGroup\\\"]]],[15,0,[52,[51,[30,3,[\\\"conversionGroup\\\"]]],\\\"highlight-required-fields\\\"]],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    Billing type\\\\n                    \\\"],[8,[39,30],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                      How is this firm being charged? The main ones are DEFAULT (we charge for every client) and UNLIMITED (we charge a fixed monthly fee for unlimited usage).\\\\n                      There is also FREE_INVITES (exactly what it sounds like) and a few other special structures negotiated on an ad-hoc basis.\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    \\\"],[8,[39,36],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"\\\",[30,3,[\\\"conversionGroup\\\"]],[28,[37,38],[\\\"billingcode-\\\",[30,3,[\\\"practiceArea\\\"]]],null],[30,3,[\\\"allBillingCodes\\\"]],\\\"groupName\\\",\\\"groupName\\\"]],null],[1,\\\"\\\\n                    \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,9],[[30,3,[\\\"conversionGroup\\\"]],[28,[37,10],[[30,3,[\\\"conversionGroupDetails\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                      \\\"],[8,[39,25],null,null,null],[1,\\\"\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n                    \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,3,[\\\"conversionGroupDetails\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,14],[[28,[37,14],[[30,3,[\\\"conversionGroupDetails\\\"]]],null]],null],null,[[[1,\\\"                        \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-\\\",[30,6,[\\\"fontawesome\\\"]]]]],[12],[13],[1,\\\"\\\\n                        \\\"],[1,[30,6,[\\\"longName\\\"]]],[1,\\\":\\\\n                        \\\"],[8,[39,39],null,[[\\\"@model\\\",\\\"@firm\\\"],[[30,6,[\\\"invoiceAmountCents\\\"]],[30,0,[\\\"selectedFirmGlobalDetails\\\"]]]],null],[1,\\\"\\\\n\\\"],[41,[51,[30,6,[\\\"allowedForInvites\\\"]]],[[[1,\\\"                          (Website users only)\\\\n\\\"]],[]],null],[41,[51,[30,6,[\\\"allowedForWebsites\\\"]]],[[[1,\\\"                          (Invited users only)\\\\n\\\"]],[]],null],[41,[30,6,[\\\"requiredBillingFlags\\\"]],[[[1,\\\"                          (\\\"],[1,[30,6,[\\\"requiredBillingFlags\\\"]]],[1,\\\"\\\\n                          only)\\\\n\\\"]],[]],null],[1,\\\"                        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[6]],null],[1,\\\"                    \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"tr\\\"],[15,1,[29,[[28,[37,12],[[30,3],\\\"practiceArea\\\"],null],\\\"-wentLive\\\"]]],[15,0,[52,[51,[30,3,[\\\"wentLive\\\"]]],\\\"highlight-required-fields\\\"]],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    Went live date\\\\n                    \\\"],[8,[39,30],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                      The day that the firm \\\\\\\"went live\\\\\\\" - basically, the day on which the firm could first use Settify properly, whether that's being able to invite their clients,\\\\n                      or having links posted on the website so they can get new clients that way.\\\\n                      \\\"],[10,\\\"br\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                      The went live date is useful for two things: First, it controls when we start invoicing the monthly licence fee. Second, it controls whether the\\\\n                      family-to-wills bridge is shown to the firm's clients (only shown once both practice areas are live).\\\\n                      \\\"],[10,\\\"br\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                      It's really important to note that this DOES NOT have any impact on whether or not the firm is ACTUALLY live. It is JUST about whether to charge the monthly\\\\n                      licence fee, and whether to enable the family-to-wills bridge. It most definitely has absolutely nothing to do with when we send the rollout invoice (that\\\\n                      always happens when the rollout starts).\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,0],[14,0,\\\"datepicker-wrapper\\\"],[12],[1,\\\"\\\\n                      \\\"],[8,[39,40],null,[[\\\"@utc\\\",\\\"@date\\\",\\\"@valueFormat\\\",\\\"@format\\\",\\\"@allowBlank\\\",\\\"@placeholder\\\"],[true,[30,3,[\\\"wentLive\\\"]],\\\"date\\\",\\\"dddd D MMMM YYYY\\\",true,\\\"Click here to select a date\\\"]],null],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"tr\\\"],[15,1,[29,[[28,[37,12],[[30,3],\\\"practiceArea\\\"],null],\\\"-contractExpiry\\\"]]],[15,0,[52,[51,[30,3,[\\\"contractExpiry\\\"]]],\\\"highlight-required-fields\\\"]],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    Contract expiry\\\\n                    \\\"],[8,[39,30],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                      When is our contract due to expire? This will often be 12 months after the date the contract was signed. Sometimes the 'term' is less than 12 months though -\\\\n                      please refer to the first page of the contract.\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,0],[14,0,\\\"datepicker-wrapper\\\"],[12],[1,\\\"\\\\n                      \\\"],[8,[39,40],null,[[\\\"@utc\\\",\\\"@date\\\",\\\"@valueFormat\\\",\\\"@format\\\",\\\"@allowBlank\\\",\\\"@placeholder\\\"],[true,[30,3,[\\\"contractExpiry\\\"]],\\\"date\\\",\\\"dddd D MMMM YYYY\\\",true,\\\"Click here to select a date\\\"]],null],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    Contract terminated date\\\\n                    \\\"],[8,[39,30],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                      If the firm has terminated their service, put the date of termination here.\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,0],[14,0,\\\"datepicker-wrapper\\\"],[12],[1,\\\"\\\\n                      \\\"],[8,[39,40],null,[[\\\"@utc\\\",\\\"@date\\\",\\\"@valueFormat\\\",\\\"@format\\\",\\\"@allowBlank\\\",\\\"@placeholder\\\"],[true,[30,3,[\\\"terminatedContract\\\"]],\\\"date\\\",\\\"dddd D MMMM YYYY\\\",true,\\\"Click here to select a date\\\"]],null],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"terminatedContract\\\"]],[[[1,\\\"                  \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                      Grace period\\\\n                      \\\"],[8,[39,30],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                        The number of days the firm will still have access to view or download clients of this practice area.\\\\n                      \\\"]],[]]]]],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                    \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                      \\\"],[8,[39,37],null,[[\\\"@model\\\",\\\"@min\\\",\\\"@max\\\",\\\"@placeholder\\\"],[[30,3,[\\\"gracePeriod\\\"]],0,90,\\\"Number of days\\\"]],null],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    Send invoices (for this practice group)\\\\n                    \\\"],[8,[39,30],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                      For a firm to receive invoices for a given practice area, the global 'send invoices' setting must be on, AND the practice area 'send invoices' setting must be\\\\n                      on, AND the practice area 'went live' date must be set. You would normally only disable this setting if a firm has cancelled all its subscription, or if you\\\\n                      want to make sure that no invoices go out in a particular month, for some reason.\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    \\\"],[8,[39,33],null,[[\\\"@model\\\"],[[30,3,[\\\"sendInvoices\\\"]]]],null],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    Disbursing the Settify fee\\\\n                    \\\"],[8,[39,30],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                      Is the firm passing the Settify fee on to its clients? If so, they are said to be \\\\\\\"disbursing it\\\\\\\". You will find this information in their marked-up Settify\\\\n                      blueprints, where there's an option for firms to either disburse the fee, or absorb it.\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    \\\"],[8,[39,33],null,[[\\\"@model\\\"],[[30,3,[\\\"disbursesFee\\\"]]]],null],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    Settify URL\\\\n                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,3],[15,6,[30,3,[\\\"settifyURL\\\"]]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,[30,3,[\\\"settifyURL\\\"]]],[1,\\\" \\\"],[10,\\\"i\\\"],[14,0,\\\"subdued-fal fal fa-external-link-alt\\\"],[12],[13],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[3]],null],[1,\\\"        \\\"]],[]]]]],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"selectedFirmRecurringFees\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,\\\"h2\\\"],[12],[1,\\\"Additional recurring fees\\\"],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,14],[[28,[37,14],[[30,0,[\\\"selectedFirmRecurringFees\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[10,\\\"li\\\"],[12],[1,[30,7,[\\\"description\\\"]]],[1,\\\":\\\\n              \\\"],[8,[39,39],null,[[\\\"@model\\\",\\\"@firm\\\"],[[30,7,[\\\"invoiceAmountCents\\\"]],[30,0,[\\\"selectedFirmGlobalDetails\\\"]]]],null],[1,\\\"\\\\n              per month\\\"],[13],[1,\\\"\\\\n\\\"]],[7]],[[[1,\\\"            None\\\\n\\\"]],[]]],[1,\\\"        \\\"]],[]]]]],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"savingChanges\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[39,25],null,null,null],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"savingChangesSuccess\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"\\\\n          Changes saved successfully\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"savingChangesError\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-exclamation-circle negative\\\"],[12],[13],[1,\\\"\\\\n          Uh oh - an error occurred!\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[42,[28,[37,14],[[28,[37,14],[[30,0,[\\\"updateFeeStatus\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,8,[\\\"successStatus\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[1,[30,0,[\\\"selectedFirmGlobalDetails\\\",\\\"name\\\"]]],[1,\\\"'s\\\\n            \\\"],[1,[30,8,[\\\"practiceArea\\\"]]],[1,\\\"\\\\n            monthly licence fee will be updated to\\\\n            \\\"],[8,[39,39],null,[[\\\"@model\\\",\\\"@firm\\\"],[[30,8,[\\\"val\\\"]],[30,0,[\\\"selectedFirmGlobalDetails\\\"]]]],null],[1,\\\"\\\\n            on\\\\n            \\\"],[1,[28,[35,42],[[30,8,[\\\"date\\\"]]],null]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\\n          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,8,[\\\"dateNotProvidedError\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            No date provided to update\\\\n            \\\"],[1,[30,0,[\\\"selectedFirmGlobalDetails\\\",\\\"name\\\"]]],[1,\\\"'s\\\\n            \\\"],[1,[30,8,[\\\"practiceArea\\\"]]],[1,\\\"\\\\n            monthly licence fee. You must provide a date on which this change will occur.\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\\n          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,8,[\\\"failureStatus\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            It looks like we failed to update\\\\n            \\\"],[1,[30,0,[\\\"selectedFirmGlobalDetails\\\",\\\"name\\\"]]],[1,\\\"'s\\\\n            \\\"],[1,[30,8,[\\\"practiceArea\\\"]]],[1,\\\"\\\\n            monthly licence fee.\\\\n            \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,10],[[30,0,[\\\"savingChanges\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              Please\\\\n              \\\"],[8,[39,4],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.config.lineitems\\\",[28,[37,20],null,[[\\\"firmID\\\"],[[30,0,[\\\"selectedFirmID\\\"]]]]]]],[[\\\"default\\\"],[[[[1,\\\"review the upcoming line items\\\"]],[]]]]],[1,\\\"\\\\n              to make sure that everything is clean. You may need to delete some pending line items to get things \\\\\\\"clean\\\\\\\", and then try again. Or, it may have all worked fine... in\\\\n              which case you may not need to do anything 🤷‍♂️\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[8]],null],[1,\\\"        \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,9],[[30,0,[\\\"anyFeeChanged\\\"]],[28,[37,10],[[30,0,[\\\"savingChanges\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          Please\\\\n          \\\"],[8,[39,4],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.config.lineitems\\\",[28,[37,20],null,[[\\\"firmID\\\"],[[30,0,[\\\"selectedFirmID\\\"]]]]]]],[[\\\"default\\\"],[[[[1,\\\"review the line items added by this change\\\"]],[]]]]],[1,\\\"\\\\n          to make sure that everything looks as you expect.\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\\n        \\\"],[11,\\\"button\\\"],[24,0,\\\"previous-button dangerous-button hvr-float-shadow hvr-grow\\\"],[24,4,\\\"button\\\"],[4,[38,16],[[30,0],\\\"revertChanges\\\"],null],[12],[1,\\\"Revert changes\\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[11,\\\"button\\\"],[24,0,\\\"next-button hvr-float-shadow hvr-grow\\\"],[24,4,\\\"button\\\"],[4,[38,16],[[30,0],\\\"saveChanges\\\"],null],[12],[1,\\\"Save changes\\\"],[13],[1,\\\"\\\\n\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,44],null,null,null]],[\\\"guess\\\",\\\"setting\\\",\\\"paDetails\\\",\\\"licenceFees\\\",\\\"f\\\",\\\"conversionOption\\\",\\\"fee\\\",\\\"statusObject\\\"],false,[\\\"animated-header\\\",\\\"div\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"i\\\",\\\"b\\\",\\\"settify-textline\\\",\\\"liquid-if\\\",\\\"and\\\",\\\"not\\\",\\\"eq\\\",\\\"get\\\",\\\"each\\\",\\\"-track-array\\\",\\\"a\\\",\\\"action\\\",\\\"br\\\",\\\"ul\\\",\\\"li\\\",\\\"hash\\\",\\\"if\\\",\\\"h3\\\",\\\"sentence-case\\\",\\\"h2\\\",\\\"loading-spinner\\\",\\\"table\\\",\\\"tbody\\\",\\\"tr\\\",\\\"td\\\",\\\"help-toggle\\\",\\\"loading-display\\\",\\\"settify-textarea\\\",\\\"check-box\\\",\\\"settify-email-input\\\",\\\"unless\\\",\\\"settify-select\\\",\\\"settify-number\\\",\\\"sum\\\",\\\"cents-to-dollars\\\",\\\"date-picker\\\",\\\"let\\\",\\\"pretty-date\\\",\\\"button\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/firms.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/frozen-record\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{outlet}}\n  \n  <AnimatedHeader>\n    {{#if this.unfrozenFailed}}\n      Frozen Record\n    {{else}}\n      Unfreezing\n    {{/if}}\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <br /><br />\n        <LiquidIf @predicate={{this.unfreezeLoading}}>\n          <LoadingSpinner />\n        </LiquidIf>\n  \n        <LiquidIf @predicate={{and this.unfrozenFailed (not this.sentEmailTo)}}>\n          <p>\n            It looks like there was an error with unfreezing that record. Please check that you are using the most recent email to unfreeze this record.\n          </p>\n  \n          <p>Alternatively, re-enter your {{this.firm.name}} email to send yourself a new one.</p>\n          <div class=\"rightalign\">\n            <SettifyEmailInput @model={{this.lawyerEmail}} @label=\"What is your email address?\" @placeholder=\"eg. laura.lawyer@yourfirm.com\" @validation={{this.lawyerEmailValid}} />\n            <button\n              type=\"button\"\n              {{action (if this.canSend \"sendEmail\" \"nullAction\")}}\n              class=\"next-button {{unless this.canSend 'disabled-button'}}\"\n              data-test-sendEmail\n            >Send</button>\n          </div>\n        </LiquidIf>\n  \n        <LoadingDisplay @loading={{this.sendingEmailLoading}} @success={{this.sentEmailTo}} @error={{this.errorSendingEmail}} @showError={{true}}>\n          A new email was sent successfully\n        </LoadingDisplay>\n      </div>\n    </div>\n  </div>\n  <SettifyFooter />\n  */\n  {\n    \"id\": \"cN9AvfQ2\",\n    \"block\": \"[[[46,[28,[37,1],null,null],null,null,null],[1,\\\"\\\\n\\\\n\\\"],[8,[39,2],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"unfrozenFailed\\\"]],[[[1,\\\"    Frozen Record\\\\n\\\"]],[]],[[[1,\\\"    Unfreezing\\\\n\\\"]],[]]]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[8,[39,6],null,[[\\\"@predicate\\\"],[[30,0,[\\\"unfreezeLoading\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[39,7],null,null,null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\\n      \\\"],[8,[39,6],null,[[\\\"@predicate\\\"],[[28,[37,8],[[30,0,[\\\"unfrozenFailed\\\"]],[28,[37,9],[[30,0,[\\\"sentEmailTo\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          It looks like there was an error with unfreezing that record. Please check that you are using the most recent email to unfreeze this record.\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[10,2],[12],[1,\\\"Alternatively, re-enter your \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\" email to send yourself a new one.\\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"rightalign\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,11],null,[[\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\",\\\"@validation\\\"],[[30,0,[\\\"lawyerEmail\\\"]],\\\"What is your email address?\\\",\\\"eg. laura.lawyer@yourfirm.com\\\",[30,0,[\\\"lawyerEmailValid\\\"]]]],null],[1,\\\"\\\\n          \\\"],[11,\\\"button\\\"],[16,0,[29,[\\\"next-button \\\",[52,[51,[30,0,[\\\"canSend\\\"]]],\\\"disabled-button\\\"]]]],[24,\\\"data-test-sendEmail\\\",\\\"\\\"],[24,4,\\\"button\\\"],[4,[38,14],[[30,0],[52,[30,0,[\\\"canSend\\\"]],\\\"sendEmail\\\",\\\"nullAction\\\"]],null],[12],[1,\\\"Send\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\\n      \\\"],[8,[39,15],null,[[\\\"@loading\\\",\\\"@success\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,0,[\\\"sendingEmailLoading\\\"]],[30,0,[\\\"sentEmailTo\\\"]],[30,0,[\\\"errorSendingEmail\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        A new email was sent successfully\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"],[8,[39,16],null,null,null]],[],false,[\\\"component\\\",\\\"-outlet\\\",\\\"animated-header\\\",\\\"if\\\",\\\"div\\\",\\\"br\\\",\\\"liquid-if\\\",\\\"loading-spinner\\\",\\\"and\\\",\\\"not\\\",\\\"p\\\",\\\"settify-email-input\\\",\\\"button\\\",\\\"unless\\\",\\\"action\\\",\\\"loading-display\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/frozen-record.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/history\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Usage History\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn firm-details\">\n        <br />\n        <div>\n          <p><small><LinkTo @route=\"admin.firms\"><i class=\"fal fa-arrow-circle-left\" />Back</LinkTo></small></p>\n        </div>\n  \n        <p>\n          Viewing\n          {{this.firmID}}:\n          {{#if (eq this.practiceArea \"global\")}}\n            <b>All</b>\n          {{else}}\n            <LinkTo @route=\"admin.history\" @query={{hash firmID=this.firmID practiceArea=\"global\"}}>\n              All\n            </LinkTo>\n          {{/if}}\n          {{#each this.model.firmPracticeAreas as |pa|}}\n            |\n            {{#if (eq this.practiceArea pa)}}\n              <b>{{pa}}</b>\n            {{else}}\n              <LinkTo @route=\"admin.history\" @query={{hash firmID=this.firmID practiceArea=pa}}>\n                {{pa}}\n              </LinkTo>\n            {{/if}}\n          {{/each}}\n        </p>\n  \n        <h2>Monthly usage</h2>\n        <table class=\"usage-history\">\n          <thead>\n            <tr>\n              <th>Year</th>\n              <th>Month</th>\n              <th title=\"The total number of users who visited the firm's Settify system, either from the website or by invitation\">Total Visitors</th>\n              <th title=\"The total number of users who either requested an appointment from the website, or completed an invitation\">Total completions</th>\n              <th title=\"The number of invitations sent out by the firm\">Invites Sent</th>\n              <th title=\"The number of invitations completed by clients\">Invites Completed</th>\n              <th title=\"The number of people who came to Settify from the firm's website\">Web Visitors</th>\n              <th title=\"The number of people who requested an appointment on Settify, having come from the firm's website\">Web Appointments</th>\n            </tr>\n          </thead>\n          <tbody>\n            {{#each this.model.leadHistory as |row|}}\n              <tr>\n                <td>{{or row.y \"NULL\"}}</td>\n                <td>{{or row.m \"NULL\"}}</td>\n                <td>{{row.totalVisitors}}</td>\n                <td>{{row.totalReferredToFirm}}</td>\n                <td>{{row.invitesSent}}</td>\n                <td>{{row.invitesCompleted}}</td>\n                <td>{{row.webLeads}}</td>\n                <td>{{row.webLeadsConverted}}</td>\n              </tr>\n            {{/each}}\n          </tbody>\n        </table>\n  \n        <h2>Link sources and performance</h2>\n        <table class=\"usage-history\">\n          <thead>\n            <tr>\n              <th title=\"The specific link or banner on the firm's website\">Link code</th>\n              <th title=\"The total number of users who visited the firm's Settify system from that source\">Total Visitors</th>\n              <th title=\"The total number of users who requested an appointment, or completed the Settify process, from that source\">Total Completions / Appointments</th>\n              <th title=\"The percentage of Completions compared to Total Visitors\">Completion %</th>\n            </tr>\n          </thead>\n          <tbody>\n            {{#each this.model.referralSources as |row|}}\n              <tr>\n                <td>\n                  {{or row.referral \"NULL\"}}\n  \n                  {{#if (eq row.referral \"userreferral\")}}\n                    (i.e., a referral from an existing Settify referral)\n                  {{else if (or (not row.referral) (eq row.referral \"directentry\"))}}\n                    (i.e., someone went to the Settify website directly,\n                    <i>or</i>\n                    the firm has not added referral tags to their links)\n                  {{else if (eq row.referral \"spouseinvite\")}}\n                    (i.e., a wills client invited their spouse to complete separately)\n                  {{else if (eq row.referral \"invitation\")}}\n                    (i.e., an invitation sent out by the law firm)\n                  {{else if (eq row.referral \"unused-invite\")}}\n                    (i.e., a non-standard invitation link that a firm sends out by email, where the recipient reached the landing page but did not progress)\n                  {{else if (eq row.referral \"trainingclient\")}}\n                    (i.e., a training client created by settify)\n                  {{else if (eq row.referral \"practiceclient\")}}\n                    (i.e., a practice client created by settify)\n                  {{else if (eq row.referral \"accountantinvite\")}}\n                    (i.e., a co-branded accountant invite)\n                  {{else if (eq row.referral \"family-separation\")}}\n                    (i.e., family law to wills bridge for a separating client)\n                  {{else if (contains row.referral \"-\")}}\n                    (most likely a banner button, showing [type of banner]-[where it was placed])\n                  {{else if (eq row.referral \"family-bfa\")}}\n                    (i.e., family law to wills bridge for a BFA client)\n                  {{/if}}\n  \n                </td>\n                <td>{{row.totalVisitors}}</td>\n                <td>{{row.totalConversions}}</td>\n                <td>{{row.conversionPercentage}}%</td>\n              </tr>\n            {{/each}}\n          </tbody>\n        </table>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"4vO6o+wE\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Usage History\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn firm-details\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,5],null,[[\\\"@route\\\"],[\\\"admin.firms\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        Viewing\\\\n        \\\"],[1,[30,0,[\\\"firmID\\\"]]],[1,\\\":\\\\n\\\"],[41,[28,[37,8],[[30,0,[\\\"practiceArea\\\"]],\\\"global\\\"],null],[[[1,\\\"          \\\"],[10,\\\"b\\\"],[12],[1,\\\"All\\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[8,[39,5],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.history\\\",[28,[37,10],null,[[\\\"firmID\\\",\\\"practiceArea\\\"],[[30,0,[\\\"firmID\\\"]],\\\"global\\\"]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            All\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[42,[28,[37,12],[[28,[37,12],[[30,0,[\\\"model\\\",\\\"firmPracticeAreas\\\"]]],null]],null],null,[[[1,\\\"          |\\\\n\\\"],[41,[28,[37,8],[[30,0,[\\\"practiceArea\\\"]],[30,1]],null],[[[1,\\\"            \\\"],[10,\\\"b\\\"],[12],[1,[30,1]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"            \\\"],[8,[39,5],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.history\\\",[28,[37,10],null,[[\\\"firmID\\\",\\\"practiceArea\\\"],[[30,0,[\\\"firmID\\\"]],[30,1]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[1,[30,1]],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]],[1]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,\\\"h2\\\"],[12],[1,\\\"Monthly usage\\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"table\\\"],[14,0,\\\"usage-history\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[12],[1,\\\"Year\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[12],[1,\\\"Month\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[14,\\\"title\\\",\\\"The total number of users who visited the firm's Settify system, either from the website or by invitation\\\"],[12],[1,\\\"Total Visitors\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[14,\\\"title\\\",\\\"The total number of users who either requested an appointment from the website, or completed an invitation\\\"],[12],[1,\\\"Total completions\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[14,\\\"title\\\",\\\"The number of invitations sent out by the firm\\\"],[12],[1,\\\"Invites Sent\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[14,\\\"title\\\",\\\"The number of invitations completed by clients\\\"],[12],[1,\\\"Invites Completed\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[14,\\\"title\\\",\\\"The number of people who came to Settify from the firm's website\\\"],[12],[1,\\\"Web Visitors\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[14,\\\"title\\\",\\\"The number of people who requested an appointment on Settify, having come from the firm's website\\\"],[12],[1,\\\"Web Appointments\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,12],[[28,[37,12],[[30,0,[\\\"model\\\",\\\"leadHistory\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,[28,[35,20],[[30,2,[\\\"y\\\"]],\\\"NULL\\\"],null]],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,[28,[35,20],[[30,2,[\\\"m\\\"]],\\\"NULL\\\"],null]],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,[30,2,[\\\"totalVisitors\\\"]]],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,[30,2,[\\\"totalReferredToFirm\\\"]]],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,[30,2,[\\\"invitesSent\\\"]]],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,[30,2,[\\\"invitesCompleted\\\"]]],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,[30,2,[\\\"webLeads\\\"]]],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,[30,2,[\\\"webLeadsConverted\\\"]]],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,\\\"h2\\\"],[12],[1,\\\"Link sources and performance\\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"table\\\"],[14,0,\\\"usage-history\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[14,\\\"title\\\",\\\"The specific link or banner on the firm's website\\\"],[12],[1,\\\"Link code\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[14,\\\"title\\\",\\\"The total number of users who visited the firm's Settify system from that source\\\"],[12],[1,\\\"Total Visitors\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[14,\\\"title\\\",\\\"The total number of users who requested an appointment, or completed the Settify process, from that source\\\"],[12],[1,\\\"Total Completions / Appointments\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[14,\\\"title\\\",\\\"The percentage of Completions compared to Total Visitors\\\"],[12],[1,\\\"Completion %\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,12],[[28,[37,12],[[30,0,[\\\"model\\\",\\\"referralSources\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                \\\"],[1,[28,[35,20],[[30,3,[\\\"referral\\\"]],\\\"NULL\\\"],null]],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,8],[[30,3,[\\\"referral\\\"]],\\\"userreferral\\\"],null],[[[1,\\\"                  (i.e., a referral from an existing Settify referral)\\\\n\\\"]],[]],[[[41,[28,[37,20],[[28,[37,21],[[30,3,[\\\"referral\\\"]]],null],[28,[37,8],[[30,3,[\\\"referral\\\"]],\\\"directentry\\\"],null]],null],[[[1,\\\"                  (i.e., someone went to the Settify website directly,\\\\n                  \\\"],[10,\\\"i\\\"],[12],[1,\\\"or\\\"],[13],[1,\\\"\\\\n                  the firm has not added referral tags to their links)\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,3,[\\\"referral\\\"]],\\\"spouseinvite\\\"],null],[[[1,\\\"                  (i.e., a wills client invited their spouse to complete separately)\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,3,[\\\"referral\\\"]],\\\"invitation\\\"],null],[[[1,\\\"                  (i.e., an invitation sent out by the law firm)\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,3,[\\\"referral\\\"]],\\\"unused-invite\\\"],null],[[[1,\\\"                  (i.e., a non-standard invitation link that a firm sends out by email, where the recipient reached the landing page but did not progress)\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,3,[\\\"referral\\\"]],\\\"trainingclient\\\"],null],[[[1,\\\"                  (i.e., a training client created by settify)\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,3,[\\\"referral\\\"]],\\\"practiceclient\\\"],null],[[[1,\\\"                  (i.e., a practice client created by settify)\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,3,[\\\"referral\\\"]],\\\"accountantinvite\\\"],null],[[[1,\\\"                  (i.e., a co-branded accountant invite)\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,3,[\\\"referral\\\"]],\\\"family-separation\\\"],null],[[[1,\\\"                  (i.e., family law to wills bridge for a separating client)\\\\n\\\"]],[]],[[[41,[28,[37,22],[[30,3,[\\\"referral\\\"]],\\\"-\\\"],null],[[[1,\\\"                  (most likely a banner button, showing [type of banner]-[where it was placed])\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,3,[\\\"referral\\\"]],\\\"family-bfa\\\"],null],[[[1,\\\"                  (i.e., family law to wills bridge for a BFA client)\\\\n                \\\"]],[]],null]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,[30,3,[\\\"totalVisitors\\\"]]],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,[30,3,[\\\"totalConversions\\\"]]],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,[30,3,[\\\"conversionPercentage\\\"]]],[1,\\\"%\\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[3]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,23],null,null,null]],[\\\"pa\\\",\\\"row\\\",\\\"row\\\"],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"i\\\",\\\"if\\\",\\\"eq\\\",\\\"b\\\",\\\"hash\\\",\\\"each\\\",\\\"-track-array\\\",\\\"h2\\\",\\\"table\\\",\\\"thead\\\",\\\"tr\\\",\\\"th\\\",\\\"tbody\\\",\\\"td\\\",\\\"or\\\",\\\"not\\\",\\\"contains\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/history.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/index\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Admin Dashboard\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <p style=\"text-align: left;\">\n          <LinkTo @route=\"admin.firms\"><i class=\"fal fa-clipboard-list\" /> Manage Firm Details</LinkTo>\n          <br />\n          <LinkTo @route=\"admin.users\"><i class=\"fal fa-user\" /> Manage Firm Users</LinkTo>\n          <br />\n          <LinkTo @route=\"admin.newfirm\"><i class=\"fal fa-glass-cheers\" /> New Firm Rollout</LinkTo>\n          <br />\n          <LinkTo @route=\"admin.welcomeemail\"><i class=\"fal fa-envelope\" /> New Firm Welcome Email</LinkTo>\n          <br />\n          <LinkTo @route=\"admin.displayemailtemplate\"><i class=\"fal fa-eye\" /> View Email Templates</LinkTo>\n          <br />\n          <LinkTo @route=\"admin.search\"><i class=\"fal fa-search\" /> User Search / Helpdesk Functions</LinkTo>\n        </p>\n      </div>\n    </div>\n  </div>\n  \n  {{outlet}}\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"cMF/csw0\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Admin Dashboard\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,2],[14,5,\\\"text-align: left;\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,3],null,[[\\\"@route\\\"],[\\\"admin.firms\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-clipboard-list\\\"],[12],[13],[1,\\\" Manage Firm Details\\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[8,[39,3],null,[[\\\"@route\\\"],[\\\"admin.users\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-user\\\"],[12],[13],[1,\\\" Manage Firm Users\\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[8,[39,3],null,[[\\\"@route\\\"],[\\\"admin.newfirm\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-glass-cheers\\\"],[12],[13],[1,\\\" New Firm Rollout\\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[8,[39,3],null,[[\\\"@route\\\"],[\\\"admin.welcomeemail\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-envelope\\\"],[12],[13],[1,\\\" New Firm Welcome Email\\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[8,[39,3],null,[[\\\"@route\\\"],[\\\"admin.displayemailtemplate\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-eye\\\"],[12],[13],[1,\\\" View Email Templates\\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[8,[39,3],null,[[\\\"@route\\\"],[\\\"admin.search\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-search\\\"],[12],[13],[1,\\\" User Search / Helpdesk Functions\\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[46,[28,[37,7],null,null],null,null,null],[1,\\\"\\\\n\\\\n\\\"],[8,[39,8],null,null,null]],[],false,[\\\"animated-header\\\",\\\"div\\\",\\\"p\\\",\\\"link-to\\\",\\\"i\\\",\\\"br\\\",\\\"component\\\",\\\"-outlet\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/index.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/invite\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    {{#if (eq this.mode \"resend\")}}\n      Re-send Email\n    {{else if (eq this.mode \"view\")}}\n      View Email\n    {{else if (eq this.mode \"change\")}}\n      Make Changes\n    {{else if this.model.client}}\n      Send Follow-up Email\n    {{else}}\n      Invite New Client\n    {{/if}}\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <br>\n        <nav class=\"small\">\n          <LinkTo @route=\"admin.invitations\"><i class=\"fal fa-arrow-circle-left\" />Back</LinkTo>\n          <LinkTo @route=\"index\"><i class=\"fal fa-home-lg-alt\" />Home</LinkTo>\n        </nav>\n        <br />\n        <LiquidIf @predicate={{not this.invitationComplete}}>\n          <p>\n            {{#if (eq this.mode \"resend\")}}\n              Please review the information below to make sure it is all correct, then click “Send” to re-send the email to\n              <span class=\"settify-sensitive\">{{this.clientFirstName}}</span>.\n            {{else if (eq this.mode \"view\")}}\n              Please click “Preview” below to see the original email that was sent to\n              <span class=\"settify-sensitive\">{{this.clientFirstName}}</span>.\n            {{else if (eq this.mode \"change\")}}\n              Please update the information below as required, then click “Send” to send an updated email to\n              <span class=\"settify-sensitive\">{{this.clientFirstName}}</span>. If you just want to update the appointment date or time, without sending an email, you can do that too.\n            {{else if this.model.client}}\n              Fill out the information below to send\n              <span class=\"settify-sensitive\">{{this.clientFirstName}}</span>\n              an email from your firm with details of their appointment, or simply an invitation to\n              {{#if this.model.client.detailedInductionComplete}}\n                return to\n              {{else}}\n                continue with\n              {{/if}}\n              the Settify induction.\n            {{else}}\n              Fill out the information below to send an invitation to get started with\n              {{this.firm.name}}\n              using the Settify induction process.\n            {{/if}}\n  \n          </p>\n          {{#if (and this.model.client.hasReceivedAppointmentEmail (not this.loading) (not this.mode))}}\n            <p>\n              <b>\n                Note that\n                <span class=\"settify-sensitive\">{{this.clientFirstName}}</span>\n                has already received an email\n                {{#if (and this.model.client.firmAppointmentTime this.model.client.firmAppointmentDate)}}\n                  setting out their appointment\n                  {{#if (not-eq this.model.client.firmAppointmentTime \"True\")}}\n                    for\n                    {{this.model.client.firmAppointmentTime}}\n                    on\n                    {{this.model.client.firmAppointmentDate}}\n                  {{/if}}.\n                {{else}}\n                  with a link for them to return to the Settify induction.\n                {{/if}}\n              </b>\n              If you want to send the email again, or would like to send a new email with\n              {{#if (and this.model.client.firmAppointmentTime this.model.client.firmAppointmentDate)}}\n                a different time or date,\n              {{else}}\n                appointment details,\n              {{/if}}\n              you can do so below. Otherwise, no further action is required.\n            </p>\n          {{/if}}\n          {{#if (and (not this.model.client) (gt this.availableInductions.length 1))}}\n            <p>\n              Which induction should\n              <span class=\"settify-sensitive\">{{or this.clientFirstName \"the client\"}}</span>\n              complete?\n              <div>\n                {{#if this.inductions.length}}\n                  <button type=\"button\" class=\"induction-to-add\" {{action \"removeInduction\" (get this.inductions \"0\")}}>\n                    <i class=\"fal fa-trash-alt negative\" />\n                    {{get this.inductions \"0.title\"}}\n                  </button>\n                {{else}}\n                  {{#each this.availableInductions as |induction|}}\n                    <button type=\"button\" class=\"induction-to-add\" {{action \"addInduction\" induction}}>\n                      <i class=\"fal fa-plus-circle\" />\n                      {{induction.title}}\n                    </button>\n                  {{/each}}\n                {{/if}}\n              </div>\n            </p>\n          {{/if}}\n          <div class=\"settify-form-wrapper {{if this.highlightRequiredFields 'highlight-required-fields'}}\">\n            {{#if (and this.model.client this.sendToEntityID)}}\n              <SelectOrCreateSingular\n                @label={{parse-text this.labelToDisplay touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @sourceList={{this.model.client.knownEntities}}\n                @outputList={{this.model.client.knownEntities}}\n                @addNewText=\"Someone else\"\n                @itemLabelFormat=\"firstName surname\"\n                @model={{this.sendToEntityID}}\n                @displayOnly={{this.displayOnly}}\n                @editExistingItems={{true}}\n                @itemName=\"item\"\n                @clientRecord={{this.model.client}}\n                as |item|\n              >\n                {{#if this.askForTitle}}\n                  <p><SettifySelect @label=\"Client's title\" @model={{item.title}} @name=\"title\" @content={{this.titleSelects}} @labelPath=\"label\" @valuePath=\"value\" /></p>\n                {{/if}}\n                <p><SettifyTextline @class=\"settify-sensitive\" @label=\"Client's first name\" @placeholder=\"eg, Sam\" @model={{item.firstName}} @required={{true}} /></p>\n                <p><SettifyTextline @class=\"settify-sensitive\" @label=\"Client's surname\" @placeholder=\"eg, Smith\" @model={{item.surname}} @required={{true}} /></p>\n                <p><SettifyEmailInput @class=\"settify-sensitive\" @label=\"Client's email address\" @model={{item.email}} @required={{true}} @validation={{item.email-valid}} /></p>\n              </SelectOrCreateSingular>\n            {{else}}\n              {{#if this.askForTitle}}\n                <p>\n                  <SettifySelect @label=\"Client's title\" @model={{this.clientTitle}} @name=\"title\" @content={{this.titleSelects}} @labelPath=\"label\" @valuePath=\"value\" />\n                </p>\n              {{/if}}\n  \n              <p><SettifyTextline @class=\"settify-sensitive\" @label=\"Client's first name\" @placeholder=\"eg, Sam\" @model={{this.clientFirstName}} @required={{true}} /></p>\n              <p><SettifyTextline @class=\"settify-sensitive\" @label=\"Client's surname\" @placeholder=\"eg, Smith\" @model={{this.clientSurname}} @required={{true}} /></p>\n              <p><SettifyEmailInput\n                  @class=\"settify-sensitive\"\n                  @label=\"Client's email address\"\n                  @placeholder=\"eg, client.name@gmail.com\"\n                  @model={{this.clientEmail}}\n                  @required={{true}}\n                  @validation={{this.clientEmailValid}}\n                /></p>\n  \n              {{!-- {{searched-clients-list model=retrievedSearchResults isSearching=isSearching firm=firm hideSearchResults=(action \"hideSearchResults\")}} --}}\n  \n            {{/if}}\n  \n            <div class=\"position-relative zindex-1\">\n              <LawyerSelect\n                @label=\"Which lawyer will be assisting this client?\"\n                @forceLawyer={{this.forceLawyer}}\n                @lawyerName={{this.lawyerName}}\n                @lawyerEmail={{this.lawyerEmail}}\n                @lawyerEmailValid={{this.lawyerEmailValid}}\n                @lawyerBCCs={{this.lawyerBCCs}}\n                @lawyerCCs={{this.lawyerCCs}}\n                @lawyerBio={{this.lawyerBio}}\n                @lawyerReadMoreURL={{this.lawyerReadMoreURL}}\n                @lawyerPhotoURL={{this.lawyerPhotoURL}}\n                @lawyerDetails={{this.lawyerDetails}}\n                @noPAs={{true}}\n                @allPracticeAreas={{false}}\n                @prompt=\"No lawyer has been assigned yet\"\n                @selectablePrompt={{true}}\n              />\n            </div>\n  \n            <LiquidIf @predicate={{and this.lawyerName this.inductions.length}}>\n              <LiquidIf @predicate={{or this.sendFrom this.showEditSendToDetails (and this.emailSenderNameInviteInformation this.useInviteInformation)}}>\n                <p>\n                  <small>\n                    Email to be sent from\n                    {{#if (and this.useInviteInformation this.emailSenderNameInviteInformation (not this.showEditSendToDetails))}}\n                      {{this.emailSenderNameInviteInformation}}\n                    {{else}}\n                      {{this.sendFrom.name}}\n                    {{/if}}\n                    (\n                    <CheckBox @model={{this.showEditSendToDetails}} @class=\"toggle-box inline\">\n                      {{#if this.showEditSendToDetails}}\n                        hide\n                      {{else}}\n                        edit\n                      {{/if}}\n                    </CheckBox>\n                    )\n                    <LiquidIf @predicate={{this.showEditSendToDetails}}>\n                      <LawyerSelect\n                        @lawyerDetails={{this.customSendFrom}}\n                        @noLawyers={{true}}\n                        @allPracticeAreas={{false}}\n                        @prompt=\"-- select --\"\n                        @refreshToggle={{this.lawyerDetails}}\n                        @hideConfigLink={{true}}\n                      />\n                    </LiquidIf>\n                  </small>\n                </p>\n              </LiquidIf>\n              {{#if this.updateSettings}}\n                <LiquidIf @predicate={{this.secondLawyer}}>\n                  <LawyerSelect\n                    @label=\"Which other lawyer will be assisting this client?\"\n                    @forceLawyer={{this.forceSecondLawyer}}\n                    @lawyerName={{this.secondLawyerName}}\n                    @lawyerEmail={{this.secondLawyerEmail}}\n                    @lawyerEmailValid={{this.lawyerEmailValid}}\n                    @lawyerBCCs={{this.secondLawyerBCCs}}\n                    @lawyerCCs={{this.secondLawyerCCs}}\n                    @lawyerBio={{this.secondLawyerBio}}\n                    @lawyerReadMoreURL={{this.secondLawyerReadMoreURL}}\n                    @lawyerPhotoURL={{this.secondLawyerPhotoURL}}\n                    @lawyerDetails={{this.secondLawyerDetails}}\n                    @noPAs={{true}}\n                    @allPracticeAreas={{false}}\n                    @prompt=\"No lawyer has been assigned yet\"\n                    @selectablePrompt={{true}}\n                    @hideConfigLink={{true}}\n                  />\n  \n                </LiquidIf>\n  \n                <p>\n                  <small>\n                    <a class=\"clickable\" {{action \"addSecondLawyer\"}}>\n                      <i class=\"fal {{if this.secondLawyer 'fa-minus-circle' 'fa-plus-circle'}}\"></i>{{if this.secondLawyer \"Remove\" \"Add\"}}\n                      second lawyer\n                    </a>\n                  </small>\n                </p>\n              {{/if}}\n              <p>\n                Appointment date (leave this blank if no appointment has been made)\n                <DatePicker @date={{this.appointmentDate}} @valueFormat=\"date\" @format=\"dddd D MMMM YYYY\" @allowBlank={{true}} @placeholder=\"Click here to select a date\" />\n              </p>\n              <LiquidIf @predicate={{this.appointmentDate}}>\n                <p>\n                  Appointment time\n                  <div class={{unless this.appointmentTime \"can-highlight\"}}>\n                    <TimePicker @onChange={{action \"onTimePicked\"}} @options={{this.timepickerOptions}} @placeholder=\"Click here to select a time\" />\n                  </div>\n                </p>\n  \n                {{#if (gt this.availableOffices.length 1)}}\n                  <p>\n                    <SettifySelect\n                      @label=\"Appointment location\"\n                      @model={{this.selectedOfficeIdx}}\n                      @name=\"lawyer\"\n                      @content={{this.availableOffices}}\n                      @labelPath=\"label\"\n                      @valuePath=\"value\"\n                    />\n                  </p>\n                {{/if}}\n                <p>\n                  <CheckBox @model={{this.sendCalendarInvite}}>\n                    Include a calendar appointment in the email to\n                    <span class=\"settify-sensitive\">{{this.clientFirstName}}</span>\n                  </CheckBox>\n                </p>\n                <p>\n                  <CheckBox @model={{this.initialPhoneMeeting}}>\n                    The initial meeting will be conducted by telephone / videoconference\n                  </CheckBox>\n                  <LiquidIf @predicate={{this.initialPhoneMeeting}}>\n                    <div class=\"phone-meeting-settings\">\n                      <p>\n                        <CheckBox @model={{this.includePhoneMeetingMessage}}>\n                          Include additional information or instructions about the meeting in the email\n                        </CheckBox>\n                        <LiquidIf @predicate={{this.includePhoneMeetingMessage}}>\n                          <SettifyTextarea @model={{this.phoneMeetingMessage}} />\n                        </LiquidIf>\n                      </p>\n                      <p>\n                        <CheckBox @model={{this.includeMeetingHyperlink}}>\n                          Add hyperlink to the invitation email\n                        </CheckBox>\n                        <LiquidIf @predicate={{this.includeMeetingHyperlink}}>\n                          <SettifyTextline @model={{this.hyperlinkURL}} @label=\"Unique video conference link (include the 'https://www.' prefix)\" />\n                          <LiquidIf @predicate={{and this.hyperlinkURL (not this.hyperlinkParsed)}}>\n                            <small>That doesn't look like a valid URL</small>\n                          </LiquidIf>\n                          <SettifyTextline @model={{this.hyperlinkText}} @label=\"Add text your client will see here (e.g. 'click here to join the meeting room')\" />\n                          <LiquidIf @predicate={{this.sendCalendarInvite}}>\n                            <CheckBox @model={{this.includeAsAppointmentLocation}}>\n                              Include this link as the meeting location on the calendar appointment\n                            </CheckBox>\n                          </LiquidIf>\n                        </LiquidIf>\n                      </p>\n  \n                      {{#if (and this.phoneMeetingAttachments this.phoneMeetingAttachments.length)}}\n                        <p>\n                          <CheckBox @model={{this.includePhoneMeetingAttachments}}>\n                            Attach your standard telephone / videoconference instruction document{{if (gt this.phoneMeetingAttachments.length 1) \"s\"}}\n                            to the email ({{this.attachmentsToString this.phoneMeetingAttachments \"; \"}})\n                          </CheckBox>\n                        </p>\n                      {{/if}}\n  \n                      <p>\n                        <small>These defaults can be configured in your <LinkTo @route=\"admin.config.invitations\">Invitations settings screen</LinkTo></small>\n                      </p>\n                    </div>\n                  </LiquidIf>\n                </p>\n  \n                {{#if this.model.client.detailedInductionComplete}}\n                  <p>\n                    <CheckBox @model={{this.forceIncludeSettifyButton}}>\n                      Include a link to revisit the Settify induction\n                    </CheckBox>\n                  </p>\n                {{/if}}\n              </LiquidIf>\n            </LiquidIf>\n            {{!-- DISABLED BY DEFAULT - ABILITY TO ADD EXTRA CC addresses\n            <p>\n              {{#check-box model=includeAdditionalCCs}}\n                CC an additional email address\n              {{/check-box}}\n              <LiquidIf @predicate={{includeAdditionalCCs}}>\n                <small>To CC multiple email addresses, simply separate them with a comma</small>\n                {{settify-textarea model=additionalCCsText placeholder=\"email@one.com, email@two.com\"}}\n              </LiquidIf>\n            </p>\n            --}}\n  \n            {{#if (and this.inductions.length (or (eq (get this.inductions \"0.practiceArea\") \"Estates\") (eq (get this.inductions \"0.practiceArea\") \"Probate\")))}}\n              <p>\n                <CheckBox @model={{this.lawFirmAlreadyHasWill}} @disabled={{this.model.client.lawFirmHasWill}}>\n                  {{this.firm.name}}\n                  has the will\n                </CheckBox>\n              </p>\n            {{/if}}\n  \n            <p>\n              <CheckBox @model={{this.conflictCheckPerformed}} @disabled={{and this.model.client (eq this.model.client.conflictCheck \"noconflict\")}}>\n                A conflict check has already been performed, and\n                {{this.firm.name}}\n                is able to act for this client\n              </CheckBox>\n            </p>\n          </div>\n        </LiquidIf>\n  \n        <LiquidIf @predicate={{this.loading}}>\n          <LoadingSpinner />\n        </LiquidIf>\n        <LiquidIf @predicate={{this.errorMessage}}>\n          {{#if (eq this.errorMessage \"nobutton\")}}\n            <p>\n              <b>Hmm...</b>\n              It looks like this email is missing the link to get started on Settify.\n            </p>\n            <p>\n              If you've deleted it by accident, simply copy and paste\n              <samp>[SETTIFY BUTTON]</samp>\n              into your email where the button should appear.\n            </p>\n            <p>\n              Once the Settify link has been added to the email, please click Try Again, below.\n            </p>\n          {{else}}\n            <p>\n              <strong>Uh oh,</strong>\n              it looks like an error might have occurred. If the email doesn't come through, please click \"Try again\" below. The email should have gone to the following people at\n              your firm:\n            </p>\n            <p>\n              <ul>\n                {{#each this.emailCCs as |cc|}}\n                  <li>{{cc}}</li>\n                {{/each}}\n                {{#each this.emailBCCs as |bcc|}}\n                  <li>{{bcc}}</li>\n                {{/each}}\n              </ul>\n            </p>\n          {{/if}}\n        </LiquidIf>\n        <LiquidIf @predicate={{and this.mode this.allowOptionToSaveWithoutSending (not this.savingChangesSuccess) (not this.invitationComplete) (not this.loading)}}>\n          <p class=\"rightalign\">\n            <button type=\"button\" class=\"next-button hvr-float-shadow hvr-grow\" {{action \"saveChanges\"}}>\n              Save only\n            </button>\n          </p>\n          {{#if this.savingChanges}}\n            <LoadingSpinner />\n          {{/if}}\n        </LiquidIf>\n        <LiquidIf @predicate={{and this.savingChangesSuccess (not this.invitationComplete) (not this.loading)}}>\n          <p class=\"rightalign\">\n            <i class=\"fal fa-check-circle\" />\n            Changes saved\n          </p>\n        </LiquidIf>\n        <LiquidIf @predicate={{not this.invitationComplete}}>\n          {{#if (and this.model.client.invitationInformation.editingCustomEmailBody (eq this.mode \"change\"))}}\n            <p>\n              <b class=\"negative\">Important Note:</b>\n              The last time you sent a Settify email to\n              <span class=\"settify-sensitive\">{{this.model.client.firstName}}</span>, you manually edited the body of the email. We don't want you to lose those changes. Therefore,\n              you will need to manually update the text below to reflect any changes you have made (eg, a new appointment time) before clicking 'Save and send'.\n            </p>\n            <p>\n              Alternatively, you can discard your custom message and return to the automatic email system, using the link at the bottom of the page, but you will lose any\n              customisations you made the standard email copy.\n            </p>\n          {{/if}}\n          <p class=\"rightalign\">\n            <button\n              type=\"button\"\n              class=\"next-button hvr-float-shadow hvr-grow {{unless this.canInvite 'disabled-button'}}\"\n              {{action (if this.canInvite \"inviteClient\" \"nullAction\")}}\n            >\n              {{#if this.errorMessage}}\n                Try again\n              {{else}}\n                {{#if this.model.client}}\n                  Save and send\n                {{else}}\n                  Invite\n                {{/if}}\n              {{/if}}\n            </button>\n          </p>\n          <p class=\"rightalign\">\n            {{#if (and this.model.client (not this.invitationComplete))}}\n              <ResumeLinkWidget @model={{this.model.client}} @small={{true}} />\n            {{/if}}\n          </p>\n          {{!-- {{#unless model.client}}\n            <p style=\"text-align: right; float: none; clear: both;\">\n              <small>\n                By clicking the Invite button, you confirm that\n                {{#if clientName}}\n                  {{clientName}}\n                {{else}}\n                  this client\n                {{/if}}\n                would reasonably be expecting to receive an email from you.\n                You must not use the Invite feature to \"cold call\", spam, or otherwise attempt to solicit new clients.\n              </small>\n            </p>\n          {{/unless}} --}}\n  \n        </LiquidIf>\n        <LiquidIf @predicate={{this.invitationComplete}}>\n          <p>\n            <i class=\"fal fa-check-circle\" />\n            We've sent an email to\n            <span class=\"settify-sensitive\">{{this.clientFirstName}}</span>\n            {{#if (and this.appointmentDate this.appointmentTime)}}\n              with details of their appointment.\n            {{else}}\n              inviting them to use Settify.\n            {{/if}}\n          </p>\n          <p>\n            Sometimes, our automated emails end up in a user's 'spam' or 'junk mail' folder. If you or\n            <span class=\"settify-sensitive\">{{this.clientFirstName}}</span>\n            have not received the email within a few minutes, please check in those folders.\n          </p>\n          {{#if (and this.model.client this.model.client.detailedInductionCommenced)}}\n            <p>\n              <LinkTo @route=\"admin.clients\" @model={{this.model.client.clientID}}>Click here to return to the client's record.</LinkTo>\n            </p>\n          {{else}}\n            <p>\n              <LinkTo @route=\"admin.invitations\">Click here to return to the list of invitations.</LinkTo>\n            </p>\n          {{/if}}\n  \n        </LiquidIf>\n  \n        <LiquidIf @predicate={{and (not this.invitationComplete) this.canInvite}}>\n          <p>\n            <a class=\"clickable\" {{action \"toggle\" \"showPreview\"}}>\n              <i class=\"fal {{if this.showPreview 'fa-minus-circle' 'fa-plus-circle'}}\" />\n              <b>{{if this.showPreview \"Hide\" \"Show\"}} preview</b>\n            </a>\n          </p>\n          <div class=\"preview-email settify-sensitive {{if this.showPreview 'fadein' 'hidden'}}\">\n            <p>\n              <b>To:</b>\n              {{this.clientFirstName}}\n              {{this.clientSurname}}\n              &lt;{{this.clientEmail}}&gt;\n              <br />\n              <b>From:</b>\n              {{this.emailSenderName}}\n              (via Settify) &lt;{{this.emailSenderEmail}}&gt;<br />\n              {{#if this.emailCCs.length}}\n                <b>CC:</b>\n                {{this.emailsToString this.emailCCs}}\n                <br />\n              {{/if}}\n              {{#if this.emailBCCs.length}}\n                <b>BCC:</b>\n                {{this.emailsToString this.emailBCCs}}\n                <br />\n              {{/if}}\n  \n              <b>Subject:</b>\n              {{this.emailSubject}}\n  \n              {{#if this.allAttachments}}\n                <br /><b>Attachments:</b>\n                {{this.attachmentsToString this.allAttachments}}\n              {{/if}}\n            </p>\n            <p class=\"centertext\">\n              <br />\n              <img height=\"120\" width=\"auto\" class=\"firm-logo\" src={{this.firm.logoURL}} alt=\"{{this.firm.name}}\" />\n            </p>\n            <div id=\"preview-email-body\">\n              {{#if this.editingCustomEmailBody}}\n                <p>\n                  <small>\n                    Compose your email in the box below. The word\n                    <samp>[SETTIFY BUTTON]</samp>\n                    shows where the clickable button will go to begin the online induction. The word\n                    <samp>[LAWYER BIOGRAPHY]</samp>\n                    shows where the lawyer's biography will go (if present).\n                  </small>\n                </p>\n                <SettifyTextarea @model={{this.inviteEmailCustomBody}} @rows={{15}} @max={{32000}} />\n                <p>\n                  <small>\n                    <CheckBox @model={{this.showCancelCustomMessageBody}} @class=\"toggle-box inline\">\n                      Click here to discard your custom message and return to the automatic email system\n                    </CheckBox>\n                  </small>\n                  <LiquidIf @predicate={{this.showCancelCustomMessageBody}}>\n                    <small>\n                      Are you sure? You will lose any manual changes you have made to the email content.\n                      <br />\n                      <a class=\"clickable\" {{action \"cancelCustomMessageBody\"}}>Yes, I'm sure</a>\n                      <br />\n                      <CheckBox @model={{this.showCancelCustomMessageBody}} @class=\"toggle-box inline\">\n                        Actually, I'll keep editing my custom message\n                      </CheckBox>\n                    </small>\n                  </LiquidIf>\n                </p>\n              {{else}}\n                {{#if this.showCustomInvitationEmail}}\n                  <div id=\"preview-email-css-wrapper\">\n                    <Invitation::Email\n                      @firm={{this.firm}}\n                      @clientFirstName={{this.clientFirstName}}\n                      @lawyerName={{this.lawyerName}}\n                      @lawyerBio={{this.lawyerBio}}\n                      @lawyerPhotoURL={{this.lawyerPhotoURL}}\n                      @lawyerBioHeading={{this.lawyerBioHeading}}\n                      @lawyerReadMoreURL={{this.lawyerReadMoreURL}}\n                      @secondLawyerName={{this.secondLawyerName}}\n                      @secondLawyerBio={{this.secondLawyerBio}}\n                      @secondLawyerPhotoURL={{this.secondLawyerPhotoURL}}\n                      @secondLawyerBioHeading={{this.secondLawyerBioHeading}}\n                      @secondLawyerReadMoreURL={{this.secondLawyerReadMoreURL}}\n                      @appointmentDate={{this.appointmentDate}}\n                      @appointmentTime={{this.appointmentTime}}\n                      @formattedAppointmentDate={{this.formattedAppointmentDate}}\n                      @selectedOffice={{this.selectedOffice}}\n                      @initialPhoneMeeting={{this.initialPhoneMeeting}}\n                      @includePhoneMeetingMessage={{this.includePhoneMeetingMessage}}\n                      @phoneMeetingMessage={{this.phoneMeetingMessage}}\n                      @formattedPhoneMeetingMessage={{this.formattedPhoneMeetingMessage}}\n                      @hyperlinkParsed={{this.hyperlinkParsed}}\n                      @hyperlinkText={{this.hyperlinkText}}\n                      @model={{this.model.client}}\n                      @inductions={{this.inductions}}\n                      @forceIncludeSettifyButton={{this.forceIncludeSettifyButton}}\n                      @buttonLabel={{this.buttonLabel}}\n                      @showOptionalExtra={{this.showOptionalExtra}}\n                      @formattedOptionalMessage={{this.formattedOptionalMessage}}\n                      @optionalExtraMessage={{this.optionalExtraMessage}}\n                      @toggleOptionalExtra={{action \"toggleOptionalExtra\"}}\n                      @previewOptionalExtra={{action \"previewOptionalExtra\"}}\n                      @emailSenderName={{this.emailSenderName}}\n                      @emailSenderTitle={{this.emailSenderTitle}}\n                      @emailSenderEmail={{this.emailSenderEmail}}\n                      @emailSenderPhone={{this.emailSenderPhone}}\n                      @lawyerDetails={{this.lawyerDetails}}\n                    />\n                  </div>\n                {{else}}\n                  <InviteNewClientEmail\n                    @model={{this.model}}\n                    @firm={{this.firm}}\n                    @clientFirstName={{this.clientFirstName}}\n                    @lawyerName={{this.lawyerName}}\n                    @appointmentDate={{this.appointmentDate}}\n                    @appointmentTime={{this.appointmentTime}}\n                    @formattedAppointmentDate={{this.formattedAppointmentDate}}\n                    @formattedPhoneMeetingMessage={{this.formattedPhoneMeetingMessage}}\n                    @initialPhoneMeeting={{this.initialPhoneMeeting}}\n                    @availableOffices={{this.availableOffices}}\n                    @selectedOffice={{this.selectedOffice}}\n                    @includePhoneMeetingMessage={{this.includePhoneMeetingMessage}}\n                    @includeMeetingHyperlink={{this.includeMeetingHyperlink}}\n                    @hyperlinkParsed={{this.hyperlinkParsed}}\n                    @hyperlinkText={{this.hyperlinkText}}\n                    @forceIncludeSettifyButton={{this.forceIncludeSettifyButton}}\n                    @buttonLabel={{this.buttonLabel}}\n                    @lawyerBio={{this.lawyerBio}}\n                    @noLawyerBios={{this.noLawyerBios}}\n                    @lawyerPhotoURL={{this.lawyerPhotoURL}}\n                    @lawyerBioHeading={{this.lawyerBioHeading}}\n                    @lawyerReadMoreURL={{this.lawyerReadMoreURL}}\n                    @secondLawyerBio={{this.secondLawyerBio}}\n                    @secondLawyerPhotoURL={{this.secondLawyerPhotoURL}}\n                    @secondLawyerBioHeading={{this.secondLawyerBioHeading}}\n                    @secondLawyerReadMoreURL={{this.secondLawyerReadMoreURL}}\n                    @secondLawyerName={{this.secondLawyerName}}\n                    @emailSenderName={{this.emailSenderName}}\n                    @emailSenderTitle={{this.emailSenderTitle}}\n                    @emailSenderPhone={{this.emailSenderPhone}}\n                    @lawyerDetails={{this.lawyerDetails}}\n                    @showOptionalExtra={{this.showOptionalExtra}}\n                    @optionalExtraMessage={{this.optionalExtraMessage}}\n                    @formattedOptionalMessage={{this.formattedOptionalMessage}}\n                    @toggleOptionalExtra={{action \"toggleOptionalExtra\"}}\n                    @previewOptionalExtra={{action \"previewOptionalExtra\"}}\n                  />\n                {{/if}}\n              {{/if}}\n            </div>\n            {{#unless this.editingCustomEmailBody}}\n              <hr />\n              <p>\n                <small>\n                  <a class=\"clickable\" {{action \"convertToCustomMessageBody\"}}>Click here to edit the entire email yourself.</a>\n                  You will lose formatting, links, and maps, but you can always come back to the automated email later, if you want.\n                </small>\n              </p>\n            {{/unless}}\n          </div>\n        </LiquidIf>\n        <br />\n        <br />\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"eF2qxeLW\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[28,[37,2],[[30,0,[\\\"mode\\\"]],\\\"resend\\\"],null],[[[1,\\\"    Re-send Email\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"mode\\\"]],\\\"view\\\"],null],[[[1,\\\"    View Email\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"mode\\\"]],\\\"change\\\"],null],[[[1,\\\"    Make Changes\\\\n\\\"]],[]],[[[41,[30,0,[\\\"model\\\",\\\"client\\\"]],[[[1,\\\"    Send Follow-up Email\\\\n\\\"]],[]],[[[1,\\\"    Invite New Client\\\\n  \\\"]],[]]]],[]]]],[]]]],[]]]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,\\\"nav\\\"],[14,0,\\\"small\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,6],null,[[\\\"@route\\\"],[\\\"admin.invitations\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,6],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-home-lg-alt\\\"],[12],[13],[1,\\\"Home\\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,9],[[30,0,[\\\"invitationComplete\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,2],[[30,0,[\\\"mode\\\"]],\\\"resend\\\"],null],[[[1,\\\"            Please review the information below to make sure it is all correct, then click “Send” to re-send the email to\\\\n            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"clientFirstName\\\"]]],[13],[1,\\\".\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"mode\\\"]],\\\"view\\\"],null],[[[1,\\\"            Please click “Preview” below to see the original email that was sent to\\\\n            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"clientFirstName\\\"]]],[13],[1,\\\".\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"mode\\\"]],\\\"change\\\"],null],[[[1,\\\"            Please update the information below as required, then click “Send” to send an updated email to\\\\n            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"clientFirstName\\\"]]],[13],[1,\\\". If you just want to update the appointment date or time, without sending an email, you can do that too.\\\\n\\\"]],[]],[[[41,[30,0,[\\\"model\\\",\\\"client\\\"]],[[[1,\\\"            Fill out the information below to send\\\\n            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"clientFirstName\\\"]]],[13],[1,\\\"\\\\n            an email from your firm with details of their appointment, or simply an invitation to\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"detailedInductionComplete\\\"]],[[[1,\\\"              return to\\\\n\\\"]],[]],[[[1,\\\"              continue with\\\\n\\\"]],[]]],[1,\\\"            the Settify induction.\\\\n\\\"]],[]],[[[1,\\\"            Fill out the information below to send an invitation to get started with\\\\n            \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\"\\\\n            using the Settify induction process.\\\\n          \\\"]],[]]]],[]]]],[]]]],[]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,12],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"hasReceivedAppointmentEmail\\\"]],[28,[37,9],[[30,0,[\\\"loading\\\"]]],null],[28,[37,9],[[30,0,[\\\"mode\\\"]]],null]],null],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[10,\\\"b\\\"],[12],[1,\\\"\\\\n              Note that\\\\n              \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"clientFirstName\\\"]]],[13],[1,\\\"\\\\n              has already received an email\\\\n\\\"],[41,[28,[37,12],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"firmAppointmentTime\\\"]],[30,0,[\\\"model\\\",\\\"client\\\",\\\"firmAppointmentDate\\\"]]],null],[[[1,\\\"                setting out their appointment\\\\n\\\"],[41,[28,[37,14],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"firmAppointmentTime\\\"]],\\\"True\\\"],null],[[[1,\\\"                  for\\\\n                  \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"firmAppointmentTime\\\"]]],[1,\\\"\\\\n                  on\\\\n                  \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"firmAppointmentDate\\\"]]],[1,\\\"\\\\n                \\\"]],[]],null],[1,\\\".\\\\n\\\"]],[]],[[[1,\\\"                with a link for them to return to the Settify induction.\\\\n\\\"]],[]]],[1,\\\"            \\\"],[13],[1,\\\"\\\\n            If you want to send the email again, or would like to send a new email with\\\\n\\\"],[41,[28,[37,12],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"firmAppointmentTime\\\"]],[30,0,[\\\"model\\\",\\\"client\\\",\\\"firmAppointmentDate\\\"]]],null],[[[1,\\\"              a different time or date,\\\\n\\\"]],[]],[[[1,\\\"              appointment details,\\\\n\\\"]],[]]],[1,\\\"            you can do so below. Otherwise, no further action is required.\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,12],[[28,[37,9],[[30,0,[\\\"model\\\",\\\"client\\\"]]],null],[28,[37,15],[[30,0,[\\\"availableInductions\\\",\\\"length\\\"]],1],null]],null],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            Which induction should\\\\n            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[28,[35,16],[[30,0,[\\\"clientFirstName\\\"]],\\\"the client\\\"],null]],[13],[1,\\\"\\\\n            complete?\\\\n            \\\"],[10,0],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"inductions\\\",\\\"length\\\"]],[[[1,\\\"                \\\"],[11,\\\"button\\\"],[24,0,\\\"induction-to-add\\\"],[24,4,\\\"button\\\"],[4,[38,18],[[30,0],\\\"removeInduction\\\",[28,[37,19],[[30,0,[\\\"inductions\\\"]],\\\"0\\\"],null]],null],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-trash-alt negative\\\"],[12],[13],[1,\\\"\\\\n                  \\\"],[1,[28,[35,19],[[30,0,[\\\"inductions\\\"]],\\\"0.title\\\"],null]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[42,[28,[37,21],[[28,[37,21],[[30,0,[\\\"availableInductions\\\"]]],null]],null],null,[[[1,\\\"                  \\\"],[11,\\\"button\\\"],[24,0,\\\"induction-to-add\\\"],[24,4,\\\"button\\\"],[4,[38,18],[[30,0],\\\"addInduction\\\",[30,1]],null],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle\\\"],[12],[13],[1,\\\"\\\\n                    \\\"],[1,[30,1,[\\\"title\\\"]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null]],[]]],[1,\\\"            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[10,0],[15,0,[29,[\\\"settify-form-wrapper \\\",[52,[30,0,[\\\"highlightRequiredFields\\\"]],\\\"highlight-required-fields\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,12],[[30,0,[\\\"model\\\",\\\"client\\\"]],[30,0,[\\\"sendToEntityID\\\"]]],null],[[[1,\\\"            \\\"],[8,[39,22],null,[[\\\"@label\\\",\\\"@sourceList\\\",\\\"@outputList\\\",\\\"@addNewText\\\",\\\"@itemLabelFormat\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@editExistingItems\\\",\\\"@itemName\\\",\\\"@clientRecord\\\"],[[28,[37,23],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"model\\\",\\\"client\\\",\\\"knownEntities\\\"]],[30,0,[\\\"model\\\",\\\"client\\\",\\\"knownEntities\\\"]],\\\"Someone else\\\",\\\"firstName surname\\\",[30,0,[\\\"sendToEntityID\\\"]],[30,0,[\\\"displayOnly\\\"]],true,\\\"item\\\",[30,0,[\\\"model\\\",\\\"client\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"askForTitle\\\"]],[[[1,\\\"                \\\"],[10,2],[12],[8,[39,24],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"Client's title\\\",[30,2,[\\\"title\\\"]],\\\"title\\\",[30,0,[\\\"titleSelects\\\"]],\\\"label\\\",\\\"value\\\"]],null],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[10,2],[12],[8,[39,25],null,[[\\\"@class\\\",\\\"@label\\\",\\\"@placeholder\\\",\\\"@model\\\",\\\"@required\\\"],[\\\"settify-sensitive\\\",\\\"Client's first name\\\",\\\"eg, Sam\\\",[30,2,[\\\"firstName\\\"]],true]],null],[13],[1,\\\"\\\\n              \\\"],[10,2],[12],[8,[39,25],null,[[\\\"@class\\\",\\\"@label\\\",\\\"@placeholder\\\",\\\"@model\\\",\\\"@required\\\"],[\\\"settify-sensitive\\\",\\\"Client's surname\\\",\\\"eg, Smith\\\",[30,2,[\\\"surname\\\"]],true]],null],[13],[1,\\\"\\\\n              \\\"],[10,2],[12],[8,[39,26],null,[[\\\"@class\\\",\\\"@label\\\",\\\"@model\\\",\\\"@required\\\",\\\"@validation\\\"],[\\\"settify-sensitive\\\",\\\"Client's email address\\\",[30,2,[\\\"email\\\"]],true,[30,2,[\\\"email-valid\\\"]]]],null],[13],[1,\\\"\\\\n            \\\"]],[2]]]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"askForTitle\\\"]],[[[1,\\\"              \\\"],[10,2],[12],[1,\\\"\\\\n                \\\"],[8,[39,24],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"Client's title\\\",[30,0,[\\\"clientTitle\\\"]],\\\"title\\\",[30,0,[\\\"titleSelects\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n            \\\"],[10,2],[12],[8,[39,25],null,[[\\\"@class\\\",\\\"@label\\\",\\\"@placeholder\\\",\\\"@model\\\",\\\"@required\\\"],[\\\"settify-sensitive\\\",\\\"Client's first name\\\",\\\"eg, Sam\\\",[30,0,[\\\"clientFirstName\\\"]],true]],null],[13],[1,\\\"\\\\n            \\\"],[10,2],[12],[8,[39,25],null,[[\\\"@class\\\",\\\"@label\\\",\\\"@placeholder\\\",\\\"@model\\\",\\\"@required\\\"],[\\\"settify-sensitive\\\",\\\"Client's surname\\\",\\\"eg, Smith\\\",[30,0,[\\\"clientSurname\\\"]],true]],null],[13],[1,\\\"\\\\n            \\\"],[10,2],[12],[8,[39,26],null,[[\\\"@class\\\",\\\"@label\\\",\\\"@placeholder\\\",\\\"@model\\\",\\\"@required\\\",\\\"@validation\\\"],[\\\"settify-sensitive\\\",\\\"Client's email address\\\",\\\"eg, client.name@gmail.com\\\",[30,0,[\\\"clientEmail\\\"]],true,[30,0,[\\\"clientEmailValid\\\"]]]],null],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"position-relative zindex-1\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,27],null,[[\\\"@label\\\",\\\"@forceLawyer\\\",\\\"@lawyerName\\\",\\\"@lawyerEmail\\\",\\\"@lawyerEmailValid\\\",\\\"@lawyerBCCs\\\",\\\"@lawyerCCs\\\",\\\"@lawyerBio\\\",\\\"@lawyerReadMoreURL\\\",\\\"@lawyerPhotoURL\\\",\\\"@lawyerDetails\\\",\\\"@noPAs\\\",\\\"@allPracticeAreas\\\",\\\"@prompt\\\",\\\"@selectablePrompt\\\"],[\\\"Which lawyer will be assisting this client?\\\",[30,0,[\\\"forceLawyer\\\"]],[30,0,[\\\"lawyerName\\\"]],[30,0,[\\\"lawyerEmail\\\"]],[30,0,[\\\"lawyerEmailValid\\\"]],[30,0,[\\\"lawyerBCCs\\\"]],[30,0,[\\\"lawyerCCs\\\"]],[30,0,[\\\"lawyerBio\\\"]],[30,0,[\\\"lawyerReadMoreURL\\\"]],[30,0,[\\\"lawyerPhotoURL\\\"]],[30,0,[\\\"lawyerDetails\\\"]],true,false,\\\"No lawyer has been assigned yet\\\",true]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\\n          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,12],[[30,0,[\\\"lawyerName\\\"]],[30,0,[\\\"inductions\\\",\\\"length\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,16],[[30,0,[\\\"sendFrom\\\"]],[30,0,[\\\"showEditSendToDetails\\\"]],[28,[37,12],[[30,0,[\\\"emailSenderNameInviteInformation\\\"]],[30,0,[\\\"useInviteInformation\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,2],[12],[1,\\\"\\\\n                \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                  Email to be sent from\\\\n\\\"],[41,[28,[37,12],[[30,0,[\\\"useInviteInformation\\\"]],[30,0,[\\\"emailSenderNameInviteInformation\\\"]],[28,[37,9],[[30,0,[\\\"showEditSendToDetails\\\"]]],null]],null],[[[1,\\\"                    \\\"],[1,[30,0,[\\\"emailSenderNameInviteInformation\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                    \\\"],[1,[30,0,[\\\"sendFrom\\\",\\\"name\\\"]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"                  (\\\\n                  \\\"],[8,[39,29],null,[[\\\"@model\\\",\\\"@class\\\"],[[30,0,[\\\"showEditSendToDetails\\\"]],\\\"toggle-box inline\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showEditSendToDetails\\\"]],[[[1,\\\"                      hide\\\\n\\\"]],[]],[[[1,\\\"                      edit\\\\n\\\"]],[]]],[1,\\\"                  \\\"]],[]]]]],[1,\\\"\\\\n                  )\\\\n                  \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showEditSendToDetails\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    \\\"],[8,[39,27],null,[[\\\"@lawyerDetails\\\",\\\"@noLawyers\\\",\\\"@allPracticeAreas\\\",\\\"@prompt\\\",\\\"@refreshToggle\\\",\\\"@hideConfigLink\\\"],[[30,0,[\\\"customSendFrom\\\"]],true,false,\\\"-- select --\\\",[30,0,[\\\"lawyerDetails\\\"]],true]],null],[1,\\\"\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"updateSettings\\\"]],[[[1,\\\"              \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"secondLawyer\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[8,[39,27],null,[[\\\"@label\\\",\\\"@forceLawyer\\\",\\\"@lawyerName\\\",\\\"@lawyerEmail\\\",\\\"@lawyerEmailValid\\\",\\\"@lawyerBCCs\\\",\\\"@lawyerCCs\\\",\\\"@lawyerBio\\\",\\\"@lawyerReadMoreURL\\\",\\\"@lawyerPhotoURL\\\",\\\"@lawyerDetails\\\",\\\"@noPAs\\\",\\\"@allPracticeAreas\\\",\\\"@prompt\\\",\\\"@selectablePrompt\\\",\\\"@hideConfigLink\\\"],[\\\"Which other lawyer will be assisting this client?\\\",[30,0,[\\\"forceSecondLawyer\\\"]],[30,0,[\\\"secondLawyerName\\\"]],[30,0,[\\\"secondLawyerEmail\\\"]],[30,0,[\\\"lawyerEmailValid\\\"]],[30,0,[\\\"secondLawyerBCCs\\\"]],[30,0,[\\\"secondLawyerCCs\\\"]],[30,0,[\\\"secondLawyerBio\\\"]],[30,0,[\\\"secondLawyerReadMoreURL\\\"]],[30,0,[\\\"secondLawyerPhotoURL\\\"]],[30,0,[\\\"secondLawyerDetails\\\"]],true,false,\\\"No lawyer has been assigned yet\\\",true,true]],null],[1,\\\"\\\\n\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n\\\\n              \\\"],[10,2],[12],[1,\\\"\\\\n                \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                  \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,18],[[30,0],\\\"addSecondLawyer\\\"],null],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal \\\",[52,[30,0,[\\\"secondLawyer\\\"]],\\\"fa-minus-circle\\\",\\\"fa-plus-circle\\\"]]]],[12],[13],[1,[52,[30,0,[\\\"secondLawyer\\\"]],\\\"Remove\\\",\\\"Add\\\"]],[1,\\\"\\\\n                    second lawyer\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[10,2],[12],[1,\\\"\\\\n              Appointment date (leave this blank if no appointment has been made)\\\\n              \\\"],[8,[39,31],null,[[\\\"@date\\\",\\\"@valueFormat\\\",\\\"@format\\\",\\\"@allowBlank\\\",\\\"@placeholder\\\"],[[30,0,[\\\"appointmentDate\\\"]],\\\"date\\\",\\\"dddd D MMMM YYYY\\\",true,\\\"Click here to select a date\\\"]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"appointmentDate\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,2],[12],[1,\\\"\\\\n                Appointment time\\\\n                \\\"],[10,0],[15,0,[52,[51,[30,0,[\\\"appointmentTime\\\"]]],\\\"can-highlight\\\"]],[12],[1,\\\"\\\\n                  \\\"],[8,[39,33],null,[[\\\"@onChange\\\",\\\"@options\\\",\\\"@placeholder\\\"],[[28,[37,18],[[30,0],\\\"onTimePicked\\\"],null],[30,0,[\\\"timepickerOptions\\\"]],\\\"Click here to select a time\\\"]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,15],[[30,0,[\\\"availableOffices\\\",\\\"length\\\"]],1],null],[[[1,\\\"                \\\"],[10,2],[12],[1,\\\"\\\\n                  \\\"],[8,[39,24],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"Appointment location\\\",[30,0,[\\\"selectedOfficeIdx\\\"]],\\\"lawyer\\\",[30,0,[\\\"availableOffices\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[10,2],[12],[1,\\\"\\\\n                \\\"],[8,[39,29],null,[[\\\"@model\\\"],[[30,0,[\\\"sendCalendarInvite\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  Include a calendar appointment in the email to\\\\n                  \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"clientFirstName\\\"]]],[13],[1,\\\"\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,2],[12],[1,\\\"\\\\n                \\\"],[8,[39,29],null,[[\\\"@model\\\"],[[30,0,[\\\"initialPhoneMeeting\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  The initial meeting will be conducted by telephone / videoconference\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"initialPhoneMeeting\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  \\\"],[10,0],[14,0,\\\"phone-meeting-settings\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,2],[12],[1,\\\"\\\\n                      \\\"],[8,[39,29],null,[[\\\"@model\\\"],[[30,0,[\\\"includePhoneMeetingMessage\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                        Include additional information or instructions about the meeting in the email\\\\n                      \\\"]],[]]]]],[1,\\\"\\\\n                      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"includePhoneMeetingMessage\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                        \\\"],[8,[39,34],null,[[\\\"@model\\\"],[[30,0,[\\\"phoneMeetingMessage\\\"]]]],null],[1,\\\"\\\\n                      \\\"]],[]]]]],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                    \\\"],[10,2],[12],[1,\\\"\\\\n                      \\\"],[8,[39,29],null,[[\\\"@model\\\"],[[30,0,[\\\"includeMeetingHyperlink\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                        Add hyperlink to the invitation email\\\\n                      \\\"]],[]]]]],[1,\\\"\\\\n                      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"includeMeetingHyperlink\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                        \\\"],[8,[39,25],null,[[\\\"@model\\\",\\\"@label\\\"],[[30,0,[\\\"hyperlinkURL\\\"]],\\\"Unique video conference link (include the 'https://www.' prefix)\\\"]],null],[1,\\\"\\\\n                        \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,12],[[30,0,[\\\"hyperlinkURL\\\"]],[28,[37,9],[[30,0,[\\\"hyperlinkParsed\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                          \\\"],[10,\\\"small\\\"],[12],[1,\\\"That doesn't look like a valid URL\\\"],[13],[1,\\\"\\\\n                        \\\"]],[]]]]],[1,\\\"\\\\n                        \\\"],[8,[39,25],null,[[\\\"@model\\\",\\\"@label\\\"],[[30,0,[\\\"hyperlinkText\\\"]],\\\"Add text your client will see here (e.g. 'click here to join the meeting room')\\\"]],null],[1,\\\"\\\\n                        \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"sendCalendarInvite\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                          \\\"],[8,[39,29],null,[[\\\"@model\\\"],[[30,0,[\\\"includeAsAppointmentLocation\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                            Include this link as the meeting location on the calendar appointment\\\\n                          \\\"]],[]]]]],[1,\\\"\\\\n                        \\\"]],[]]]]],[1,\\\"\\\\n                      \\\"]],[]]]]],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,12],[[30,0,[\\\"phoneMeetingAttachments\\\"]],[30,0,[\\\"phoneMeetingAttachments\\\",\\\"length\\\"]]],null],[[[1,\\\"                      \\\"],[10,2],[12],[1,\\\"\\\\n                        \\\"],[8,[39,29],null,[[\\\"@model\\\"],[[30,0,[\\\"includePhoneMeetingAttachments\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                          Attach your standard telephone / videoconference instruction document\\\"],[1,[52,[28,[37,15],[[30,0,[\\\"phoneMeetingAttachments\\\",\\\"length\\\"]],1],null],\\\"s\\\"]],[1,\\\"\\\\n                          to the email (\\\"],[1,[28,[30,0,[\\\"attachmentsToString\\\"]],[[30,0,[\\\"phoneMeetingAttachments\\\"]],\\\"; \\\"],null]],[1,\\\")\\\\n                        \\\"]],[]]]]],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n                    \\\"],[10,2],[12],[1,\\\"\\\\n                      \\\"],[10,\\\"small\\\"],[12],[1,\\\"These defaults can be configured in your \\\"],[8,[39,6],null,[[\\\"@route\\\"],[\\\"admin.config.invitations\\\"]],[[\\\"default\\\"],[[[[1,\\\"Invitations settings screen\\\"]],[]]]]],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"detailedInductionComplete\\\"]],[[[1,\\\"                \\\"],[10,2],[12],[1,\\\"\\\\n                  \\\"],[8,[39,29],null,[[\\\"@model\\\"],[[30,0,[\\\"forceIncludeSettifyButton\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    Include a link to revisit the Settify induction\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[1,\\\"\\\\n\\\"],[41,[28,[37,12],[[30,0,[\\\"inductions\\\",\\\"length\\\"]],[28,[37,16],[[28,[37,2],[[28,[37,19],[[30,0,[\\\"inductions\\\"]],\\\"0.practiceArea\\\"],null],\\\"Estates\\\"],null],[28,[37,2],[[28,[37,19],[[30,0,[\\\"inductions\\\"]],\\\"0.practiceArea\\\"],null],\\\"Probate\\\"],null]],null]],null],[[[1,\\\"            \\\"],[10,2],[12],[1,\\\"\\\\n              \\\"],[8,[39,29],null,[[\\\"@model\\\",\\\"@disabled\\\"],[[30,0,[\\\"lawFirmAlreadyHasWill\\\"]],[30,0,[\\\"model\\\",\\\"client\\\",\\\"lawFirmHasWill\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\"\\\\n                has the will\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[8,[39,29],null,[[\\\"@model\\\",\\\"@disabled\\\"],[[30,0,[\\\"conflictCheckPerformed\\\"]],[28,[37,12],[[30,0,[\\\"model\\\",\\\"client\\\"]],[28,[37,2],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"conflictCheck\\\"]],\\\"noconflict\\\"],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              A conflict check has already been performed, and\\\\n              \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\"\\\\n              is able to act for this client\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\\n      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"loading\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[39,35],null,null,null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"errorMessage\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[28,[37,2],[[30,0,[\\\"errorMessage\\\"]],\\\"nobutton\\\"],null],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[10,\\\"b\\\"],[12],[1,\\\"Hmm...\\\"],[13],[1,\\\"\\\\n            It looks like this email is missing the link to get started on Settify.\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            If you've deleted it by accident, simply copy and paste\\\\n            \\\"],[10,\\\"samp\\\"],[12],[1,\\\"[SETTIFY BUTTON]\\\"],[13],[1,\\\"\\\\n            into your email where the button should appear.\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            Once the Settify link has been added to the email, please click Try Again, below.\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[10,\\\"strong\\\"],[12],[1,\\\"Uh oh,\\\"],[13],[1,\\\"\\\\n            it looks like an error might have occurred. If the email doesn't come through, please click \\\\\\\"Try again\\\\\\\" below. The email should have gone to the following people at\\\\n            your firm:\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[10,\\\"ul\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,21],[[28,[37,21],[[30,0,[\\\"emailCCs\\\"]]],null]],null],null,[[[1,\\\"                \\\"],[10,\\\"li\\\"],[12],[1,[30,3]],[13],[1,\\\"\\\\n\\\"]],[3]],null],[42,[28,[37,21],[[28,[37,21],[[30,0,[\\\"emailBCCs\\\"]]],null]],null],null,[[[1,\\\"                \\\"],[10,\\\"li\\\"],[12],[1,[30,4]],[13],[1,\\\"\\\\n\\\"]],[4]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,12],[[30,0,[\\\"mode\\\"]],[30,0,[\\\"allowOptionToSaveWithoutSending\\\"]],[28,[37,9],[[30,0,[\\\"savingChangesSuccess\\\"]]],null],[28,[37,9],[[30,0,[\\\"invitationComplete\\\"]]],null],[28,[37,9],[[30,0,[\\\"loading\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"rightalign\\\"],[12],[1,\\\"\\\\n          \\\"],[11,\\\"button\\\"],[24,0,\\\"next-button hvr-float-shadow hvr-grow\\\"],[24,4,\\\"button\\\"],[4,[38,18],[[30,0],\\\"saveChanges\\\"],null],[12],[1,\\\"\\\\n            Save only\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"savingChanges\\\"]],[[[1,\\\"          \\\"],[8,[39,35],null,null,null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,12],[[30,0,[\\\"savingChangesSuccess\\\"]],[28,[37,9],[[30,0,[\\\"invitationComplete\\\"]]],null],[28,[37,9],[[30,0,[\\\"loading\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"rightalign\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"\\\\n          Changes saved\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,9],[[30,0,[\\\"invitationComplete\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[28,[37,12],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"invitationInformation\\\",\\\"editingCustomEmailBody\\\"]],[28,[37,2],[[30,0,[\\\"mode\\\"]],\\\"change\\\"],null]],null],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[10,\\\"b\\\"],[14,0,\\\"negative\\\"],[12],[1,\\\"Important Note:\\\"],[13],[1,\\\"\\\\n            The last time you sent a Settify email to\\\\n            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"firstName\\\"]]],[13],[1,\\\", you manually edited the body of the email. We don't want you to lose those changes. Therefore,\\\\n            you will need to manually update the text below to reflect any changes you have made (eg, a new appointment time) before clicking 'Save and send'.\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            Alternatively, you can discard your custom message and return to the automatic email system, using the link at the bottom of the page, but you will lose any\\\\n            customisations you made the standard email copy.\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[10,2],[14,0,\\\"rightalign\\\"],[12],[1,\\\"\\\\n          \\\"],[11,\\\"button\\\"],[16,0,[29,[\\\"next-button hvr-float-shadow hvr-grow \\\",[52,[51,[30,0,[\\\"canInvite\\\"]]],\\\"disabled-button\\\"]]]],[24,4,\\\"button\\\"],[4,[38,18],[[30,0],[52,[30,0,[\\\"canInvite\\\"]],\\\"inviteClient\\\",\\\"nullAction\\\"]],null],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"errorMessage\\\"]],[[[1,\\\"              Try again\\\\n\\\"]],[]],[[[41,[30,0,[\\\"model\\\",\\\"client\\\"]],[[[1,\\\"                Save and send\\\\n\\\"]],[]],[[[1,\\\"                Invite\\\\n\\\"]],[]]]],[]]],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"rightalign\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,12],[[30,0,[\\\"model\\\",\\\"client\\\"]],[28,[37,9],[[30,0,[\\\"invitationComplete\\\"]]],null]],null],[[[1,\\\"            \\\"],[8,[39,40],null,[[\\\"@model\\\",\\\"@small\\\"],[[30,0,[\\\"model\\\",\\\"client\\\"]],true]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n\\\"],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"invitationComplete\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"\\\\n          We've sent an email to\\\\n          \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"clientFirstName\\\"]]],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,12],[[30,0,[\\\"appointmentDate\\\"]],[30,0,[\\\"appointmentTime\\\"]]],null],[[[1,\\\"            with details of their appointment.\\\\n\\\"]],[]],[[[1,\\\"            inviting them to use Settify.\\\\n\\\"]],[]]],[1,\\\"        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          Sometimes, our automated emails end up in a user's 'spam' or 'junk mail' folder. If you or\\\\n          \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"clientFirstName\\\"]]],[13],[1,\\\"\\\\n          have not received the email within a few minutes, please check in those folders.\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,12],[[30,0,[\\\"model\\\",\\\"client\\\"]],[30,0,[\\\"model\\\",\\\"client\\\",\\\"detailedInductionCommenced\\\"]]],null],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[8,[39,6],null,[[\\\"@route\\\",\\\"@model\\\"],[\\\"admin.clients\\\",[30,0,[\\\"model\\\",\\\"client\\\",\\\"clientID\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"Click here to return to the client's record.\\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[8,[39,6],null,[[\\\"@route\\\"],[\\\"admin.invitations\\\"]],[[\\\"default\\\"],[[[[1,\\\"Click here to return to the list of invitations.\\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\\n      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,12],[[28,[37,9],[[30,0,[\\\"invitationComplete\\\"]]],null],[30,0,[\\\"canInvite\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,18],[[30,0],\\\"toggle\\\",\\\"showPreview\\\"],null],[12],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal \\\",[52,[30,0,[\\\"showPreview\\\"]],\\\"fa-minus-circle\\\",\\\"fa-plus-circle\\\"]]]],[12],[13],[1,\\\"\\\\n            \\\"],[10,\\\"b\\\"],[12],[1,[52,[30,0,[\\\"showPreview\\\"]],\\\"Hide\\\",\\\"Show\\\"]],[1,\\\" preview\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[15,0,[29,[\\\"preview-email settify-sensitive \\\",[52,[30,0,[\\\"showPreview\\\"]],\\\"fadein\\\",\\\"hidden\\\"]]]],[12],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[10,\\\"b\\\"],[12],[1,\\\"To:\\\"],[13],[1,\\\"\\\\n            \\\"],[1,[30,0,[\\\"clientFirstName\\\"]]],[1,\\\"\\\\n            \\\"],[1,[30,0,[\\\"clientSurname\\\"]]],[1,\\\"\\\\n            <\\\"],[1,[30,0,[\\\"clientEmail\\\"]]],[1,\\\">\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n            \\\"],[10,\\\"b\\\"],[12],[1,\\\"From:\\\"],[13],[1,\\\"\\\\n            \\\"],[1,[30,0,[\\\"emailSenderName\\\"]]],[1,\\\"\\\\n            (via Settify) <\\\"],[1,[30,0,[\\\"emailSenderEmail\\\"]]],[1,\\\">\\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"emailCCs\\\",\\\"length\\\"]],[[[1,\\\"              \\\"],[10,\\\"b\\\"],[12],[1,\\\"CC:\\\"],[13],[1,\\\"\\\\n              \\\"],[1,[28,[30,0,[\\\"emailsToString\\\"]],[[30,0,[\\\"emailCCs\\\"]]],null]],[1,\\\"\\\\n              \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"emailBCCs\\\",\\\"length\\\"]],[[[1,\\\"              \\\"],[10,\\\"b\\\"],[12],[1,\\\"BCC:\\\"],[13],[1,\\\"\\\\n              \\\"],[1,[28,[30,0,[\\\"emailsToString\\\"]],[[30,0,[\\\"emailBCCs\\\"]]],null]],[1,\\\"\\\\n              \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n            \\\"],[10,\\\"b\\\"],[12],[1,\\\"Subject:\\\"],[13],[1,\\\"\\\\n            \\\"],[1,[30,0,[\\\"emailSubject\\\"]]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"allAttachments\\\"]],[[[1,\\\"              \\\"],[10,\\\"br\\\"],[12],[13],[10,\\\"b\\\"],[12],[1,\\\"Attachments:\\\"],[13],[1,\\\"\\\\n              \\\"],[1,[28,[30,0,[\\\"attachmentsToString\\\"]],[[30,0,[\\\"allAttachments\\\"]]],null]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,2],[14,0,\\\"centertext\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n            \\\"],[10,\\\"img\\\"],[14,\\\"height\\\",\\\"120\\\"],[14,\\\"width\\\",\\\"auto\\\"],[14,0,\\\"firm-logo\\\"],[15,\\\"src\\\",[30,0,[\\\"firm\\\",\\\"logoURL\\\"]]],[15,\\\"alt\\\",[29,[[30,0,[\\\"firm\\\",\\\"name\\\"]]]]],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,1,\\\"preview-email-body\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"editingCustomEmailBody\\\"]],[[[1,\\\"              \\\"],[10,2],[12],[1,\\\"\\\\n                \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                  Compose your email in the box below. The word\\\\n                  \\\"],[10,\\\"samp\\\"],[12],[1,\\\"[SETTIFY BUTTON]\\\"],[13],[1,\\\"\\\\n                  shows where the clickable button will go to begin the online induction. The word\\\\n                  \\\"],[10,\\\"samp\\\"],[12],[1,\\\"[LAWYER BIOGRAPHY]\\\"],[13],[1,\\\"\\\\n                  shows where the lawyer's biography will go (if present).\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[8,[39,34],null,[[\\\"@model\\\",\\\"@rows\\\",\\\"@max\\\"],[[30,0,[\\\"inviteEmailCustomBody\\\"]],15,32000]],null],[1,\\\"\\\\n              \\\"],[10,2],[12],[1,\\\"\\\\n                \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,29],null,[[\\\"@model\\\",\\\"@class\\\"],[[30,0,[\\\"showCancelCustomMessageBody\\\"]],\\\"toggle-box inline\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    Click here to discard your custom message and return to the automatic email system\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showCancelCustomMessageBody\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                    Are you sure? You will lose any manual changes you have made to the email content.\\\\n                    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                    \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,18],[[30,0],\\\"cancelCustomMessageBody\\\"],null],[12],[1,\\\"Yes, I'm sure\\\"],[13],[1,\\\"\\\\n                    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                    \\\"],[8,[39,29],null,[[\\\"@model\\\",\\\"@class\\\"],[[30,0,[\\\"showCancelCustomMessageBody\\\"]],\\\"toggle-box inline\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                      Actually, I'll keep editing my custom message\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"showCustomInvitationEmail\\\"]],[[[1,\\\"                \\\"],[10,0],[14,1,\\\"preview-email-css-wrapper\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,42],null,[[\\\"@firm\\\",\\\"@clientFirstName\\\",\\\"@lawyerName\\\",\\\"@lawyerBio\\\",\\\"@lawyerPhotoURL\\\",\\\"@lawyerBioHeading\\\",\\\"@lawyerReadMoreURL\\\",\\\"@secondLawyerName\\\",\\\"@secondLawyerBio\\\",\\\"@secondLawyerPhotoURL\\\",\\\"@secondLawyerBioHeading\\\",\\\"@secondLawyerReadMoreURL\\\",\\\"@appointmentDate\\\",\\\"@appointmentTime\\\",\\\"@formattedAppointmentDate\\\",\\\"@selectedOffice\\\",\\\"@initialPhoneMeeting\\\",\\\"@includePhoneMeetingMessage\\\",\\\"@phoneMeetingMessage\\\",\\\"@formattedPhoneMeetingMessage\\\",\\\"@hyperlinkParsed\\\",\\\"@hyperlinkText\\\",\\\"@model\\\",\\\"@inductions\\\",\\\"@forceIncludeSettifyButton\\\",\\\"@buttonLabel\\\",\\\"@showOptionalExtra\\\",\\\"@formattedOptionalMessage\\\",\\\"@optionalExtraMessage\\\",\\\"@toggleOptionalExtra\\\",\\\"@previewOptionalExtra\\\",\\\"@emailSenderName\\\",\\\"@emailSenderTitle\\\",\\\"@emailSenderEmail\\\",\\\"@emailSenderPhone\\\",\\\"@lawyerDetails\\\"],[[30,0,[\\\"firm\\\"]],[30,0,[\\\"clientFirstName\\\"]],[30,0,[\\\"lawyerName\\\"]],[30,0,[\\\"lawyerBio\\\"]],[30,0,[\\\"lawyerPhotoURL\\\"]],[30,0,[\\\"lawyerBioHeading\\\"]],[30,0,[\\\"lawyerReadMoreURL\\\"]],[30,0,[\\\"secondLawyerName\\\"]],[30,0,[\\\"secondLawyerBio\\\"]],[30,0,[\\\"secondLawyerPhotoURL\\\"]],[30,0,[\\\"secondLawyerBioHeading\\\"]],[30,0,[\\\"secondLawyerReadMoreURL\\\"]],[30,0,[\\\"appointmentDate\\\"]],[30,0,[\\\"appointmentTime\\\"]],[30,0,[\\\"formattedAppointmentDate\\\"]],[30,0,[\\\"selectedOffice\\\"]],[30,0,[\\\"initialPhoneMeeting\\\"]],[30,0,[\\\"includePhoneMeetingMessage\\\"]],[30,0,[\\\"phoneMeetingMessage\\\"]],[30,0,[\\\"formattedPhoneMeetingMessage\\\"]],[30,0,[\\\"hyperlinkParsed\\\"]],[30,0,[\\\"hyperlinkText\\\"]],[30,0,[\\\"model\\\",\\\"client\\\"]],[30,0,[\\\"inductions\\\"]],[30,0,[\\\"forceIncludeSettifyButton\\\"]],[30,0,[\\\"buttonLabel\\\"]],[30,0,[\\\"showOptionalExtra\\\"]],[30,0,[\\\"formattedOptionalMessage\\\"]],[30,0,[\\\"optionalExtraMessage\\\"]],[28,[37,18],[[30,0],\\\"toggleOptionalExtra\\\"],null],[28,[37,18],[[30,0],\\\"previewOptionalExtra\\\"],null],[30,0,[\\\"emailSenderName\\\"]],[30,0,[\\\"emailSenderTitle\\\"]],[30,0,[\\\"emailSenderEmail\\\"]],[30,0,[\\\"emailSenderPhone\\\"]],[30,0,[\\\"lawyerDetails\\\"]]]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                \\\"],[8,[39,43],null,[[\\\"@model\\\",\\\"@firm\\\",\\\"@clientFirstName\\\",\\\"@lawyerName\\\",\\\"@appointmentDate\\\",\\\"@appointmentTime\\\",\\\"@formattedAppointmentDate\\\",\\\"@formattedPhoneMeetingMessage\\\",\\\"@initialPhoneMeeting\\\",\\\"@availableOffices\\\",\\\"@selectedOffice\\\",\\\"@includePhoneMeetingMessage\\\",\\\"@includeMeetingHyperlink\\\",\\\"@hyperlinkParsed\\\",\\\"@hyperlinkText\\\",\\\"@forceIncludeSettifyButton\\\",\\\"@buttonLabel\\\",\\\"@lawyerBio\\\",\\\"@noLawyerBios\\\",\\\"@lawyerPhotoURL\\\",\\\"@lawyerBioHeading\\\",\\\"@lawyerReadMoreURL\\\",\\\"@secondLawyerBio\\\",\\\"@secondLawyerPhotoURL\\\",\\\"@secondLawyerBioHeading\\\",\\\"@secondLawyerReadMoreURL\\\",\\\"@secondLawyerName\\\",\\\"@emailSenderName\\\",\\\"@emailSenderTitle\\\",\\\"@emailSenderPhone\\\",\\\"@lawyerDetails\\\",\\\"@showOptionalExtra\\\",\\\"@optionalExtraMessage\\\",\\\"@formattedOptionalMessage\\\",\\\"@toggleOptionalExtra\\\",\\\"@previewOptionalExtra\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"firm\\\"]],[30,0,[\\\"clientFirstName\\\"]],[30,0,[\\\"lawyerName\\\"]],[30,0,[\\\"appointmentDate\\\"]],[30,0,[\\\"appointmentTime\\\"]],[30,0,[\\\"formattedAppointmentDate\\\"]],[30,0,[\\\"formattedPhoneMeetingMessage\\\"]],[30,0,[\\\"initialPhoneMeeting\\\"]],[30,0,[\\\"availableOffices\\\"]],[30,0,[\\\"selectedOffice\\\"]],[30,0,[\\\"includePhoneMeetingMessage\\\"]],[30,0,[\\\"includeMeetingHyperlink\\\"]],[30,0,[\\\"hyperlinkParsed\\\"]],[30,0,[\\\"hyperlinkText\\\"]],[30,0,[\\\"forceIncludeSettifyButton\\\"]],[30,0,[\\\"buttonLabel\\\"]],[30,0,[\\\"lawyerBio\\\"]],[30,0,[\\\"noLawyerBios\\\"]],[30,0,[\\\"lawyerPhotoURL\\\"]],[30,0,[\\\"lawyerBioHeading\\\"]],[30,0,[\\\"lawyerReadMoreURL\\\"]],[30,0,[\\\"secondLawyerBio\\\"]],[30,0,[\\\"secondLawyerPhotoURL\\\"]],[30,0,[\\\"secondLawyerBioHeading\\\"]],[30,0,[\\\"secondLawyerReadMoreURL\\\"]],[30,0,[\\\"secondLawyerName\\\"]],[30,0,[\\\"emailSenderName\\\"]],[30,0,[\\\"emailSenderTitle\\\"]],[30,0,[\\\"emailSenderPhone\\\"]],[30,0,[\\\"lawyerDetails\\\"]],[30,0,[\\\"showOptionalExtra\\\"]],[30,0,[\\\"optionalExtraMessage\\\"]],[30,0,[\\\"formattedOptionalMessage\\\"]],[28,[37,18],[[30,0],\\\"toggleOptionalExtra\\\"],null],[28,[37,18],[[30,0],\\\"previewOptionalExtra\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]]]],[]]],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"editingCustomEmailBody\\\"]]],[[[1,\\\"            \\\"],[10,\\\"hr\\\"],[12],[13],[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,18],[[30,0],\\\"convertToCustomMessageBody\\\"],null],[12],[1,\\\"Click here to edit the entire email yourself.\\\"],[13],[1,\\\"\\\\n                You will lose formatting, links, and maps, but you can always come back to the automated email later, if you want.\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,45],null,null,null]],[\\\"induction\\\",\\\"item\\\",\\\"cc\\\",\\\"bcc\\\"],false,[\\\"animated-header\\\",\\\"if\\\",\\\"eq\\\",\\\"div\\\",\\\"br\\\",\\\"nav\\\",\\\"link-to\\\",\\\"i\\\",\\\"liquid-if\\\",\\\"not\\\",\\\"p\\\",\\\"span\\\",\\\"and\\\",\\\"b\\\",\\\"not-eq\\\",\\\"gt\\\",\\\"or\\\",\\\"button\\\",\\\"action\\\",\\\"get\\\",\\\"each\\\",\\\"-track-array\\\",\\\"select-or-create-singular\\\",\\\"parse-text\\\",\\\"settify-select\\\",\\\"settify-textline\\\",\\\"settify-email-input\\\",\\\"lawyer-select\\\",\\\"small\\\",\\\"check-box\\\",\\\"a\\\",\\\"date-picker\\\",\\\"unless\\\",\\\"time-picker\\\",\\\"settify-textarea\\\",\\\"loading-spinner\\\",\\\"samp\\\",\\\"strong\\\",\\\"ul\\\",\\\"li\\\",\\\"resume-link-widget\\\",\\\"img\\\",\\\"invitation/email\\\",\\\"invite-new-client-email\\\",\\\"hr\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/invite.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/newfirm\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Firm Signup\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn {{if this.reviewMode 'highlight-required-fields'}}\">\n        <div>\n          <p><small><LinkTo @route=\"index\"><i class=\"fal fa-home-lg-alt\" />Home</LinkTo></small></p>\n        </div>\n  \n        {{#if this.isSelfSignup}}\n          <h1>Self-Signup Rollout!</h1>\n        {{else}}\n          <div style=\"display: flex; align-items: center; justify-content: space-between;\">\n            <h1>New Rollout</h1>\n            <small><a class=\"clickable\" {{action \"clearAnswers\"}}>clear form</a></small>\n          </div>\n        {{/if}}\n  \n        {{#if this.loadingRolloutData}}\n          <LoadingSpinner />\n        {{/if}}\n  \n        <div class=\"answers-to-extract\">\n          <p>\n            <SettifySelect\n              @displayOnly={{this.displayOnly}}\n              @label=\"Salesperson\"\n              @model={{this.settifyRolloutSupervisor}}\n              @name=\"firmselect\"\n              @content={{this.rolloutSupervisorOptions}}\n              @labelPath=\"label\"\n              @valuePath=\"value\"\n              @required={{true}}\n            />\n            <SettifySelect\n              @displayOnly={{this.displayOnly}}\n              @model={{this.firmLocation}}\n              @label=\"Region/Location\"\n              @content={{this.regions}}\n              @labelPath=\"label\"\n              @valuePath=\"value\"\n              @required={{true}}\n            />\n          </p>\n  \n          {{#if (and this.selectedAwsRegion (not-eq this.selectedAwsRegion this.config.settings.Region))}}\n            <p>\n              You have selected a\n              {{this.firmLocation}}\n              firm but you are currently in the\n              {{sentence-case this.config.settings.name}}\n              region. Please process the rollout at\n              <a href=\"https://admin.app{{this.settifyURLSuffix}}/admin/newfirm\">{{concat \"https://admin.app\" this.settifyURLSuffix}}</a>\n            </p>\n          {{else}}\n            <p>\n              Is it a new firm, or an existing firm?\n              <RadioButtons @displayOnly={{this.displayOnly}} @unselectable={{true}} @model={{this.firmStatus}} @value=\"new\" @text=\"A new firm\" />\n              <RadioButtons @displayOnly={{this.displayOnly}} @unselectable={{true}} @model={{this.firmStatus}} @value=\"existing\" @text=\"An existing firm\" />\n            </p>\n          {{/if}}\n  \n          <LiquidIf @predicate={{eq this.firmStatus \"new\"}}>\n            <p>\n              <SettifyTextline @displayOnly={{this.displayOnly}} @model={{this.firmName}} @label=\"Name\" @placeholder=\"eg, Smith & Jones\" @required={{true}} />\n              <SettifyTextline @displayOnly={{this.displayOnly}} @model={{this.firmURL}} @type=\"url\" @label=\"Website\" @placeholder=\"www.smithjones.com or blank if no website\" />\n              {{#if this.displayOnly}}\n                Settify URL\n                <br />\n                {{this.firmDomain}}{{this.settifyURLSuffix}}\n              {{else}}\n                <div style=\"position: relative;\">\n                  <SettifyTextline @displayOnly={{this.displayOnly}} @model={{this.firmDomain}} @label=\"Settify URL\" @required={{true}} @maxlength={{30}} />\n                  <div class=\"input-suffix\">{{this.settifyURLSuffix}}</div>\n                </div>\n              {{/if}}\n              <LiquidIf @predicate={{and this.firmDomain (lt this.firmDomain.length 3)}}>\n                <small>The URL should be at least 3 characters long</small>\n              </LiquidIf>\n              <LiquidIf @predicate={{this.firmDomainExists}}>\n                <small>\n                  That URL exists for\n                  <b>{{this.firmExistsGuess.name}}</b>.\n                  {{#if (eq this.firmExistsGuess.domainType \"new\")}}\n                    This is a firm that has a pending rollout request. To continue this rollout,\n                  {{else}}\n                    If this is the same firm you are rolling out,\n                  {{/if}}\n                  <a class=\"clickable\" {{action \"selectExistingFirm\" this.firmExistsGuess}}>click here</a>, otherwise please use a unique settify URL.\n                </small>\n              </LiquidIf>\n            </p>\n            {{#unless this.displayOnly}}\n              <p>\n                <CheckBox @text=\"Is it a test firm?\" @model={{this.isTestFirm}} />\n                <LiquidIf @predicate={{this.isTestFirm}}>\n                  <small>\n                    Warning: We only use this to create firms for development purposes. Not for general use.\n                  </small>\n                </LiquidIf>\n                <CheckBox @text=\"Is this a Next Gen rollout?\" @model={{this.isUnoRollout}} />\n                <LiquidIf @predicate={{this.isUnoRollout}}>\n                  <small>\n                    Warning: This is\n                    <b>not</b>\n                    for general use. This will create a firm without any Gitlab branches and is currently for testing only.\n                  </small>\n                </LiquidIf>\n              </p>\n            {{/unless}}\n          </LiquidIf>\n          <LiquidIf @predicate={{eq this.firmStatus \"existing\"}}>\n            <p>\n              {{#unless this.displayOnly}}\n                Which firm was it?\n                <SettifyTextline @displayOnly={{this.displayOnly}} @model={{this.searchquery}} @label=\"Type their name here\" />\n              {{/unless}}\n            </p>\n            <LiquidIf @predicate={{this.firmGuesses.length}}>\n              <p>\n                {{#each this.firmGuesses as |guess|}}\n                  <a class=\"clickable\" {{action \"selectFirm\" guess}}>{{guess.name}} ({{guess.firmID}})</a>\n                  <br />\n                {{/each}}\n              </p>\n            </LiquidIf>\n            <p>\n              <CheckBox @text=\"Is this a Next Gen rollout?\" @model={{this.isUnoRollout}} />\n            </p>\n          </LiquidIf>\n  \n          {{#unless (or this.rolloutID this.displayOnly this.payload)}}\n            <p style=\"text-align: right\">\n              <button\n                class=\"next-button {{unless this.canContinue 'disabled-button'}}\"\n                type=\"button\"\n                {{action (if this.canContinue \"submitRolloutData\" \"nullAction\")}}\n              >Continue</button>\n            </p>\n          {{/unless}}\n  \n          <LiquidIf @predicate={{and this.savingDraftRollout (not (or this.rolloutID this.payload))}}>\n            <LoadingSpinner />\n          </LiquidIf>\n  \n          <LiquidIf @predicate={{or this.rolloutID this.reviewMode}}>\n            <p>\n              Which practice areas do they want{{if this.selectedFirm \" this time\"}}?\n              {{#each this.practiceAreas as |pa|}}\n                <CheckBox @displayOnly={{this.displayOnly}} @text={{pa}} @model={{mut (get this.firmSelectedPAs pa)}} />\n              {{/each}}\n            </p>\n  \n            {{#each this.firmPADetails as |pa|}}\n              {{#if (get this.firmSelectedPAs pa.practiceArea)}}\n                <p>\n                  <b>{{if this.displayOnly \"## \"}}Details for {{pa.practiceArea}}</b>\n                </p>\n                {{#unless this.displayOnly}}\n                  <p>\n                    Please provide as much of this information as you can. If there are things you don't know, just leave them blank.\n                  </p>\n                {{/unless}}\n                {{#unless this.creatingNewFirm}}\n                  <p>\n                    Rollout fee for\n                    {{pa.practiceArea}}. Note: if a single amount covers multiple practice areas, please use your judgment to split it between the areas in a reasonable fashion.\n                    <SettifyNumber\n                      @displayOnly={{this.displayOnly}}\n                      @required={{true}}\n                      @model={{pa.rolloutAmountCents}}\n                      @placeholder=\"Amount in cents/pence\"\n                      @label=\"Fee in cents/pence (excluding GST/VAT)\"\n                      @nocommas={{true}}\n                    />\n                    <small>That corresponds to\n                      <b><CentsToDollars @model={{pa.rolloutAmountCents}} @firm={{or this.selectedFirmGlobalDetails this.placeholderFirmGlobalDetails}} /></b></small>\n                    <CheckBox @displayOnly={{this.displayOnly}} @text=\"Spread this invoice out over a number of monthly instalments\" @model={{pa.rolloutInstalments}} />\n                  </p>\n                  <LiquidIf @predicate={{pa.rolloutInstalments}}>\n                    <p>\n                      <SettifyNumber @displayOnly={{this.displayOnly}} @required={{true}} @model={{pa.rolloutInstalmentCount}} @label=\"How many months?\" />\n  \n                      <LiquidIf @predicate={{pa.rolloutInstalmentCount}}>\n                        That would yield\n                        {{pa.rolloutInstalmentCount}}\n                        monthly instalments of approximately\n                        <CentsToDollars\n                          @model={{div pa.rolloutAmountCents pa.rolloutInstalmentCount}}\n                          @firm={{or this.selectedFirmGlobalDetails this.placeholderFirmGlobalDetails}}\n                        />\n                        each.\n                      </LiquidIf>\n                    </p>\n                  </LiquidIf>\n  \n                  <p>\n                    What is the monthly licence fee for\n                    {{pa.practiceArea}}?\n                    <SettifyNumber\n                      @displayOnly={{this.displayOnly}}\n                      @required={{true}}\n                      @model={{pa.licenceFee}}\n                      @placeholder=\"Amount in cents/pence\"\n                      @label=\"Fee in cents/pence (excluding GST/VAT)\"\n                      @nocommas={{true}}\n                    />\n                    <small>That corresponds to\n                      <b><CentsToDollars @model={{pa.licenceFee}} @firm={{or this.selectedFirmGlobalDetails this.placeholderFirmGlobalDetails}} /></b></small>\n                  </p>\n  \n                  <p>\n                    What sort of billing arrangement are they on for\n                    {{pa.practiceArea}}?\n                    <SettifySelect\n                      @displayOnly={{this.displayOnly}}\n                      @label=\"\"\n                      @model={{pa.billingConversionGroup}}\n                      @name={{sum \"billingcode-\" pa.practiceArea}}\n                      @content={{this.allBillingCodes}}\n                      @labelPath=\"label\"\n                      @valuePath=\"value\"\n                      @required={{true}}\n                    />\n                    <LiquidIf @predicate={{eq pa.billingConversionGroup \"other\"}}>\n                      Please tell us more, or copy + paste the relevant provisions from the contract.\n                      <SettifyTextarea @displayOnly={{this.displayOnly}} @required={{true}} @model={{pa.billingConversionGroupMoreInfo}} />\n                    </LiquidIf>\n                  </p>\n                {{/unless}}\n  \n                <p>\n                  Will they be reviewing the\n                  {{pa.practiceArea}}\n                  blueprints before going live?\n                  <RadioButtons @displayOnly={{this.displayOnly}} @unselectable={{true}} @model={{pa.reviewingBlueprints}} @value=\"yes\" @text=\"Yes\" />\n                  <RadioButtons @displayOnly={{this.displayOnly}} @unselectable={{true}} @model={{pa.reviewingBlueprints}} @value=\"no\" @text=\"No\" />\n                </p>\n  \n                <LiquidIf @predicate={{eq pa.reviewingBlueprints \"yes\"}}>\n                  <p>\n                    Who will be reviewing them?\n                    <SettifyTextline @displayOnly={{this.displayOnly}} @required={{true}} @model={{pa.blueprintReviewName}} @label=\"First name\" />\n                    <SettifyEmailInput @displayOnly={{this.displayOnly}} @required={{true}} @model={{pa.blueprintReviewEmail}} @label=\"Email address\" />\n                  </p>\n                </LiquidIf>\n  \n                <p>\n                  Where should new lead notification emails for\n                  {{pa.practiceArea}}\n                  be sent?\n                  <SettifyEmailInput @displayOnly={{this.displayOnly}} @required={{true}} @model={{pa.newLeadNotificationEmail}} @label=\"Email address\" />\n                </p>\n  \n                <p>\n                  Is there anything else we should know about their\n                  {{pa.practiceArea}}\n                  system in particular?\n                  <SettifyTextarea @displayOnly={{this.displayOnly}} @model={{pa.moreInfo}} />\n                </p>\n              {{/if}}\n            {{/each}}\n  \n            <p>\n              <b>{{if this.displayOnly \"## \"}}Details for all practice areas</b>\n            </p>\n            {{#unless this.displayOnly}}\n              <p>\n                Please provide as much of this information as you can. If there are things you don't know, just leave them blank.\n              </p>\n            {{/unless}}\n  \n            <p>\n              Contract expiry date\n              {{#if this.displayOnly}}\n                {{pretty-date this.firmContractExpiry isoDateString=true}}\n              {{else}}\n                <div class=\"datepicker-wrapper\">\n                  <DatePicker\n                    @utc={{true}}\n                    @date={{this.firmContractExpiry}}\n                    @valueFormat=\"date\"\n                    @format=\"dddd D MMMM YYYY\"\n                    @required={{true}}\n                    @allowBlank={{true}}\n                    @placeholder=\"Click here to select a date\"\n                  />\n                </div>\n              {{/if}}\n            </p>\n  \n            {{#unless this.selectedFirm}}\n              <p>\n                Timezone of the firm's primary office.\n                <SettifySelect\n                  @displayOnly={{this.displayOnly}}\n                  @label=\"\"\n                  @model={{this.firmTimezone}}\n                  @name=\"timezone\"\n                  @content={{this.timezones}}\n                  @labelPath=\"value\"\n                  @valuePath=\"value\"\n                  @required={{true}}\n                />\n              </p>\n  \n              <p>\n                Accounts payable\n                <SettifyTextline\n                  @displayOnly={{this.displayOnly}}\n                  @required={{true}}\n                  @model={{this.firmAccountsPayableName}}\n                  @label=\"First name\"\n                  @placeholder=\"Or, eg, 'Accounts Team'\"\n                />\n                <SettifyEmailInput\n                  @displayOnly={{this.displayOnly}}\n                  @required={{true}}\n                  @model={{this.firmAccountsPayableEmail}}\n                  @label=\"Email address\"\n                  @allowMultipleEmails={{true}}\n                />\n                <SettifyTextarea @displayOnly={{this.displayOnly}} @required={{true}} @model={{this.firmAccountsPayableAddress}} @label=\"Billing address\" />\n                <SettifyTextline\n                  @displayOnly={{this.displayOnly}}\n                  @model={{this.firmBillingEntityName}}\n                  @label=\"Billing entity name\"\n                  @placeholder=\"(if different to the firm's name)\"\n                />\n                <SettifyTextline\n                  @displayOnly={{this.displayOnly}}\n                  @model={{this.firmCompanyNumber}}\n                  @label=\"Business / company number\"\n                  @placeholder=\"(should be specified in the contract)\"\n                />\n              </p>\n            {{/unless}}\n  \n            {{#unless (or this.reviewMode this.displayOnly this.gitlabIssueNumber this.hasRolloutSucceeded)}}\n              <p style=\"text-align: right\">\n                <button class=\"next-button {{unless this.canSubmit 'disabled-button'}}\" type=\"button\" {{action (if this.canSubmit \"processRollout\" \"nullAction\")}}>Submit</button>\n              </p>\n            {{/unless}}\n  \n            <LoadingDisplay @loading={{this.isRolloutProcessing}} @success={{this.hasRolloutSucceeded}} @error={{this.hasRolloutFailed}} @showError={{true}}>\n              The rollout for\n              {{or this.firmName this.selectedFirmGlobalDetails.name}}\n              has successfully been created. You can view the created Gitlab issue via the\n              <a href=\"https://settify.slack.com/archives/C02QKUHDF2M\">#new-firm-rollout</a>\n              channel in Slack.\n            </LoadingDisplay>\n          </LiquidIf>\n        </div>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"rffEHeAG\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Firm Signup\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[15,0,[29,[\\\"settify-contentcolumn \\\",[52,[30,0,[\\\"reviewMode\\\"]],\\\"highlight-required-fields\\\"]]]],[12],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,5],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-home-lg-alt\\\"],[12],[13],[1,\\\"Home\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"isSelfSignup\\\"]],[[[1,\\\"        \\\"],[10,\\\"h1\\\"],[12],[1,\\\"Self-Signup Rollout!\\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,0],[14,5,\\\"display: flex; align-items: center; justify-content: space-between;\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"h1\\\"],[12],[1,\\\"New Rollout\\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"small\\\"],[12],[11,3],[24,0,\\\"clickable\\\"],[4,[38,9],[[30,0],\\\"clearAnswers\\\"],null],[12],[1,\\\"clear form\\\"],[13],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"loadingRolloutData\\\"]],[[[1,\\\"        \\\"],[8,[39,10],null,null,null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"answers-to-extract\\\"],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[8,[39,11],null,[[\\\"@displayOnly\\\",\\\"@label\\\",\\\"@model\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\",\\\"@required\\\"],[[30,0,[\\\"displayOnly\\\"]],\\\"Salesperson\\\",[30,0,[\\\"settifyRolloutSupervisor\\\"]],\\\"firmselect\\\",[30,0,[\\\"rolloutSupervisorOptions\\\"]],\\\"label\\\",\\\"value\\\",true]],null],[1,\\\"\\\\n          \\\"],[8,[39,11],null,[[\\\"@displayOnly\\\",\\\"@model\\\",\\\"@label\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\",\\\"@required\\\"],[[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"firmLocation\\\"]],\\\"Region/Location\\\",[30,0,[\\\"regions\\\"]],\\\"label\\\",\\\"value\\\",true]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,12],[[30,0,[\\\"selectedAwsRegion\\\"]],[28,[37,13],[[30,0,[\\\"selectedAwsRegion\\\"]],[30,0,[\\\"config\\\",\\\"settings\\\",\\\"Region\\\"]]],null]],null],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            You have selected a\\\\n            \\\"],[1,[30,0,[\\\"firmLocation\\\"]]],[1,\\\"\\\\n            firm but you are currently in the\\\\n            \\\"],[1,[28,[35,14],[[30,0,[\\\"config\\\",\\\"settings\\\",\\\"name\\\"]]],null]],[1,\\\"\\\\n            region. Please process the rollout at\\\\n            \\\"],[10,3],[15,6,[29,[\\\"https://admin.app\\\",[30,0,[\\\"settifyURLSuffix\\\"]],\\\"/admin/newfirm\\\"]]],[12],[1,[28,[35,15],[\\\"https://admin.app\\\",[30,0,[\\\"settifyURLSuffix\\\"]]],null]],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            Is it a new firm, or an existing firm?\\\\n            \\\"],[8,[39,16],null,[[\\\"@displayOnly\\\",\\\"@unselectable\\\",\\\"@model\\\",\\\"@value\\\",\\\"@text\\\"],[[30,0,[\\\"displayOnly\\\"]],true,[30,0,[\\\"firmStatus\\\"]],\\\"new\\\",\\\"A new firm\\\"]],null],[1,\\\"\\\\n            \\\"],[8,[39,16],null,[[\\\"@displayOnly\\\",\\\"@unselectable\\\",\\\"@model\\\",\\\"@value\\\",\\\"@text\\\"],[[30,0,[\\\"displayOnly\\\"]],true,[30,0,[\\\"firmStatus\\\"]],\\\"existing\\\",\\\"An existing firm\\\"]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n        \\\"],[8,[39,17],null,[[\\\"@predicate\\\"],[[28,[37,18],[[30,0,[\\\"firmStatus\\\"]],\\\"new\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[8,[39,19],null,[[\\\"@displayOnly\\\",\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\",\\\"@required\\\"],[[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"firmName\\\"]],\\\"Name\\\",\\\"eg, Smith & Jones\\\",true]],null],[1,\\\"\\\\n            \\\"],[8,[39,19],null,[[\\\"@displayOnly\\\",\\\"@model\\\",\\\"@type\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"firmURL\\\"]],\\\"url\\\",\\\"Website\\\",\\\"www.smithjones.com or blank if no website\\\"]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"displayOnly\\\"]],[[[1,\\\"              Settify URL\\\\n              \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[1,[30,0,[\\\"firmDomain\\\"]]],[1,[30,0,[\\\"settifyURLSuffix\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"              \\\"],[10,0],[14,5,\\\"position: relative;\\\"],[12],[1,\\\"\\\\n                \\\"],[8,[39,19],null,[[\\\"@displayOnly\\\",\\\"@model\\\",\\\"@label\\\",\\\"@required\\\",\\\"@maxlength\\\"],[[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"firmDomain\\\"]],\\\"Settify URL\\\",true,30]],null],[1,\\\"\\\\n                \\\"],[10,0],[14,0,\\\"input-suffix\\\"],[12],[1,[30,0,[\\\"settifyURLSuffix\\\"]]],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"            \\\"],[8,[39,17],null,[[\\\"@predicate\\\"],[[28,[37,12],[[30,0,[\\\"firmDomain\\\"]],[28,[37,21],[[30,0,[\\\"firmDomain\\\",\\\"length\\\"]],3],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,\\\"small\\\"],[12],[1,\\\"The URL should be at least 3 characters long\\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[8,[39,17],null,[[\\\"@predicate\\\"],[[30,0,[\\\"firmDomainExists\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                That URL exists for\\\\n                \\\"],[10,\\\"b\\\"],[12],[1,[30,0,[\\\"firmExistsGuess\\\",\\\"name\\\"]]],[13],[1,\\\".\\\\n\\\"],[41,[28,[37,18],[[30,0,[\\\"firmExistsGuess\\\",\\\"domainType\\\"]],\\\"new\\\"],null],[[[1,\\\"                  This is a firm that has a pending rollout request. To continue this rollout,\\\\n\\\"]],[]],[[[1,\\\"                  If this is the same firm you are rolling out,\\\\n\\\"]],[]]],[1,\\\"                \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,9],[[30,0],\\\"selectExistingFirm\\\",[30,0,[\\\"firmExistsGuess\\\"]]],null],[12],[1,\\\"click here\\\"],[13],[1,\\\", otherwise please use a unique settify URL.\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"displayOnly\\\"]]],[[[1,\\\"            \\\"],[10,2],[12],[1,\\\"\\\\n              \\\"],[8,[39,24],null,[[\\\"@text\\\",\\\"@model\\\"],[\\\"Is it a test firm?\\\",[30,0,[\\\"isTestFirm\\\"]]]],null],[1,\\\"\\\\n              \\\"],[8,[39,17],null,[[\\\"@predicate\\\"],[[30,0,[\\\"isTestFirm\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                  Warning: We only use this to create firms for development purposes. Not for general use.\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n              \\\"],[8,[39,24],null,[[\\\"@text\\\",\\\"@model\\\"],[\\\"Is this a Next Gen rollout?\\\",[30,0,[\\\"isUnoRollout\\\"]]]],null],[1,\\\"\\\\n              \\\"],[8,[39,17],null,[[\\\"@predicate\\\"],[[30,0,[\\\"isUnoRollout\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                  Warning: This is\\\\n                  \\\"],[10,\\\"b\\\"],[12],[1,\\\"not\\\"],[13],[1,\\\"\\\\n                  for general use. This will create a firm without any Gitlab branches and is currently for testing only.\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,17],null,[[\\\"@predicate\\\"],[[28,[37,18],[[30,0,[\\\"firmStatus\\\"]],\\\"existing\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"displayOnly\\\"]]],[[[1,\\\"              Which firm was it?\\\\n              \\\"],[8,[39,19],null,[[\\\"@displayOnly\\\",\\\"@model\\\",\\\"@label\\\"],[[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"searchquery\\\"]],\\\"Type their name here\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n          \\\"],[8,[39,17],null,[[\\\"@predicate\\\"],[[30,0,[\\\"firmGuesses\\\",\\\"length\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,26],[[28,[37,26],[[30,0,[\\\"firmGuesses\\\"]]],null]],null],null,[[[1,\\\"                \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,9],[[30,0],\\\"selectFirm\\\",[30,1]],null],[12],[1,[30,1,[\\\"name\\\"]]],[1,\\\" (\\\"],[1,[30,1,[\\\"firmID\\\"]]],[1,\\\")\\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[8,[39,24],null,[[\\\"@text\\\",\\\"@model\\\"],[\\\"Is this a Next Gen rollout?\\\",[30,0,[\\\"isUnoRollout\\\"]]]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[51,[28,[37,27],[[30,0,[\\\"rolloutID\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"payload\\\"]]],null]],[[[1,\\\"          \\\"],[10,2],[14,5,\\\"text-align: right\\\"],[12],[1,\\\"\\\\n            \\\"],[11,\\\"button\\\"],[16,0,[29,[\\\"next-button \\\",[52,[51,[30,0,[\\\"canContinue\\\"]]],\\\"disabled-button\\\"]]]],[24,4,\\\"button\\\"],[4,[38,9],[[30,0],[52,[30,0,[\\\"canContinue\\\"]],\\\"submitRolloutData\\\",\\\"nullAction\\\"]],null],[12],[1,\\\"Continue\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n        \\\"],[8,[39,17],null,[[\\\"@predicate\\\"],[[28,[37,12],[[30,0,[\\\"savingDraftRollout\\\"]],[28,[37,29],[[28,[37,27],[[30,0,[\\\"rolloutID\\\"]],[30,0,[\\\"payload\\\"]]],null]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[39,10],null,null,null],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,17],null,[[\\\"@predicate\\\"],[[28,[37,27],[[30,0,[\\\"rolloutID\\\"]],[30,0,[\\\"reviewMode\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            Which practice areas do they want\\\"],[1,[52,[30,0,[\\\"selectedFirm\\\"]],\\\" this time\\\"]],[1,\\\"?\\\\n\\\"],[42,[28,[37,26],[[28,[37,26],[[30,0,[\\\"practiceAreas\\\"]]],null]],null],null,[[[1,\\\"              \\\"],[8,[39,24],null,[[\\\"@displayOnly\\\",\\\"@text\\\",\\\"@model\\\"],[[30,0,[\\\"displayOnly\\\"]],[30,2],[28,[37,30],[[28,[37,31],[[30,0,[\\\"firmSelectedPAs\\\"]],[30,2]],null]],null]]],null],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[42,[28,[37,26],[[28,[37,26],[[30,0,[\\\"firmPADetails\\\"]]],null]],null],null,[[[41,[28,[37,31],[[30,0,[\\\"firmSelectedPAs\\\"]],[30,3,[\\\"practiceArea\\\"]]],null],[[[1,\\\"              \\\"],[10,2],[12],[1,\\\"\\\\n                \\\"],[10,\\\"b\\\"],[12],[1,[52,[30,0,[\\\"displayOnly\\\"]],\\\"## \\\"]],[1,\\\"Details for \\\"],[1,[30,3,[\\\"practiceArea\\\"]]],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"displayOnly\\\"]]],[[[1,\\\"                \\\"],[10,2],[12],[1,\\\"\\\\n                  Please provide as much of this information as you can. If there are things you don't know, just leave them blank.\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[51,[30,0,[\\\"creatingNewFirm\\\"]]],[[[1,\\\"                \\\"],[10,2],[12],[1,\\\"\\\\n                  Rollout fee for\\\\n                  \\\"],[1,[30,3,[\\\"practiceArea\\\"]]],[1,\\\". Note: if a single amount covers multiple practice areas, please use your judgment to split it between the areas in a reasonable fashion.\\\\n                  \\\"],[8,[39,32],null,[[\\\"@displayOnly\\\",\\\"@required\\\",\\\"@model\\\",\\\"@placeholder\\\",\\\"@label\\\",\\\"@nocommas\\\"],[[30,0,[\\\"displayOnly\\\"]],true,[30,3,[\\\"rolloutAmountCents\\\"]],\\\"Amount in cents/pence\\\",\\\"Fee in cents/pence (excluding GST/VAT)\\\",true]],null],[1,\\\"\\\\n                  \\\"],[10,\\\"small\\\"],[12],[1,\\\"That corresponds to\\\\n                    \\\"],[10,\\\"b\\\"],[12],[8,[39,33],null,[[\\\"@model\\\",\\\"@firm\\\"],[[30,3,[\\\"rolloutAmountCents\\\"]],[28,[37,27],[[30,0,[\\\"selectedFirmGlobalDetails\\\"]],[30,0,[\\\"placeholderFirmGlobalDetails\\\"]]],null]]],null],[13],[13],[1,\\\"\\\\n                  \\\"],[8,[39,24],null,[[\\\"@displayOnly\\\",\\\"@text\\\",\\\"@model\\\"],[[30,0,[\\\"displayOnly\\\"]],\\\"Spread this invoice out over a number of monthly instalments\\\",[30,3,[\\\"rolloutInstalments\\\"]]]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[8,[39,17],null,[[\\\"@predicate\\\"],[[30,3,[\\\"rolloutInstalments\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  \\\"],[10,2],[12],[1,\\\"\\\\n                    \\\"],[8,[39,32],null,[[\\\"@displayOnly\\\",\\\"@required\\\",\\\"@model\\\",\\\"@label\\\"],[[30,0,[\\\"displayOnly\\\"]],true,[30,3,[\\\"rolloutInstalmentCount\\\"]],\\\"How many months?\\\"]],null],[1,\\\"\\\\n\\\\n                    \\\"],[8,[39,17],null,[[\\\"@predicate\\\"],[[30,3,[\\\"rolloutInstalmentCount\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                      That would yield\\\\n                      \\\"],[1,[30,3,[\\\"rolloutInstalmentCount\\\"]]],[1,\\\"\\\\n                      monthly instalments of approximately\\\\n                      \\\"],[8,[39,33],null,[[\\\"@model\\\",\\\"@firm\\\"],[[28,[37,1],[[30,3,[\\\"rolloutAmountCents\\\"]],[30,3,[\\\"rolloutInstalmentCount\\\"]]],null],[28,[37,27],[[30,0,[\\\"selectedFirmGlobalDetails\\\"]],[30,0,[\\\"placeholderFirmGlobalDetails\\\"]]],null]]],null],[1,\\\"\\\\n                      each.\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n\\\\n                \\\"],[10,2],[12],[1,\\\"\\\\n                  What is the monthly licence fee for\\\\n                  \\\"],[1,[30,3,[\\\"practiceArea\\\"]]],[1,\\\"?\\\\n                  \\\"],[8,[39,32],null,[[\\\"@displayOnly\\\",\\\"@required\\\",\\\"@model\\\",\\\"@placeholder\\\",\\\"@label\\\",\\\"@nocommas\\\"],[[30,0,[\\\"displayOnly\\\"]],true,[30,3,[\\\"licenceFee\\\"]],\\\"Amount in cents/pence\\\",\\\"Fee in cents/pence (excluding GST/VAT)\\\",true]],null],[1,\\\"\\\\n                  \\\"],[10,\\\"small\\\"],[12],[1,\\\"That corresponds to\\\\n                    \\\"],[10,\\\"b\\\"],[12],[8,[39,33],null,[[\\\"@model\\\",\\\"@firm\\\"],[[30,3,[\\\"licenceFee\\\"]],[28,[37,27],[[30,0,[\\\"selectedFirmGlobalDetails\\\"]],[30,0,[\\\"placeholderFirmGlobalDetails\\\"]]],null]]],null],[13],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\\n                \\\"],[10,2],[12],[1,\\\"\\\\n                  What sort of billing arrangement are they on for\\\\n                  \\\"],[1,[30,3,[\\\"practiceArea\\\"]]],[1,\\\"?\\\\n                  \\\"],[8,[39,11],null,[[\\\"@displayOnly\\\",\\\"@label\\\",\\\"@model\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\",\\\"@required\\\"],[[30,0,[\\\"displayOnly\\\"]],\\\"\\\",[30,3,[\\\"billingConversionGroup\\\"]],[28,[37,34],[\\\"billingcode-\\\",[30,3,[\\\"practiceArea\\\"]]],null],[30,0,[\\\"allBillingCodes\\\"]],\\\"label\\\",\\\"value\\\",true]],null],[1,\\\"\\\\n                  \\\"],[8,[39,17],null,[[\\\"@predicate\\\"],[[28,[37,18],[[30,3,[\\\"billingConversionGroup\\\"]],\\\"other\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    Please tell us more, or copy + paste the relevant provisions from the contract.\\\\n                    \\\"],[8,[39,35],null,[[\\\"@displayOnly\\\",\\\"@required\\\",\\\"@model\\\"],[[30,0,[\\\"displayOnly\\\"]],true,[30,3,[\\\"billingConversionGroupMoreInfo\\\"]]]],null],[1,\\\"\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n              \\\"],[10,2],[12],[1,\\\"\\\\n                Will they be reviewing the\\\\n                \\\"],[1,[30,3,[\\\"practiceArea\\\"]]],[1,\\\"\\\\n                blueprints before going live?\\\\n                \\\"],[8,[39,16],null,[[\\\"@displayOnly\\\",\\\"@unselectable\\\",\\\"@model\\\",\\\"@value\\\",\\\"@text\\\"],[[30,0,[\\\"displayOnly\\\"]],true,[30,3,[\\\"reviewingBlueprints\\\"]],\\\"yes\\\",\\\"Yes\\\"]],null],[1,\\\"\\\\n                \\\"],[8,[39,16],null,[[\\\"@displayOnly\\\",\\\"@unselectable\\\",\\\"@model\\\",\\\"@value\\\",\\\"@text\\\"],[[30,0,[\\\"displayOnly\\\"]],true,[30,3,[\\\"reviewingBlueprints\\\"]],\\\"no\\\",\\\"No\\\"]],null],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\\n              \\\"],[8,[39,17],null,[[\\\"@predicate\\\"],[[28,[37,18],[[30,3,[\\\"reviewingBlueprints\\\"]],\\\"yes\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,2],[12],[1,\\\"\\\\n                  Who will be reviewing them?\\\\n                  \\\"],[8,[39,19],null,[[\\\"@displayOnly\\\",\\\"@required\\\",\\\"@model\\\",\\\"@label\\\"],[[30,0,[\\\"displayOnly\\\"]],true,[30,3,[\\\"blueprintReviewName\\\"]],\\\"First name\\\"]],null],[1,\\\"\\\\n                  \\\"],[8,[39,36],null,[[\\\"@displayOnly\\\",\\\"@required\\\",\\\"@model\\\",\\\"@label\\\"],[[30,0,[\\\"displayOnly\\\"]],true,[30,3,[\\\"blueprintReviewEmail\\\"]],\\\"Email address\\\"]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n\\\\n              \\\"],[10,2],[12],[1,\\\"\\\\n                Where should new lead notification emails for\\\\n                \\\"],[1,[30,3,[\\\"practiceArea\\\"]]],[1,\\\"\\\\n                be sent?\\\\n                \\\"],[8,[39,36],null,[[\\\"@displayOnly\\\",\\\"@required\\\",\\\"@model\\\",\\\"@label\\\"],[[30,0,[\\\"displayOnly\\\"]],true,[30,3,[\\\"newLeadNotificationEmail\\\"]],\\\"Email address\\\"]],null],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\\n              \\\"],[10,2],[12],[1,\\\"\\\\n                Is there anything else we should know about their\\\\n                \\\"],[1,[30,3,[\\\"practiceArea\\\"]]],[1,\\\"\\\\n                system in particular?\\\\n                \\\"],[8,[39,35],null,[[\\\"@displayOnly\\\",\\\"@model\\\"],[[30,0,[\\\"displayOnly\\\"]],[30,3,[\\\"moreInfo\\\"]]]],null],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[3]],null],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[10,\\\"b\\\"],[12],[1,[52,[30,0,[\\\"displayOnly\\\"]],\\\"## \\\"]],[1,\\\"Details for all practice areas\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"displayOnly\\\"]]],[[[1,\\\"            \\\"],[10,2],[12],[1,\\\"\\\\n              Please provide as much of this information as you can. If there are things you don't know, just leave them blank.\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            Contract expiry date\\\\n\\\"],[41,[30,0,[\\\"displayOnly\\\"]],[[[1,\\\"              \\\"],[1,[28,[35,37],[[30,0,[\\\"firmContractExpiry\\\"]]],[[\\\"isoDateString\\\"],[true]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"              \\\"],[10,0],[14,0,\\\"datepicker-wrapper\\\"],[12],[1,\\\"\\\\n                \\\"],[8,[39,38],null,[[\\\"@utc\\\",\\\"@date\\\",\\\"@valueFormat\\\",\\\"@format\\\",\\\"@required\\\",\\\"@allowBlank\\\",\\\"@placeholder\\\"],[true,[30,0,[\\\"firmContractExpiry\\\"]],\\\"date\\\",\\\"dddd D MMMM YYYY\\\",true,true,\\\"Click here to select a date\\\"]],null],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[51,[30,0,[\\\"selectedFirm\\\"]]],[[[1,\\\"            \\\"],[10,2],[12],[1,\\\"\\\\n              Timezone of the firm's primary office.\\\\n              \\\"],[8,[39,11],null,[[\\\"@displayOnly\\\",\\\"@label\\\",\\\"@model\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\",\\\"@required\\\"],[[30,0,[\\\"displayOnly\\\"]],\\\"\\\",[30,0,[\\\"firmTimezone\\\"]],\\\"timezone\\\",[30,0,[\\\"timezones\\\"]],\\\"value\\\",\\\"value\\\",true]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              Accounts payable\\\\n              \\\"],[8,[39,19],null,[[\\\"@displayOnly\\\",\\\"@required\\\",\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,0,[\\\"displayOnly\\\"]],true,[30,0,[\\\"firmAccountsPayableName\\\"]],\\\"First name\\\",\\\"Or, eg, 'Accounts Team'\\\"]],null],[1,\\\"\\\\n              \\\"],[8,[39,36],null,[[\\\"@displayOnly\\\",\\\"@required\\\",\\\"@model\\\",\\\"@label\\\",\\\"@allowMultipleEmails\\\"],[[30,0,[\\\"displayOnly\\\"]],true,[30,0,[\\\"firmAccountsPayableEmail\\\"]],\\\"Email address\\\",true]],null],[1,\\\"\\\\n              \\\"],[8,[39,35],null,[[\\\"@displayOnly\\\",\\\"@required\\\",\\\"@model\\\",\\\"@label\\\"],[[30,0,[\\\"displayOnly\\\"]],true,[30,0,[\\\"firmAccountsPayableAddress\\\"]],\\\"Billing address\\\"]],null],[1,\\\"\\\\n              \\\"],[8,[39,19],null,[[\\\"@displayOnly\\\",\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"firmBillingEntityName\\\"]],\\\"Billing entity name\\\",\\\"(if different to the firm's name)\\\"]],null],[1,\\\"\\\\n              \\\"],[8,[39,19],null,[[\\\"@displayOnly\\\",\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"firmCompanyNumber\\\"]],\\\"Business / company number\\\",\\\"(should be specified in the contract)\\\"]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[51,[28,[37,27],[[30,0,[\\\"reviewMode\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"gitlabIssueNumber\\\"]],[30,0,[\\\"hasRolloutSucceeded\\\"]]],null]],[[[1,\\\"            \\\"],[10,2],[14,5,\\\"text-align: right\\\"],[12],[1,\\\"\\\\n              \\\"],[11,\\\"button\\\"],[16,0,[29,[\\\"next-button \\\",[52,[51,[30,0,[\\\"canSubmit\\\"]]],\\\"disabled-button\\\"]]]],[24,4,\\\"button\\\"],[4,[38,9],[[30,0],[52,[30,0,[\\\"canSubmit\\\"]],\\\"processRollout\\\",\\\"nullAction\\\"]],null],[12],[1,\\\"Submit\\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n          \\\"],[8,[39,39],null,[[\\\"@loading\\\",\\\"@success\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,0,[\\\"isRolloutProcessing\\\"]],[30,0,[\\\"hasRolloutSucceeded\\\"]],[30,0,[\\\"hasRolloutFailed\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            The rollout for\\\\n            \\\"],[1,[28,[35,27],[[30,0,[\\\"firmName\\\"]],[30,0,[\\\"selectedFirmGlobalDetails\\\",\\\"name\\\"]]],null]],[1,\\\"\\\\n            has successfully been created. You can view the created Gitlab issue via the\\\\n            \\\"],[10,3],[14,6,\\\"https://settify.slack.com/archives/C02QKUHDF2M\\\"],[12],[1,\\\"#new-firm-rollout\\\"],[13],[1,\\\"\\\\n            channel in Slack.\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,40],null,null,null]],[\\\"guess\\\",\\\"pa\\\",\\\"pa\\\"],false,[\\\"animated-header\\\",\\\"div\\\",\\\"if\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"i\\\",\\\"h1\\\",\\\"a\\\",\\\"action\\\",\\\"loading-spinner\\\",\\\"settify-select\\\",\\\"and\\\",\\\"not-eq\\\",\\\"sentence-case\\\",\\\"concat\\\",\\\"radio-buttons\\\",\\\"liquid-if\\\",\\\"eq\\\",\\\"settify-textline\\\",\\\"br\\\",\\\"lt\\\",\\\"b\\\",\\\"unless\\\",\\\"check-box\\\",\\\"each\\\",\\\"-track-array\\\",\\\"or\\\",\\\"button\\\",\\\"not\\\",\\\"mut\\\",\\\"get\\\",\\\"settify-number\\\",\\\"cents-to-dollars\\\",\\\"sum\\\",\\\"settify-textarea\\\",\\\"settify-email-input\\\",\\\"pretty-date\\\",\\\"date-picker\\\",\\\"loading-display\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/newfirm.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/reportconflict\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Conflict Check\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\" data-client-id={{this.model.client.id}}>\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <br>\n  \n        {{#if this.model.errorMessage}}\n          <p>\n            There was an error processing your conflict request.\n            <CheckInternet />\n          </p>\n          <p>\n            <a class=\"clickable\" {{action \"refreshModel\"}}>Click here try again</a>\n          </p>\n        {{else}}\n          <LiquidIf @predicate={{not this.conflictSaved}}>\n            {{! Note: we use if statements that are larger than strictly necessary, in order to generate visual\n            cues when the different blocks fade in an out - makes it clear that you've done something when\n            you toggle between conflict types }}\n            <LiquidIf @predicate={{eq this.conflictType \"yes\"}}>\n              <p>\n                You have indicated that\n                {{this.firm.name}}\n                <strong class=\"negative\">is conflicted</strong>\n                or\n                <strong class=\"negative\">otherwise unable</strong>\n                to represent the following lead. Please review and confirm below.\n              </p>\n            </LiquidIf>\n            <LiquidIf @predicate={{eq this.conflictType \"no\"}}>\n              <p>\n                You have indicated that\n                {{this.firm.name}}\n                <strong class=\"positive\">is able</strong>\n                to represent the following lead. Please review and confirm below.\n              </p>\n            </LiquidIf>\n  \n            {{#if (or this.model.client.firstName this.model.client.middleName this.model.client.surname)}}\n              <p>\n                <strong>Lead</strong><br />\n                Name:\n                {{this.model.client.title}}\n                <span class=\"settify-sensitive\">{{this.model.client.firstName}}</span>\n                <span class=\"settify-sensitive\">{{this.model.client.middleName}}</span>\n                <span class=\"settify-sensitive\">{{this.model.client.surname}}</span>\n                {{#if this.model.client.otherNames}}\n                  <br />Other names:\n                  <span class=\"settify-sensitive whitespace-pre-line\">{{this.model.client.otherNames}}</span>\n                {{/if}}\n                {{#if this.model.client.address}}\n                  <br />Address:\n                  <AddressPrinter @address={{this.model.client.address}} />\n                {{/if}}\n                {{#if this.model.client.dateOfBirth}}\n                  <br />Date of birth:\n                  <span class=\"settify-sensitive\">{{this.model.client.dateOfBirth}}</span>\n                {{/if}}\n                {{#if this.model.client.email}}\n                  <br />Email:\n                  <span class=\"settify-sensitive\">{{this.model.client.email}}</span>\n                {{/if}}\n                {{#if this.model.client.phone}}\n                  <br />Phone:\n                  <span class=\"settify-sensitive\">{{this.model.client.phone}}</span>\n                {{/if}}\n                {{#if this.model.client.doNotPhone}}\n                  <br /><b>Do not phone <span class=\"settify-sensitive\">{{this.model.client.firstName}}</span> without prior permission</b>\n                {{/if}}\n                {{#if this.model.client.callbackTimes}}\n                  <br />Preferred contact times:\n                  {{this.model.client.callbackTimes}}\n                {{/if}}\n                {{#if this.model.client.helpWanted}}\n                  <br />Help Wanted:\n                  <span class=\"settify-sensitive\">{{this.model.client.firstName}}</span>\n                  {{#if (eq this.model.client.helpWanted \"separation\")}}\n                    needs legal assistance regarding a separation/divorce\n                  {{else if (eq this.model.client.helpWanted \"simplebfa\")}}\n                    needs legal assistance regarding a\n                    {{this.firm.settings.family.BFAWording}}\n                  {{else if (eq this.model.client.helpWanted \"changeagreement\")}}\n                    would like help changing an old agreement or Order\n                  {{else if (eq this.model.client.helpWanted \"childsupport\")}}\n                    only needs help with a child support issue\n                  {{else if (eq this.model.client.helpWanted \"inadequateprovision\")}}\n                    needs advice on inadequate recognition following a foreign marriage or divorce\n                  {{else if (eq this.model.client.helpWanted \"childarrangements\")}}\n                    needs help with a child arrangements\n                  {{else if (eq this.model.client.helpWanted \"childrelocation\")}}\n                    needs help with a child relocation\n                  {{else if (eq this.model.client.helpWanted \"litigationalternatives\")}}\n                    needs advice on alternatives to litigation\n                  {{else if (eq this.model.client.helpWanted \"englishorders\")}}\n                    needs advice on seeking Orders in England\n                  {{else if (eq this.model.client.helpWanted \"domesticenforcement\")}}\n                    needs advice on enforcement of domestic Orders\n                  {{else if (eq this.model.client.helpWanted \"childabduction\")}}\n                    needs help following a child abduction\n                  {{else if (eq this.model.client.helpWanted \"surrogacy\")}}\n                    needs help with surrogacy\n                  {{else if (eq this.model.client.helpWanted \"somethingelse\")}}\n                    needs other assistance\n                  {{/if}}\n                {{/if}}\n                {{#if this.model.client.referralSource}}\n                  <br />Referral Source:\n                  {{#if (eq this.model.client.referralSource \"professionaladvisor\")}}\n                    I was referred by a professional adviser\n                  {{else if (eq this.model.client.referralSource \"pastclient\")}}\n                    I was referred by a past client\n                  {{else if (eq this.model.client.referralSource \"wordofmouth\")}}\n                    Positive word of mouth\n                  {{else if (eq this.model.client.referralSource \"recommendationaward\")}}\n                    Recommendation or awards\n                  {{else if (eq this.model.client.referralSource \"internetsearch\")}}\n                    Internet search\n                  {{else if (eq this.model.client.referralSource \"advertisement\")}}\n                    Information/Advertisement\n                  {{else}}\n                    Other\n                  {{/if}}\n  \n                  {{#if this.model.client.referralSourceMoreInfo}}\n                    &mdash;\n                    {{this.model.client.referralSourceMoreInfo}}\n                  {{/if}}\n                {{/if}}\n              </p>\n            {{/if}}\n  \n            {{!--\n            {{#if model.client.conflictCheckExtraInfo}}\n              <p>\n                <strong>\n                  {{#if (or model.client.firstName model.client.middleName model.client.surname)}}\n                    Additional information\n                  {{else}}\n                    Information\n                  {{/if}}\n                  for conflict check\n                </strong><br />\n                <ul>\n                  {{#each model.client.conflictCheckExtraInfo as |item|}}\n                    <li class=\"settify-sensitive\" style=\"white-space: pre-line;\">{{item.name}}{{possible-colon title=item.name displayOnly=true}} {{item.content}}</li>\n                  {{/each}}\n                </ul>\n              </p>\n            {{/if}}\n            --}}\n  \n            <p>\n              <strong>Lead's partner / former partner</strong><br />\n              Name:\n              {{this.model.spouse.title}}\n              <span class=\"settify-sensitive\">{{this.model.spouse.firstName}}</span>\n              <span class=\"settify-sensitive\">{{this.model.spouse.middleName}}</span>\n              <span class=\"settify-sensitive\">{{this.model.spouse.surname}}</span>\n              {{#if this.model.spouse.otherNames}}\n                <br />Other names:\n                <span class=\"settify-sensitive whitespace-pre-line\">{{this.model.spouse.otherNames}}</span>\n              {{/if}}\n              {{#if this.model.spouse.address}}\n                <br />Address:\n                <AddressSimple @address={{this.model.spouse.address}} />\n              {{/if}}\n              {{#if this.model.spouse.dateOfBirth}}\n                <br />Date of birth:\n                <span class=\"settify-sensitive\">{{this.model.spouse.dateOfBirth}}</span>\n              {{/if}}\n            </p>\n  \n            {{!--\n            {{#if model.businesses.length}}\n              <p>\n                <strong>Related businesses</strong>\n                <ul>\n                  {{#each model.businesses as |item|}}\n                    <li class=\"settify-sensitive\">{{item}}</li>\n                  {{/each}}\n                </ul>\n              </p>\n            {{else if firm.settings.admin.conflictCheck.showBusinesses}}\n              <p>No related businesses specified at this stage.</p>\n            {{/if}}\n  \n            {{#if model.trusts.length}}\n              <p>\n                <strong>Related trusts</strong>\n                <ul>\n                  {{#each model.trusts as |item|}}\n                    <li class=\"settify-sensitive\">{{item}}</li>\n                  {{/each}}\n                </ul>\n              </p>\n            {{else if firm.settings.admin.conflictCheck.showTrusts}}\n              <p>No related trusts specified at this stage.</p>\n            {{/if}}\n  \n            {{#if model.investments.length}}\n              <p>\n                <strong>Related investments</strong>\n                <ul>\n                  {{#each model.investments as |item|}}\n                    <li class=\"settify-sensitive\">{{item}}</li>\n                  {{/each}}\n                </ul>\n              </p>\n            {{else if firm.settings.admin.conflictCheck.showInvestments}}\n              <p>No related investments specified at this stage.</p>\n            {{/if}}\n  \n            {{#if model.SMSFs.length}}\n              <p>\n                <strong>Related SMSFs</strong>\n                <ul>\n                  {{#each model.SMSFs as |item|}}\n                    <li class=\"settify-sensitive\">{{item}}</li>\n                  {{/each}}\n                </ul>\n              </p>\n            {{else if firm.settings.admin.conflictCheck.showSMSFs}}\n              <p>No related SMSFs specified at this stage.</p>\n            {{/if}}\n  \n            {{#if model.otherRelatedEntities}}\n              <p>\n                <strong>Additional information about related entities</strong> <br>\n                <span class=\"settify-sensitive\">{{model.otherRelatedEntities}}</span>\n              </p>\n            {{/if}}\n            --}}\n  \n            <LiquidIf @predicate={{eq this.conflictType \"check\"}}>\n              <p>\n                <button type=\"button\" class=\"next-button hvr-float-shadow no-align positive-button\" {{action \"toggleConflictType\" \"no\"}} data-test-conflict-yes>{{this.firm.name}}\n                  can act</button>\n                <button type=\"button\" class=\"next-button hvr-float-shadow no-align dangerous-button\" {{action \"toggleConflictType\" \"yes\"}} data-test-conflict-no>{{this.firm.name}}\n                  can not act</button>\n              </p>\n            </LiquidIf>\n            <p>\n              <LiquidIf @predicate={{eq this.conflictType \"yes\"}}>\n                <CheckBox @text={{sum \"I confirm that \" this.firm.name \" is unable to represent this lead\"}} @model={{this.conflictConfirmation}} @name=\"conflict-check-yes\" />\n              </LiquidIf>\n              <LiquidIf @predicate={{eq this.conflictType \"no\"}}>\n                <CheckBox\n                  @text={{sum \"I confirm that \" this.firm.name \" has run all appropriate checks, and is able to represent this lead\"}}\n                  @model={{this.conflictConfirmation}}\n                  @name=\"conflict-check-no\"\n                />\n              </LiquidIf>\n            </p>\n            <LiquidIf @predicate={{this.conflictSaving}}>\n              <LoadingSpinner />\n            </LiquidIf>\n            <LiquidIf @predicate={{this.errorMessage}}>\n              <p>\n                <strong>Error:</strong>\n                we were unable to save the conflict information.\n                <CheckInternet />\n                If you continue to have difficulties with this lead, please send an email to\n                <a href=\"mailto:support@settify.com.au\">support@settify.com.au</a>\n              </p>\n            </LiquidIf>\n            <p class=\"rightalign\">\n              <LiquidIf @predicate={{eq this.conflictType \"yes\"}}>\n                <button\n                  type=\"button\"\n                  data-test-register-conflict\n                  class=\"next-button hvr-float-shadow hvr-grow {{unless this.conflictConfirmation 'disabled-button'}}\"\n                  {{action (if this.conflictConfirmation \"confirmConflict\" \"nullAction\")}}\n                >Register Conflict</button>\n              </LiquidIf>\n              <LiquidIf @predicate={{eq this.conflictType \"no\"}}>\n                <button\n                  type=\"button\"\n                  data-test-no-conflict\n                  class=\"next-button hvr-float-shadow hvr-grow {{unless this.conflictConfirmation 'disabled-button'}}\"\n                  {{action (if this.conflictConfirmation \"confirmConflict\" \"nullAction\")}}\n                >Confirm No Conflict</button>\n              </LiquidIf>\n            </p>\n            <p>\n              <LiquidIf @predicate={{eq this.conflictType \"yes\"}}>\n                <small>If {{this.firm.name}} <strong>is able</strong> to represent this lead, <a class=\"clickable\" {{action \"toggleConflictType\"}}>click here instead</a>.</small>\n              </LiquidIf>\n              <LiquidIf @predicate={{eq this.conflictType \"no\"}}>\n                <small>If {{this.firm.name}} <strong>is not</strong> able to represent this lead, <a class=\"clickable\" {{action \"toggleConflictType\"}}>click here instead</a>.</small>\n              </LiquidIf>\n            </p>\n          </LiquidIf>\n          <LiquidIf @predicate={{this.conflictSaved}}>\n            <p>\n              <i class=\"fal fa-check-circle\" />\n              Thanks. We have saved a record that\n              {{this.firm.name}}\n              <strong class={{if (eq this.conflictType \"yes\") \"negative\" \"positive\"}}>\n                is\n                {{if (eq this.conflictType \"yes\") \"not\"}}\n                able\n              </strong>\n              to represent this lead.\n            </p>\n            <p>\n              {{#if (eq this.conflictType \"yes\")}}\n                You may now close this window.\n              {{else}}\n                <LinkTo @route=\"admin.clients\" @model={{this.model.client.id}}>Click here to view their client record.</LinkTo>\n              {{/if}}\n            </p>\n          </LiquidIf>\n        {{/if}}\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"PMdmqqLc\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Conflict Check\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[15,\\\"data-client-id\\\",[30,0,[\\\"model\\\",\\\"client\\\",\\\"id\\\"]]],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"errorMessage\\\"]],[[[1,\\\"        \\\"],[10,2],[12],[1,\\\"\\\\n          There was an error processing your conflict request.\\\\n          \\\"],[8,[39,5],null,null,null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,7],[[30,0],\\\"refreshModel\\\"],null],[12],[1,\\\"Click here try again\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,9],[[30,0,[\\\"conflictSaved\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[1,\\\"          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,10],[[30,0,[\\\"conflictType\\\"]],\\\"yes\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              You have indicated that\\\\n              \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\"\\\\n              \\\"],[10,\\\"strong\\\"],[14,0,\\\"negative\\\"],[12],[1,\\\"is conflicted\\\"],[13],[1,\\\"\\\\n              or\\\\n              \\\"],[10,\\\"strong\\\"],[14,0,\\\"negative\\\"],[12],[1,\\\"otherwise unable\\\"],[13],[1,\\\"\\\\n              to represent the following lead. Please review and confirm below.\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,10],[[30,0,[\\\"conflictType\\\"]],\\\"no\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              You have indicated that\\\\n              \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\"\\\\n              \\\"],[10,\\\"strong\\\"],[14,0,\\\"positive\\\"],[12],[1,\\\"is able\\\"],[13],[1,\\\"\\\\n              to represent the following lead. Please review and confirm below.\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,12],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"firstName\\\"]],[30,0,[\\\"model\\\",\\\"client\\\",\\\"middleName\\\"]],[30,0,[\\\"model\\\",\\\"client\\\",\\\"surname\\\"]]],null],[[[1,\\\"            \\\"],[10,2],[12],[1,\\\"\\\\n              \\\"],[10,\\\"strong\\\"],[12],[1,\\\"Lead\\\"],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n              Name:\\\\n              \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"title\\\"]]],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"firstName\\\"]]],[13],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"middleName\\\"]]],[13],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"surname\\\"]]],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"otherNames\\\"]],[[[1,\\\"                \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"Other names:\\\\n                \\\"],[10,1],[14,0,\\\"settify-sensitive whitespace-pre-line\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"otherNames\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"address\\\"]],[[[1,\\\"                \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"Address:\\\\n                \\\"],[8,[39,14],null,[[\\\"@address\\\"],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"address\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"dateOfBirth\\\"]],[[[1,\\\"                \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"Date of birth:\\\\n                \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"dateOfBirth\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"email\\\"]],[[[1,\\\"                \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"Email:\\\\n                \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"email\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"phone\\\"]],[[[1,\\\"                \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"Phone:\\\\n                \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"phone\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"doNotPhone\\\"]],[[[1,\\\"                \\\"],[10,\\\"br\\\"],[12],[13],[10,\\\"b\\\"],[12],[1,\\\"Do not phone \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"firstName\\\"]]],[13],[1,\\\" without prior permission\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"callbackTimes\\\"]],[[[1,\\\"                \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"Preferred contact times:\\\\n                \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"callbackTimes\\\"]]],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWanted\\\"]],[[[1,\\\"                \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"Help Wanted:\\\\n                \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"firstName\\\"]]],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,10],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWanted\\\"]],\\\"separation\\\"],null],[[[1,\\\"                  needs legal assistance regarding a separation/divorce\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWanted\\\"]],\\\"simplebfa\\\"],null],[[[1,\\\"                  needs legal assistance regarding a\\\\n                  \\\"],[1,[30,0,[\\\"firm\\\",\\\"settings\\\",\\\"family\\\",\\\"BFAWording\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWanted\\\"]],\\\"changeagreement\\\"],null],[[[1,\\\"                  would like help changing an old agreement or Order\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWanted\\\"]],\\\"childsupport\\\"],null],[[[1,\\\"                  only needs help with a child support issue\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWanted\\\"]],\\\"inadequateprovision\\\"],null],[[[1,\\\"                  needs advice on inadequate recognition following a foreign marriage or divorce\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWanted\\\"]],\\\"childarrangements\\\"],null],[[[1,\\\"                  needs help with a child arrangements\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWanted\\\"]],\\\"childrelocation\\\"],null],[[[1,\\\"                  needs help with a child relocation\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWanted\\\"]],\\\"litigationalternatives\\\"],null],[[[1,\\\"                  needs advice on alternatives to litigation\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWanted\\\"]],\\\"englishorders\\\"],null],[[[1,\\\"                  needs advice on seeking Orders in England\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWanted\\\"]],\\\"domesticenforcement\\\"],null],[[[1,\\\"                  needs advice on enforcement of domestic Orders\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWanted\\\"]],\\\"childabduction\\\"],null],[[[1,\\\"                  needs help following a child abduction\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWanted\\\"]],\\\"surrogacy\\\"],null],[[[1,\\\"                  needs help with surrogacy\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWanted\\\"]],\\\"somethingelse\\\"],null],[[[1,\\\"                  needs other assistance\\\\n                \\\"]],[]],null]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]],null],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"referralSource\\\"]],[[[1,\\\"                \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"Referral Source:\\\\n\\\"],[41,[28,[37,10],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"referralSource\\\"]],\\\"professionaladvisor\\\"],null],[[[1,\\\"                  I was referred by a professional adviser\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"referralSource\\\"]],\\\"pastclient\\\"],null],[[[1,\\\"                  I was referred by a past client\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"referralSource\\\"]],\\\"wordofmouth\\\"],null],[[[1,\\\"                  Positive word of mouth\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"referralSource\\\"]],\\\"recommendationaward\\\"],null],[[[1,\\\"                  Recommendation or awards\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"referralSource\\\"]],\\\"internetsearch\\\"],null],[[[1,\\\"                  Internet search\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"referralSource\\\"]],\\\"advertisement\\\"],null],[[[1,\\\"                  Information/Advertisement\\\\n\\\"]],[]],[[[1,\\\"                  Other\\\\n                \\\"]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"referralSourceMoreInfo\\\"]],[[[1,\\\"                  —\\\\n                  \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"referralSourceMoreInfo\\\"]]],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[10,\\\"strong\\\"],[12],[1,\\\"Lead's partner / former partner\\\"],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n            Name:\\\\n            \\\"],[1,[30,0,[\\\"model\\\",\\\"spouse\\\",\\\"title\\\"]]],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"spouse\\\",\\\"firstName\\\"]]],[13],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"spouse\\\",\\\"middleName\\\"]]],[13],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"spouse\\\",\\\"surname\\\"]]],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"spouse\\\",\\\"otherNames\\\"]],[[[1,\\\"              \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"Other names:\\\\n              \\\"],[10,1],[14,0,\\\"settify-sensitive whitespace-pre-line\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"spouse\\\",\\\"otherNames\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"model\\\",\\\"spouse\\\",\\\"address\\\"]],[[[1,\\\"              \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"Address:\\\\n              \\\"],[8,[39,16],null,[[\\\"@address\\\"],[[30,0,[\\\"model\\\",\\\"spouse\\\",\\\"address\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"model\\\",\\\"spouse\\\",\\\"dateOfBirth\\\"]],[[[1,\\\"              \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"Date of birth:\\\\n              \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"spouse\\\",\\\"dateOfBirth\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"\\\\n          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,10],[[30,0,[\\\"conflictType\\\"]],\\\"check\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              \\\"],[11,\\\"button\\\"],[24,0,\\\"next-button hvr-float-shadow no-align positive-button\\\"],[24,\\\"data-test-conflict-yes\\\",\\\"\\\"],[24,4,\\\"button\\\"],[4,[38,7],[[30,0],\\\"toggleConflictType\\\",\\\"no\\\"],null],[12],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\"\\\\n                can act\\\"],[13],[1,\\\"\\\\n              \\\"],[11,\\\"button\\\"],[24,0,\\\"next-button hvr-float-shadow no-align dangerous-button\\\"],[24,\\\"data-test-conflict-no\\\",\\\"\\\"],[24,4,\\\"button\\\"],[4,[38,7],[[30,0],\\\"toggleConflictType\\\",\\\"yes\\\"],null],[12],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\"\\\\n                can not act\\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,10],[[30,0,[\\\"conflictType\\\"]],\\\"yes\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[39,18],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@name\\\"],[[28,[37,19],[\\\"I confirm that \\\",[30,0,[\\\"firm\\\",\\\"name\\\"]],\\\" is unable to represent this lead\\\"],null],[30,0,[\\\"conflictConfirmation\\\"]],\\\"conflict-check-yes\\\"]],null],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,10],[[30,0,[\\\"conflictType\\\"]],\\\"no\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[39,18],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@name\\\"],[[28,[37,19],[\\\"I confirm that \\\",[30,0,[\\\"firm\\\",\\\"name\\\"]],\\\" has run all appropriate checks, and is able to represent this lead\\\"],null],[30,0,[\\\"conflictConfirmation\\\"]],\\\"conflict-check-no\\\"]],null],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"conflictSaving\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,20],null,null,null],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"errorMessage\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              \\\"],[10,\\\"strong\\\"],[12],[1,\\\"Error:\\\"],[13],[1,\\\"\\\\n              we were unable to save the conflict information.\\\\n              \\\"],[8,[39,5],null,null,null],[1,\\\"\\\\n              If you continue to have difficulties with this lead, please send an email to\\\\n              \\\"],[10,3],[14,6,\\\"mailto:support@settify.com.au\\\"],[12],[1,\\\"support@settify.com.au\\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[10,2],[14,0,\\\"rightalign\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,10],[[30,0,[\\\"conflictType\\\"]],\\\"yes\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[11,\\\"button\\\"],[24,\\\"data-test-register-conflict\\\",\\\"\\\"],[16,0,[29,[\\\"next-button hvr-float-shadow hvr-grow \\\",[52,[51,[30,0,[\\\"conflictConfirmation\\\"]]],\\\"disabled-button\\\"]]]],[24,4,\\\"button\\\"],[4,[38,7],[[30,0],[52,[30,0,[\\\"conflictConfirmation\\\"]],\\\"confirmConflict\\\",\\\"nullAction\\\"]],null],[12],[1,\\\"Register Conflict\\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,10],[[30,0,[\\\"conflictType\\\"]],\\\"no\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[11,\\\"button\\\"],[24,\\\"data-test-no-conflict\\\",\\\"\\\"],[16,0,[29,[\\\"next-button hvr-float-shadow hvr-grow \\\",[52,[51,[30,0,[\\\"conflictConfirmation\\\"]]],\\\"disabled-button\\\"]]]],[24,4,\\\"button\\\"],[4,[38,7],[[30,0],[52,[30,0,[\\\"conflictConfirmation\\\"]],\\\"confirmConflict\\\",\\\"nullAction\\\"]],null],[12],[1,\\\"Confirm No Conflict\\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,10],[[30,0,[\\\"conflictType\\\"]],\\\"yes\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,\\\"small\\\"],[12],[1,\\\"If \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\" \\\"],[10,\\\"strong\\\"],[12],[1,\\\"is able\\\"],[13],[1,\\\" to represent this lead, \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,7],[[30,0],\\\"toggleConflictType\\\"],null],[12],[1,\\\"click here instead\\\"],[13],[1,\\\".\\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,10],[[30,0,[\\\"conflictType\\\"]],\\\"no\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,\\\"small\\\"],[12],[1,\\\"If \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\" \\\"],[10,\\\"strong\\\"],[12],[1,\\\"is not\\\"],[13],[1,\\\" able to represent this lead, \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,7],[[30,0],\\\"toggleConflictType\\\"],null],[12],[1,\\\"click here instead\\\"],[13],[1,\\\".\\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"conflictSaved\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"\\\\n            Thanks. We have saved a record that\\\\n            \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\"\\\\n            \\\"],[10,\\\"strong\\\"],[15,0,[52,[28,[37,10],[[30,0,[\\\"conflictType\\\"]],\\\"yes\\\"],null],\\\"negative\\\",\\\"positive\\\"]],[12],[1,\\\"\\\\n              is\\\\n              \\\"],[1,[52,[28,[37,10],[[30,0,[\\\"conflictType\\\"]],\\\"yes\\\"],null],\\\"not\\\"]],[1,\\\"\\\\n              able\\\\n            \\\"],[13],[1,\\\"\\\\n            to represent this lead.\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,10],[[30,0,[\\\"conflictType\\\"]],\\\"yes\\\"],null],[[[1,\\\"              You may now close this window.\\\\n\\\"]],[]],[[[1,\\\"              \\\"],[8,[39,24],null,[[\\\"@route\\\",\\\"@model\\\"],[\\\"admin.clients\\\",[30,0,[\\\"model\\\",\\\"client\\\",\\\"id\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"Click here to view their client record.\\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,25],null,null,null]],[],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"if\\\",\\\"p\\\",\\\"check-internet\\\",\\\"a\\\",\\\"action\\\",\\\"liquid-if\\\",\\\"not\\\",\\\"eq\\\",\\\"strong\\\",\\\"or\\\",\\\"span\\\",\\\"address-printer\\\",\\\"b\\\",\\\"address-simple\\\",\\\"button\\\",\\\"check-box\\\",\\\"sum\\\",\\\"loading-spinner\\\",\\\"unless\\\",\\\"small\\\",\\\"i\\\",\\\"link-to\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/reportconflict.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/resetconflict\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Reset Conflict Check\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <br>\n        <p><small><LinkTo @route=\"index\"><i class=\"fal fa-home-lg-alt\" />Home</LinkTo></small></p>\n        <p>\n          You are able to reset the conflict check for this client for a limited time, giving you the ability to run the check again. An audit record will be saved that the conflict\n          status has been reset.\n        </p>\n  \n        {{#if (and this.conflict (eq this.conflict \"noconflict\"))}}\n          <p>\n            If in fact you\n            <i>are</i>\n            conflicted, you should also keep track of anyone who viewed this person's information, and ensure that no one else views it, as well as destroying any documents that may\n            have been downloaded or emailed.\n          </p>\n        {{/if}}\n  \n        <LiquidIf @predicate={{not this.undoConflictSuccess}}>\n          <p class=\"rightalign\">\n            <button type=\"button\" class=\"next-button\" {{action \"resetConflict\"}}>Reset The Conflict</button>\n          </p>\n        </LiquidIf>\n  \n        <LoadingDisplay @loading={{this.loading}} @success={{this.undoConflictSuccess}} @error={{this.undoConflictFailure}} @showError={{true}}>\n          The conflict check has been reset successfully.<br />\n          <LinkTo @route=\"admin.reportconflict\" @query={{hash clientID=this.clientID conflict=\"check\"}}>\n            Click here to run the conflict check again.\n          </LinkTo>\n        </LoadingDisplay>\n  \n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"6uDLqMNN\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Reset Conflict Check\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,5],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-home-lg-alt\\\"],[12],[13],[1,\\\"Home\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        You are able to reset the conflict check for this client for a limited time, giving you the ability to run the check again. An audit record will be saved that the conflict\\\\n        status has been reset.\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,8],[[30,0,[\\\"conflict\\\"]],[28,[37,9],[[30,0,[\\\"conflict\\\"]],\\\"noconflict\\\"],null]],null],[[[1,\\\"        \\\"],[10,2],[12],[1,\\\"\\\\n          If in fact you\\\\n          \\\"],[10,\\\"i\\\"],[12],[1,\\\"are\\\"],[13],[1,\\\"\\\\n          conflicted, you should also keep track of anyone who viewed this person's information, and ensure that no one else views it, as well as destroying any documents that may\\\\n          have been downloaded or emailed.\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n      \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[28,[37,11],[[30,0,[\\\"undoConflictSuccess\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"rightalign\\\"],[12],[1,\\\"\\\\n          \\\"],[11,\\\"button\\\"],[24,0,\\\"next-button\\\"],[24,4,\\\"button\\\"],[4,[38,13],[[30,0],\\\"resetConflict\\\"],null],[12],[1,\\\"Reset The Conflict\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\\n      \\\"],[8,[39,14],null,[[\\\"@loading\\\",\\\"@success\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,0,[\\\"loading\\\"]],[30,0,[\\\"undoConflictSuccess\\\"]],[30,0,[\\\"undoConflictFailure\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        The conflict check has been reset successfully.\\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[8,[39,5],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.reportconflict\\\",[28,[37,15],null,[[\\\"clientID\\\",\\\"conflict\\\"],[[30,0,[\\\"clientID\\\"]],\\\"check\\\"]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          Click here to run the conflict check again.\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,16],null,null,null]],[],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"i\\\",\\\"if\\\",\\\"and\\\",\\\"eq\\\",\\\"liquid-if\\\",\\\"not\\\",\\\"button\\\",\\\"action\\\",\\\"loading-display\\\",\\\"hash\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/resetconflict.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/reviewinvoice\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    <img class=\"firm-header-logo\" src={{this.firm.logoURL}} alt=\"{{this.firm.name}}\" />\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <nav class=\"small backhome\">\n          <LinkTo @route=\"admin.config.accounts\"><i class=\"fal fa-arrow-circle-left\" />Back</LinkTo>\n          <LinkTo @route=\"index\"><i class=\"fal fa-home-lg-alt\" />Home</LinkTo>\n        </nav>\n  \n        <h2>Invoice review</h2>\n        <p class=\"settify-callout\">\n          <i class=\"fal fa-info-circle\" />\n          <span>\n            Clients are now saved as you mark them and will be automatically finalised on the 14th, allowing you to make changes until the invoice is issued.\n          </span>\n        </p>\n  \n        {{#if (eq this.model \"noDates\")}}\n          <p>\n            Uh oh - no billing period has been specified. It looks like you might have come here via a broken link. If you copied and pasted a link into your browser, please make\n            sure that you copied the entire thing.\n          </p>\n          <p>\n            <LinkTo @route=\"admin.index\">Return to the home page</LinkTo>\n          </p>\n          <p>\n            <LinkTo @route=\"admin.reviewinvoice\" @query={{hash historical=\"true\"}}>Review historical leads (if any)</LinkTo>\n          </p>\n          <p>\n            <a href=\"https://settify-firm.freshdesk.com\" target=\"_blank\" rel=\"noopener noreferrer\">Submit a tech support request</a>\n          </p>\n        {{else if this.model}}\n          {{#if this.model.sweep}}\n            <h4>Historical Leads</h4>\n          {{else}}\n            <h4>New and Unmarked Leads</h4>\n          {{/if}}\n          <div class=\"lead-list-information\">\n            {{#if this.allCompleted}}\n              <p>\n                All\n                {{#if this.model.sweep}}historical{{/if}}\n                leads have been successfully marked. Nothing more to do!\n              </p>\n            {{else if this.model.informationRequiredForInvoice}}\n              {{#if this.model.sweep}}\n                <p class=\"do-not-print\">\n                  Every few months, we check in with you about past Settify leads who were marked as 'did not convert', to see whether they have since engaged your firm.\n                </p>\n              {{/if}}\n              <p>\n                Please review\n                {{#if (gt this.allPracticeAreas.length 1)}}each practice area's{{else}}the{{/if}}\n                list below and mark each client appropriately.\n                {{#if this.hasLeadsConversionTypeClients}}\n                  Some clients will already be marked due to our new\n                  <a href=\"https://settify.com/wp-content/uploads/2023/07/Fair-Billing-Policy-FAQs-3.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">Fair Billing Policy</a>.\n                {{/if}}\n                If you have any questions, please contact\n                <a href=\"https://settify-firm.freshdesk.com\" target=\"_blank\" rel=\"noopener noreferrer\">Settify Support</a>.\n              </p>\n            {{else}}\n              <p>\n                {{this.firm.name}}\n                is on an unlimited usage plan, which means that strictly speaking, we don't need to know which leads became ongoing clients, and which didn't. However, that\n                information is helpful to us when it comes to improving the system. We'd be grateful if you could review the list below and mark each client appropriately.\n              </p>\n            {{/if}}\n          </div>\n          <p class=\"marginbottom-5\">\n            {{!--\n            {{#if (and model.allowBillingSplitByPA (gt invoiceRequestInformationByPA.length 1))}}\n              <div style=\"display: flex; align-items: center;\">\n                <h4>Showing leads for the following practice areas:</h4><span class=\"unseen-changes-bubble\">New</span>\n              </div>\n              <div class=\"settify-checkbox-opacity\">\n                {{#each invoiceRequestInformationByPA as |pa|}}\n                  {{#if pa.completed}}\n                    {{#check-box model=true disabled=true}}\n                      <span style=\"opacity: 0.5\">\n                        {{pa.label}} &mdash; Completed\n                      </span>\n                    {{/check-box}}\n                  {{else}}\n                    {{#check-box model=pa.selected disabled=pa.disabled}}\n                      {{pa.label}}\n                    {{/check-box}}\n                  {{/if}}\n                {{/each}}\n              </div>\n              <br />\n            {{/if}}\n            --}}\n            {{#each-in this.model.leadsByPracticeArea as |practiceArea leadList|}}\n              <div\n                class=\"lead-list-header\n                  {{if (gt this.allPracticeAreas.length 1) 'clickable' ''}}\n                  {{if (and (not leadList.length) (gt this.allPracticeAreas.length 1)) 'disabled' ''}}\"\n                {{action (if leadList.length \"toggleExpand\" \"nullAction\") practiceArea}}\n              >\n                <h4>\n                  {{#if (gt this.allPracticeAreas.length 1)}}\n                    <i class=\"fal fa-chevron-right {{if (get this.expand practiceArea) 'fa-rotate-90'}}\" />\n                  {{/if}}\n                  <span>{{practiceArea}} leads</span>\n                </h4>\n                <div>\n                  <small>\n                    {{#if (get this.leadsRemaining practiceArea)}}\n                      {{get this.leadsRemaining practiceArea}}\n                      {{#if (gt (get this.leadsRemaining practiceArea) 1)}}leads{{else}}lead{{/if}}\n                      to mark\n                      <i class=\"fal fa-marker\" />\n                    {{else}}\n                      All leads marked\n                      <i class=\"fal fa-check\" />\n                    {{/if}}\n                  </small>\n                </div>\n              </div>\n              <LiquidIf @predicate={{or (get this.expand practiceArea) (eq this.allPracticeAreas.length 1)}}>\n                <table class=\"lead-list-table\">\n                  <thead>\n                    <tr>\n                      <th class=\"lead-name\">Lead</th>\n                      <th class=\"lead-info\"></th>\n                      <th class=\"lead-status\">Status</th>\n                    </tr>\n                  </thead>\n                  <tbody>\n                    {{#each leadList as |lead|}}\n                      <tr>\n                        <th class=\"lead-name\">\n                          <PracticeAreaLink @clientID={{lead.clientID}} @practiceArea={{lead.practiceArea}} target=\"_blank\" rel=\"noopener noreferrer\">\n                            {{lead.name}}\n                            {{#if (not lead.conflictCheckCompleted)}}\n                              <i class=\"fal fa-exclamation-circle tight negative\" title=\"No conflict check has been completed for this lead.\" />\n                            {{else if lead.hasConflict}}\n                              <i class=\"fal fa-exclamation-circle tight\" title=\"Previously marked as conflicted.\" />\n                            {{/if}}\n                          </PracticeAreaLink>\n                        </th>\n                        <td class=\"lead-info\">\n                          {{#if (eq lead.referral \"invitation\")}}\n                            <div>Invited and completed on {{lead.formattedReferralDate}}</div>\n                            <span class=\"small {{if lead.reallyOld 'negative' ''}}\">{{lead.timeSinceReferralDate}}</span>\n                          {{else}}\n                            <div>Website referral on {{lead.formattedReferralDate}}</div>\n                            <span class={{if lead.reallyOld \"negative\" \"\"}}>{{lead.timeSinceReferralDate}}</span>\n                          {{/if}}\n                        </td>\n                        <td\n                          class=\"lead-status\n                            {{if (and (not this.model.sweep) (not lead.invoiceType)) 'lead-pending' ''}}\n                            {{if (and this.model.sweep (not lead.billingSweepInvoiceType)) 'lead-pending' ''}}\"\n                        >\n                          <BillingStatusSelect\n                            @lead={{lead}}\n                            @firmSettings={{this.model.firm}}\n                            @conversionTypes={{this.model.conversionTypes}}\n                            @sweep={{this.model.sweep}}\n                            @confirmationComplete={{this.confirmationComplete}}\n                            @setInvoiceType={{action \"setInvoiceType\"}}\n                          />\n                        </td>\n                      </tr>\n                    {{/each}}\n                  </tbody>\n                </table>\n              </LiquidIf>\n            {{/each-in}}\n  \n            {{#each this.allPracticeAreas as |practiceArea|}}\n              {{#if (not (get this.model.leadsByPracticeArea practiceArea))}}\n                <div class=\"lead-list-header disabled\">\n                  <h4>\n                    <i class=\"fal fa-chevron-right\" />\n                    <span>{{practiceArea}} leads</span>\n                  </h4>\n                  <div>\n                    <small>\n                      {{#if this.model.sweep}}\n                        No past Settify leads to mark\n                      {{else}}\n                        No leads this month\n                      {{/if}}\n                    </small>\n                  </div>\n                </div>\n              {{/if}}\n            {{/each}}\n          </p>\n          <div class=\"lead-list-information\">\n            {{#if (and (not this.model.sweep) this.showHistoricalLeadsLink)}}\n              <div>\n                <p class=\"centertext\">\n                  Once completed, please review any\n                  <LinkTo @route=\"admin.reviewinvoice\" @query={{hash historical=\"true\"}}>historical</LinkTo>\n                  leads or return to the\n                  <LinkTo @route=\"admin.index\">dashboard</LinkTo>.\n                </p>\n              </div>\n            {{/if}}\n            {{#if this.model.sweep}}\n              <p class=\"centertext\">\n                Once completed, please review any\n                <LinkTo @route=\"admin.reviewinvoice\" @query={{hash historical=\"false\"}}>new and unmarked</LinkTo>\n                leads or return to the\n                <LinkTo @route=\"admin.index\">dashboard</LinkTo>.\n              </p>\n            {{/if}}\n          </div>\n          {{!--\n          {{#if (and (not model.sweep) (gt model.allLeads.length firm.settings.admin.reviewInvoice.minClientsForSummaryDisplay))}}\n            <p>\n              <b>Summary:</b>\n            </p>\n            <LiquidIf @predicate={{not allRecordsActioned}}>\n              <p class=\"{{if highlightLeadsToAction \"highlight\" \"\"}}\">\n                <small><b>Leads that still need to be marked</b></small><br>\n                {{#each-in leadsRemaining as |pa num|}}\n                  {{sentence-case pa}}:\n                  {{#if num}}\n                    <b>{{num}}</b>\n                  {{else}}\n                    All done, nothing left to do.\n                  {{/if}}\n                  <br>\n                {{/each-in}}\n              </p>\n            </LiquidIf>\n            <p>\n              <small><b>Totals</b></small><br>\n              {{#each-in conversionTotals as |key total|}}\n                {{sentence-case key}}: <b>{{total}}</b> <br>\n              {{/each-in}}\n            </p>\n          {{/if}}\n          --}}\n          <LiquidIf @predicate={{this.loading}}>\n            <LoadingSpinner />\n          </LiquidIf>\n          <LiquidIf @predicate={{this.errorMessage}}>\n            <p>\n              <strong>Uh oh,</strong>\n              it looks like an error might have occurred. Try clicking \"try again\", and if the error persists, please get in touch with us.\n            </p>\n          </LiquidIf>\n  \n          <LiquidIf @predicate={{this.confirmationComplete}}>\n            <p>\n              <i class=\"fal fa-thumbs-up\" />\n              Thanks so much for confirming those clients!\n              {{!-- We'll be sending our invoice to\n              {{#if model.firm.global.accountsPayableNames}}\n                {{model.firm.global.accountsPayableNames}}\n                {{#if model.firm.global.accountsPayableEmails}}\n                  ({{model.firm.global.accountsPayableEmails}})\n                {{/if}}\n              {{else}}\n                your billing team\n              {{/if}}\n              on the 14th of this month. --}}\n            </p>\n          </LiquidIf>\n          {{!--\n          {{#if (and (not model.sweep) (gt filteredLineItems.length 0))}}\n            <p>\n              The following clients have all been covered previously, but either we\n              haven't invoiced for them yet, or their\n              status has changed since our last invoice was sent out. No action is\n              required, as we'll include them on the next invoice automatically,\n              we just don't want you to think we've forgotten about them.\n            </p>\n            <ul>\n              {{#each filteredLineItems as |lineItem|}}\n                <li style=\"list-style-type:none\">\n                  {{practice-area-icon practiceArea=lineItem.practiceArea}}{{lineItem.clientName}} &mdash; {{lineItem.description}}\n                </li>\n              {{/each}}\n            </ul>\n          {{/if}}\n          --}}\n        {{/if}}\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  {{outlet}}\n  */\n  {\n    \"id\": \"oUB6fA4u\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,\\\"img\\\"],[14,0,\\\"firm-header-logo\\\"],[15,\\\"src\\\",[30,0,[\\\"firm\\\",\\\"logoURL\\\"]]],[15,\\\"alt\\\",[29,[[30,0,[\\\"firm\\\",\\\"name\\\"]]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"nav\\\"],[14,0,\\\"small backhome\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,4],null,[[\\\"@route\\\"],[\\\"admin.config.accounts\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,4],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-home-lg-alt\\\"],[12],[13],[1,\\\"Home\\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,\\\"h2\\\"],[12],[1,\\\"Invoice review\\\"],[13],[1,\\\"\\\\n      \\\"],[10,2],[14,0,\\\"settify-callout\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-info-circle\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[10,1],[12],[1,\\\"\\\\n          Clients are now saved as you mark them and will be automatically finalised on the 14th, allowing you to make changes until the invoice is issued.\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,10],[[30,0,[\\\"model\\\"]],\\\"noDates\\\"],null],[[[1,\\\"        \\\"],[10,2],[12],[1,\\\"\\\\n          Uh oh - no billing period has been specified. It looks like you might have come here via a broken link. If you copied and pasted a link into your browser, please make\\\\n          sure that you copied the entire thing.\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[8,[39,4],null,[[\\\"@route\\\"],[\\\"admin.index\\\"]],[[\\\"default\\\"],[[[[1,\\\"Return to the home page\\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[8,[39,4],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.reviewinvoice\\\",[28,[37,11],null,[[\\\"historical\\\"],[\\\"true\\\"]]]]],[[\\\"default\\\"],[[[[1,\\\"Review historical leads (if any)\\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[10,3],[14,6,\\\"https://settify-firm.freshdesk.com\\\"],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"Submit a tech support request\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"model\\\"]],[[[41,[30,0,[\\\"model\\\",\\\"sweep\\\"]],[[[1,\\\"          \\\"],[10,\\\"h4\\\"],[12],[1,\\\"Historical Leads\\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[10,\\\"h4\\\"],[12],[1,\\\"New and Unmarked Leads\\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"        \\\"],[10,0],[14,0,\\\"lead-list-information\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"allCompleted\\\"]],[[[1,\\\"            \\\"],[10,2],[12],[1,\\\"\\\\n              All\\\\n              \\\"],[41,[30,0,[\\\"model\\\",\\\"sweep\\\"]],[[[1,\\\"historical\\\"]],[]],null],[1,\\\"\\\\n              leads have been successfully marked. Nothing more to do!\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"model\\\",\\\"informationRequiredForInvoice\\\"]],[[[41,[30,0,[\\\"model\\\",\\\"sweep\\\"]],[[[1,\\\"              \\\"],[10,2],[14,0,\\\"do-not-print\\\"],[12],[1,\\\"\\\\n                Every few months, we check in with you about past Settify leads who were marked as 'did not convert', to see whether they have since engaged your firm.\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[10,2],[12],[1,\\\"\\\\n              Please review\\\\n              \\\"],[41,[28,[37,14],[[30,0,[\\\"allPracticeAreas\\\",\\\"length\\\"]],1],null],[[[1,\\\"each practice area's\\\"]],[]],[[[1,\\\"the\\\"]],[]]],[1,\\\"\\\\n              list below and mark each client appropriately.\\\\n\\\"],[41,[30,0,[\\\"hasLeadsConversionTypeClients\\\"]],[[[1,\\\"                Some clients will already be marked due to our new\\\\n                \\\"],[10,3],[14,6,\\\"https://settify.com/wp-content/uploads/2023/07/Fair-Billing-Policy-FAQs-3.pdf\\\"],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"Fair Billing Policy\\\"],[13],[1,\\\".\\\\n\\\"]],[]],null],[1,\\\"              If you have any questions, please contact\\\\n              \\\"],[10,3],[14,6,\\\"https://settify-firm.freshdesk.com\\\"],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"Settify Support\\\"],[13],[1,\\\".\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"            \\\"],[10,2],[12],[1,\\\"\\\\n              \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\"\\\\n              is on an unlimited usage plan, which means that strictly speaking, we don't need to know which leads became ongoing clients, and which didn't. However, that\\\\n              information is helpful to us when it comes to improving the system. We'd be grateful if you could review the list below and mark each client appropriately.\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]],[]]],[1,\\\"        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"marginbottom-5\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,16],[[30,0,[\\\"model\\\",\\\"leadsByPracticeArea\\\"]]],null],null,[[[1,\\\"            \\\"],[11,0],[16,0,[29,[\\\"lead-list-header\\\\n                \\\",[52,[28,[37,14],[[30,0,[\\\"allPracticeAreas\\\",\\\"length\\\"]],1],null],\\\"clickable\\\",\\\"\\\"],\\\"\\\\n                \\\",[52,[28,[37,17],[[28,[37,18],[[30,1,[\\\"length\\\"]]],null],[28,[37,14],[[30,0,[\\\"allPracticeAreas\\\",\\\"length\\\"]],1],null]],null],\\\"disabled\\\",\\\"\\\"]]]],[4,[38,19],[[30,0],[52,[30,1,[\\\"length\\\"]],\\\"toggleExpand\\\",\\\"nullAction\\\"],[30,2]],null],[12],[1,\\\"\\\\n              \\\"],[10,\\\"h4\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,14],[[30,0,[\\\"allPracticeAreas\\\",\\\"length\\\"]],1],null],[[[1,\\\"                  \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-chevron-right \\\",[52,[28,[37,20],[[30,0,[\\\"expand\\\"]],[30,2]],null],\\\"fa-rotate-90\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                \\\"],[10,1],[12],[1,[30,2]],[1,\\\" leads\\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,0],[12],[1,\\\"\\\\n                \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,20],[[30,0,[\\\"leadsRemaining\\\"]],[30,2]],null],[[[1,\\\"                    \\\"],[1,[28,[35,20],[[30,0,[\\\"leadsRemaining\\\"]],[30,2]],null]],[1,\\\"\\\\n                    \\\"],[41,[28,[37,14],[[28,[37,20],[[30,0,[\\\"leadsRemaining\\\"]],[30,2]],null],1],null],[[[1,\\\"leads\\\"]],[]],[[[1,\\\"lead\\\"]],[]]],[1,\\\"\\\\n                    to mark\\\\n                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-marker\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                    All leads marked\\\\n                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[8,[39,22],null,[[\\\"@predicate\\\"],[[28,[37,23],[[28,[37,20],[[30,0,[\\\"expand\\\"]],[30,2]],null],[28,[37,10],[[30,0,[\\\"allPracticeAreas\\\",\\\"length\\\"]],1],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,\\\"table\\\"],[14,0,\\\"lead-list-table\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"th\\\"],[14,0,\\\"lead-name\\\"],[12],[1,\\\"Lead\\\"],[13],[1,\\\"\\\\n                    \\\"],[10,\\\"th\\\"],[14,0,\\\"lead-info\\\"],[12],[13],[1,\\\"\\\\n                    \\\"],[10,\\\"th\\\"],[14,0,\\\"lead-status\\\"],[12],[1,\\\"Status\\\"],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,29],[[28,[37,29],[[30,1]],null]],null],null,[[[1,\\\"                    \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                      \\\"],[10,\\\"th\\\"],[14,0,\\\"lead-name\\\"],[12],[1,\\\"\\\\n                        \\\"],[8,[39,30],[[24,\\\"target\\\",\\\"_blank\\\"],[24,\\\"rel\\\",\\\"noopener noreferrer\\\"]],[[\\\"@clientID\\\",\\\"@practiceArea\\\"],[[30,3,[\\\"clientID\\\"]],[30,3,[\\\"practiceArea\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                          \\\"],[1,[30,3,[\\\"name\\\"]]],[1,\\\"\\\\n\\\"],[41,[28,[37,18],[[30,3,[\\\"conflictCheckCompleted\\\"]]],null],[[[1,\\\"                            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-exclamation-circle tight negative\\\"],[14,\\\"title\\\",\\\"No conflict check has been completed for this lead.\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,3,[\\\"hasConflict\\\"]],[[[1,\\\"                            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-exclamation-circle tight\\\"],[14,\\\"title\\\",\\\"Previously marked as conflicted.\\\"],[12],[13],[1,\\\"\\\\n                          \\\"]],[]],null]],[]]],[1,\\\"                        \\\"]],[]]]]],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n                      \\\"],[10,\\\"td\\\"],[14,0,\\\"lead-info\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,10],[[30,3,[\\\"referral\\\"]],\\\"invitation\\\"],null],[[[1,\\\"                          \\\"],[10,0],[12],[1,\\\"Invited and completed on \\\"],[1,[30,3,[\\\"formattedReferralDate\\\"]]],[13],[1,\\\"\\\\n                          \\\"],[10,1],[15,0,[29,[\\\"small \\\",[52,[30,3,[\\\"reallyOld\\\"]],\\\"negative\\\",\\\"\\\"]]]],[12],[1,[30,3,[\\\"timeSinceReferralDate\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                          \\\"],[10,0],[12],[1,\\\"Website referral on \\\"],[1,[30,3,[\\\"formattedReferralDate\\\"]]],[13],[1,\\\"\\\\n                          \\\"],[10,1],[15,0,[52,[30,3,[\\\"reallyOld\\\"]],\\\"negative\\\",\\\"\\\"]],[12],[1,[30,3,[\\\"timeSinceReferralDate\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"                      \\\"],[13],[1,\\\"\\\\n                      \\\"],[10,\\\"td\\\"],[15,0,[29,[\\\"lead-status\\\\n                          \\\",[52,[28,[37,17],[[28,[37,18],[[30,0,[\\\"model\\\",\\\"sweep\\\"]]],null],[28,[37,18],[[30,3,[\\\"invoiceType\\\"]]],null]],null],\\\"lead-pending\\\",\\\"\\\"],\\\"\\\\n                          \\\",[52,[28,[37,17],[[30,0,[\\\"model\\\",\\\"sweep\\\"]],[28,[37,18],[[30,3,[\\\"billingSweepInvoiceType\\\"]]],null]],null],\\\"lead-pending\\\",\\\"\\\"]]]],[12],[1,\\\"\\\\n                        \\\"],[8,[39,32],null,[[\\\"@lead\\\",\\\"@firmSettings\\\",\\\"@conversionTypes\\\",\\\"@sweep\\\",\\\"@confirmationComplete\\\",\\\"@setInvoiceType\\\"],[[30,3],[30,0,[\\\"model\\\",\\\"firm\\\"]],[30,0,[\\\"model\\\",\\\"conversionTypes\\\"]],[30,0,[\\\"model\\\",\\\"sweep\\\"]],[30,0,[\\\"confirmationComplete\\\"]],[28,[37,19],[[30,0],\\\"setInvoiceType\\\"],null]]],null],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n\\\"]],[3]],null],[1,\\\"                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[1,2]],null],[1,\\\"\\\\n\\\"],[42,[28,[37,29],[[28,[37,29],[[30,0,[\\\"allPracticeAreas\\\"]]],null]],null],null,[[[41,[28,[37,18],[[28,[37,20],[[30,0,[\\\"model\\\",\\\"leadsByPracticeArea\\\"]],[30,4]],null]],null],[[[1,\\\"              \\\"],[10,0],[14,0,\\\"lead-list-header disabled\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"h4\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-chevron-right\\\"],[12],[13],[1,\\\"\\\\n                  \\\"],[10,1],[12],[1,[30,4]],[1,\\\" leads\\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,0],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"sweep\\\"]],[[[1,\\\"                      No past Settify leads to mark\\\\n\\\"]],[]],[[[1,\\\"                      No leads this month\\\\n\\\"]],[]]],[1,\\\"                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[4]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"lead-list-information\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,17],[[28,[37,18],[[30,0,[\\\"model\\\",\\\"sweep\\\"]]],null],[30,0,[\\\"showHistoricalLeadsLink\\\"]]],null],[[[1,\\\"            \\\"],[10,0],[12],[1,\\\"\\\\n              \\\"],[10,2],[14,0,\\\"centertext\\\"],[12],[1,\\\"\\\\n                Once completed, please review any\\\\n                \\\"],[8,[39,4],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.reviewinvoice\\\",[28,[37,11],null,[[\\\"historical\\\"],[\\\"true\\\"]]]]],[[\\\"default\\\"],[[[[1,\\\"historical\\\"]],[]]]]],[1,\\\"\\\\n                leads or return to the\\\\n                \\\"],[8,[39,4],null,[[\\\"@route\\\"],[\\\"admin.index\\\"]],[[\\\"default\\\"],[[[[1,\\\"dashboard\\\"]],[]]]]],[1,\\\".\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"model\\\",\\\"sweep\\\"]],[[[1,\\\"            \\\"],[10,2],[14,0,\\\"centertext\\\"],[12],[1,\\\"\\\\n              Once completed, please review any\\\\n              \\\"],[8,[39,4],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.reviewinvoice\\\",[28,[37,11],null,[[\\\"historical\\\"],[\\\"false\\\"]]]]],[[\\\"default\\\"],[[[[1,\\\"new and unmarked\\\"]],[]]]]],[1,\\\"\\\\n              leads or return to the\\\\n              \\\"],[8,[39,4],null,[[\\\"@route\\\"],[\\\"admin.index\\\"]],[[\\\"default\\\"],[[[[1,\\\"dashboard\\\"]],[]]]]],[1,\\\".\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n\\\"],[1,\\\"        \\\"],[8,[39,22],null,[[\\\"@predicate\\\"],[[30,0,[\\\"loading\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[39,33],null,null,null],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,22],null,[[\\\"@predicate\\\"],[[30,0,[\\\"errorMessage\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[10,\\\"strong\\\"],[12],[1,\\\"Uh oh,\\\"],[13],[1,\\\"\\\\n            it looks like an error might have occurred. Try clicking \\\\\\\"try again\\\\\\\", and if the error persists, please get in touch with us.\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,22],null,[[\\\"@predicate\\\"],[[30,0,[\\\"confirmationComplete\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-thumbs-up\\\"],[12],[13],[1,\\\"\\\\n            Thanks so much for confirming those clients!\\\\n\\\"],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[1,\\\"      \\\"]],[]],null]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,35],null,null,null],[1,\\\"\\\\n\\\"],[46,[28,[37,37],null,null],null,null,null]],[\\\"leadList\\\",\\\"practiceArea\\\",\\\"lead\\\",\\\"practiceArea\\\"],false,[\\\"animated-header\\\",\\\"img\\\",\\\"div\\\",\\\"nav\\\",\\\"link-to\\\",\\\"i\\\",\\\"h2\\\",\\\"p\\\",\\\"span\\\",\\\"if\\\",\\\"eq\\\",\\\"hash\\\",\\\"a\\\",\\\"h4\\\",\\\"gt\\\",\\\"each\\\",\\\"-each-in\\\",\\\"and\\\",\\\"not\\\",\\\"action\\\",\\\"get\\\",\\\"small\\\",\\\"liquid-if\\\",\\\"or\\\",\\\"table\\\",\\\"thead\\\",\\\"tr\\\",\\\"th\\\",\\\"tbody\\\",\\\"-track-array\\\",\\\"practice-area-link\\\",\\\"td\\\",\\\"billing-status-select\\\",\\\"loading-spinner\\\",\\\"strong\\\",\\\"settify-footer\\\",\\\"component\\\",\\\"-outlet\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/reviewinvoice.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/search\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    User Search\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <div>\n          <p class=\"small\">\n            <LinkTo @route=\"index\"><i class=\"fal fa-home-lg-alt\" />Home</LinkTo>\n          </p>\n        </div>\n        <p>\n          <b>Your search password:</b>\n          <SettifyTextline @id=\"password-input\" @class=\"settify-sensitive\" @type=\"password\" @model={{this.password}} @maxlength=\"64\" @placeholder=\"Enter your password\" />\n        </p>\n        <p>\n          <b>Search for:</b>\n          <SettifyTextline @model={{this.searchquery}} @placeholder=\"Enter the client's name or email address here\" />\n        </p>\n        {{#if (and this.loading this.longLoading)}}\n          <LoadingSpinner />\n        {{/if}}\n  \n        <LiquidIf @predicate={{and this.searchquery (not this.password)}}>\n          <p role=\"status\">Remember to add the admin search password.</p>\n        </LiquidIf>\n        <LiquidIf @predicate={{this.searchFailed}}>\n          <p role=\"alert\">\n            <b>Search failed!</b>\n            Are you sure you're using the correct search password?\n          </p>\n        </LiquidIf>\n  \n        <LiquidIf @predicate={{eq this.searchResults.length 0}}>\n          <div role=\"alert\">\n            <p>No results</p>\n            <p>Are you sure you're using the admin page for the correct region? </p>\n          </div>\n        </LiquidIf>\n        <LiquidIf @predicate={{this.searchingByEmail}}>\n          <p role=\"status\">We noticed you were searching for an email. You could also try searching by name, since sometimes people have multiple email addresses.</p>\n        </LiquidIf>\n        <LiquidIf @predicate={{and this.searchResults (not (or this.loading this.longLoading))}}>\n          <small>\n            <table class=\"small lead-list-table\">\n              <caption class=\"sr-only\">Client search results</caption>\n              <colgroup>\n                <col width=\"30%\" />\n                <col width=\"15%\" />\n                <col width=\"27.5%\" />\n                <col width=\"15%\" />\n                <col width=\"12.5%\" />\n              </colgroup>\n              <thead>\n                <tr>\n                  <th>Name</th>\n                  <th>Practice Area</th>\n                  <th>Firm</th>\n                  <th>Origin</th>\n                  <th>Deleted</th>\n                </tr>\n              </thead>\n              <tbody>\n                {{#each this.searchResults as |r|}}\n                  <tr>\n                    <td>\n                      {{#if r.isDeleted}}\n                        {{r.name}}\n                      {{else}}\n                        <LinkTo @route=\"admin.clients\" @model={{r.clientID}} target=\"_blank\" style=\"line-height: 1.25;\">{{r.name}}</LinkTo>\n                      {{/if}}\n                    </td>\n                    <td>{{r.practiceArea}}</td>\n                    <td>\n                      {{#if r.logoUrl}}\n                        <img style=\"max-height: 32px; max-width: 150px;\" src={{r.logoUrl}} alt=\"\" />\n                      {{/if}}\n                    </td>\n                    <td>\n                      <span>\n                        {{#if r.invitedClient}}\n                          Invited\n                          {{#if r.referredToFirm}}\n                            (not completed)\n                          {{else}}\n                            (completed)\n                          {{/if}}\n                        {{else}}\n                          Website\n                          {{#if r.referredToFirm}}\n                            (referred)\n                          {{else}}\n                            (not referred)\n                          {{/if}}\n                        {{/if}}\n                      </span>\n                    </td>\n                    <td>\n                      {{#if r.isDeleted}}\n                        <i class=\"fal fa-check-circle\" />\n                      {{/if}}\n                    </td>\n                  </tr>\n                {{/each}}\n              </tbody>\n            </table>\n          </small>\n        </LiquidIf>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"U3EVTDQ+\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  User Search\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"small\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,3],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-home-lg-alt\\\"],[12],[13],[1,\\\"Home\\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        \\\"],[10,\\\"b\\\"],[12],[1,\\\"Your search password:\\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,6],null,[[\\\"@id\\\",\\\"@class\\\",\\\"@type\\\",\\\"@model\\\",\\\"@maxlength\\\",\\\"@placeholder\\\"],[\\\"password-input\\\",\\\"settify-sensitive\\\",\\\"password\\\",[30,0,[\\\"password\\\"]],\\\"64\\\",\\\"Enter your password\\\"]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        \\\"],[10,\\\"b\\\"],[12],[1,\\\"Search for:\\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,6],null,[[\\\"@model\\\",\\\"@placeholder\\\"],[[30,0,[\\\"searchquery\\\"]],\\\"Enter the client's name or email address here\\\"]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,8],[[30,0,[\\\"loading\\\"]],[30,0,[\\\"longLoading\\\"]]],null],[[[1,\\\"        \\\"],[8,[39,9],null,null,null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n      \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[28,[37,8],[[30,0,[\\\"searchquery\\\"]],[28,[37,11],[[30,0,[\\\"password\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,2],[14,\\\"role\\\",\\\"status\\\"],[12],[1,\\\"Remember to add the admin search password.\\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[30,0,[\\\"searchFailed\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,2],[14,\\\"role\\\",\\\"alert\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"b\\\"],[12],[1,\\\"Search failed!\\\"],[13],[1,\\\"\\\\n          Are you sure you're using the correct search password?\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\\n      \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[28,[37,12],[[30,0,[\\\"searchResults\\\",\\\"length\\\"]],0],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,0],[14,\\\"role\\\",\\\"alert\\\"],[12],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"No results\\\"],[13],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"Are you sure you're using the admin page for the correct region? \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[30,0,[\\\"searchingByEmail\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,2],[14,\\\"role\\\",\\\"status\\\"],[12],[1,\\\"We noticed you were searching for an email. You could also try searching by name, since sometimes people have multiple email addresses.\\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[28,[37,8],[[30,0,[\\\"searchResults\\\"]],[28,[37,11],[[28,[37,13],[[30,0,[\\\"loading\\\"]],[30,0,[\\\"longLoading\\\"]]],null]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"table\\\"],[14,0,\\\"small lead-list-table\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"caption\\\"],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Client search results\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"colgroup\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"col\\\"],[14,\\\"width\\\",\\\"30%\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[10,\\\"col\\\"],[14,\\\"width\\\",\\\"15%\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[10,\\\"col\\\"],[14,\\\"width\\\",\\\"27.5%\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[10,\\\"col\\\"],[14,\\\"width\\\",\\\"15%\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[10,\\\"col\\\"],[14,\\\"width\\\",\\\"12.5%\\\"],[12],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"th\\\"],[12],[1,\\\"Name\\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"th\\\"],[12],[1,\\\"Practice Area\\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"th\\\"],[12],[1,\\\"Firm\\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"th\\\"],[12],[1,\\\"Origin\\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"th\\\"],[12],[1,\\\"Deleted\\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,24],[[28,[37,24],[[30,0,[\\\"searchResults\\\"]]],null]],null],null,[[[1,\\\"                \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"isDeleted\\\"]],[[[1,\\\"                      \\\"],[1,[30,1,[\\\"name\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                      \\\"],[8,[39,3],[[24,\\\"target\\\",\\\"_blank\\\"],[24,5,\\\"line-height: 1.25;\\\"]],[[\\\"@route\\\",\\\"@model\\\"],[\\\"admin.clients\\\",[30,1,[\\\"clientID\\\"]]]],[[\\\"default\\\"],[[[[1,[30,1,[\\\"name\\\"]]]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,[30,1,[\\\"practiceArea\\\"]]],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"logoUrl\\\"]],[[[1,\\\"                      \\\"],[10,\\\"img\\\"],[14,5,\\\"max-height: 32px; max-width: 150px;\\\"],[15,\\\"src\\\",[30,1,[\\\"logoUrl\\\"]]],[14,\\\"alt\\\",\\\"\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,1],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"invitedClient\\\"]],[[[1,\\\"                        Invited\\\\n\\\"],[41,[30,1,[\\\"referredToFirm\\\"]],[[[1,\\\"                          (not completed)\\\\n\\\"]],[]],[[[1,\\\"                          (completed)\\\\n\\\"]],[]]]],[]],[[[1,\\\"                        Website\\\\n\\\"],[41,[30,1,[\\\"referredToFirm\\\"]],[[[1,\\\"                          (referred)\\\\n\\\"]],[]],[[[1,\\\"                          (not referred)\\\\n\\\"]],[]]]],[]]],[1,\\\"                    \\\"],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"isDeleted\\\"]],[[[1,\\\"                      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,28],null,null,null]],[\\\"r\\\"],false,[\\\"animated-header\\\",\\\"div\\\",\\\"p\\\",\\\"link-to\\\",\\\"i\\\",\\\"b\\\",\\\"settify-textline\\\",\\\"if\\\",\\\"and\\\",\\\"loading-spinner\\\",\\\"liquid-if\\\",\\\"not\\\",\\\"eq\\\",\\\"or\\\",\\\"small\\\",\\\"table\\\",\\\"caption\\\",\\\"colgroup\\\",\\\"col\\\",\\\"thead\\\",\\\"tr\\\",\\\"th\\\",\\\"tbody\\\",\\\"each\\\",\\\"-track-array\\\",\\\"td\\\",\\\"img\\\",\\\"span\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/search.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/undoinvoice\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    <img class=\"firm-header-logo\" src={{this.firm.logoURL}} alt=\"{{this.firm.name}}\">\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <p><small><LinkTo @route=\"index\"><i class=\"fal fa-home-lg-alt\" />Home</LinkTo></small></p>\n        <br><br>\n        <p>\n          <b>Sorry, it is no longer possible to directly void invoices.</b>\n        </p>\n        <p>\n          If you have identified an issue with your current invoice or need to amend an invoice, please contact Settify Accounts at <a href=\"mailto:accounts@settify.com\">accounts@settify.com</a>\n        </p>\n      </div>\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"oaj0nyj4\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,\\\"img\\\"],[14,0,\\\"firm-header-logo\\\"],[15,\\\"src\\\",[30,0,[\\\"firm\\\",\\\"logoURL\\\"]]],[15,\\\"alt\\\",[29,[[30,0,[\\\"firm\\\",\\\"name\\\"]]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,5],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-home-lg-alt\\\"],[12],[13],[1,\\\"Home\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        \\\"],[10,\\\"b\\\"],[12],[1,\\\"Sorry, it is no longer possible to directly void invoices.\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        If you have identified an issue with your current invoice or need to amend an invoice, please contact Settify Accounts at \\\"],[10,3],[14,6,\\\"mailto:accounts@settify.com\\\"],[12],[1,\\\"accounts@settify.com\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[],false,[\\\"animated-header\\\",\\\"img\\\",\\\"div\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"i\\\",\\\"br\\\",\\\"b\\\",\\\"a\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/undoinvoice.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/users\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Firm Users\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn firm-details\">\n        <div>\n          <p><small><LinkTo @route=\"index\"><i class=\"fal fa-home-lg-alt\" />Home</LinkTo></small></p>\n        </div>\n  \n        <p><b>Find by firm name:</b>\n          <SettifyTextline @model={{this.searchquery}} />\n        </p>\n        <LiquidIf @predicate={{this.firmGuesses.length}}>\n          <p>\n            {{#each this.firmGuesses as |guess|}}\n              <a class=\"clickable\" {{action \"selectFirm\" guess.firmID}}>{{guess.name}} ({{guess.firmID}})</a>\n              <br />\n            {{/each}}\n          </p>\n        </LiquidIf>\n        {{!--\n        {{#if this.firmSelectOptions}}\n          <p>\n            <b>Or select a firm from the list:</b>\n            <SettifySelect @label=\"\" @model={{this.selectedFirmID}} @name=\"firmselect\" @content={{this.firmSelectOptions}} @labelPath=\"label\" @valuePath=\"value\" />\n          </p>\n        {{/if}}\n        --}}\n  \n        <LiquidIf @predicate={{this.loadingUsers}}>\n          <LoadingSpinner />\n        </LiquidIf>\n  \n        <LiquidIf @predicate={{and this.selectedFirm (not this.loadingUsers)}}>\n          <div style=\"font-weight: bold; margin-bottom: 5px\">{{this.selectedFirm.name}} - Users</div>\n  \n          {{#if this.selectedFirm.users.length}}\n            {{#each this.selectedFirm.users as |user|}}\n              <div class=\"user-info-block\">\n                <span class=\"username {{unless user.Enabled 'disabled-account'}}\">{{user.Username}}</span>\n                <span class=\"details\">\n                  Status:\n                  {{#if (eq user.UserStatus \"CONFIRMED\")}}\n                    <b class=\"positive\">Password confirmed</b>.\n                  {{else if (eq user.UserStatus \"FORCE_CHANGE_PASSWORD\")}}\n                    Temporary password sent.\n                  {{else}}\n                    {{user.UserStatus}}.\n                  {{/if}}\n                  {{if user.Enabled \"Currently enabled\" \"Currently disabled\"}}.\n                </span>\n                <span class=\"actions\">\n                  <a class=\"clickable\" {{action \"viewHistory\" user}}><i class=\"fal fa-search\" />{{if user.showHistory \"Hide\" \"View\"}} login history</a>\n                  <a class=\"clickable\" {{action \"prompt\" user \"resetPassword\"}}><i class=\"fal fa-redo-alt\" />Reset password</a>\n                  <a class=\"clickable\" {{action \"prompt\" user \"resetMFA\"}}><i class=\"fal fa-mobile-alt\" />Reset MFA</a>\n                  {{#if user.Enabled}}\n                    <a class=\"clickable\" {{action \"prompt\" user \"disableUser\"}}><i class=\"fal fa-times-circle\" />Disable</a>\n                  {{else}}\n                    <a class=\"clickable\" {{action \"prompt\" user \"enableUser\"}}><i class=\"fal fa-check-circle\" />Enable</a>\n                  {{/if}}\n                  <a class=\"clickable\" {{action \"prompt\" user \"deleteUser\"}}><i class=\"fal fa-trash-alt negative\" />Delete</a>\n                </span>\n                <LiquidIf @predicate={{user.loading}}>\n                  <LoadingSpinner />\n                </LiquidIf>\n                <LiquidIf @predicate={{eq this.promptUser user.Username}}>\n                  <span class=\"actions\">\n                    {{this.promptHelp}}\n                    Are you sure?\n                    <a class=\"clickable\" {{action this.promptAction user}}>Yes (proceed with the action)</a>\n                    or\n                    <a class=\"clickable\" {{action \"dismissPrompt\"}}>No (cancel and make no change)</a>\n                  </span>\n                </LiquidIf>\n                <LiquidIf @predicate={{eq this.passwordResetUser user.Username}}>\n                  <small>\n                    <i class=\"fal fa-check-circle\" />\n                    Password has been reset.\n                  </small>\n                </LiquidIf>\n                <LiquidIf @predicate={{eq this.mfaResetUser user.Username}}>\n                  <small>\n                    <i class=\"fal fa-check-circle\" />\n                    MFA has been reset.\n                  </small>\n                </LiquidIf>\n                <LiquidIf @predicate={{eq this.mfaResetError.username user.Username}}>\n                  <small class=\"negative\">\n                    <i class=\"fal fa-exclamation-circle negative\" />\n                    {{this.mfaResetError.message}}\n                  </small>\n                </LiquidIf>\n  \n                <LiquidIf @predicate={{user.showHistory}}>\n                  {{#if user.history}}\n                    <table class=\"user-info-history-table\">\n                      <thead>\n                        <tr>\n                          <th>Date</th>\n                          <th>Event</th>\n                          <th>Result</th>\n                          <th>IP</th>\n                          <th>Location</th>\n                        </tr>\n                      </thead>\n                      <tbody>\n                        {{#each user.history as |event|}}\n                          <tr>\n                            <td>{{pretty-date event.CreationDate customFormat=\"D MMM YYYY hh:mm A\"}}</td>\n                            <td>{{event.EventType}}</td>\n                            <td>\n                              <span class={{if (eq event.EventResponse \"Fail\") \"negative\" \"\"}}>\n                                {{event.EventResponse}}\n                              </span>\n                              {{#if event.ChallengeResponses}}\n                                <br />\n                                {{get event.ChallengeResponses \"0.ChallengeName\"}}:\n                                {{get event.ChallengeResponses \"0.ChallengeResponse\"}}\n                              {{/if}}\n                            </td>\n                            <td>{{event.EventContextData.IpAddress}}</td>\n                            <td>{{event.EventContextData.City}}</td>\n                          </tr>\n                        {{/each}}\n                      </tbody>\n                    </table>\n                  {{else}}\n                    <small class={{if user.historyError \"negative\" \"\"}}>\n                      {{#if user.historyError}}\n                        Error loading the login history. Please try again and if the error persists contact the Dev team\n                      {{else}}\n                        No login history for this user\n                      {{/if}}\n                    </small>\n                  {{/if}}\n                </LiquidIf>\n  \n              </div>\n            {{else}}\n              <LoadingSpinner />\n            {{/each}}\n          {{else}}\n            <span class=\"negative\">This firm does not have any users yet. Create a new one below.</span>\n          {{/if}}\n  \n          <div class=\"add-new-user-block\">\n            <h2>Add a new user (or multiple new users)</h2>\n            <SettifyEmailInput\n              @model={{this.newUserEmail}}\n              @label=\"Email address(es)\"\n              @placeholder=\"One or more email addresses\"\n              @validation={{this.validEmail}}\n              @headerLabel={{true}}\n              @allowMultipleEmails={{true}}\n            />\n            <LiquidIf @predicate={{this.selectedFirmPracticeAreaDetails}}>\n              <SettifySelect\n                @label=\"Primary practice area for this user / these users (you can leave this blank)\"\n                @model={{this.newUserPracticeArea}}\n                @name=\"practiceareaselect\"\n                @content={{this.selectedFirmPracticeAreaDetails}}\n                @labelPath=\"practiceArea\"\n                @valuePath=\"practiceArea\"\n              />\n            </LiquidIf>\n            <LiquidIf @predicate={{this.savingChanges}}>\n              <LoadingSpinner />\n            </LiquidIf>\n            <LiquidIf @predicate={{this.savingChangesSuccess}}>\n              <i class=\"fal fa-check-circle\" />\n              New user{{if (gt this.savingChangesSuccess.length 1) \"s\"}}\n              added successfully\n              {{~#if this.savingChangesError~}}\n                , but there were a few errors, as shown below.\n              {{/if}}\n              <br />\n              {{#each this.savingChangesSuccess as |emailAddress|}}\n                <small class=\"positive\">User {{emailAddress}} created successfully</small><br />\n              {{/each}}\n            </LiquidIf>\n            <LiquidIf @predicate={{this.savingChangesError}}>\n              <i class=\"fal fa-exclamation-circle negative\" />\n              An error occurred.\n              <LiquidIf @predicate={{this.savingChangesError.length}}>\n                {{#each this.savingChangesError as |message|}}\n                  <small class=\"negative\">\n                    {{message}}\n                    Click 'add' again to try again\n                  </small><br />\n                {{/each}}\n              </LiquidIf>\n            </LiquidIf>\n            <button\n              class=\"next-button hvr-float-shadow hvr-grow {{if (or (not this.newUserEmail) (not this.validEmail)) 'disabled-button'}}\"\n              type=\"button\"\n              {{action (if (and this.newUserEmail this.validEmail) \"createUser\" \"nullAction\") this.newUserEmail}}\n            >Add</button>\n          </div>\n        </LiquidIf>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"8FmdONh/\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Firm Users\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn firm-details\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,4],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-home-lg-alt\\\"],[12],[13],[1,\\\"Home\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,2],[12],[10,\\\"b\\\"],[12],[1,\\\"Find by firm name:\\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,7],null,[[\\\"@model\\\"],[[30,0,[\\\"searchquery\\\"]]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"firmGuesses\\\",\\\"length\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,10],[[28,[37,10],[[30,0,[\\\"firmGuesses\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,12],[[30,0],\\\"selectFirm\\\",[30,1,[\\\"firmID\\\"]]],null],[12],[1,[30,1,[\\\"name\\\"]]],[1,\\\" (\\\"],[1,[30,1,[\\\"firmID\\\"]]],[1,\\\")\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[1,\\\"\\\\n      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"loadingUsers\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[39,14],null,null,null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\\n      \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,15],[[30,0,[\\\"selectedFirm\\\"]],[28,[37,16],[[30,0,[\\\"loadingUsers\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,0],[14,5,\\\"font-weight: bold; margin-bottom: 5px\\\"],[12],[1,[30,0,[\\\"selectedFirm\\\",\\\"name\\\"]]],[1,\\\" - Users\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"selectedFirm\\\",\\\"users\\\",\\\"length\\\"]],[[[42,[28,[37,10],[[28,[37,10],[[30,0,[\\\"selectedFirm\\\",\\\"users\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[10,0],[14,0,\\\"user-info-block\\\"],[12],[1,\\\"\\\\n              \\\"],[10,1],[15,0,[29,[\\\"username \\\",[52,[51,[30,2,[\\\"Enabled\\\"]]],\\\"disabled-account\\\"]]]],[12],[1,[30,2,[\\\"Username\\\"]]],[13],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"details\\\"],[12],[1,\\\"\\\\n                Status:\\\\n\\\"],[41,[28,[37,20],[[30,2,[\\\"UserStatus\\\"]],\\\"CONFIRMED\\\"],null],[[[1,\\\"                  \\\"],[10,\\\"b\\\"],[14,0,\\\"positive\\\"],[12],[1,\\\"Password confirmed\\\"],[13],[1,\\\".\\\\n\\\"]],[]],[[[41,[28,[37,20],[[30,2,[\\\"UserStatus\\\"]],\\\"FORCE_CHANGE_PASSWORD\\\"],null],[[[1,\\\"                  Temporary password sent.\\\\n\\\"]],[]],[[[1,\\\"                  \\\"],[1,[30,2,[\\\"UserStatus\\\"]]],[1,\\\".\\\\n                \\\"]],[]]]],[]]],[1,\\\"                \\\"],[1,[52,[30,2,[\\\"Enabled\\\"]],\\\"Currently enabled\\\",\\\"Currently disabled\\\"]],[1,\\\".\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"actions\\\"],[12],[1,\\\"\\\\n                \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,12],[[30,0],\\\"viewHistory\\\",[30,2]],null],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-search\\\"],[12],[13],[1,[52,[30,2,[\\\"showHistory\\\"]],\\\"Hide\\\",\\\"View\\\"]],[1,\\\" login history\\\"],[13],[1,\\\"\\\\n                \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,12],[[30,0],\\\"prompt\\\",[30,2],\\\"resetPassword\\\"],null],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-redo-alt\\\"],[12],[13],[1,\\\"Reset password\\\"],[13],[1,\\\"\\\\n                \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,12],[[30,0],\\\"prompt\\\",[30,2],\\\"resetMFA\\\"],null],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-mobile-alt\\\"],[12],[13],[1,\\\"Reset MFA\\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,2,[\\\"Enabled\\\"]],[[[1,\\\"                  \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,12],[[30,0],\\\"prompt\\\",[30,2],\\\"disableUser\\\"],null],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-times-circle\\\"],[12],[13],[1,\\\"Disable\\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                  \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,12],[[30,0],\\\"prompt\\\",[30,2],\\\"enableUser\\\"],null],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"Enable\\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"                \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,12],[[30,0],\\\"prompt\\\",[30,2],\\\"deleteUser\\\"],null],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-trash-alt negative\\\"],[12],[13],[1,\\\"Delete\\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,2,[\\\"loading\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[8,[39,14],null,null,null],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n              \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,20],[[30,0,[\\\"promptUser\\\"]],[30,2,[\\\"Username\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,1],[14,0,\\\"actions\\\"],[12],[1,\\\"\\\\n                  \\\"],[1,[30,0,[\\\"promptHelp\\\"]]],[1,\\\"\\\\n                  Are you sure?\\\\n                  \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,12],[[30,0],[30,0,[\\\"promptAction\\\"]],[30,2]],null],[12],[1,\\\"Yes (proceed with the action)\\\"],[13],[1,\\\"\\\\n                  or\\\\n                  \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,12],[[30,0],\\\"dismissPrompt\\\"],null],[12],[1,\\\"No (cancel and make no change)\\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n              \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,20],[[30,0,[\\\"passwordResetUser\\\"]],[30,2,[\\\"Username\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"\\\\n                  Password has been reset.\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n              \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,20],[[30,0,[\\\"mfaResetUser\\\"]],[30,2,[\\\"Username\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"\\\\n                  MFA has been reset.\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n              \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,20],[[30,0,[\\\"mfaResetError\\\",\\\"username\\\"]],[30,2,[\\\"Username\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"small\\\"],[14,0,\\\"negative\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-exclamation-circle negative\\\"],[12],[13],[1,\\\"\\\\n                  \\\"],[1,[30,0,[\\\"mfaResetError\\\",\\\"message\\\"]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n\\\\n              \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,2,[\\\"showHistory\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,2,[\\\"history\\\"]],[[[1,\\\"                  \\\"],[10,\\\"table\\\"],[14,0,\\\"user-info-history-table\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n                      \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                        \\\"],[10,\\\"th\\\"],[12],[1,\\\"Date\\\"],[13],[1,\\\"\\\\n                        \\\"],[10,\\\"th\\\"],[12],[1,\\\"Event\\\"],[13],[1,\\\"\\\\n                        \\\"],[10,\\\"th\\\"],[12],[1,\\\"Result\\\"],[13],[1,\\\"\\\\n                        \\\"],[10,\\\"th\\\"],[12],[1,\\\"IP\\\"],[13],[1,\\\"\\\\n                        \\\"],[10,\\\"th\\\"],[12],[1,\\\"Location\\\"],[13],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                    \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,10],[[28,[37,10],[[30,2,[\\\"history\\\"]]],null]],null],null,[[[1,\\\"                        \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                          \\\"],[10,\\\"td\\\"],[12],[1,[28,[35,27],[[30,3,[\\\"CreationDate\\\"]]],[[\\\"customFormat\\\"],[\\\"D MMM YYYY hh:mm A\\\"]]]],[13],[1,\\\"\\\\n                          \\\"],[10,\\\"td\\\"],[12],[1,[30,3,[\\\"EventType\\\"]]],[13],[1,\\\"\\\\n                          \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                            \\\"],[10,1],[15,0,[52,[28,[37,20],[[30,3,[\\\"EventResponse\\\"]],\\\"Fail\\\"],null],\\\"negative\\\",\\\"\\\"]],[12],[1,\\\"\\\\n                              \\\"],[1,[30,3,[\\\"EventResponse\\\"]]],[1,\\\"\\\\n                            \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,3,[\\\"ChallengeResponses\\\"]],[[[1,\\\"                              \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                              \\\"],[1,[28,[35,28],[[30,3,[\\\"ChallengeResponses\\\"]],\\\"0.ChallengeName\\\"],null]],[1,\\\":\\\\n                              \\\"],[1,[28,[35,28],[[30,3,[\\\"ChallengeResponses\\\"]],\\\"0.ChallengeResponse\\\"],null]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                          \\\"],[13],[1,\\\"\\\\n                          \\\"],[10,\\\"td\\\"],[12],[1,[30,3,[\\\"EventContextData\\\",\\\"IpAddress\\\"]]],[13],[1,\\\"\\\\n                          \\\"],[10,\\\"td\\\"],[12],[1,[30,3,[\\\"EventContextData\\\",\\\"City\\\"]]],[13],[1,\\\"\\\\n                        \\\"],[13],[1,\\\"\\\\n\\\"]],[3]],null],[1,\\\"                    \\\"],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                  \\\"],[10,\\\"small\\\"],[15,0,[52,[30,2,[\\\"historyError\\\"]],\\\"negative\\\",\\\"\\\"]],[12],[1,\\\"\\\\n\\\"],[41,[30,2,[\\\"historyError\\\"]],[[[1,\\\"                      Error loading the login history. Please try again and if the error persists contact the Dev team\\\\n\\\"]],[]],[[[1,\\\"                      No login history for this user\\\\n\\\"]],[]]],[1,\\\"                  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"              \\\"]],[]]]]],[1,\\\"\\\\n\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],[[[1,\\\"            \\\"],[8,[39,14],null,null,null],[1,\\\"\\\\n\\\"]],[]]]],[]],[[[1,\\\"          \\\"],[10,1],[14,0,\\\"negative\\\"],[12],[1,\\\"This firm does not have any users yet. Create a new one below.\\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"add-new-user-block\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"h2\\\"],[12],[1,\\\"Add a new user (or multiple new users)\\\"],[13],[1,\\\"\\\\n          \\\"],[8,[39,30],null,[[\\\"@model\\\",\\\"@label\\\",\\\"@placeholder\\\",\\\"@validation\\\",\\\"@headerLabel\\\",\\\"@allowMultipleEmails\\\"],[[30,0,[\\\"newUserEmail\\\"]],\\\"Email address(es)\\\",\\\"One or more email addresses\\\",[30,0,[\\\"validEmail\\\"]],true,true]],null],[1,\\\"\\\\n          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"selectedFirmPracticeAreaDetails\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,31],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"Primary practice area for this user / these users (you can leave this blank)\\\",[30,0,[\\\"newUserPracticeArea\\\"]],\\\"practiceareaselect\\\",[30,0,[\\\"selectedFirmPracticeAreaDetails\\\"]],\\\"practiceArea\\\",\\\"practiceArea\\\"]],null],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"savingChanges\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,14],null,null,null],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"savingChangesSuccess\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"\\\\n            New user\\\"],[1,[52,[28,[37,32],[[30,0,[\\\"savingChangesSuccess\\\",\\\"length\\\"]],1],null],\\\"s\\\"]],[1,\\\"\\\\n            added successfully\\\"],[41,[30,0,[\\\"savingChangesError\\\"]],[[[1,\\\", but there were a few errors, as shown below.\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,10],[[28,[37,10],[[30,0,[\\\"savingChangesSuccess\\\"]]],null]],null],null,[[[1,\\\"              \\\"],[10,\\\"small\\\"],[14,0,\\\"positive\\\"],[12],[1,\\\"User \\\"],[1,[30,4]],[1,\\\" created successfully\\\"],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[4]],null],[1,\\\"          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"savingChangesError\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-exclamation-circle negative\\\"],[12],[13],[1,\\\"\\\\n            An error occurred.\\\\n            \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"savingChangesError\\\",\\\"length\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,10],[[28,[37,10],[[30,0,[\\\"savingChangesError\\\"]]],null]],null],null,[[[1,\\\"                \\\"],[10,\\\"small\\\"],[14,0,\\\"negative\\\"],[12],[1,\\\"\\\\n                  \\\"],[1,[30,5]],[1,\\\"\\\\n                  Click 'add' again to try again\\\\n                \\\"],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[5]],null],[1,\\\"            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[11,\\\"button\\\"],[16,0,[29,[\\\"next-button hvr-float-shadow hvr-grow \\\",[52,[28,[37,34],[[28,[37,16],[[30,0,[\\\"newUserEmail\\\"]]],null],[28,[37,16],[[30,0,[\\\"validEmail\\\"]]],null]],null],\\\"disabled-button\\\"]]]],[24,4,\\\"button\\\"],[4,[38,12],[[30,0],[52,[28,[37,15],[[30,0,[\\\"newUserEmail\\\"]],[30,0,[\\\"validEmail\\\"]]],null],\\\"createUser\\\",\\\"nullAction\\\"],[30,0,[\\\"newUserEmail\\\"]]],null],[12],[1,\\\"Add\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,35],null,null,null]],[\\\"guess\\\",\\\"user\\\",\\\"event\\\",\\\"emailAddress\\\",\\\"message\\\"],false,[\\\"animated-header\\\",\\\"div\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"i\\\",\\\"b\\\",\\\"settify-textline\\\",\\\"liquid-if\\\",\\\"each\\\",\\\"-track-array\\\",\\\"a\\\",\\\"action\\\",\\\"br\\\",\\\"loading-spinner\\\",\\\"and\\\",\\\"not\\\",\\\"if\\\",\\\"span\\\",\\\"unless\\\",\\\"eq\\\",\\\"table\\\",\\\"thead\\\",\\\"tr\\\",\\\"th\\\",\\\"tbody\\\",\\\"td\\\",\\\"pretty-date\\\",\\\"get\\\",\\\"h2\\\",\\\"settify-email-input\\\",\\\"settify-select\\\",\\\"gt\\\",\\\"button\\\",\\\"or\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/users.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/welcomeemail\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Welcome Email\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <div>\n          <p><small><LinkTo @route=\"index\"><i class=\"fal fa-home-lg-alt\" />Home</LinkTo></small></p>\n        </div>\n        <br />\n  \n        <p><b>Find by name:</b>\n          <SettifyTextline @model={{this.searchquery}} />\n        </p>\n        <LiquidIf @predicate={{this.firmGuesses.length}}>\n          <p>\n            {{#each this.firmGuesses as |guess|}}\n              <a class=\"clickable\" {{action \"selectFirm\" guess.firmID}}>{{guess.name}} ({{guess.firmID}})</a>\n              <br />\n            {{/each}}\n          </p>\n        </LiquidIf>\n        {{!--\n        {{#if this.firmSelectOptions}}\n          <p>\n            <b>Or select from the list:</b>\n              <SettifySelect @label=\"\" @model={{this.selectedFirmID}} @name=\"firmselect\" @content={{this.firmSelectOptions}} @labelPath=\"label\" @valuePath=\"value\" />\n          </p>\n        {{/if}}\n        --}}\n  \n        <LiquidIf @predicate={{this.selectedFirm}}>\n          <p>\n            <SettifyEmailInput @label=\"Email addresses to send to\" @placeholder=\"email@address.com\" @model={{this.recipients}} @allowMultipleEmails={{true}} />\n            <LiquidIf @predicate={{this.recipients}}>\n              <CheckBox @text=\"Create Settify logins for all recipients if they do not already have one\" @model={{this.createUserLogins}} />\n            </LiquidIf>\n          </p>\n  \n          <p>\n            Practice areas<br />\n            <CheckBox @text=\"Family Law\" @model={{this.hasFamily}} />\n            <CheckBox @text=\"Wills & Estates\" @model={{this.hasWills}} />\n            <CheckBox @text=\"Probate\" @model={{this.hasProbate}} />\n            <CheckBox @text=\"Estates\" @model={{this.hasEstates}} />\n          </p>\n          {{#if this.hasFamily}}\n            <p><SettifyEmailInput @label=\"New leads email (family law)\" @placeholder=\"email@address.com\" @model={{this.newLeadsEmailFamily}} /></p>\n          {{/if}}\n          {{#if this.hasWills}}\n            <p><SettifyEmailInput @label=\"New leads email (wills & estates)\" @placeholder=\"email@address.com\" @model={{this.newLeadsEmailWills}} /></p>\n          {{/if}}\n          {{#if this.hasProbate}}\n            <p><SettifyEmailInput @label=\"New leads email (probate)\" @placeholder=\"email@address.com\" @model={{this.newLeadsEmailProbate}} /></p>\n          {{/if}}\n          {{#if this.hasEstates}}\n            <p><SettifyEmailInput @label=\"New leads email (estates)\" @placeholder=\"email@address.com\" @model={{this.newLeadsEmailEstates}} /></p>\n          {{/if}}\n  \n          <LiquidIf @predicate={{this.emailing}}>\n            <LoadingSpinner />\n          </LiquidIf>\n          <LiquidIf @predicate={{this.done}}>\n            <p><i class=\"fal fa-check-circle\" /> Sent</p>\n          </LiquidIf>\n  \n          <LiquidIf @predicate={{this.createdEmails}}>\n            <i class=\"fal fa-check-circle tig\" />\n            New Settify login details created for:\n            <br />\n            {{#each this.createdEmails as |emailAddress|}}\n              <small class=\"positive\">{{emailAddress}}</small><br />\n            {{/each}}\n          </LiquidIf>\n          <LiquidIf @predicate={{this.failedMessages}}>\n            <i class=\"fal fa-exclamation-circle negative\" />\n            An error occurred while creating new login details\n            <br />\n            {{#each this.failedMessages as |message|}}\n              <small class=\"negative\">{{message}}</small><br />\n            {{/each}}\n          </LiquidIf>\n  \n          <p style=\"text-align: right;\">\n            <a class=\"next-button {{if this.errorInInput 'disabled-button' 'clickable'}}\" {{action (if this.errorInInput \"nullAction\" \"sendWelcomeEmail\")}}>\n              Send!\n            </a>\n          </p>\n  \n          {{#if this.errorInInput}}\n            <p><i class=\"fal fa-exclamation-circle negative\" /> {{this.errorInInput}}</p>\n          {{/if}}\n          {{#if this.warningInInput}}\n            <p><i class=\"fal fa-question-circle negative\" /> {{this.warningInInput}}</p>\n          {{/if}}\n  \n          <h2>Customise the welcome email</h2>\n          <p>\n            <b>Instructions for editing this email:</b>\n            You can click and edit the content below. Changes you make will be included in the email sent to the firm. Be careful though, as this sort of text editing is very\n            fragile. Don't try to copy and paste anything into this email content. You can, however, use command-B to make things bold, and command-I for italics.\n          </p>\n  \n          <hr />\n  \n          <div id=\"welcomeemail-content\" contenteditable=\"true\">\n            <h1>\n              Introducing Settify\n            </h1>\n  \n            <p>\n              We're pleased to let you know that\n              {{this.firmname}}\n              now offers the Settify client on-boarding process for new\n              {{this.practiceAreasSentence}}\n              clients.\n            </p>\n  \n            <p>\n              To get proper use out of Settify, your team will need to invite clients to use it. This happens after a client phones you to book a meeting. Either a lawyer or\n              assistant will need to jump onto your admin page, select 'Invite new client' and dispatch an email.\n            </p>\n  \n            {{#if this.hasFamily}}\n              {{#if (gt this.practiceAreas.length 1)}}\n                <h2>Family Law</h2>\n              {{/if}}\n              <p>\n                Settify gathers key information &mdash; allowing you to spend less time at the first meeting on background fact finding, and more time discussing advice, options,\n                strategy, and next steps.\n              </p>\n              <p>\n                Settify will generate for you:\n                <ul style=\"padding-left: 50px\">\n                  <li>\n                    a PDF brief, summarising the client's instructions\n                  </li>\n                  <li>\n                    a Word version of the brief, for easy editing\n                  </li>\n                  <li>\n                    a powerful Excel assets and liabilities spreadsheet\n                  </li>\n                  <li>\n                    a first draft chronology\n                  </li>\n                  <li>\n                    a balance sheet in Court approved format\n                  </li>\n                </ul>\n              </p>\n            {{/if}}\n  \n            {{#if this.hasWills}}\n              {{#if (gt this.practiceAreas.length 1)}}\n                <h2>Wills & Estates</h2>\n              {{/if}}\n              <p>\n                Settify gathers the information you will need to advise clients and draft their estate planning documents.\n              </p>\n            {{/if}}\n  \n            {{#if this.hasProbate}}\n              {{#if (gt this.practiceAreas.length 1)}}\n                <h2>Probate</h2>\n              {{/if}}\n              <p>\n                Settify provides your clients with an opportunity to learn about the Probate process, and impresses upon them the value of seeking expert legal assistance. It then\n                gathers a rich set of information from your instructor about the deceased, the family, and the estate, helping you to prepare for your first meeting.\n              </p>\n            {{/if}}\n  \n            {{#if this.hasEstates}}\n              {{#if (gt this.practiceAreas.length 1)}}\n                <h2>Estate Disputes</h2>\n              {{/if}}\n              <p>\n                Settify's Estate Disputes system covers a variety of Estate Disputes matters, capturing your client's information both quickly and in detail.\n              </p>\n            {{/if}}\n  \n            <h2>Settify on the {{this.firmname}} website</h2>\n  \n            <p>Settify is also available to people who visit the\n              {{this.firmname}}\n              website. It's a great way for them to immediately get some customised information about their situation, and then begin the process with\n              {{this.firmname}}\n              online, in their own time and space.</p>\n  \n            {{#if this.hasFamily}}\n              <p>\n                When a potential new family law client comes in via Settify, an email will be sent to\n                {{this.newLeadsEmailFamily}}\n                with the name, address, and date of birth of the lead and their partner. The email will contain links for you to register a conflict and refuse the file, or register\n                'no conflict' and gain access to the client's information.\n              </p>\n  \n              {{#if this.hasWills}}\n                <p>\n                  New estate planning enquiries will be emailed to\n                  {{this.newLeadsEmailWills}}. A conflict check will only be required if the lead is also seeking family law assistance.\n                </p>\n              {{/if}}\n  \n              {{#if this.hasProbate}}\n                <p>\n                  New probate enquiries will be emailed to\n                  {{this.newLeadsEmailProbate}}. A conflict check will be required by default.\n                </p>\n              {{/if}}\n  \n              {{#if this.hasEstates}}\n                <p>\n                  New estate dispute enquiries will be emailed to\n                  {{this.newLeadsEmailEstates}}. A conflict check will be required by default.\n                </p>\n              {{/if}}\n            {{/if}}\n  \n            <p>\n              If you have any questions, please email\n              <a href=\"mailto:support@settify.com\">support@settify.com</a>.\n            </p>\n  \n            {{!-- {{#if (or hasFamily hasWills)}}\n              <h3>Demonstration videos</h3>\n              <ul>\n                {{#if hasFamily}}\n                <li>\n                  <a href=\"https://youtu.be/8lJKYEiJDAM\" target=\"_blank\">Settify for Family Law Demonstration</a>\n                </li>\n                <li>\n                  <a href=\"https://www.youtube.com/watch?v=Tcsz8WRlhsk\" target=\"_blank\">Settify for Family Law &mdash; Business Development Advantages</a>\n                </li>\n                {{/if}}\n                {{#if hasWills}}\n                <li>\n                  <a href=\"https://youtu.be/aaZohJG7J3M\" target=\"_blank\">Settify for Wills Demonstration</a>\n                </li>\n                <li>\n                  <a href=\"https://youtu.be/7Is6VQGWAr0\" target=\"_blank\">Settify for Wills &mdash; Business Development Advantages</a>\n                </li>\n                {{/if}}\n              </ul>\n            {{/if}}\n            <h3>Key training videos</h3>\n            <ul>\n              <li>\n                <a href=\"https://youtu.be/SfWm5iy3IRk\" target=\"_blank\">How to send invites to new clients</a>\n              </li>\n              <li>\n                <a href=\"https://youtu.be/GtTMGHniTAE\" target=\"_blank\">How to download briefs</a>\n              </li>\n            </ul>\n            {{#if hasFamily}}\n              <h3>Other training videos</h3>\n              <ul>\n                {{#if showExcelMasterclass}}\n                  <li>\n                    <a href=\"https://www.youtube.com/watch?v=gnhkqAVDkZI\" target=\"_blank\">Excel Masterclass</a>\n                  </li>\n                {{/if}}\n                <li>\n                  <a href=\"https://youtu.be/1RJBiJwD9k8\" target=\"_blank\">Chronology</a>\n                </li>\n                <li>\n                  <a href=\"https://youtu.be/_8AuuU-8uPo\" target=\"_blank\">Balance Sheet</a>\n                </li>\n              </ul>\n            {{/if}} --}}\n  \n            <br />\n  \n            <p>Kind regards,</p>\n  \n            <p>The Team at Settify</p>\n          </div>\n        </LiquidIf>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"26LxrdT7\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Welcome Email\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,4],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-home-lg-alt\\\"],[12],[13],[1,\\\"Home\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,2],[12],[10,\\\"b\\\"],[12],[1,\\\"Find by name:\\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,8],null,[[\\\"@model\\\"],[[30,0,[\\\"searchquery\\\"]]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,0,[\\\"firmGuesses\\\",\\\"length\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"firmGuesses\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,13],[[30,0],\\\"selectFirm\\\",[30,1,[\\\"firmID\\\"]]],null],[12],[1,[30,1,[\\\"name\\\"]]],[1,\\\" (\\\"],[1,[30,1,[\\\"firmID\\\"]]],[1,\\\")\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[1,\\\"\\\\n      \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,0,[\\\"selectedFirm\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[8,[39,14],null,[[\\\"@label\\\",\\\"@placeholder\\\",\\\"@model\\\",\\\"@allowMultipleEmails\\\"],[\\\"Email addresses to send to\\\",\\\"email@address.com\\\",[30,0,[\\\"recipients\\\"]],true]],null],[1,\\\"\\\\n          \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,0,[\\\"recipients\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,15],null,[[\\\"@text\\\",\\\"@model\\\"],[\\\"Create Settify logins for all recipients if they do not already have one\\\",[30,0,[\\\"createUserLogins\\\"]]]],null],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          Practice areas\\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[8,[39,15],null,[[\\\"@text\\\",\\\"@model\\\"],[\\\"Family Law\\\",[30,0,[\\\"hasFamily\\\"]]]],null],[1,\\\"\\\\n          \\\"],[8,[39,15],null,[[\\\"@text\\\",\\\"@model\\\"],[\\\"Wills & Estates\\\",[30,0,[\\\"hasWills\\\"]]]],null],[1,\\\"\\\\n          \\\"],[8,[39,15],null,[[\\\"@text\\\",\\\"@model\\\"],[\\\"Probate\\\",[30,0,[\\\"hasProbate\\\"]]]],null],[1,\\\"\\\\n          \\\"],[8,[39,15],null,[[\\\"@text\\\",\\\"@model\\\"],[\\\"Estates\\\",[30,0,[\\\"hasEstates\\\"]]]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"hasFamily\\\"]],[[[1,\\\"          \\\"],[10,2],[12],[8,[39,14],null,[[\\\"@label\\\",\\\"@placeholder\\\",\\\"@model\\\"],[\\\"New leads email (family law)\\\",\\\"email@address.com\\\",[30,0,[\\\"newLeadsEmailFamily\\\"]]]],null],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"hasWills\\\"]],[[[1,\\\"          \\\"],[10,2],[12],[8,[39,14],null,[[\\\"@label\\\",\\\"@placeholder\\\",\\\"@model\\\"],[\\\"New leads email (wills & estates)\\\",\\\"email@address.com\\\",[30,0,[\\\"newLeadsEmailWills\\\"]]]],null],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"hasProbate\\\"]],[[[1,\\\"          \\\"],[10,2],[12],[8,[39,14],null,[[\\\"@label\\\",\\\"@placeholder\\\",\\\"@model\\\"],[\\\"New leads email (probate)\\\",\\\"email@address.com\\\",[30,0,[\\\"newLeadsEmailProbate\\\"]]]],null],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"hasEstates\\\"]],[[[1,\\\"          \\\"],[10,2],[12],[8,[39,14],null,[[\\\"@label\\\",\\\"@placeholder\\\",\\\"@model\\\"],[\\\"New leads email (estates)\\\",\\\"email@address.com\\\",[30,0,[\\\"newLeadsEmailEstates\\\"]]]],null],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n        \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,0,[\\\"emailing\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[39,17],null,null,null],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,0,[\\\"done\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,2],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\" Sent\\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,0,[\\\"createdEmails\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle tig\\\"],[12],[13],[1,\\\"\\\\n          New Settify login details created for:\\\\n          \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"createdEmails\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[10,\\\"small\\\"],[14,0,\\\"positive\\\"],[12],[1,[30,2]],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,0,[\\\"failedMessages\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-exclamation-circle negative\\\"],[12],[13],[1,\\\"\\\\n          An error occurred while creating new login details\\\\n          \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"failedMessages\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[10,\\\"small\\\"],[14,0,\\\"negative\\\"],[12],[1,[30,3]],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[3]],null],[1,\\\"        \\\"]],[]]]]],[1,\\\"\\\\n\\\\n        \\\"],[10,2],[14,5,\\\"text-align: right;\\\"],[12],[1,\\\"\\\\n          \\\"],[11,3],[16,0,[29,[\\\"next-button \\\",[52,[30,0,[\\\"errorInInput\\\"]],\\\"disabled-button\\\",\\\"clickable\\\"]]]],[4,[38,13],[[30,0],[52,[30,0,[\\\"errorInInput\\\"]],\\\"nullAction\\\",\\\"sendWelcomeEmail\\\"]],null],[12],[1,\\\"\\\\n            Send!\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"errorInInput\\\"]],[[[1,\\\"          \\\"],[10,2],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-exclamation-circle negative\\\"],[12],[13],[1,\\\" \\\"],[1,[30,0,[\\\"errorInInput\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"warningInInput\\\"]],[[[1,\\\"          \\\"],[10,2],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-question-circle negative\\\"],[12],[13],[1,\\\" \\\"],[1,[30,0,[\\\"warningInInput\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n        \\\"],[10,\\\"h2\\\"],[12],[1,\\\"Customise the welcome email\\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[10,\\\"b\\\"],[12],[1,\\\"Instructions for editing this email:\\\"],[13],[1,\\\"\\\\n          You can click and edit the content below. Changes you make will be included in the email sent to the firm. Be careful though, as this sort of text editing is very\\\\n          fragile. Don't try to copy and paste anything into this email content. You can, however, use command-B to make things bold, and command-I for italics.\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[10,\\\"hr\\\"],[12],[13],[1,\\\"\\\\n\\\\n        \\\"],[10,0],[14,1,\\\"welcomeemail-content\\\"],[14,\\\"contenteditable\\\",\\\"true\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"h1\\\"],[12],[1,\\\"\\\\n            Introducing Settify\\\\n          \\\"],[13],[1,\\\"\\\\n\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            We're pleased to let you know that\\\\n            \\\"],[1,[30,0,[\\\"firmname\\\"]]],[1,\\\"\\\\n            now offers the Settify client on-boarding process for new\\\\n            \\\"],[1,[30,0,[\\\"practiceAreasSentence\\\"]]],[1,\\\"\\\\n            clients.\\\\n          \\\"],[13],[1,\\\"\\\\n\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            To get proper use out of Settify, your team will need to invite clients to use it. This happens after a client phones you to book a meeting. Either a lawyer or\\\\n            assistant will need to jump onto your admin page, select 'Invite new client' and dispatch an email.\\\\n          \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"hasFamily\\\"]],[[[41,[28,[37,21],[[30,0,[\\\"practiceAreas\\\",\\\"length\\\"]],1],null],[[[1,\\\"              \\\"],[10,\\\"h2\\\"],[12],[1,\\\"Family Law\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[10,2],[12],[1,\\\"\\\\n              Settify gathers key information — allowing you to spend less time at the first meeting on background fact finding, and more time discussing advice, options,\\\\n              strategy, and next steps.\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              Settify will generate for you:\\\\n              \\\"],[10,\\\"ul\\\"],[14,5,\\\"padding-left: 50px\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n                  a PDF brief, summarising the client's instructions\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n                  a Word version of the brief, for easy editing\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n                  a powerful Excel assets and liabilities spreadsheet\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n                  a first draft chronology\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n                  a balance sheet in Court approved format\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"hasWills\\\"]],[[[41,[28,[37,21],[[30,0,[\\\"practiceAreas\\\",\\\"length\\\"]],1],null],[[[1,\\\"              \\\"],[10,\\\"h2\\\"],[12],[1,\\\"Wills & Estates\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[10,2],[12],[1,\\\"\\\\n              Settify gathers the information you will need to advise clients and draft their estate planning documents.\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"hasProbate\\\"]],[[[41,[28,[37,21],[[30,0,[\\\"practiceAreas\\\",\\\"length\\\"]],1],null],[[[1,\\\"              \\\"],[10,\\\"h2\\\"],[12],[1,\\\"Probate\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[10,2],[12],[1,\\\"\\\\n              Settify provides your clients with an opportunity to learn about the Probate process, and impresses upon them the value of seeking expert legal assistance. It then\\\\n              gathers a rich set of information from your instructor about the deceased, the family, and the estate, helping you to prepare for your first meeting.\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"hasEstates\\\"]],[[[41,[28,[37,21],[[30,0,[\\\"practiceAreas\\\",\\\"length\\\"]],1],null],[[[1,\\\"              \\\"],[10,\\\"h2\\\"],[12],[1,\\\"Estate Disputes\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[10,2],[12],[1,\\\"\\\\n              Settify's Estate Disputes system covers a variety of Estate Disputes matters, capturing your client's information both quickly and in detail.\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n          \\\"],[10,\\\"h2\\\"],[12],[1,\\\"Settify on the \\\"],[1,[30,0,[\\\"firmname\\\"]]],[1,\\\" website\\\"],[13],[1,\\\"\\\\n\\\\n          \\\"],[10,2],[12],[1,\\\"Settify is also available to people who visit the\\\\n            \\\"],[1,[30,0,[\\\"firmname\\\"]]],[1,\\\"\\\\n            website. It's a great way for them to immediately get some customised information about their situation, and then begin the process with\\\\n            \\\"],[1,[30,0,[\\\"firmname\\\"]]],[1,\\\"\\\\n            online, in their own time and space.\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"hasFamily\\\"]],[[[1,\\\"            \\\"],[10,2],[12],[1,\\\"\\\\n              When a potential new family law client comes in via Settify, an email will be sent to\\\\n              \\\"],[1,[30,0,[\\\"newLeadsEmailFamily\\\"]]],[1,\\\"\\\\n              with the name, address, and date of birth of the lead and their partner. The email will contain links for you to register a conflict and refuse the file, or register\\\\n              'no conflict' and gain access to the client's information.\\\\n            \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"hasWills\\\"]],[[[1,\\\"              \\\"],[10,2],[12],[1,\\\"\\\\n                New estate planning enquiries will be emailed to\\\\n                \\\"],[1,[30,0,[\\\"newLeadsEmailWills\\\"]]],[1,\\\". A conflict check will only be required if the lead is also seeking family law assistance.\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"hasProbate\\\"]],[[[1,\\\"              \\\"],[10,2],[12],[1,\\\"\\\\n                New probate enquiries will be emailed to\\\\n                \\\"],[1,[30,0,[\\\"newLeadsEmailProbate\\\"]]],[1,\\\". A conflict check will be required by default.\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"hasEstates\\\"]],[[[1,\\\"              \\\"],[10,2],[12],[1,\\\"\\\\n                New estate dispute enquiries will be emailed to\\\\n                \\\"],[1,[30,0,[\\\"newLeadsEmailEstates\\\"]]],[1,\\\". A conflict check will be required by default.\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            If you have any questions, please email\\\\n            \\\"],[10,3],[14,6,\\\"mailto:support@settify.com\\\"],[12],[1,\\\"support@settify.com\\\"],[13],[1,\\\".\\\\n          \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"\\\\n          \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\\n          \\\"],[10,2],[12],[1,\\\"Kind regards,\\\"],[13],[1,\\\"\\\\n\\\\n          \\\"],[10,2],[12],[1,\\\"The Team at Settify\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,24],null,null,null]],[\\\"guess\\\",\\\"emailAddress\\\",\\\"message\\\"],false,[\\\"animated-header\\\",\\\"div\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"i\\\",\\\"br\\\",\\\"b\\\",\\\"settify-textline\\\",\\\"liquid-if\\\",\\\"each\\\",\\\"-track-array\\\",\\\"a\\\",\\\"action\\\",\\\"settify-email-input\\\",\\\"check-box\\\",\\\"if\\\",\\\"loading-spinner\\\",\\\"h2\\\",\\\"hr\\\",\\\"h1\\\",\\\"gt\\\",\\\"ul\\\",\\\"li\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/welcomeemail.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/admin/whatsnew\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    What's New\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <div>\n          <p><small><LinkTo @route=\"index\"><i class=\"fal fa-home-lg-alt\" />Home</LinkTo></small></p>\n        </div>\n        <br />\n        <div class=\"whats-new-admin\">\n          <div class=\"whats-new-admin-text\">\n            <p>\n              This page is for adding to the \"What's New\" component. Every post needs at least title and body. You can additionally add a type if you like. For the body, html tags\n              are accepted to allow for styling of the post.\n            </p>\n            <p>\n              HTML Tag Examples:\n              <ul>\n                <li>Line break: &lt;br /&gt;</li>\n                <li>Bold: &lt;b&gt;Text&lt;/b&gt; - <b>Example</b></li>\n                <li>Small text: &lt;small&gt;Text&lt;small/&gt; - <small>Example</small></li>\n              </ul>\n            </p>\n          </div>\n          <div>\n            <b>Type</b>\n            <SettifyTextline @model={{this.whatsNewType}} @placeholder=\"Use one or more comma separated values (i.e. Feature, Announcement, Bugfix)\" />\n          </div>\n          <div class=\"whats-new-admin-title\">\n            <SettifyTextline @model={{this.whatsNewTitle}} @required={{true}} @headerLabel={{true}}>\n              <b>Title</b>\n            </SettifyTextline>\n          </div>\n          <div class=\"whats-new-admin-body\">\n            <SettifyTextarea @lines={{6}} @model={{this.whatsNewBody}} @max={{4096}} @required={{true}} @headerLabel={{true}}>\n              <b>Body</b>\n            </SettifyTextarea>\n          </div>\n        </div>\n        <div class=\"whats-new-submit-btn\">\n          <p style=\"text-align: right;\">\n            <button\n              type=\"submit\"\n              class=\"next-button hvr-float-shadow hvr-grow {{unless this.canSubmit 'disabled-button'}}\"\n              style=\"float:none;\"\n              {{action (if this.canSubmit \"savePost\" \"nullAction\")}}\n            >Save Post</button>\n          </p>\n        </div>\n        <LoadingDisplay @loading={{this.postSaving}} @success={{this.postSuccess}} @error={{this.postError}} @showError={{true}}>\n          Post saved successfully\n        </LoadingDisplay>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"w1lfRS8z\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  What's New\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[8,[39,4],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-home-lg-alt\\\"],[12],[13],[1,\\\"Home\\\"]],[]]]]],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"whats-new-admin\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"whats-new-admin-text\\\"],[12],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            This page is for adding to the \\\\\\\"What's New\\\\\\\" component. Every post needs at least title and body. You can additionally add a type if you like. For the body, html tags\\\\n            are accepted to allow for styling of the post.\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            HTML Tag Examples:\\\\n            \\\"],[10,\\\"ul\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"li\\\"],[12],[1,\\\"Line break: <br />\\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"li\\\"],[12],[1,\\\"Bold: <b>Text</b> - \\\"],[10,\\\"b\\\"],[12],[1,\\\"Example\\\"],[13],[13],[1,\\\"\\\\n              \\\"],[10,\\\"li\\\"],[12],[1,\\\"Small text: <small>Text<small/> - \\\"],[10,\\\"small\\\"],[12],[1,\\\"Example\\\"],[13],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[12],[1,\\\"\\\\n          \\\"],[10,\\\"b\\\"],[12],[1,\\\"Type\\\"],[13],[1,\\\"\\\\n          \\\"],[8,[39,10],null,[[\\\"@model\\\",\\\"@placeholder\\\"],[[30,0,[\\\"whatsNewType\\\"]],\\\"Use one or more comma separated values (i.e. Feature, Announcement, Bugfix)\\\"]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"whats-new-admin-title\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,10],null,[[\\\"@model\\\",\\\"@required\\\",\\\"@headerLabel\\\"],[[30,0,[\\\"whatsNewTitle\\\"]],true,true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,\\\"b\\\"],[12],[1,\\\"Title\\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"whats-new-admin-body\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,11],null,[[\\\"@lines\\\",\\\"@model\\\",\\\"@max\\\",\\\"@required\\\",\\\"@headerLabel\\\"],[6,[30,0,[\\\"whatsNewBody\\\"]],4096,true,true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,\\\"b\\\"],[12],[1,\\\"Body\\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"whats-new-submit-btn\\\"],[12],[1,\\\"\\\\n        \\\"],[10,2],[14,5,\\\"text-align: right;\\\"],[12],[1,\\\"\\\\n          \\\"],[11,\\\"button\\\"],[16,0,[29,[\\\"next-button hvr-float-shadow hvr-grow \\\",[52,[51,[30,0,[\\\"canSubmit\\\"]]],\\\"disabled-button\\\"]]]],[24,5,\\\"float:none;\\\"],[24,4,\\\"submit\\\"],[4,[38,14],[[30,0],[52,[30,0,[\\\"canSubmit\\\"]],\\\"savePost\\\",\\\"nullAction\\\"]],null],[12],[1,\\\"Save Post\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,16],null,[[\\\"@loading\\\",\\\"@success\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,0,[\\\"postSaving\\\"]],[30,0,[\\\"postSuccess\\\"]],[30,0,[\\\"postError\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        Post saved successfully\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,17],null,null,null]],[],false,[\\\"animated-header\\\",\\\"div\\\",\\\"p\\\",\\\"small\\\",\\\"link-to\\\",\\\"i\\\",\\\"br\\\",\\\"ul\\\",\\\"li\\\",\\\"b\\\",\\\"settify-textline\\\",\\\"settify-textarea\\\",\\\"button\\\",\\\"unless\\\",\\\"action\\\",\\\"if\\\",\\\"loading-display\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/admin/whatsnew.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/application-loading\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{outlet}}\n  */\n  {\n    \"id\": \"v8jZbnkZ\",\n    \"block\": \"[[[46,[28,[37,1],null,null],null,null,null]],[],false,[\\\"component\\\",\\\"-outlet\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/application-loading.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/application\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.sharedService.useLegacyUserInterface}}\n  \n    {{#if (and this.session.isAuthenticated this.session.data.authenticated.adminUser)}}\n      <SettifyRegionOverlay />\n    {{/if}}\n  \n    <LiquidOutlet @class=\"nofade settify-fullscreen\" />\n  \n    <EnvironmentIndicator />\n  {{else}}\n    {{! remove liquid from our v2 modern ui routes, see page layout defined in app/templates/v2/layout.hbs }}\n    {{outlet}}\n  {{/if}}\n  */\n  {\n    \"id\": \"1+OSPC0p\",\n    \"block\": \"[[[41,[30,0,[\\\"sharedService\\\",\\\"useLegacyUserInterface\\\"]],[[[1,\\\"\\\\n\\\"],[41,[28,[37,1],[[30,0,[\\\"session\\\",\\\"isAuthenticated\\\"]],[30,0,[\\\"session\\\",\\\"data\\\",\\\"authenticated\\\",\\\"adminUser\\\"]]],null],[[[1,\\\"    \\\"],[8,[39,2],null,null,null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[8,[39,3],null,[[\\\"@class\\\"],[\\\"nofade settify-fullscreen\\\"]],null],[1,\\\"\\\\n\\\\n  \\\"],[8,[39,4],null,null,null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"  \\\"],[46,[28,[37,6],null,null],null,null,null],[1,\\\"\\\\n\\\"]],[]]]],[],false,[\\\"if\\\",\\\"and\\\",\\\"settify-region-overlay\\\",\\\"liquid-outlet\\\",\\\"environment-indicator\\\",\\\"component\\\",\\\"-outlet\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/application.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/boilerplate/checkinternet\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    Please check that you are connected to the internet. \n  \n  */\n  {\n    \"id\": \"S6p2aEBQ\",\n    \"block\": \"[[[1,\\\"Please check that you are connected to the internet. \\\\n\\\"]],[],false,[]]\",\n    \"moduleName\": \"settify-mvp/templates/boilerplate/checkinternet.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/changepassword\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Change Password\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <br><br>\n        <div class=\"form-group\">\n          <form {{action (if this.canProgress \"changePassword\" \"nullAction\") on=\"submit\"}}>\n            <p>\n              <SettifyTextline\n                @id=\"currentPassword\"\n                @class=\"settify-sensitive\"\n                @type=\"password\"\n                @model={{this.currentPassword}}\n                @maxlength=\"64\"\n                @placeholder=\"Enter your current password\"\n                @headerLabel={{true}}\n              >\n                <b>Current password</b>\n              </SettifyTextline>\n            </p>\n            <p>\n              <ChoosePassword @password={{this.newPassword}} @passwordValid={{this.passwordValid}} />\n            </p>\n  \n            <LiquidIf @predicate={{this.loading}}>\n              <LoadingSpinner />\n            </LiquidIf>\n  \n            <LiquidIf @predicate={{this.errorMessage}}>\n              <p>\n                <b>There was an error processing your password change request:</b>\n                <ul>\n                  <li>\n                    Please check that you have entered your current password correctly.\n                  </li>\n                  <li>\n                    <CheckInternet />\n                  </li>\n                </ul>\n              </p>\n            </LiquidIf>\n  \n            <LiquidIf @predicate={{this.success}}>\n              <p>\n                <i class=\"fal fa-check-circle\" />\n                Your password has been changed.\n              </p>\n            </LiquidIf>\n  \n            <LiquidIf @predicate={{not this.success}}>\n              <div class=\"induction-navigation rightalign\">\n                <button type=\"submit\" class=\"floatnone next-button hvr-float-shadow hvr-grow {{unless this.canProgress 'disabled-button'}}\">\n                  {{#if this.errorMessage}}\n                    Try again\n                  {{else}}\n                    Change\n                  {{/if}}\n                </button>\n              </div>\n            </LiquidIf>\n          </form>\n  \n          <p>\n            <LinkTo @route=\"index\">\n              <small>\n                <a class=\"clickable\">\n                  {{#if this.success}}\n                    Return\n                  {{else}}\n                    Cancel and return\n                  {{/if}}\n                  to the home page\n                </a>\n              </small>\n            </LinkTo>\n          </p>\n        </div>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"xPr+ip6S\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Change Password\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"form-group\\\"],[12],[1,\\\"\\\\n        \\\"],[11,\\\"form\\\"],[4,[38,4],[[30,0],[52,[30,0,[\\\"canProgress\\\"]],\\\"changePassword\\\",\\\"nullAction\\\"]],[[\\\"on\\\"],[\\\"submit\\\"]]],[12],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[8,[39,7],null,[[\\\"@id\\\",\\\"@class\\\",\\\"@type\\\",\\\"@model\\\",\\\"@maxlength\\\",\\\"@placeholder\\\",\\\"@headerLabel\\\"],[\\\"currentPassword\\\",\\\"settify-sensitive\\\",\\\"password\\\",[30,0,[\\\"currentPassword\\\"]],\\\"64\\\",\\\"Enter your current password\\\",true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,\\\"b\\\"],[12],[1,\\\"Current password\\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[8,[39,9],null,[[\\\"@password\\\",\\\"@passwordValid\\\"],[[30,0,[\\\"newPassword\\\"]],[30,0,[\\\"passwordValid\\\"]]]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\\n          \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[30,0,[\\\"loading\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,11],null,null,null],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\\n          \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[30,0,[\\\"errorMessage\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              \\\"],[10,\\\"b\\\"],[12],[1,\\\"There was an error processing your password change request:\\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"ul\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n                  Please check that you have entered your current password correctly.\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,14],null,null,null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\\n          \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[30,0,[\\\"success\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"\\\\n              Your password has been changed.\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\\n          \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[28,[37,16],[[30,0,[\\\"success\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"induction-navigation rightalign\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"button\\\"],[15,0,[29,[\\\"floatnone next-button hvr-float-shadow hvr-grow \\\",[52,[51,[30,0,[\\\"canProgress\\\"]]],\\\"disabled-button\\\"]]]],[14,4,\\\"submit\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"errorMessage\\\"]],[[[1,\\\"                  Try again\\\\n\\\"]],[]],[[[1,\\\"                  Change\\\\n\\\"]],[]]],[1,\\\"              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[8,[39,19],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n              \\\"],[10,3],[14,0,\\\"clickable\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"success\\\"]],[[[1,\\\"                  Return\\\\n\\\"]],[]],[[[1,\\\"                  Cancel and return\\\\n\\\"]],[]]],[1,\\\"                to the home page\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,22],null,null,null]],[],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"form\\\",\\\"action\\\",\\\"if\\\",\\\"p\\\",\\\"settify-textline\\\",\\\"b\\\",\\\"choose-password\\\",\\\"liquid-if\\\",\\\"loading-spinner\\\",\\\"ul\\\",\\\"li\\\",\\\"check-internet\\\",\\\"i\\\",\\\"not\\\",\\\"button\\\",\\\"unless\\\",\\\"link-to\\\",\\\"small\\\",\\\"a\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/changepassword.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/accountant-invite-email-probate\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <p>\n    Dear {{@inviteeFullNames}},\n  </p>\n  <p>\n    {{#if @deceasedFullName}}\n      We were sorry to hear of the passing of {{@deceasedFullName}}.\n    {{else}}\n      We were sorry to hear of your recent loss.\n    {{/if}}\n    I would like to refer you to {{@firm.name}} to assist you with this matter.\n  </p>\n  <p>\n    {{@firm.name}} offer an on-boarding process that can be accessed via the link below.\n  </p>\n  <p>\n    By providing this information prior to meeting with {{@firm.name}}, they will have all the information \n    they need to consider the matter in advance, so that you can make the most of their expertise. \n    They will also be in the best position to answer any of your questions and advise you of the process and cost when you meet with them.\n  </p>\n  {{!-- {{#if accountantProvidingFinancialInformation}}\n    <p>\n      I will provide {{firm.name}} with the relevant financial information for the estate directly. \n    </p>\n  {{/if}} --}}\n  \n  <div id=\"email_button\" class=\"centertext\">\n    <a class=\"validationbutton\" href=\"\"><div><p>{{@buttonLabel}}</p></div></a>\n  </div>\n  \n  <p>\n    I will otherwise leave you in the hands of {{@firm.name}} to assist you. If you have any queries, please do not hesitate to contact me.\n  </p>\n  \n  <p>\n    {{@accountant.firstName}} {{@accountant.surname}} <br>\n    <strong>{{@accountant.name}}</strong> <br>\n    <small>\n      {{#if @accountant.email}}\n        {{@accountant.email}} <br>\n      {{/if}}\n    </small>\n  </p>\n  */\n  {\n    \"id\": \"miW5zD2n\",\n    \"block\": \"[[[10,2],[12],[1,\\\"\\\\n  Dear \\\"],[1,[30,1]],[1,\\\",\\\\n\\\"],[13],[1,\\\"\\\\n\\\"],[10,2],[12],[1,\\\"\\\\n\\\"],[41,[30,2],[[[1,\\\"    We were sorry to hear of the passing of \\\"],[1,[30,2]],[1,\\\".\\\\n\\\"]],[]],[[[1,\\\"    We were sorry to hear of your recent loss.\\\\n\\\"]],[]]],[1,\\\"  I would like to refer you to \\\"],[1,[30,3,[\\\"name\\\"]]],[1,\\\" to assist you with this matter.\\\\n\\\"],[13],[1,\\\"\\\\n\\\"],[10,2],[12],[1,\\\"\\\\n  \\\"],[1,[30,3,[\\\"name\\\"]]],[1,\\\" offer an on-boarding process that can be accessed via the link below.\\\\n\\\"],[13],[1,\\\"\\\\n\\\"],[10,2],[12],[1,\\\"\\\\n  By providing this information prior to meeting with \\\"],[1,[30,3,[\\\"name\\\"]]],[1,\\\", they will have all the information \\\\n  they need to consider the matter in advance, so that you can make the most of their expertise. \\\\n  They will also be in the best position to answer any of your questions and advise you of the process and cost when you meet with them.\\\\n\\\"],[13],[1,\\\"\\\\n\\\"],[1,\\\"\\\\n\\\"],[10,0],[14,1,\\\"email_button\\\"],[14,0,\\\"centertext\\\"],[12],[1,\\\"\\\\n  \\\"],[10,3],[14,0,\\\"validationbutton\\\"],[14,6,\\\"\\\"],[12],[10,0],[12],[10,2],[12],[1,[30,4]],[13],[13],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[10,2],[12],[1,\\\"\\\\n  I will otherwise leave you in the hands of \\\"],[1,[30,3,[\\\"name\\\"]]],[1,\\\" to assist you. If you have any queries, please do not hesitate to contact me.\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[10,2],[12],[1,\\\"\\\\n  \\\"],[1,[30,5,[\\\"firstName\\\"]]],[1,\\\" \\\"],[1,[30,5,[\\\"surname\\\"]]],[1,\\\" \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[10,\\\"strong\\\"],[12],[1,[30,5,[\\\"name\\\"]]],[13],[1,\\\" \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,5,[\\\"email\\\"]],[[[1,\\\"      \\\"],[1,[30,5,[\\\"email\\\"]]],[1,\\\" \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@inviteeFullNames\\\",\\\"@deceasedFullName\\\",\\\"@firm\\\",\\\"@buttonLabel\\\",\\\"@accountant\\\"],false,[\\\"p\\\",\\\"if\\\",\\\"div\\\",\\\"a\\\",\\\"br\\\",\\\"strong\\\",\\\"small\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/accountant-invite-email-probate.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/admin/condensed-summary\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"condensed-summary settify-for-everything\">\n    {{#if @induction.icon}}\n      <LineIcon @src={{sum \"https://cdn.settify.com.au/icons/\" (de-fingerprint @induction.icon)}} />\n    {{/if}}\n    <h1>\n      {{parse-text\n        (or @induction.shortTitle @induction.title)\n        touch=@model.client.touch\n        clientRecord=@model.client\n        context=(hash induction=@induction.id chapter=this.chapter.id repeat=@induction.repeatToken)\n      }}\n      {{#if @induction.breadcrumbText}}\n        (<span class=\"settify-sensitive\">{{@induction.breadcrumbText}}</span>)\n      {{/if}}\n    </h1>\n    <div class=\"can-highlight {{if (and @induction.isContactDetails @highlightRequiredFieldsCP) 'highlight-required-fields'}}\">\n      {{#each @induction.chapters as |chapter|}}\n        {{#if (not (or (and chapter.hideFromFirm @adminMode) (and chapter.hideInClientSummary @clientSummaryMode) chapter.deleted))}}\n          <div>\n            <h2>\n              {{#if chapter.icon}}\n                <LineIcon @inline={{true}} @src={{concat \"https://cdn.settify.com.au/icons/\" (de-fingerprint chapter.icon)}} />\n              {{/if}}\n              {{parse-text\n                (or chapter.shortTitle chapter.title)\n                touch=@model.client.touch\n                clientRecord=@model.client\n                context=(hash induction=@induction.id chapter=chapter.id repeat=@induction.repeatToken)\n              }}\n            </h2>\n            {{#if @showAnswerToggles}}\n              <a class=\"clickable\" {{on \"click\" (fn @toggleSummaryEditor chapter)}}><i class=\"fal fa-pencil\" title=\"Edit Title\" /></a>\n            {{/if}}\n          </div>\n          {{#if @showAnswerToggles}}\n            <LiquidSpacer>\n              {{#if chapter.adminEditing}}\n                <SettifyTextline @model={{chapter.shortTitle}} @label=\"Summary chapter title\" />\n              {{/if}}\n            </LiquidSpacer>\n          {{/if}}\n  \n          <table class=\"chapter-contents can-highlight {{if (and chapter.isContactDetails @highlightRequiredFieldsCP) 'highlight-required-fields'}}\" data-chapter-id=\"{{chapter.id}}\">\n            <tbody>\n              {{#each chapter.pages as |page|}}\n                {{#if (not (or (and page.hideFromFirm @adminMode) (and page.hideInClientSummary @clientSummaryMode) page.deleted))}}\n                  <tr class=\"can-highlight {{if (and page.isContactDetails @highlightRequiredFieldsCP) 'highlight-required-fields'}}\" data-page-id=\"{{page.id}}\">\n                    <td class=\"chapter-title\">\n                      <h3 class=\"display-inline\">\n                        {{parse-text\n                          (or page.shortTitle page.title)\n                          touch=@model.client.touch\n                          clientRecord=@model.client\n                          context=(hash induction=@induction.id chapter=chapter.id repeat=@induction.repeatToken)\n                        }}\n                      </h3>\n                      {{#if @showAnswerToggles}}\n                        <a class=\"clickable\" {{on \"click\" (fn @toggleSummaryEditor page)}}><i class=\"fal fa-pencil\" title=\"Edit Title\" /></a>\n                      {{/if}}\n                      {{#if @showAnswerToggles}}\n                        <LiquidSpacer>\n                          {{#if page.adminEditing}}\n                            <SettifyTextline @model={{page.shortTitle}} @label=\"Summary page title\" />\n                          {{/if}}\n                        </LiquidSpacer>\n                      {{/if}}\n                    </td>\n  \n                    <td class=\"chapter-items\">\n                      <table class=\"summary-question-container\">\n                        <tbody>\n                          {{#if (and page.answersLocation page.answersLocationLoop)}}\n                            {{! loop over each item in the answers model }}\n                            {{#each\n                              (get-answers-from\n                                client=@model.client\n                                induction=@induction.id\n                                chapter=chapter.id\n                                page=page.id\n                                answersLocation=page.answersLocation\n                                repeatToken=@induction.repeatToken\n                                create=true\n                              )\n                              as |loopAnswer loop|\n                            }}\n                              {{#let\n                                (get-answers-from\n                                  client=@model.client\n                                  induction=@induction.id\n                                  chapter=chapter.id\n                                  page=page.id\n                                  answersLocation=page.answersLocation\n                                  loop=loop\n                                  repeatToken=@induction.repeatToken\n                                  create=true\n                                )\n                                as |pageModel|\n                              }}\n                                <Admin::PageSummary\n                                  @model={{@model}}\n                                  @induction={{@induction}}\n                                  @pageModel={{pageModel}}\n                                  @page={{page}}\n                                  @chapter={{chapter}}\n                                  @clientSummaryMode={{@clientSummaryMode}}\n                                  @adminMode={{@adminMode}}\n                                />\n                              {{/let}}\n                            {{/each}}\n                          {{else}}\n                            {{#let\n                              (get-answers-from\n                                client=@model.client\n                                induction=@induction.id\n                                chapter=chapter.id\n                                page=page.id\n                                answersLocation=page.answersLocation\n                                loop=this.loop\n                                repeatToken=@induction.repeatToken\n                                create=true\n                              )\n                              as |pageModel|\n                            }}\n                              <Admin::PageSummary\n                                @model={{@model}}\n                                @induction={{@induction}}\n                                @pageModel={{pageModel}}\n                                @page={{page}}\n                                @chapter={{chapter}}\n                                @clientSummaryMode={{@clientSummaryMode}}\n                                @adminMode={{@adminMode}}\n                              />\n                            {{/let}}\n                          {{/if}}\n                        </tbody>\n                      </table>\n  \n                      {{#if\n                        (get\n                          (get-answers-from\n                            client=@model.client\n                            induction=@induction.id\n                            chapter=chapter.id\n                            page=page.id\n                            answersLocation=page.answersLocation\n                            repeatToken=@induction.repeatToken\n                            create=true\n                          )\n                          \"settifyMoreInfo\"\n                        )\n                      }}\n                        <p>\n                          More information:\n                          {{get\n                            (get-answers-from\n                              client=@model.client\n                              induction=@induction.id\n                              chapter=chapter.id\n                              page=page.id\n                              answersLocation=page.answersLocation\n                              repeatToken=@induction.repeatToken\n                              create=true\n                            )\n                            \"settifyMoreInfo\"\n                          }}\n                        </p>\n                      {{/if}}\n                    </td>\n  \n                    {{#if @showEditLinks}}\n                      <td class=\"chapter-action\">\n                        <LinkTo\n                          @route=\"{{or @routeOverride 'detailedinduction'}}\"\n                          @models={{array @induction.id chapter.id page.id}}\n                          @query={{hash repeat=@induction.repeatToken review=true}}\n                        ><i class=\"fal fa-pencil\" title=\"Edit\" /></LinkTo>\n                      </td>\n                    {{/if}}\n                  </tr>\n                {{/if}}\n              {{/each}}\n            </tbody>\n          </table>\n        {{/if}}\n      {{/each}}\n    </div>\n  \n    {{#if @adminMode}}\n      {{! MVPTODO: fix this }}\n      <LineIcon @src=\"https://cdn.settify.com.au/icons/paper-stack.png\" />\n      <h1 class=\"settify-title\">\n        Documents to bring\n      </h1>\n      <h2>Requested from the client</h2>\n      <DocumentsRequiredList @client={{@model.client}} @inductions={{@model.inductions}} @displayOnly={{true}} @notSureButton={{false}} @adminMode={{@adminMode}} />\n      {{! MVPTODO: <p>\n        <h2>Uploaded by the client</h2>\n        <ul>\n          <li><a class=\"clickable\"><img class=\"file-icon\" src=\"/assets/images/fileicons/pdf.png\" />98091239 partnership agreement scanned.pdf</a></li>\n          <li><a class=\"clickable\"><img class=\"file-icon\" src=\"/assets/images/fileicons/pdf.png\" />98091431 lease 11 thompson rd.pdf</a></li>\n        </ul>\n        <a class=\"clickable docx-exclude\"><img class=\"file-icon\" src=\"/assets/images/fileicons/zip.png\" />Download all as a zip file</a>\n      </p> }}\n    {{/if}}\n    <DocumentsOther @client={{@model.client}} @smallTitle={{@adminMode}} @displayOnly={{true}} />\n  </div>\n  */\n  {\n    \"id\": \"uEWZa49y\",\n    \"block\": \"[[[10,0],[14,0,\\\"condensed-summary settify-for-everything\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"icon\\\"]],[[[1,\\\"    \\\"],[8,[39,2],null,[[\\\"@src\\\"],[[28,[37,3],[\\\"https://cdn.settify.com.au/icons/\\\",[28,[37,4],[[30,1,[\\\"icon\\\"]]],null]],null]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[10,\\\"h1\\\"],[12],[1,\\\"\\\\n    \\\"],[1,[28,[35,6],[[28,[37,7],[[30,1,[\\\"shortTitle\\\"]],[30,1,[\\\"title\\\"]]],null]],[[\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,2,[\\\"client\\\",\\\"touch\\\"]],[30,2,[\\\"client\\\"]],[28,[37,8],null,[[\\\"induction\\\",\\\"chapter\\\",\\\"repeat\\\"],[[30,1,[\\\"id\\\"]],[30,0,[\\\"chapter\\\",\\\"id\\\"]],[30,1,[\\\"repeatToken\\\"]]]]]]]]],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"breadcrumbText\\\"]],[[[1,\\\"      (\\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,1,[\\\"breadcrumbText\\\"]]],[13],[1,\\\")\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,0],[15,0,[29,[\\\"can-highlight \\\",[52,[28,[37,10],[[30,1,[\\\"isContactDetails\\\"]],[30,3]],null],\\\"highlight-required-fields\\\"]]]],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,12],[[28,[37,12],[[30,1,[\\\"chapters\\\"]]],null]],null],null,[[[41,[28,[37,13],[[28,[37,7],[[28,[37,10],[[30,4,[\\\"hideFromFirm\\\"]],[30,5]],null],[28,[37,10],[[30,4,[\\\"hideInClientSummary\\\"]],[30,6]],null],[30,4,[\\\"deleted\\\"]]],null]],null],[[[1,\\\"        \\\"],[10,0],[12],[1,\\\"\\\\n          \\\"],[10,\\\"h2\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,4,[\\\"icon\\\"]],[[[1,\\\"              \\\"],[8,[39,2],null,[[\\\"@inline\\\",\\\"@src\\\"],[true,[28,[37,15],[\\\"https://cdn.settify.com.au/icons/\\\",[28,[37,4],[[30,4,[\\\"icon\\\"]]],null]],null]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[1,[28,[35,6],[[28,[37,7],[[30,4,[\\\"shortTitle\\\"]],[30,4,[\\\"title\\\"]]],null]],[[\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,2,[\\\"client\\\",\\\"touch\\\"]],[30,2,[\\\"client\\\"]],[28,[37,8],null,[[\\\"induction\\\",\\\"chapter\\\",\\\"repeat\\\"],[[30,1,[\\\"id\\\"]],[30,4,[\\\"id\\\"]],[30,1,[\\\"repeatToken\\\"]]]]]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,7],[[[1,\\\"            \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,17],[\\\"click\\\",[28,[37,18],[[30,8],[30,4]],null]],null],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-pencil\\\"],[14,\\\"title\\\",\\\"Edit Title\\\"],[12],[13],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,7],[[[1,\\\"          \\\"],[8,[39,20],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,4,[\\\"adminEditing\\\"]],[[[1,\\\"              \\\"],[8,[39,21],null,[[\\\"@model\\\",\\\"@label\\\"],[[30,4,[\\\"shortTitle\\\"]],\\\"Summary chapter title\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n        \\\"],[10,\\\"table\\\"],[15,0,[29,[\\\"chapter-contents can-highlight \\\",[52,[28,[37,10],[[30,4,[\\\"isContactDetails\\\"]],[30,3]],null],\\\"highlight-required-fields\\\"]]]],[15,\\\"data-chapter-id\\\",[29,[[30,4,[\\\"id\\\"]]]]],[12],[1,\\\"\\\\n          \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,12],[[28,[37,12],[[30,4,[\\\"pages\\\"]]],null]],null],null,[[[41,[28,[37,13],[[28,[37,7],[[28,[37,10],[[30,9,[\\\"hideFromFirm\\\"]],[30,5]],null],[28,[37,10],[[30,9,[\\\"hideInClientSummary\\\"]],[30,6]],null],[30,9,[\\\"deleted\\\"]]],null]],null],[[[1,\\\"                \\\"],[10,\\\"tr\\\"],[15,0,[29,[\\\"can-highlight \\\",[52,[28,[37,10],[[30,9,[\\\"isContactDetails\\\"]],[30,3]],null],\\\"highlight-required-fields\\\"]]]],[15,\\\"data-page-id\\\",[29,[[30,9,[\\\"id\\\"]]]]],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[14,0,\\\"chapter-title\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"h3\\\"],[14,0,\\\"display-inline\\\"],[12],[1,\\\"\\\\n                      \\\"],[1,[28,[35,6],[[28,[37,7],[[30,9,[\\\"shortTitle\\\"]],[30,9,[\\\"title\\\"]]],null]],[[\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,2,[\\\"client\\\",\\\"touch\\\"]],[30,2,[\\\"client\\\"]],[28,[37,8],null,[[\\\"induction\\\",\\\"chapter\\\",\\\"repeat\\\"],[[30,1,[\\\"id\\\"]],[30,4,[\\\"id\\\"]],[30,1,[\\\"repeatToken\\\"]]]]]]]]],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,7],[[[1,\\\"                      \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,17],[\\\"click\\\",[28,[37,18],[[30,8],[30,9]],null]],null],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-pencil\\\"],[14,\\\"title\\\",\\\"Edit Title\\\"],[12],[13],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,7],[[[1,\\\"                      \\\"],[8,[39,20],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,9,[\\\"adminEditing\\\"]],[[[1,\\\"                          \\\"],[8,[39,21],null,[[\\\"@model\\\",\\\"@label\\\"],[[30,9,[\\\"shortTitle\\\"]],\\\"Summary page title\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                      \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                  \\\"],[13],[1,\\\"\\\\n\\\\n                  \\\"],[10,\\\"td\\\"],[14,0,\\\"chapter-items\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"table\\\"],[14,0,\\\"summary-question-container\\\"],[12],[1,\\\"\\\\n                      \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,10],[[30,9,[\\\"answersLocation\\\"]],[30,9,[\\\"answersLocationLoop\\\"]]],null],[[[42,[28,[37,12],[[28,[37,12],[[28,[37,27],null,[[\\\"client\\\",\\\"induction\\\",\\\"chapter\\\",\\\"page\\\",\\\"answersLocation\\\",\\\"repeatToken\\\",\\\"create\\\"],[[30,2,[\\\"client\\\"]],[30,1,[\\\"id\\\"]],[30,4,[\\\"id\\\"]],[30,9,[\\\"id\\\"]],[30,9,[\\\"answersLocation\\\"]],[30,1,[\\\"repeatToken\\\"]],true]]]],null]],null],null,[[[44,[[28,[37,27],null,[[\\\"client\\\",\\\"induction\\\",\\\"chapter\\\",\\\"page\\\",\\\"answersLocation\\\",\\\"loop\\\",\\\"repeatToken\\\",\\\"create\\\"],[[30,2,[\\\"client\\\"]],[30,1,[\\\"id\\\"]],[30,4,[\\\"id\\\"]],[30,9,[\\\"id\\\"]],[30,9,[\\\"answersLocation\\\"]],[30,11],[30,1,[\\\"repeatToken\\\"]],true]]]],[[[1,\\\"                              \\\"],[8,[39,29],null,[[\\\"@model\\\",\\\"@induction\\\",\\\"@pageModel\\\",\\\"@page\\\",\\\"@chapter\\\",\\\"@clientSummaryMode\\\",\\\"@adminMode\\\"],[[30,2],[30,1],[30,12],[30,9],[30,4],[30,6],[30,5]]],null],[1,\\\"\\\\n\\\"]],[12]]]],[10,11]],null]],[]],[[[44,[[28,[37,27],null,[[\\\"client\\\",\\\"induction\\\",\\\"chapter\\\",\\\"page\\\",\\\"answersLocation\\\",\\\"loop\\\",\\\"repeatToken\\\",\\\"create\\\"],[[30,2,[\\\"client\\\"]],[30,1,[\\\"id\\\"]],[30,4,[\\\"id\\\"]],[30,9,[\\\"id\\\"]],[30,9,[\\\"answersLocation\\\"]],[30,0,[\\\"loop\\\"]],[30,1,[\\\"repeatToken\\\"]],true]]]],[[[1,\\\"                            \\\"],[8,[39,29],null,[[\\\"@model\\\",\\\"@induction\\\",\\\"@pageModel\\\",\\\"@page\\\",\\\"@chapter\\\",\\\"@clientSummaryMode\\\",\\\"@adminMode\\\"],[[30,2],[30,1],[30,13],[30,9],[30,4],[30,6],[30,5]]],null],[1,\\\"\\\\n\\\"]],[13]]]],[]]],[1,\\\"                      \\\"],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,30],[[28,[37,27],null,[[\\\"client\\\",\\\"induction\\\",\\\"chapter\\\",\\\"page\\\",\\\"answersLocation\\\",\\\"repeatToken\\\",\\\"create\\\"],[[30,2,[\\\"client\\\"]],[30,1,[\\\"id\\\"]],[30,4,[\\\"id\\\"]],[30,9,[\\\"id\\\"]],[30,9,[\\\"answersLocation\\\"]],[30,1,[\\\"repeatToken\\\"]],true]]],\\\"settifyMoreInfo\\\"],null],[[[1,\\\"                      \\\"],[10,2],[12],[1,\\\"\\\\n                        More information:\\\\n                        \\\"],[1,[28,[35,30],[[28,[37,27],null,[[\\\"client\\\",\\\"induction\\\",\\\"chapter\\\",\\\"page\\\",\\\"answersLocation\\\",\\\"repeatToken\\\",\\\"create\\\"],[[30,2,[\\\"client\\\"]],[30,1,[\\\"id\\\"]],[30,4,[\\\"id\\\"]],[30,9,[\\\"id\\\"]],[30,9,[\\\"answersLocation\\\"]],[30,1,[\\\"repeatToken\\\"]],true]]],\\\"settifyMoreInfo\\\"],null]],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,14],[[[1,\\\"                    \\\"],[10,\\\"td\\\"],[14,0,\\\"chapter-action\\\"],[12],[1,\\\"\\\\n                      \\\"],[8,[39,32],null,[[\\\"@route\\\",\\\"@models\\\",\\\"@query\\\"],[[29,[[28,[37,7],[[30,15],\\\"detailedinduction\\\"],null]]],[28,[37,33],[[30,1,[\\\"id\\\"]],[30,4,[\\\"id\\\"]],[30,9,[\\\"id\\\"]]],null],[28,[37,8],null,[[\\\"repeat\\\",\\\"review\\\"],[[30,1,[\\\"repeatToken\\\"]],true]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-pencil\\\"],[14,\\\"title\\\",\\\"Edit\\\"],[12],[13]],[]]]]],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[9]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[4]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,5],[[[1,\\\"    \\\"],[8,[39,2],null,[[\\\"@src\\\"],[\\\"https://cdn.settify.com.au/icons/paper-stack.png\\\"]],null],[1,\\\"\\\\n    \\\"],[10,\\\"h1\\\"],[14,0,\\\"settify-title\\\"],[12],[1,\\\"\\\\n      Documents to bring\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"h2\\\"],[12],[1,\\\"Requested from the client\\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,34],null,[[\\\"@client\\\",\\\"@inductions\\\",\\\"@displayOnly\\\",\\\"@notSureButton\\\",\\\"@adminMode\\\"],[[30,2,[\\\"client\\\"]],[30,2,[\\\"inductions\\\"]],true,false,[30,5]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[8,[39,35],null,[[\\\"@client\\\",\\\"@smallTitle\\\",\\\"@displayOnly\\\"],[[30,2,[\\\"client\\\"]],[30,5],true]],null],[1,\\\"\\\\n\\\"],[13]],[\\\"@induction\\\",\\\"@model\\\",\\\"@highlightRequiredFieldsCP\\\",\\\"chapter\\\",\\\"@adminMode\\\",\\\"@clientSummaryMode\\\",\\\"@showAnswerToggles\\\",\\\"@toggleSummaryEditor\\\",\\\"page\\\",\\\"loopAnswer\\\",\\\"loop\\\",\\\"pageModel\\\",\\\"pageModel\\\",\\\"@showEditLinks\\\",\\\"@routeOverride\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"line-icon\\\",\\\"sum\\\",\\\"de-fingerprint\\\",\\\"h1\\\",\\\"parse-text\\\",\\\"or\\\",\\\"hash\\\",\\\"span\\\",\\\"and\\\",\\\"each\\\",\\\"-track-array\\\",\\\"not\\\",\\\"h2\\\",\\\"concat\\\",\\\"a\\\",\\\"on\\\",\\\"fn\\\",\\\"i\\\",\\\"liquid-spacer\\\",\\\"settify-textline\\\",\\\"table\\\",\\\"tbody\\\",\\\"tr\\\",\\\"td\\\",\\\"h3\\\",\\\"get-answers-from\\\",\\\"let\\\",\\\"admin/page-summary\\\",\\\"get\\\",\\\"p\\\",\\\"link-to\\\",\\\"array\\\",\\\"documents-required-list\\\",\\\"documents-other\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/admin/condensed-summary.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/admin/edit-client-pencil\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <button type=\"button\" class=\"small edit-client-pencil\">\n    {{#if @client.editingNotes}}\n      <i title=\"Discard changes\" class=\"clickable fal fa-times\" {{on \"click\" (fn @cancelEditClientNotes @client)}}/>\n    {{else}}\n      <i title=\"Edit Lead Details\" class=\"clickable fal fa-pencil\" {{on \"click\" (fn @editClientNotes @client)}}/>\n    {{/if}}\n  </button>\n  \n  */\n  {\n    \"id\": \"bU+mKsPe\",\n    \"block\": \"[[[10,\\\"button\\\"],[14,0,\\\"small edit-client-pencil\\\"],[14,4,\\\"button\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"editingNotes\\\"]],[[[1,\\\"    \\\"],[11,\\\"i\\\"],[24,\\\"title\\\",\\\"Discard changes\\\"],[24,0,\\\"clickable fal fa-times\\\"],[4,[38,3],[\\\"click\\\",[28,[37,4],[[30,2],[30,1]],null]],null],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[11,\\\"i\\\"],[24,\\\"title\\\",\\\"Edit Lead Details\\\"],[24,0,\\\"clickable fal fa-pencil\\\"],[4,[38,3],[\\\"click\\\",[28,[37,4],[[30,3],[30,1]],null]],null],[12],[13],[1,\\\"\\\\n\\\"]],[]]],[13],[1,\\\"\\\\n\\\"]],[\\\"@client\\\",\\\"@cancelEditClientNotes\\\",\\\"@editClientNotes\\\"],false,[\\\"button\\\",\\\"if\\\",\\\"i\\\",\\\"on\\\",\\\"fn\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/admin/edit-client-pencil.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/admin/edit-team-buttons\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"small\">\n    <button type=\"button\" class=\"plain-button\" {{on \"click\" (if @creating @createLawyer @saveChanges)}}>\n      <i class=\"fal fa-cloud-upload-alt\" /> \n      {{if @creating \"Create\" \"Save changes\"}}\n    </button>\n    <button type=\"button\" class=\"plain-button\" {{on \"click\" @cancelChanges}}>\n      <i class=\"fal fa-undo\" /> \n      Cancel changes\n    </button>\n  </div>\n  \n  */\n  {\n    \"id\": \"nO5EMVvi\",\n    \"block\": \"[[[10,0],[14,0,\\\"small\\\"],[12],[1,\\\"\\\\n  \\\"],[11,\\\"button\\\"],[24,0,\\\"plain-button\\\"],[24,4,\\\"button\\\"],[4,[38,2],[\\\"click\\\",[52,[30,1],[30,2],[30,3]]],null],[12],[1,\\\"\\\\n    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-cloud-upload-alt\\\"],[12],[13],[1,\\\" \\\\n    \\\"],[1,[52,[30,1],\\\"Create\\\",\\\"Save changes\\\"]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[11,\\\"button\\\"],[24,0,\\\"plain-button\\\"],[24,4,\\\"button\\\"],[4,[38,2],[\\\"click\\\",[30,4]],null],[12],[1,\\\"\\\\n    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-undo\\\"],[12],[13],[1,\\\" \\\\n    Cancel changes\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[\\\"@creating\\\",\\\"@createLawyer\\\",\\\"@saveChanges\\\",\\\"@cancelChanges\\\"],false,[\\\"div\\\",\\\"button\\\",\\\"on\\\",\\\"if\\\",\\\"i\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/admin/edit-team-buttons.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/admin/filtered-settings-table\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <table class=\"settings\">\n    <tbody>\n      {{#each @filteredSettings as |setting|}}\n        <tr>\n          <td>\n            {{get (get @firmSettings.settingsHelp setting.withoutPath) \"displayName\"}}\n            {{#if (get @firmSettings.settingsHelp (sum setting.withoutPath \".helpText\"))}}\n              <HelpToggle>\n                {{get @firmSettings.settingsHelp (sum setting.withoutPath \".helpText\")}}\n              </HelpToggle>\n            {{/if}}\n          </td>\n          <td>\n            {{#let (get @selectedPracticeAreaSettings setting.withPath) as |settingValue|}}\n              {{#if (eq (get @firmSettings.settingsHelp (sum setting.withoutPath \".type\")) \"string\")}}\n                <SettifyTextline @model={{mut settingValue}} />\n              {{else if (eq (get @firmSettings.settingsHelp (sum setting.withoutPath \".type\")) \"number\")}}\n                <SettifyNumber @model={{mut settingValue}} />\n              {{else if (eq (get @firmSettings.settingsHelp (sum setting.withoutPath \".type\")) \"textarea\")}}\n                <SettifyTextarea @max={{4096}} @model={{mut settingValue}} />\n              {{else if (eq (get @firmSettings.settingsHelp (sum setting.withoutPath \".type\")) \"bool\")}}\n                <CheckBox @model={{mut settingValue}} />\n              {{else if (eq (get @firmSettings.settingsHelp (sum setting.withoutPath \".type\")) \"stringarray\")}}\n                <FreeList @model={{mut settingValue}} @noDestory={{true}} as |item|>\n                  <SettifyTextline @model={{item.contents}} />\n                </FreeList>\n              {{else if (eq (get @firmSettings.settingsHelp (sum setting.withoutPath \".type\")) \"emailarray\")}}\n                <FreeList @model={{mut settingValue}} @itemName=\"email address\" @noDestory={{true}} as |item|>\n                  <SettifyEmail_Input @model={{item.contents}} />\n                </FreeList>\n              {{else if (eq (get @firmSettings.settingsHelp (sum setting.withoutPath \".type\")) \"fileupload\")}}\n                <FreeList @model={{mut settingValue}} @itemName=\"file\" @noDestory={{true}} as |item|>\n                  <SettifyFileUpload @uploadPrefix=\"{CognitoIdentityPoolId}/\" @model={{item}} @maxKB={{mul 1024 5}} @accept=\".pdf,.docx,.doc\" />\n                </FreeList>\n              {{else}}\n                <SettifyTextline @model={{mut settingValue}} />\n              {{/if}}\n            {{/let}}\n          </td>\n        </tr>\n      {{/each}}\n    </tbody>\n  </table>\n  */\n  {\n    \"id\": \"IvN3Wl/x\",\n    \"block\": \"[[[10,\\\"table\\\"],[14,0,\\\"settings\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,3],[[28,[37,3],[[30,1]],null]],null],null,[[[1,\\\"      \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[28,[35,6],[[28,[37,6],[[30,3,[\\\"settingsHelp\\\"]],[30,2,[\\\"withoutPath\\\"]]],null],\\\"displayName\\\"],null]],[1,\\\"\\\\n\\\"],[41,[28,[37,6],[[30,3,[\\\"settingsHelp\\\"]],[28,[37,8],[[30,2,[\\\"withoutPath\\\"]],\\\".helpText\\\"],null]],null],[[[1,\\\"            \\\"],[8,[39,9],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[1,[28,[35,6],[[30,3,[\\\"settingsHelp\\\"]],[28,[37,8],[[30,2,[\\\"withoutPath\\\"]],\\\".helpText\\\"],null]],null]],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[44,[[28,[37,6],[[30,4],[30,2,[\\\"withPath\\\"]]],null]],[[[41,[28,[37,11],[[28,[37,6],[[30,3,[\\\"settingsHelp\\\"]],[28,[37,8],[[30,2,[\\\"withoutPath\\\"]],\\\".type\\\"],null]],null],\\\"string\\\"],null],[[[1,\\\"              \\\"],[8,[39,12],null,[[\\\"@model\\\"],[[28,[37,13],[[30,5]],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,11],[[28,[37,6],[[30,3,[\\\"settingsHelp\\\"]],[28,[37,8],[[30,2,[\\\"withoutPath\\\"]],\\\".type\\\"],null]],null],\\\"number\\\"],null],[[[1,\\\"              \\\"],[8,[39,14],null,[[\\\"@model\\\"],[[28,[37,13],[[30,5]],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,11],[[28,[37,6],[[30,3,[\\\"settingsHelp\\\"]],[28,[37,8],[[30,2,[\\\"withoutPath\\\"]],\\\".type\\\"],null]],null],\\\"textarea\\\"],null],[[[1,\\\"              \\\"],[8,[39,15],null,[[\\\"@max\\\",\\\"@model\\\"],[4096,[28,[37,13],[[30,5]],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,11],[[28,[37,6],[[30,3,[\\\"settingsHelp\\\"]],[28,[37,8],[[30,2,[\\\"withoutPath\\\"]],\\\".type\\\"],null]],null],\\\"bool\\\"],null],[[[1,\\\"              \\\"],[8,[39,16],null,[[\\\"@model\\\"],[[28,[37,13],[[30,5]],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,11],[[28,[37,6],[[30,3,[\\\"settingsHelp\\\"]],[28,[37,8],[[30,2,[\\\"withoutPath\\\"]],\\\".type\\\"],null]],null],\\\"stringarray\\\"],null],[[[1,\\\"              \\\"],[8,[39,17],null,[[\\\"@model\\\",\\\"@noDestory\\\"],[[28,[37,13],[[30,5]],null],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[8,[39,12],null,[[\\\"@model\\\"],[[30,6,[\\\"contents\\\"]]]],null],[1,\\\"\\\\n              \\\"]],[6]]]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,11],[[28,[37,6],[[30,3,[\\\"settingsHelp\\\"]],[28,[37,8],[[30,2,[\\\"withoutPath\\\"]],\\\".type\\\"],null]],null],\\\"emailarray\\\"],null],[[[1,\\\"              \\\"],[8,[39,17],null,[[\\\"@model\\\",\\\"@itemName\\\",\\\"@noDestory\\\"],[[28,[37,13],[[30,5]],null],\\\"email address\\\",true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[8,[39,18],null,[[\\\"@model\\\"],[[30,7,[\\\"contents\\\"]]]],null],[1,\\\"\\\\n              \\\"]],[7]]]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,11],[[28,[37,6],[[30,3,[\\\"settingsHelp\\\"]],[28,[37,8],[[30,2,[\\\"withoutPath\\\"]],\\\".type\\\"],null]],null],\\\"fileupload\\\"],null],[[[1,\\\"              \\\"],[8,[39,17],null,[[\\\"@model\\\",\\\"@itemName\\\",\\\"@noDestory\\\"],[[28,[37,13],[[30,5]],null],\\\"file\\\",true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[8,[39,19],null,[[\\\"@uploadPrefix\\\",\\\"@model\\\",\\\"@maxKB\\\",\\\"@accept\\\"],[\\\"{CognitoIdentityPoolId}/\\\",[30,8],[28,[37,20],[1024,5],null],\\\".pdf,.docx,.doc\\\"]],null],[1,\\\"\\\\n              \\\"]],[8]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"              \\\"],[8,[39,12],null,[[\\\"@model\\\"],[[28,[37,13],[[30,5]],null]]],null],[1,\\\"\\\\n            \\\"]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[5]]],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@filteredSettings\\\",\\\"setting\\\",\\\"@firmSettings\\\",\\\"@selectedPracticeAreaSettings\\\",\\\"settingValue\\\",\\\"item\\\",\\\"item\\\",\\\"item\\\"],false,[\\\"table\\\",\\\"tbody\\\",\\\"each\\\",\\\"-track-array\\\",\\\"tr\\\",\\\"td\\\",\\\"get\\\",\\\"if\\\",\\\"sum\\\",\\\"help-toggle\\\",\\\"let\\\",\\\"eq\\\",\\\"settify-textline\\\",\\\"mut\\\",\\\"settify-number\\\",\\\"settify-textarea\\\",\\\"check-box\\\",\\\"free-list\\\",\\\"settify-email_input\\\",\\\"settify-file-upload\\\",\\\"mul\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/admin/filtered-settings-table.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/admin/firm-notes\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <LiquidIf @predicate={{@client.editingNotes}}>\n    <LeadBillingOptions @lead={{@client}} @conversionTypes={{@conversionTypes}} />\n  \n    <div class=\"editing-notes\">\n      <p>\n        {{#if @client.firmNotes}}\n          Your notes about this lead:\n        {{else}}\n          Add a note about this lead:\n        {{/if}}\n  \n        <SettifyTextarea @model={{@client.tempNotes}} @rows={{2}} />\n  \n        <small>\n          <button type=\"button\" {{on \"click\" (fn @saveClientNotes @client)}}>\n            <i class=\"fal fa-cloud-upload-alt\" />Save changes\n          </button>\n          <button type=\"button\" {{on \"click\" (fn @cancelEditClientNotes @client)}}>\n            <i class=\"fal fa-undo negative\" />Discard changes\n          </button>\n        </small>\n      </p>\n    </div>\n  </LiquidIf>\n  <LiquidIf @predicate={{and (not @client.editingNotes) @client.firmNotes}}>\n    <small>\n      <span class=\"firm-notes\">{{@client.firmNotes}}</span>\n    </small>\n  </LiquidIf>\n  */\n  {\n    \"id\": \"6AKIRxxz\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@predicate\\\"],[[30,1,[\\\"editingNotes\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[39,1],null,[[\\\"@lead\\\",\\\"@conversionTypes\\\"],[[30,1],[30,2]]],null],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"editing-notes\\\"],[12],[1,\\\"\\\\n    \\\"],[10,2],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"firmNotes\\\"]],[[[1,\\\"        Your notes about this lead:\\\\n\\\"]],[]],[[[1,\\\"        Add a note about this lead:\\\\n\\\"]],[]]],[1,\\\"\\\\n      \\\"],[8,[39,5],null,[[\\\"@model\\\",\\\"@rows\\\"],[[30,1,[\\\"tempNotes\\\"]],2]],null],[1,\\\"\\\\n\\\\n      \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n        \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,8],[\\\"click\\\",[28,[37,9],[[30,3],[30,1]],null]],null],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-cloud-upload-alt\\\"],[12],[13],[1,\\\"Save changes\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,8],[\\\"click\\\",[28,[37,9],[[30,4],[30,1]],null]],null],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-undo negative\\\"],[12],[13],[1,\\\"Discard changes\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"],[8,[39,0],null,[[\\\"@predicate\\\"],[[28,[37,11],[[28,[37,12],[[30,1,[\\\"editingNotes\\\"]]],null],[30,1,[\\\"firmNotes\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n    \\\"],[10,1],[14,0,\\\"firm-notes\\\"],[12],[1,[30,1,[\\\"firmNotes\\\"]]],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"@client\\\",\\\"@conversionTypes\\\",\\\"@saveClientNotes\\\",\\\"@cancelEditClientNotes\\\"],false,[\\\"liquid-if\\\",\\\"lead-billing-options\\\",\\\"div\\\",\\\"p\\\",\\\"if\\\",\\\"settify-textarea\\\",\\\"small\\\",\\\"button\\\",\\\"on\\\",\\\"fn\\\",\\\"i\\\",\\\"and\\\",\\\"not\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/admin/firm-notes.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/admin/helpwanted\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"keeptogether\">\n    <SummarySubheading @text=\"Help Wanted\" @image=\"https://s3-ap-southeast-2.amazonaws.com/assets.settify.com.au/icons/rescue.png\" />\n  </div>\n  \n  {{#if (eq this.model.client.helpWanted 'separation')}}\n    <p>\n      {{this.model.client.firstName}} needs legal assistance regarding a <b>separation</b>.\n    </p>\n  {{else if (eq this.model.client.helpWanted 'bfa')}}\n    <p>\n      {{#if (eq this.model.client.bfaHelpWanted 'proposal')}}\n        <b>{{sentence-case this.model.client.otherPersonName}} has proposed</b> a {{this.firm.settings.family.BFAWording}} and {{this.model.client.firstName}} <b>needs independent legal advice</b>.\n      {{else if (eq this.model.client.bfaHelpWanted 'verbalagreement')}}\n        {{this.model.client.firstName}} already have a verbal agreement and would like to have it <b>drafted into a {{this.firm.settings.family.BFAWording}}</b>.\n      {{else}}  {{!--  (eq model.client.bfaHelpWanted 'considering') --}}\n        {{this.model.client.firstName}} is <b>considering making a {{this.firm.settings.family.BFAWording}}</b> with {{this.model.client.otherPersonName}} and <b>wants to understand their options</b>.\n      {{/if}}\n    </p>\n    <p>\n      Specific outcomes sought include:\n      <ul>\n        {{#each-in this.model.client.bfaOutcomes as |key value|}}\n          {{#if value}}\n            <li>{{key}}</li>\n          {{/if}}\n        {{/each-in}}\n        {{#if this.model.client.bfaOutcomesOther}}\n          <li>Other: {{this.model.client.bfaOutcomesOther}}</li>\n        {{/if}}\n      </ul>\n    </p>\n  {{else if (eq this.model.client.helpWanted 'changeagreement')}}\n    <p>\n      {{this.model.client.firstName}} would like help <b>changing an old agreement or Order</b>.\n    </p>\n  {{else if (eq this.model.client.helpWanted 'newparentingissue')}}\n    <p>\n      {{this.model.client.firstName}} has already separated, but <b>a new parenting issue has arisen</b>\n      {{~#if this.model.client.newParentingIssueMoreInfo~}}\n        : {{this.model.client.newParentingIssueMoreInfo}}\n      {{~else~}}\n        .\n      {{/if}}\n    </p>\n  {{else if (eq this.model.client.helpWanted 'urgentapplication')}}\n    <p>\n      {{this.model.client.firstName}} needs to make an <b>urgent Court Application</b>.\n    </p>\n  {{else if (eq this.model.client.helpWanted 'childsupport')}}\n    <p>\n      {{this.model.client.firstName}} only needs help with a <b>child support issue</b>.\n    </p>\n  {{else if (eq this.model.client.helpWanted 'violenceorder')}}\n    <p>\n      {{#if (eq this.model.client.helpWantedViolenceOrder 'needorder')}}\n        {{this.model.client.firstName}} <b>needs {{this.stateViolenceOrder}}</b> to keep them safe.\n      {{else if (eq this.model.client.helpWantedViolenceOrder 'summons')}}\n        {{this.model.client.firstName}} has been <b>served with an Application and Summons</b> for {{this.stateViolenceOrder}}, or <b>anticipates that it may happen</b>.\n      {{/if}}\n    </p>\n  {{else if (eq this.model.client.helpWanted 'other')}}\n    <p>\n      {{this.model.client.firstName}} needs <b>other assistance</b>: {{this.model.client.helpWantedMoreInfo}}\n    </p>\n  {{else}}\n    <p>\n      {{this.model.client.firstName}} needs help with <b>{{this.model.client.helpWanted}}</b>\n    </p>\n  {{/if}}\n  \n  {{#if (and this.model.client.helpWantedMoreInfo (not-eq this.model.client.helpWanted 'other'))}}\n    <p>\n      More information: {{this.model.client.helpWantedMoreInfo}}\n    </p>\n  {{/if}}\n  \n  \n  <InfoStringPrinter @strings={{this.model.client.moreInfoStrings}} @page=\"a-help\">\n    <span class=\"settify-sensitive\">{{this.model.client.firstName}}</span>'s note about the sort of help they're looking for:\n  </InfoStringPrinter>\n  <InfoStringPrinter @strings={{this.model.client.moreInfoStrings}} @page=\"bfa-help\">\n    <span class=\"settify-sensitive\">{{this.model.client.firstName}}</span>'s note about the sort of help they're looking for in relation to {{this.firm.settings.family.BFAWording}}s:\n  </InfoStringPrinter>\n  <InfoStringPrinter @strings={{this.model.client.moreInfoStrings}} @page=\"bfa-outcomes\">\n    <span class=\"settify-sensitive\">{{this.model.client.firstName}}</span>'s note about desired outcomes:\n  </InfoStringPrinter>\n  \n  */\n  {\n    \"id\": \"yxMwbiC0\",\n    \"block\": \"[[[10,0],[14,0,\\\"keeptogether\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[39,1],null,[[\\\"@text\\\",\\\"@image\\\"],[\\\"Help Wanted\\\",\\\"https://s3-ap-southeast-2.amazonaws.com/assets.settify.com.au/icons/rescue.png\\\"]],null],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,3],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWanted\\\"]],\\\"separation\\\"],null],[[[1,\\\"  \\\"],[10,2],[12],[1,\\\"\\\\n    \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"firstName\\\"]]],[1,\\\" needs legal assistance regarding a \\\"],[10,\\\"b\\\"],[12],[1,\\\"separation\\\"],[13],[1,\\\".\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,3],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWanted\\\"]],\\\"bfa\\\"],null],[[[1,\\\"  \\\"],[10,2],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,3],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"bfaHelpWanted\\\"]],\\\"proposal\\\"],null],[[[1,\\\"      \\\"],[10,\\\"b\\\"],[12],[1,[28,[35,6],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"otherPersonName\\\"]]],null]],[1,\\\" has proposed\\\"],[13],[1,\\\" a \\\"],[1,[30,0,[\\\"firm\\\",\\\"settings\\\",\\\"family\\\",\\\"BFAWording\\\"]]],[1,\\\" and \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"firstName\\\"]]],[1,\\\" \\\"],[10,\\\"b\\\"],[12],[1,\\\"needs independent legal advice\\\"],[13],[1,\\\".\\\\n\\\"]],[]],[[[41,[28,[37,3],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"bfaHelpWanted\\\"]],\\\"verbalagreement\\\"],null],[[[1,\\\"      \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"firstName\\\"]]],[1,\\\" already have a verbal agreement and would like to have it \\\"],[10,\\\"b\\\"],[12],[1,\\\"drafted into a \\\"],[1,[30,0,[\\\"firm\\\",\\\"settings\\\",\\\"family\\\",\\\"BFAWording\\\"]]],[13],[1,\\\".\\\\n    \\\"]],[]],[[[1,\\\"  \\\"],[1,\\\"\\\\n      \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"firstName\\\"]]],[1,\\\" is \\\"],[10,\\\"b\\\"],[12],[1,\\\"considering making a \\\"],[1,[30,0,[\\\"firm\\\",\\\"settings\\\",\\\"family\\\",\\\"BFAWording\\\"]]],[13],[1,\\\" with \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"otherPersonName\\\"]]],[1,\\\" and \\\"],[10,\\\"b\\\"],[12],[1,\\\"wants to understand their options\\\"],[13],[1,\\\".\\\\n    \\\"]],[]]]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,2],[12],[1,\\\"\\\\n    Specific outcomes sought include:\\\\n    \\\"],[10,\\\"ul\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,9],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"bfaOutcomes\\\"]]],null],null,[[[41,[30,1],[[[1,\\\"          \\\"],[10,\\\"li\\\"],[12],[1,[30,2]],[13],[1,\\\"\\\\n\\\"]],[]],null]],[1,2]],null],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"bfaOutcomesOther\\\"]],[[[1,\\\"        \\\"],[10,\\\"li\\\"],[12],[1,\\\"Other: \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"bfaOutcomesOther\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,3],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWanted\\\"]],\\\"changeagreement\\\"],null],[[[1,\\\"  \\\"],[10,2],[12],[1,\\\"\\\\n    \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"firstName\\\"]]],[1,\\\" would like help \\\"],[10,\\\"b\\\"],[12],[1,\\\"changing an old agreement or Order\\\"],[13],[1,\\\".\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,3],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWanted\\\"]],\\\"newparentingissue\\\"],null],[[[1,\\\"  \\\"],[10,2],[12],[1,\\\"\\\\n    \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"firstName\\\"]]],[1,\\\" has already separated, but \\\"],[10,\\\"b\\\"],[12],[1,\\\"a new parenting issue has arisen\\\"],[13],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"newParentingIssueMoreInfo\\\"]],[[[1,\\\": \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"newParentingIssueMoreInfo\\\"]]]],[]],[[[1,\\\".\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,3],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWanted\\\"]],\\\"urgentapplication\\\"],null],[[[1,\\\"  \\\"],[10,2],[12],[1,\\\"\\\\n    \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"firstName\\\"]]],[1,\\\" needs to make an \\\"],[10,\\\"b\\\"],[12],[1,\\\"urgent Court Application\\\"],[13],[1,\\\".\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,3],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWanted\\\"]],\\\"childsupport\\\"],null],[[[1,\\\"  \\\"],[10,2],[12],[1,\\\"\\\\n    \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"firstName\\\"]]],[1,\\\" only needs help with a \\\"],[10,\\\"b\\\"],[12],[1,\\\"child support issue\\\"],[13],[1,\\\".\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,3],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWanted\\\"]],\\\"violenceorder\\\"],null],[[[1,\\\"  \\\"],[10,2],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,3],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWantedViolenceOrder\\\"]],\\\"needorder\\\"],null],[[[1,\\\"      \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"firstName\\\"]]],[1,\\\" \\\"],[10,\\\"b\\\"],[12],[1,\\\"needs \\\"],[1,[30,0,[\\\"stateViolenceOrder\\\"]]],[13],[1,\\\" to keep them safe.\\\\n\\\"]],[]],[[[41,[28,[37,3],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWantedViolenceOrder\\\"]],\\\"summons\\\"],null],[[[1,\\\"      \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"firstName\\\"]]],[1,\\\" has been \\\"],[10,\\\"b\\\"],[12],[1,\\\"served with an Application and Summons\\\"],[13],[1,\\\" for \\\"],[1,[30,0,[\\\"stateViolenceOrder\\\"]]],[1,\\\", or \\\"],[10,\\\"b\\\"],[12],[1,\\\"anticipates that it may happen\\\"],[13],[1,\\\".\\\\n    \\\"]],[]],null]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,3],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWanted\\\"]],\\\"other\\\"],null],[[[1,\\\"  \\\"],[10,2],[12],[1,\\\"\\\\n    \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"firstName\\\"]]],[1,\\\" needs \\\"],[10,\\\"b\\\"],[12],[1,\\\"other assistance\\\"],[13],[1,\\\": \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWantedMoreInfo\\\"]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"  \\\"],[10,2],[12],[1,\\\"\\\\n    \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"firstName\\\"]]],[1,\\\" needs help with \\\"],[10,\\\"b\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWanted\\\"]]],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]],[1,\\\"\\\\n\\\"],[41,[28,[37,11],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWantedMoreInfo\\\"]],[28,[37,12],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWanted\\\"]],\\\"other\\\"],null]],null],[[[1,\\\"  \\\"],[10,2],[12],[1,\\\"\\\\n    More information: \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"helpWantedMoreInfo\\\"]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\\n\\\"],[8,[39,13],null,[[\\\"@strings\\\",\\\"@page\\\"],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"moreInfoStrings\\\"]],\\\"a-help\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"firstName\\\"]]],[13],[1,\\\"'s note about the sort of help they're looking for:\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"],[8,[39,13],null,[[\\\"@strings\\\",\\\"@page\\\"],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"moreInfoStrings\\\"]],\\\"bfa-help\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"firstName\\\"]]],[13],[1,\\\"'s note about the sort of help they're looking for in relation to \\\"],[1,[30,0,[\\\"firm\\\",\\\"settings\\\",\\\"family\\\",\\\"BFAWording\\\"]]],[1,\\\"s:\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"],[8,[39,13],null,[[\\\"@strings\\\",\\\"@page\\\"],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"moreInfoStrings\\\"]],\\\"bfa-outcomes\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"firstName\\\"]]],[13],[1,\\\"'s note about desired outcomes:\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[\\\"value\\\",\\\"key\\\"],false,[\\\"div\\\",\\\"summary-subheading\\\",\\\"if\\\",\\\"eq\\\",\\\"p\\\",\\\"b\\\",\\\"sentence-case\\\",\\\"ul\\\",\\\"each\\\",\\\"-each-in\\\",\\\"li\\\",\\\"and\\\",\\\"not-eq\\\",\\\"info-string-printer\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/admin/helpwanted.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/admin/invite-badge\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (eq @client.referral \"invitation\")}}\n    {{#if @client.completedDetailedInduction}}\n      <span class=\"unseen-changes-bubble\">Invitation complete</span>\n    {{else if @client.commencedSimpleInduction}}\n      <span class=\"unseen-changes-bubble\">Invitation in progress</span>\n    {{else}}\n      <span class=\"unseen-changes-bubble\">Invitation sent</span>\n    {{/if}}\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"wB3xUdyQ\",\n    \"block\": \"[[[41,[28,[37,1],[[30,1,[\\\"referral\\\"]],\\\"invitation\\\"],null],[[[41,[30,1,[\\\"completedDetailedInduction\\\"]],[[[1,\\\"    \\\"],[10,1],[14,0,\\\"unseen-changes-bubble\\\"],[12],[1,\\\"Invitation complete\\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,1,[\\\"commencedSimpleInduction\\\"]],[[[1,\\\"    \\\"],[10,1],[14,0,\\\"unseen-changes-bubble\\\"],[12],[1,\\\"Invitation in progress\\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[10,1],[14,0,\\\"unseen-changes-bubble\\\"],[12],[1,\\\"Invitation sent\\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]],[]]]],[]],null]],[\\\"@client\\\"],false,[\\\"if\\\",\\\"eq\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/admin/invite-badge.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/admin/nil\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    &mdash;\n  \n  */\n  {\n    \"id\": \"B7KSxm3c\",\n    \"block\": \"[[[1,\\\"—\\\\n\\\"]],[],false,[]]\",\n    \"moduleName\": \"settify-mvp/templates/components/admin/nil.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/admin/page-summary\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#each @page.questions as |q|}}\n    {{#if (not (or (and q.hideFromFirm @adminMode) (and q.hideInClientSummary @clientSummaryMode)))}}\n      {{#if\n        (should-display\n          question=q\n          clientRecord=@model.client\n          context=(hash induction=@induction.id chapter=@chapter.id page=@page.id repeat=@induction.repeatToken)\n          touch=@model.client.touch\n          model=@pageModel\n        )\n      }}\n        <tr>\n          <td>\n            <SettifyInputSwitcher\n              @question={{q}}\n              @model={{@pageModel}}\n              @clientRecord={{@model.client}}\n              @context={{hash\n                induction=@induction.id\n                chapter=@chapter.id\n                page=@page.id\n                repeat=@induction.repeatToken\n                answersLocation=@page.answersLocation\n                answersLocationLoop=@page.answersLocationLoop\n              }}\n              @highlightRequiredFields={{@highlightRequiredFieldsCP}}\n              @displayOnly={{true}}\n              @adminMode={{@adminMode}}\n              @notSureButton={{if @adminMode false true}}\n            />\n          </td>\n        </tr>\n      {{/if}}\n    {{/if}}\n  {{/each}}\n  */\n  {\n    \"id\": \"XL7xjMGh\",\n    \"block\": \"[[[42,[28,[37,1],[[28,[37,1],[[30,1,[\\\"questions\\\"]]],null]],null],null,[[[41,[28,[37,3],[[28,[37,4],[[28,[37,5],[[30,2,[\\\"hideFromFirm\\\"]],[30,3]],null],[28,[37,5],[[30,2,[\\\"hideInClientSummary\\\"]],[30,4]],null]],null]],null],[[[41,[28,[37,6],null,[[\\\"question\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"touch\\\",\\\"model\\\"],[[30,2],[30,5,[\\\"client\\\"]],[28,[37,7],null,[[\\\"induction\\\",\\\"chapter\\\",\\\"page\\\",\\\"repeat\\\"],[[30,6,[\\\"id\\\"]],[30,7,[\\\"id\\\"]],[30,1,[\\\"id\\\"]],[30,6,[\\\"repeatToken\\\"]]]]],[30,5,[\\\"client\\\",\\\"touch\\\"]],[30,8]]]],[[[1,\\\"      \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,10],null,[[\\\"@question\\\",\\\"@model\\\",\\\"@clientRecord\\\",\\\"@context\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\",\\\"@notSureButton\\\"],[[30,2],[30,8],[30,5,[\\\"client\\\"]],[28,[37,7],null,[[\\\"induction\\\",\\\"chapter\\\",\\\"page\\\",\\\"repeat\\\",\\\"answersLocation\\\",\\\"answersLocationLoop\\\"],[[30,6,[\\\"id\\\"]],[30,7,[\\\"id\\\"]],[30,1,[\\\"id\\\"]],[30,6,[\\\"repeatToken\\\"]],[30,1,[\\\"answersLocation\\\"]],[30,1,[\\\"answersLocationLoop\\\"]]]]],[30,9],true,[30,3],[52,[30,3],false,true]]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null]],[2]],null]],[\\\"@page\\\",\\\"q\\\",\\\"@adminMode\\\",\\\"@clientSummaryMode\\\",\\\"@model\\\",\\\"@induction\\\",\\\"@chapter\\\",\\\"@pageModel\\\",\\\"@highlightRequiredFieldsCP\\\"],false,[\\\"each\\\",\\\"-track-array\\\",\\\"if\\\",\\\"not\\\",\\\"or\\\",\\\"and\\\",\\\"should-display\\\",\\\"hash\\\",\\\"tr\\\",\\\"td\\\",\\\"settify-input-switcher\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/admin/page-summary.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/admin/settings-save-buttons\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <LoadingDisplay @loading={{@savingChanges}} @success={{@savingChangesSuccess}} @error={{@savingChangesError}} @showError={{true}}>\n    Changes saved successfully\n  </LoadingDisplay>\n  \n  <div class=\"flex-top\">\n    <button type=\"button\" class=\"previous-button dangerous-button hvr-float-shadow hvr-grow\" {{on \"click\" @revertChangesAction}}>Revert changes</button>\n  \n    <button type=\"button\" class=\"next-button hvr-float-shadow hvr-grow\" {{on \"click\" @saveChangesAction}}>Save changes</button>\n  </div>\n  \n  */\n  {\n    \"id\": \"iyAupUGR\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@loading\\\",\\\"@success\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,1],[30,2],[30,3],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  Changes saved successfully\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"flex-top\\\"],[12],[1,\\\"\\\\n  \\\"],[11,\\\"button\\\"],[24,0,\\\"previous-button dangerous-button hvr-float-shadow hvr-grow\\\"],[24,4,\\\"button\\\"],[4,[38,3],[\\\"click\\\",[30,4]],null],[12],[1,\\\"Revert changes\\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[11,\\\"button\\\"],[24,0,\\\"next-button hvr-float-shadow hvr-grow\\\"],[24,4,\\\"button\\\"],[4,[38,3],[\\\"click\\\",[30,5]],null],[12],[1,\\\"Save changes\\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[\\\"@savingChanges\\\",\\\"@savingChangesSuccess\\\",\\\"@savingChangesError\\\",\\\"@revertChangesAction\\\",\\\"@saveChangesAction\\\"],false,[\\\"loading-display\\\",\\\"div\\\",\\\"button\\\",\\\"on\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/admin/settings-save-buttons.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/admin/summary-editor-buttons\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    \n  {{#if (and (not-eq @question.type \"paragraph\") (not-eq @question.type \"block\"))}}\n    <span class=\"editor-buttons\">\n      <button type=\"button\" class=\"clickable summary-buttons\" {{on \"click\" (fn @toggleAnswer @question @context)}}>\n        <i class=\"fal fa-repeat tight\" title=\"Switch {{sentence-case @question.type}} Answer\"></i>\n        {{!-- Switch answer --}}\n      </button>\n      <button type=\"button\" class=\"clickable summary-buttons\" {{on \"click\" (fn @toggleSummaryEditor @question)}}>\n        <i class=\"fal fa-pencil tight\" title=\"Edit Title\"/>\n        {{!-- Edit --}}\n      </button>\n    </span>\n  {{/if}}\n  */\n  {\n    \"id\": \"X6YKYIQa\",\n    \"block\": \"[[[1,\\\"\\\\n\\\"],[41,[28,[37,1],[[28,[37,2],[[30,1,[\\\"type\\\"]],\\\"paragraph\\\"],null],[28,[37,2],[[30,1,[\\\"type\\\"]],\\\"block\\\"],null]],null],[[[1,\\\"  \\\"],[10,1],[14,0,\\\"editor-buttons\\\"],[12],[1,\\\"\\\\n    \\\"],[11,\\\"button\\\"],[24,0,\\\"clickable summary-buttons\\\"],[24,4,\\\"button\\\"],[4,[38,5],[\\\"click\\\",[28,[37,6],[[30,2],[30,1],[30,3]],null]],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-repeat tight\\\"],[15,\\\"title\\\",[29,[\\\"Switch \\\",[28,[37,8],[[30,1,[\\\"type\\\"]]],null],\\\" Answer\\\"]]],[12],[13],[1,\\\"\\\\n\\\"],[1,\\\"    \\\"],[13],[1,\\\"\\\\n    \\\"],[11,\\\"button\\\"],[24,0,\\\"clickable summary-buttons\\\"],[24,4,\\\"button\\\"],[4,[38,5],[\\\"click\\\",[28,[37,6],[[30,4],[30,1]],null]],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-pencil tight\\\"],[14,\\\"title\\\",\\\"Edit Title\\\"],[12],[13],[1,\\\"\\\\n\\\"],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@question\\\",\\\"@toggleAnswer\\\",\\\"@context\\\",\\\"@toggleSummaryEditor\\\"],false,[\\\"if\\\",\\\"and\\\",\\\"not-eq\\\",\\\"span\\\",\\\"button\\\",\\\"on\\\",\\\"fn\\\",\\\"i\\\",\\\"sentence-case\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/admin/summary-editor-buttons.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/admin/summary-editor\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @showAnswerToggles}}\n    <LiquidSpacer>\n      {{#if @question.adminEditing}}\n        <p class=\"marginbottom-0.8\">\n          <div class=\"edit-form-icons\">\n            <SettifyTextline @model={{@question.shortTitle}} @label=\"Summary question title\" />\n            <a class=\"clickable\" {{on \"click\" (fn @removeTitle @question)}}>Have no title</a>\n          </div>\n          {{#if (eq @question.type \"yesno\")}}\n            <div class=\"edit-form-icons\">\n              <YesnomaybeIcon @icon={{or @question.onYes.icon \"positive\"}} />\n              <SettifyTextline @model={{@question.onYes.title}} @label=\"If yes is selected\" />\n            </div>\n            Icon to display for yes\n            <YesnomaybeIcon @displayAll={{true}} @question={{@question.onYes}} @key=\"onYes\" @selectIcon={{@toggleIconType}} />\n            <div class=\"edit-form-icons\">\n              <YesnomaybeIcon @icon={{or @question.onNo.icon \"negative\"}} />\n              <SettifyTextline @model={{@question.onNo.title}} @label=\"If no is selected\" />\n            </div>\n            Icon to display for no\n            <YesnomaybeIcon @displayAll={{true}} @question={{@question.onNo}} @key=\"onNo\" @selectIcon={{@toggleIconType}} />\n            <div class=\"edit-form-icons\">\n              <YesnomaybeIcon @icon={{or @question.onNotSure.icon \"notsure\"}} />\n              <SettifyTextline @model={{@question.onNotSure.title}} @label=\"If not sure is selected\" />\n            </div>\n            Icon to display for not sure\n            <YesnomaybeIcon @displayAll={{true}} @question={{@question.onNotSure}} @key=\"onNotSure\" @selectIcon={{@toggleIconType}} />\n          {{/if}}\n        </p>\n      {{/if}}\n    </LiquidSpacer>\n  {{/if}}\n  */\n  {\n    \"id\": \"oHpeWPf/\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[8,[39,1],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,2,[\\\"adminEditing\\\"]],[[[1,\\\"      \\\"],[10,2],[14,0,\\\"marginbottom-0.8\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"edit-form-icons\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,4],null,[[\\\"@model\\\",\\\"@label\\\"],[[30,2,[\\\"shortTitle\\\"]],\\\"Summary question title\\\"]],null],[1,\\\"\\\\n          \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,6],[\\\"click\\\",[28,[37,7],[[30,3],[30,2]],null]],null],[12],[1,\\\"Have no title\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,8],[[30,2,[\\\"type\\\"]],\\\"yesno\\\"],null],[[[1,\\\"          \\\"],[10,0],[14,0,\\\"edit-form-icons\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,9],null,[[\\\"@icon\\\"],[[28,[37,10],[[30,2,[\\\"onYes\\\",\\\"icon\\\"]],\\\"positive\\\"],null]]],null],[1,\\\"\\\\n            \\\"],[8,[39,4],null,[[\\\"@model\\\",\\\"@label\\\"],[[30,2,[\\\"onYes\\\",\\\"title\\\"]],\\\"If yes is selected\\\"]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          Icon to display for yes\\\\n          \\\"],[8,[39,9],null,[[\\\"@displayAll\\\",\\\"@question\\\",\\\"@key\\\",\\\"@selectIcon\\\"],[true,[30,2,[\\\"onYes\\\"]],\\\"onYes\\\",[30,4]]],null],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"edit-form-icons\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,9],null,[[\\\"@icon\\\"],[[28,[37,10],[[30,2,[\\\"onNo\\\",\\\"icon\\\"]],\\\"negative\\\"],null]]],null],[1,\\\"\\\\n            \\\"],[8,[39,4],null,[[\\\"@model\\\",\\\"@label\\\"],[[30,2,[\\\"onNo\\\",\\\"title\\\"]],\\\"If no is selected\\\"]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          Icon to display for no\\\\n          \\\"],[8,[39,9],null,[[\\\"@displayAll\\\",\\\"@question\\\",\\\"@key\\\",\\\"@selectIcon\\\"],[true,[30,2,[\\\"onNo\\\"]],\\\"onNo\\\",[30,4]]],null],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"edit-form-icons\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,9],null,[[\\\"@icon\\\"],[[28,[37,10],[[30,2,[\\\"onNotSure\\\",\\\"icon\\\"]],\\\"notsure\\\"],null]]],null],[1,\\\"\\\\n            \\\"],[8,[39,4],null,[[\\\"@model\\\",\\\"@label\\\"],[[30,2,[\\\"onNotSure\\\",\\\"title\\\"]],\\\"If not sure is selected\\\"]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          Icon to display for not sure\\\\n          \\\"],[8,[39,9],null,[[\\\"@displayAll\\\",\\\"@question\\\",\\\"@key\\\",\\\"@selectIcon\\\"],[true,[30,2,[\\\"onNotSure\\\"]],\\\"onNotSure\\\",[30,4]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@showAnswerToggles\\\",\\\"@question\\\",\\\"@removeTitle\\\",\\\"@toggleIconType\\\"],false,[\\\"if\\\",\\\"liquid-spacer\\\",\\\"p\\\",\\\"div\\\",\\\"settify-textline\\\",\\\"a\\\",\\\"on\\\",\\\"fn\\\",\\\"eq\\\",\\\"yesnomaybe-icon\\\",\\\"or\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/admin/summary-editor.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/animated-button\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div id=\"large-header\" class=\"animated-button\">\n    <canvas id={{this.canvasID}} class=\"animated-button-canvas\"></canvas>\n    <div class=\"animated-button-button\">\n      <div class=\"centered\">\n        {{yield}}\n      </div>\n    </div>\n  </div>\n  \n  */\n  {\n    \"id\": \"Csdyoe2p\",\n    \"block\": \"[[[10,0],[14,1,\\\"large-header\\\"],[14,0,\\\"animated-button\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"canvas\\\"],[15,1,[30,0,[\\\"canvasID\\\"]]],[14,0,\\\"animated-button-canvas\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"animated-button-button\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"centered\\\"],[12],[1,\\\"\\\\n      \\\"],[18,1,null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[\\\"&default\\\"],false,[\\\"div\\\",\\\"canvas\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/animated-button.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/animated-header\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div style=\"height: 88px;\">\n    <div\n      style=\"display: flex; gap: 1rem; align-items: center; justify-content: space-evenly; height: 88px; border-bottom: 1px solid #8b8b8b; position: fixed; width:100%; background: #ddd; opacity: 0.9; z-index: 1000;\"\n    >\n      <LinkTo @route=\"admin.index\"><img style=\"height: 50px\" alt=\"\" src=\"/assets/images/adminlogo.png\" /></LinkTo>\n      <h1>{{yield}}</h1>\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"Ku1MY3s5\",\n    \"block\": \"[[[10,0],[14,5,\\\"height: 88px;\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,5,\\\"display: flex; gap: 1rem; align-items: center; justify-content: space-evenly; height: 88px; border-bottom: 1px solid #8b8b8b; position: fixed; width:100%; background: #ddd; opacity: 0.9; z-index: 1000;\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,1],null,[[\\\"@route\\\"],[\\\"admin.index\\\"]],[[\\\"default\\\"],[[[[10,\\\"img\\\"],[14,5,\\\"height: 50px\\\"],[14,\\\"alt\\\",\\\"\\\"],[14,\\\"src\\\",\\\"/assets/images/adminlogo.png\\\"],[12],[13]],[]]]]],[1,\\\"\\\\n    \\\"],[10,\\\"h1\\\"],[12],[18,1,null],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"&default\\\"],false,[\\\"div\\\",\\\"link-to\\\",\\\"img\\\",\\\"h1\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/animated-header.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/banner-link-generator\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (gt this.practiceAreaOptions.length 1)}}\n    <p>\n      Select practice area\n      <SettifySelect @label=\"Practice area\" @model={{this.practiceArea}} @name=\"practice area\" @content={{this.practiceAreaOptions}} @labelPath=\"label\" @valuePath=\"value\" />\n    </p>\n  {{/if}}\n  \n  {{#if this.practiceArea}}\n    <p id=\"linktype\">\n      Do you want a link for your website or social media, or an invitation link you can copy into an email?\n      <RadioButtons @text=\"Link for website or social media\" @model={{this.type}} @value=\"website\" />\n      <RadioButtons @text=\"Invitation link to copy into an email\" @model={{this.type}} @value=\"invitation\" />\n    </p>\n  {{/if}}\n  \n  {{#if this.type}}\n    <p id=\"personalised\">\n      Should the link be personalised to a particular lawyer?\n      <RadioButtons @text=\"Yes\" @model={{this.isPersonalised}} @value={{true}} />\n      <RadioButtons @text=\"No\" @model={{this.isPersonalised}} @value={{false}} />\n    </p>\n  {{/if}}\n  \n  {{#if this.isPersonalised}}\n    <p>\n      <LawyerSelect @label=\"Which lawyer?\" @lawyerName={{this.lawyerName}} @prompt=\"No lawyer has been assigned yet\" @hideConfigLink={{true}} @noPAs={{true}} @firmID={{@firm.id}} />  \n    </p>\n  {{/if}}\n  \n  {{#if (and (not this.isPersonalised) (eq this.type \"website\"))}}\n    <p id=\"tracking\">\n      What word or phrase should we use to track visits from this link?\n      Letters and numbers only, thanks.\n      <SettifyTextline @model={{this.trackPhrase}} @placeholder=\"homepage, contactpage\" />\n    </p>\n  {{/if}}\n  \n  {{#if (eq this.type \"invitation\")}}\n    <p id=\"appointment\">\n      Does this client have an appointment booked?\n      <HelpToggle>\n        If you are planning to use this link as part of a standard precedent, then you should choose \n        \"yes\" if the precedent email is only sent to people who have already booked an appointment.\n        You should choose \"no\" if the email can be sent to people who have not yet booked an appointment.\n        Obviously, you can generate as many different links as you have precedent emails.\n      </HelpToggle>\n      <RadioButtons @text=\"Yes\" @model={{this.hasAppointment}} @value={{true}} />\n      <RadioButtons @text=\"No\" @model={{this.hasAppointment}} @value={{false}} />\n    </p>\n  \n    <p id=\"conflict\">\n      Has a conflict check has already been run for this client?\n      <HelpToggle>\n        If you are planning to use this link as part of a standard precedent, then you should choose \n        \"yes\" if you want instant access to information provided by people to whom you send the link.\n        You should choose \"no\" if you want their information to be embargoed until you have run a\n        conflict check and verified that you are able to act.\n        Obviously, you can generate as many different links as you have precedent emails.\n      </HelpToggle>\n      <RadioButtons @text=\"Yes\" @model={{this.conflictChecked}} @value={{true}} />\n      <RadioButtons @text=\"No\" @model={{this.conflictChecked}} @value={{false}} />\n    </p>\n  {{/if}}\n  \n  {{#if this.type}}\n    <div data-test-link-code-box class=\"preview-box\">\n      {{this.linkContent}}\n    </div>\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"ZDi0WYAB\",\n    \"block\": \"[[[41,[28,[37,1],[[30,0,[\\\"practiceAreaOptions\\\",\\\"length\\\"]],1],null],[[[1,\\\"  \\\"],[10,2],[12],[1,\\\"\\\\n    Select practice area\\\\n    \\\"],[8,[39,3],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"Practice area\\\",[30,0,[\\\"practiceArea\\\"]],\\\"practice area\\\",[30,0,[\\\"practiceAreaOptions\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"practiceArea\\\"]],[[[1,\\\"  \\\"],[10,2],[14,1,\\\"linktype\\\"],[12],[1,\\\"\\\\n    Do you want a link for your website or social media, or an invitation link you can copy into an email?\\\\n    \\\"],[8,[39,4],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\"],[\\\"Link for website or social media\\\",[30,0,[\\\"type\\\"]],\\\"website\\\"]],null],[1,\\\"\\\\n    \\\"],[8,[39,4],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\"],[\\\"Invitation link to copy into an email\\\",[30,0,[\\\"type\\\"]],\\\"invitation\\\"]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"type\\\"]],[[[1,\\\"  \\\"],[10,2],[14,1,\\\"personalised\\\"],[12],[1,\\\"\\\\n    Should the link be personalised to a particular lawyer?\\\\n    \\\"],[8,[39,4],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\"],[\\\"Yes\\\",[30,0,[\\\"isPersonalised\\\"]],true]],null],[1,\\\"\\\\n    \\\"],[8,[39,4],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\"],[\\\"No\\\",[30,0,[\\\"isPersonalised\\\"]],false]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"isPersonalised\\\"]],[[[1,\\\"  \\\"],[10,2],[12],[1,\\\"\\\\n    \\\"],[8,[39,5],null,[[\\\"@label\\\",\\\"@lawyerName\\\",\\\"@prompt\\\",\\\"@hideConfigLink\\\",\\\"@noPAs\\\",\\\"@firmID\\\"],[\\\"Which lawyer?\\\",[30,0,[\\\"lawyerName\\\"]],\\\"No lawyer has been assigned yet\\\",true,true,[30,1,[\\\"id\\\"]]]],null],[1,\\\"  \\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,6],[[28,[37,7],[[30,0,[\\\"isPersonalised\\\"]]],null],[28,[37,8],[[30,0,[\\\"type\\\"]],\\\"website\\\"],null]],null],[[[1,\\\"  \\\"],[10,2],[14,1,\\\"tracking\\\"],[12],[1,\\\"\\\\n    What word or phrase should we use to track visits from this link?\\\\n    Letters and numbers only, thanks.\\\\n    \\\"],[8,[39,9],null,[[\\\"@model\\\",\\\"@placeholder\\\"],[[30,0,[\\\"trackPhrase\\\"]],\\\"homepage, contactpage\\\"]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,8],[[30,0,[\\\"type\\\"]],\\\"invitation\\\"],null],[[[1,\\\"  \\\"],[10,2],[14,1,\\\"appointment\\\"],[12],[1,\\\"\\\\n    Does this client have an appointment booked?\\\\n    \\\"],[8,[39,10],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n      If you are planning to use this link as part of a standard precedent, then you should choose \\\\n      \\\\\\\"yes\\\\\\\" if the precedent email is only sent to people who have already booked an appointment.\\\\n      You should choose \\\\\\\"no\\\\\\\" if the email can be sent to people who have not yet booked an appointment.\\\\n      Obviously, you can generate as many different links as you have precedent emails.\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[8,[39,4],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\"],[\\\"Yes\\\",[30,0,[\\\"hasAppointment\\\"]],true]],null],[1,\\\"\\\\n    \\\"],[8,[39,4],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\"],[\\\"No\\\",[30,0,[\\\"hasAppointment\\\"]],false]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,2],[14,1,\\\"conflict\\\"],[12],[1,\\\"\\\\n    Has a conflict check has already been run for this client?\\\\n    \\\"],[8,[39,10],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n      If you are planning to use this link as part of a standard precedent, then you should choose \\\\n      \\\\\\\"yes\\\\\\\" if you want instant access to information provided by people to whom you send the link.\\\\n      You should choose \\\\\\\"no\\\\\\\" if you want their information to be embargoed until you have run a\\\\n      conflict check and verified that you are able to act.\\\\n      Obviously, you can generate as many different links as you have precedent emails.\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[8,[39,4],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\"],[\\\"Yes\\\",[30,0,[\\\"conflictChecked\\\"]],true]],null],[1,\\\"\\\\n    \\\"],[8,[39,4],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\"],[\\\"No\\\",[30,0,[\\\"conflictChecked\\\"]],false]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"type\\\"]],[[[1,\\\"  \\\"],[10,0],[14,\\\"data-test-link-code-box\\\",\\\"\\\"],[14,0,\\\"preview-box\\\"],[12],[1,\\\"\\\\n    \\\"],[1,[30,0,[\\\"linkContent\\\"]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@firm\\\"],false,[\\\"if\\\",\\\"gt\\\",\\\"p\\\",\\\"settify-select\\\",\\\"radio-buttons\\\",\\\"lawyer-select\\\",\\\"and\\\",\\\"not\\\",\\\"eq\\\",\\\"settify-textline\\\",\\\"help-toggle\\\",\\\"div\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/banner-link-generator.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/billing-status-select\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <LiquidIf @predicate={{this.selectLeadShortName}}>\n    <span title={{this.selectedLeadType.description}} class=\"cursordefault\">\n      {{#unless @hideIcon}}\n        <i class=\"fal fa-{{this.selectedLeadType.fontawesome}} tight\" />\n      {{/unless}}\n      {{this.selectedLeadType.longName}}\n    </span>\n    {{#unless this.isLocked}}\n      <a class=\"clickable billingstatus\" title=\"Edit the current status\" {{action \"removeLeadType\"}}>(edit)</a>\n    {{/unless}}\n  </LiquidIf>\n  <LiquidIf @predicate={{not this.selectLeadShortName}}>\n    <SettifySelect\n      @label=\"\"\n      @prompt=\"Select status\"\n      @model={{this.selectLeadShortName}}\n      @name=\"status\"\n      @content={{this.filteredConversionTypes}}\n      @labelPath=\"longName\"\n      @valuePath=\"shortName\"\n      @class=\"billing-option\"\n    />\n  </LiquidIf>\n  */\n  {\n    \"id\": \"rzUfW3eA\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@predicate\\\"],[[30,0,[\\\"selectLeadShortName\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,1],[15,\\\"title\\\",[30,0,[\\\"selectedLeadType\\\",\\\"description\\\"]]],[14,0,\\\"cursordefault\\\"],[12],[1,\\\"\\\\n\\\"],[41,[51,[30,1]],[[[1,\\\"      \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-\\\",[30,0,[\\\"selectedLeadType\\\",\\\"fontawesome\\\"]],\\\" tight\\\"]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[1,[30,0,[\\\"selectedLeadType\\\",\\\"longName\\\"]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"isLocked\\\"]]],[[[1,\\\"    \\\"],[11,3],[24,0,\\\"clickable billingstatus\\\"],[24,\\\"title\\\",\\\"Edit the current status\\\"],[4,[38,5],[[30,0],\\\"removeLeadType\\\"],null],[12],[1,\\\"(edit)\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]]]],[1,\\\"\\\\n\\\"],[8,[39,0],null,[[\\\"@predicate\\\"],[[28,[37,6],[[30,0,[\\\"selectLeadShortName\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[39,7],null,[[\\\"@label\\\",\\\"@prompt\\\",\\\"@model\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\",\\\"@class\\\"],[\\\"\\\",\\\"Select status\\\",[30,0,[\\\"selectLeadShortName\\\"]],\\\"status\\\",[30,0,[\\\"filteredConversionTypes\\\"]],\\\"longName\\\",\\\"shortName\\\",\\\"billing-option\\\"]],null],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"@hideIcon\\\"],false,[\\\"liquid-if\\\",\\\"span\\\",\\\"unless\\\",\\\"i\\\",\\\"a\\\",\\\"action\\\",\\\"not\\\",\\\"settify-select\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/billing-status-select.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/cents-to-dollars\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#unless this.noCurrencySign}}\n    {{#if (eq this.firm.currency 'GBP')~}}\n      £\n    {{~else~}}\n      $\n    {{~/if~}}\n  {{/unless}}\n  {{decimal this.amountInDollars 2}}\n  \n  */\n  {\n    \"id\": \"+elj4sMv\",\n    \"block\": \"[[[41,[51,[30,0,[\\\"noCurrencySign\\\"]]],[[[41,[28,[37,2],[[30,0,[\\\"firm\\\",\\\"currency\\\"]],\\\"GBP\\\"],null],[[[1,\\\"£\\\"]],[]],[[[1,\\\"$\\\"]],[]]]],[]],null],[1,[28,[35,3],[[30,0,[\\\"amountInDollars\\\"]],2],null]],[1,\\\"\\\\n\\\"]],[],false,[\\\"unless\\\",\\\"if\\\",\\\"eq\\\",\\\"decimal\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/cents-to-dollars.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/client-brief\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{yield}}\n  <SummaryPrinter @model={{this.model}} @adminMode={{this.adminMode}} @onFinishedRendering={{this.onFinishedRendering}} />\n  \n  */\n  {\n    \"id\": \"eeCkfwKM\",\n    \"block\": \"[[[18,1,null],[1,\\\"\\\\n\\\"],[8,[39,1],null,[[\\\"@model\\\",\\\"@adminMode\\\",\\\"@onFinishedRendering\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"onFinishedRendering\\\"]]]],null],[1,\\\"\\\\n\\\"]],[\\\"&default\\\"],false,[\\\"yield\\\",\\\"summary-printer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/client-brief.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/confidence-slider\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <p>\n    How confident are you?\n    {{#if this.displayOnly}}\n      <ConfidenceDisplay @confidence={{this.model}} />\n      <div class={{this.labelStyle}}>{{confidence-string this.model this.maxconfidence}}</div>    \n    {{else}}\n      <input type=\"range\" \n        class=\"form-control\" \n        style={{this.rangeFill}} \n        aria-valuetext={{confidence-string this.model this.maxconfidence}} \n        value={{this.model}} \n        step=\"33.33\" \n        oninput={{action (mut this.model) value=\"target.value\"}} \n        onchange={{action (mut this.model) value=\"target.value\"}} \n        {{!-- For IE11 --}}\n      >\n      <div class={{this.labelStyle}}>{{confidence-string this.model this.maxconfidence}}</div>\n    {{/if}}\n  </p>\n  \n  */\n  {\n    \"id\": \"5+9pJetq\",\n    \"block\": \"[[[10,2],[12],[1,\\\"\\\\n  How confident are you?\\\\n\\\"],[41,[30,0,[\\\"displayOnly\\\"]],[[[1,\\\"    \\\"],[8,[39,2],null,[[\\\"@confidence\\\"],[[30,0,[\\\"model\\\"]]]],null],[1,\\\"\\\\n    \\\"],[10,0],[15,0,[30,0,[\\\"labelStyle\\\"]]],[12],[1,[28,[35,4],[[30,0,[\\\"model\\\"]],[30,0,[\\\"maxconfidence\\\"]]],null]],[13],[1,\\\"    \\\\n\\\"]],[]],[[[1,\\\"    \\\"],[10,\\\"input\\\"],[14,0,\\\"form-control\\\"],[15,5,[30,0,[\\\"rangeFill\\\"]]],[15,\\\"aria-valuetext\\\",[28,[37,4],[[30,0,[\\\"model\\\"]],[30,0,[\\\"maxconfidence\\\"]]],null]],[15,2,[30,0,[\\\"model\\\"]]],[14,\\\"step\\\",\\\"33.33\\\"],[15,\\\"oninput\\\",[28,[37,6],[[30,0],[28,[37,7],[[30,0,[\\\"model\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[15,\\\"onchange\\\",[28,[37,6],[[30,0],[28,[37,7],[[30,0,[\\\"model\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[14,4,\\\"range\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[10,0],[15,0,[30,0,[\\\"labelStyle\\\"]]],[12],[1,[28,[35,4],[[30,0,[\\\"model\\\"]],[30,0,[\\\"maxconfidence\\\"]]],null]],[13],[1,\\\"\\\\n\\\"]],[]]],[13],[1,\\\"\\\\n\\\"]],[],false,[\\\"p\\\",\\\"if\\\",\\\"confidence-display\\\",\\\"div\\\",\\\"confidence-string\\\",\\\"input\\\",\\\"action\\\",\\\"mut\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/confidence-slider.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/custom-tabbed-title\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (non-empty-string this.label)}}\n    {{max-length this.label 15 unlimited=this.displayOnly}}\n  {{else}}\n    {{sentence-case this.itemTypeString}}\n  {{/if}}\n  \n  \n  */\n  {\n    \"id\": \"vn+z67g/\",\n    \"block\": \"[[[41,[28,[37,1],[[30,0,[\\\"label\\\"]]],null],[[[1,\\\"  \\\"],[1,[28,[35,2],[[30,0,[\\\"label\\\"]],15],[[\\\"unlimited\\\"],[[30,0,[\\\"displayOnly\\\"]]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"  \\\"],[1,[28,[35,3],[[30,0,[\\\"itemTypeString\\\"]]],null]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n\\\"]],[],false,[\\\"if\\\",\\\"non-empty-string\\\",\\\"max-length\\\",\\\"sentence-case\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/custom-tabbed-title.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/customisable-invitation-email\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @templatePayload.isLoaded}}\n    <TipTapEditor @content={{@templatePayload.value}} @dynamicBlocks={{@dynamicBlocks}} @editor={{@editor}} @setEditor={{@setEditor}} />\n  {{/if}}\n  */\n  {\n    \"id\": \"otizr//q\",\n    \"block\": \"[[[41,[30,1,[\\\"isLoaded\\\"]],[[[1,\\\"  \\\"],[8,[39,1],null,[[\\\"@content\\\",\\\"@dynamicBlocks\\\",\\\"@editor\\\",\\\"@setEditor\\\"],[[30,1,[\\\"value\\\"]],[30,2],[30,3],[30,4]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"@templatePayload\\\",\\\"@dynamicBlocks\\\",\\\"@editor\\\",\\\"@setEditor\\\"],false,[\\\"if\\\",\\\"tip-tap-editor\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/customisable-invitation-email.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/dashboard-chart\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.loading}}\n    <p style=\"text-align:center;\">\n      {{this.title}}\n    </p>\n    <LoadingSpinner />\n  {{/if}}\n  {{#if this.error}}\n    <h3>{{this.title}}</h3>\n    <p>\n      <b>Error:</b> {{this.error}}\n    </p>\n  {{/if}}\n  <div id={{this.chartdiv}} class=\"dashboard-chart\"></div>\n  <div class=\"dashboard-legend\">\n    {{#each this.labels as |l|}}\n      <span class=\"chart-label\" style={{l.style}}>\n        {{l.text}}\n      </span>\n    {{/each}}\n  </div>\n  \n  */\n  {\n    \"id\": \"WZ05xN5d\",\n    \"block\": \"[[[41,[30,0,[\\\"loading\\\"]],[[[1,\\\"  \\\"],[10,2],[14,5,\\\"text-align:center;\\\"],[12],[1,\\\"\\\\n    \\\"],[1,[30,0,[\\\"title\\\"]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,2],null,null,null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"error\\\"]],[[[1,\\\"  \\\"],[10,\\\"h3\\\"],[12],[1,[30,0,[\\\"title\\\"]]],[13],[1,\\\"\\\\n  \\\"],[10,2],[12],[1,\\\"\\\\n    \\\"],[10,\\\"b\\\"],[12],[1,\\\"Error:\\\"],[13],[1,\\\" \\\"],[1,[30,0,[\\\"error\\\"]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[10,0],[15,1,[30,0,[\\\"chartdiv\\\"]]],[14,0,\\\"dashboard-chart\\\"],[12],[13],[1,\\\"\\\\n\\\"],[10,0],[14,0,\\\"dashboard-legend\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,7],[[28,[37,7],[[30,0,[\\\"labels\\\"]]],null]],null],null,[[[1,\\\"    \\\"],[10,1],[14,0,\\\"chart-label\\\"],[15,5,[30,1,[\\\"style\\\"]]],[12],[1,\\\"\\\\n      \\\"],[1,[30,1,[\\\"text\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[13],[1,\\\"\\\\n\\\"]],[\\\"l\\\"],false,[\\\"if\\\",\\\"p\\\",\\\"loading-spinner\\\",\\\"h3\\\",\\\"b\\\",\\\"div\\\",\\\"each\\\",\\\"-track-array\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/dashboard-chart.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/date-picker\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <Input class=\"datepicker__input form-control\" @type=\"date\" @value={{this.selectedDate}} min={{this.minDate}} required={{this.required}} name=\"datepicker\" />\n  <label class=\"datepicker__label\" for=\"datepicker\" onClick={{action \"openDatePicker\"}} data-placeholder={{this.showPlaceholder}}>\n    <span class=\"datepicker__placeholder\">\n      {{#if this.showPlaceholder}}\n        {{this.placeholder}}\n      {{else}}\n        {{pretty-date this.date customFormat=this.format}}\n      {{/if}}\n    </span>\n  </label>\n  \n  */\n  {\n    \"id\": \"6EO8lbJ+\",\n    \"block\": \"[[[8,[39,0],[[24,0,\\\"datepicker__input form-control\\\"],[16,\\\"min\\\",[30,0,[\\\"minDate\\\"]]],[16,\\\"required\\\",[30,0,[\\\"required\\\"]]],[24,3,\\\"datepicker\\\"]],[[\\\"@type\\\",\\\"@value\\\"],[\\\"date\\\",[30,0,[\\\"selectedDate\\\"]]]],null],[1,\\\"\\\\n\\\"],[10,\\\"label\\\"],[14,0,\\\"datepicker__label\\\"],[14,\\\"for\\\",\\\"datepicker\\\"],[15,\\\"onClick\\\",[28,[37,2],[[30,0],\\\"openDatePicker\\\"],null]],[15,\\\"data-placeholder\\\",[30,0,[\\\"showPlaceholder\\\"]]],[12],[1,\\\"\\\\n  \\\"],[10,1],[14,0,\\\"datepicker__placeholder\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showPlaceholder\\\"]],[[[1,\\\"      \\\"],[1,[30,0,[\\\"placeholder\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[1,[28,[35,5],[[30,0,[\\\"date\\\"]]],[[\\\"customFormat\\\"],[[30,0,[\\\"format\\\"]]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[],false,[\\\"input\\\",\\\"label\\\",\\\"action\\\",\\\"span\\\",\\\"if\\\",\\\"pretty-date\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/date-picker.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/documents-other\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.otherDocumentsUploaded}}\n    <div class=\"other-documents\">\n      {{#if this.smallTitle}}\n        <h2>Other Documents</h2>\n      {{else}}\n        <LineIcon @src=\"https://cdn.settify.com.au/icons/paper-stack.png\" />\n        <h1>Other Documents</h1>\n      {{/if}}\n  \n      <DocumentsRequiredFeedback\n        @documents={{this.otherDocumentsPlaceholderArray}}\n        @showDocument={{true}}\n        @displayOnly={{true}}\n        @otherDocumentsOnly={{true}}\n        @hideDocumentNames={{true}}\n        @context={{hash chapter=\"otherDocuments\" induction=\"otherDocuments\" page=\"otherDocuments\" repeat=1}}\n        @questionID=\"otherDocuments\"\n        @clientID={{this.client.clientID}}\n        @client={{this.client}}\n      />\n    </div>\n  {{/if}}\n  */\n  {\n    \"id\": \"UuSm5oVC\",\n    \"block\": \"[[[41,[30,0,[\\\"otherDocumentsUploaded\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"other-documents\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"smallTitle\\\"]],[[[1,\\\"      \\\"],[10,\\\"h2\\\"],[12],[1,\\\"Other Documents\\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[39,3],null,[[\\\"@src\\\"],[\\\"https://cdn.settify.com.au/icons/paper-stack.png\\\"]],null],[1,\\\"\\\\n      \\\"],[10,\\\"h1\\\"],[12],[1,\\\"Other Documents\\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n    \\\"],[8,[39,5],null,[[\\\"@documents\\\",\\\"@showDocument\\\",\\\"@displayOnly\\\",\\\"@otherDocumentsOnly\\\",\\\"@hideDocumentNames\\\",\\\"@context\\\",\\\"@questionID\\\",\\\"@clientID\\\",\\\"@client\\\"],[[30,0,[\\\"otherDocumentsPlaceholderArray\\\"]],true,true,true,true,[28,[37,6],null,[[\\\"chapter\\\",\\\"induction\\\",\\\"page\\\",\\\"repeat\\\"],[\\\"otherDocuments\\\",\\\"otherDocuments\\\",\\\"otherDocuments\\\",1]]],\\\"otherDocuments\\\",[30,0,[\\\"client\\\",\\\"clientID\\\"]],[30,0,[\\\"client\\\"]]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[],false,[\\\"if\\\",\\\"div\\\",\\\"h2\\\",\\\"line-icon\\\",\\\"h1\\\",\\\"documents-required-feedback\\\",\\\"hash\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/documents-other.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/documents-required-feedback\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.blueprintMode}}\n    <span class=\"documents-required-feedback {{if (eq this.questionType 'docupload') 'no-margin' ''}}\">\n      {{#if this.documentsFiltered.length}}\n        <br />\n        <i class=\"fal fa-file-plus tight\" />\n        <span class=\"conditional\">\n          {{#if (not-eq this.questionType \"docupload\")}}\n            If\n            {{or this.selectedWording \"selected\"}},\n          {{/if}}\n          ask for:\n        </span>\n        {{#each this.documentsFiltered as |doc index|~}}\n          {{~if index \",\"}}\n          {{sentence-case (parse-text doc.title touch=this.touch clientRecord=(or this.clientRecord this.client.clientID) context=this.context model=this.model)}}\n        {{/each}}\n      {{/if}}\n    </span>\n  {{else}}\n    {{#if (or this.displayOnly this.notSureButton)}}\n      {{#if (and (or this.displayList this.displayInline this.otherDocumentsOnly) this.documentsFiltered.length this.showDocument)}}\n        <div class=\"documents-required-feedback {{if (eq this.questionType 'docupload') 'no-margin' ''}} {{if this.displayInline 'docx-exclude' ''}}\">\n          {{#unless this.hideDocumentNames}}\n            {{#each this.documentsFiltered as |doc|}}\n              {{sentence-case (parse-text this.labelToDisplay touch=this.touch clientRecord=(or this.clientRecord this.client.clientID) context=this.context model=this.model)}}\n              {{#if this.displayInline}}\n                {{#unless this.uploadsFiltered.length}}\n                  <i class=\"fal fa-file-exclamation\"></i>\n                {{/unless}}\n                {{sentence-case (parse-text doc.title touch=this.touch clientRecord=(or this.clientRecord this.client.clientID) context=this.context model=this.model)}}\n                is required\n                <br />\n              {{else if this.displayList}}\n                <li class=\"documents-required-list-item\">\n                  {{sentence-case (parse-text doc.title touch=this.touch clientRecord=(or this.clientRecord this.client.clientID) context=this.context model=this.model)}}\n                  {{!--\n                  <br/>\n                  <small>\n                    <i>\n                      {{#if adminMode}}\n                        From the questions about {{parse-text context.pageObject.title touch=touch clientRecord=(or clientRecord client.clientID) context=context model=model}}\n                      {{else}}\n                        from your answers about \n                        {{#if (and model (get model (or 'firstName' 'name')))}}\n                          {{get model (or 'firstName' 'name')}} on\n                        {{/if}}\n                        {{#link-to 'detailedinduction' context.induction context.chapter context.page (query-params repeat=context.repeat loop=context.loop)}}\n                          {{parse-text context.pageObject.title touch=touch clientRecord=(or clientRecord client.clientID) context=context model=model}}\n                          {{#if context.breadcrumb}}\n                            (<span class=\"settify-sensitive\">{{context.breadcrumb}}</span>)\n                          {{/if}} \n                        {{/link-to}}\n                      {{/if}}\n                      \n                    </i>\n                  </small>\n                  --}}\n                </li>\n              {{/if}}\n            {{/each}}\n            {{#if (and this.displayList (not this.uploadsFiltered))}}\n              <b class=\"negative\"><i class=\"fal fa-file-exclamation tight\" /> Nothing uploaded yet.</b>\n            {{/if}}\n          {{/unless}}\n          <DocumentsRequiredUpload\n            @client={{@client}}\n            @displayOnly={{@displayOnly}}\n            @adminMode={{@adminMode}}\n            @displayList={{@displayList}}\n            @labelToDisplay={{@labelToDisplay}}\n            @notSureButton={{@notSureButton}}\n            @session={{this.session}}\n            @clientRecord={{this.clientRecord}}\n            @uploadsFiltered={{this.uploadsFiltered}}\n            @unknownDocCheckboxLocation={{this.unknownDocCheckboxLocation}}\n            @sendComplete={{this.sendComplete}}\n            @uploadingDocument={{this.uploadingDocument}}\n            @uniqueID={{this.uniqueID}}\n            @filesToAccept={{this.filesToAccept}}\n            @showFileTypeWarning={{this.showFileTypeWarning}}\n            @whitelist={{this.whitelist}}\n            @showFileSizeWarning={{this.showFileSizeWarning}}\n            @fileDragging={{this.fileDragging}}\n            @uploadDocument={{action \"uploadDocument\"}}\n            @startDraggingDocument={{action \"startDraggingDocument\"}}\n            @stopDraggingDocument={{action \"stopDraggingDocument\"}}\n            @ondragover={{action \"dragOver\"}}\n            @dropDocument={{action \"dropDocument\"}}\n            @showExpireMessage={{action \"showExpireMessage\"}}\n            @removeDocument={{action \"removeDocument\"}}\n            @downloadDocument={{action \"downloadDocument\"}}\n          />\n        </div>\n      {{/if}}\n    {{else}}\n      {{#if (and this.documentsFiltered.length this.showDocument)}}\n        <LiquidIf @predicate={{and this.documentsFiltered.length this.showDocument}}>\n          <div class=\"documents-required-feedback {{if (eq this.questionType 'docupload') 'no-margin' ''}}\">\n            {{#if this.labelToDisplay}}\n              <p class=\"documents-required-label\">\n                {{sentence-case (parse-text this.labelToDisplay touch=this.touch clientRecord=(or this.clientRecord this.client.clientID) context=this.context model=this.model)}}\n              </p>\n            {{else if this.uploadsFiltered.length}}\n              We'll need you to provide\n            {{else}}\n              We've added\n            {{/if}}\n            {{#unless this.labelToDisplay}}\n              {{#each this.documentsFiltered as |doc index|}}\n                {{#if (eq index 0)}}\n                  {{possible-the doc.title}}\n                {{else if (lt index (sum this.documents.length -1))}}\n                  {{possible-the doc.title}}\n                {{else}}\n                  and\n                  {{possible-the doc.title}}\n                {{/if~}}\n                {{parse-text doc.title touch=this.touch clientRecord=(or this.clientRecord this.client.clientID) context=this.context model=this.model}}{{#if\n                  (lt index (sum this.documents.length -1))\n                }},{{/if~}}\n              {{/each~}}\n              {{#if this.uploadsFiltered.length~}}\n                . You have uploaded:\n              {{else}}\n                to the list of documents we'll ask you to provide once you've completed the questionnaire.\n              {{/if}}\n            {{/unless}}\n  \n            <DocumentsRequiredUpload\n              @client={{@client}}\n              @displayOnly={{@displayOnly}}\n              @adminMode={{@adminMode}}\n              @displayList={{@displayList}}\n              @labelToDisplay={{@labelToDisplay}}\n              @notSureButton={{@notSureButton}}\n              @session={{this.session}}\n              @clientRecord={{this.clientRecord}}\n              @uploadsFiltered={{this.uploadsFiltered}}\n              @unknownDocCheckboxLocation={{this.unknownDocCheckboxLocation}}\n              @sendComplete={{this.sendComplete}}\n              @uploadingDocument={{this.uploadingDocument}}\n              @uniqueID={{this.uniqueID}}\n              @filesToAccept={{this.filesToAccept}}\n              @showFileTypeWarning={{this.showFileTypeWarning}}\n              @whitelist={{this.whitelist}}\n              @showFileSizeWarning={{this.showFileSizeWarning}}\n              @fileDragging={{this.fileDragging}}\n              @uploadDocument={{action \"uploadDocument\"}}\n              @startDraggingDocument={{action \"startDraggingDocument\"}}\n              @stopDraggingDocument={{action \"stopDraggingDocument\"}}\n              @ondragover={{action \"dragOver\"}}\n              @dropDocument={{action \"dropDocument\"}}\n              @showExpireMessage={{action \"showExpireMessage\"}}\n              @removeDocument={{action \"removeDocument\"}}\n              @downloadDocument={{action \"downloadDocument\"}}\n            />\n          </div>\n        </LiquidIf>\n      {{/if}}\n    {{/if}}\n  {{/if}}\n  */\n  {\n    \"id\": \"rm+k/+a+\",\n    \"block\": \"[[[41,[30,0,[\\\"blueprintMode\\\"]],[[[1,\\\"  \\\"],[10,1],[15,0,[29,[\\\"documents-required-feedback \\\",[52,[28,[37,2],[[30,0,[\\\"questionType\\\"]],\\\"docupload\\\"],null],\\\"no-margin\\\",\\\"\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"documentsFiltered\\\",\\\"length\\\"]],[[[1,\\\"      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-file-plus tight\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"conditional\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[30,0,[\\\"questionType\\\"]],\\\"docupload\\\"],null],[[[1,\\\"          If\\\\n          \\\"],[1,[28,[35,6],[[30,0,[\\\"selectedWording\\\"]],\\\"selected\\\"],null]],[1,\\\",\\\\n\\\"]],[]],null],[1,\\\"        ask for:\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,8],[[28,[37,8],[[30,0,[\\\"documentsFiltered\\\"]]],null]],null],null,[[[1,[52,[30,2],\\\",\\\"]],[1,\\\"\\\\n        \\\"],[1,[28,[35,9],[[28,[37,10],[[30,1,[\\\"title\\\"]]],[[\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"model\\\"],[[30,0,[\\\"touch\\\"]],[28,[37,6],[[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"client\\\",\\\"clientID\\\"]]],null],[30,0,[\\\"context\\\"]],[30,0,[\\\"model\\\"]]]]]],null]],[1,\\\"\\\\n\\\"]],[1,2]],null]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,6],[[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"notSureButton\\\"]]],null],[[[41,[28,[37,11],[[28,[37,6],[[30,0,[\\\"displayList\\\"]],[30,0,[\\\"displayInline\\\"]],[30,0,[\\\"otherDocumentsOnly\\\"]]],null],[30,0,[\\\"documentsFiltered\\\",\\\"length\\\"]],[30,0,[\\\"showDocument\\\"]]],null],[[[1,\\\"      \\\"],[10,0],[15,0,[29,[\\\"documents-required-feedback \\\",[52,[28,[37,2],[[30,0,[\\\"questionType\\\"]],\\\"docupload\\\"],null],\\\"no-margin\\\",\\\"\\\"],\\\" \\\",[52,[30,0,[\\\"displayInline\\\"]],\\\"docx-exclude\\\",\\\"\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"hideDocumentNames\\\"]]],[[[42,[28,[37,8],[[28,[37,8],[[30,0,[\\\"documentsFiltered\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[1,[28,[35,9],[[28,[37,10],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"model\\\"],[[30,0,[\\\"touch\\\"]],[28,[37,6],[[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"client\\\",\\\"clientID\\\"]]],null],[30,0,[\\\"context\\\"]],[30,0,[\\\"model\\\"]]]]]],null]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"displayInline\\\"]],[[[41,[51,[30,0,[\\\"uploadsFiltered\\\",\\\"length\\\"]]],[[[1,\\\"                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-file-exclamation\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[1,[28,[35,9],[[28,[37,10],[[30,3,[\\\"title\\\"]]],[[\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"model\\\"],[[30,0,[\\\"touch\\\"]],[28,[37,6],[[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"client\\\",\\\"clientID\\\"]]],null],[30,0,[\\\"context\\\"]],[30,0,[\\\"model\\\"]]]]]],null]],[1,\\\"\\\\n              is required\\\\n              \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"displayList\\\"]],[[[1,\\\"              \\\"],[10,\\\"li\\\"],[14,0,\\\"documents-required-list-item\\\"],[12],[1,\\\"\\\\n                \\\"],[1,[28,[35,9],[[28,[37,10],[[30,3,[\\\"title\\\"]]],[[\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"model\\\"],[[30,0,[\\\"touch\\\"]],[28,[37,6],[[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"client\\\",\\\"clientID\\\"]]],null],[30,0,[\\\"context\\\"]],[30,0,[\\\"model\\\"]]]]]],null]],[1,\\\"\\\\n\\\"],[1,\\\"              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]],null]],[]]]],[3]],null],[41,[28,[37,11],[[30,0,[\\\"displayList\\\"]],[28,[37,15],[[30,0,[\\\"uploadsFiltered\\\"]]],null]],null],[[[1,\\\"            \\\"],[10,\\\"b\\\"],[14,0,\\\"negative\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-file-exclamation tight\\\"],[12],[13],[1,\\\" Nothing uploaded yet.\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"        \\\"],[8,[39,17],null,[[\\\"@client\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\",\\\"@displayList\\\",\\\"@labelToDisplay\\\",\\\"@notSureButton\\\",\\\"@session\\\",\\\"@clientRecord\\\",\\\"@uploadsFiltered\\\",\\\"@unknownDocCheckboxLocation\\\",\\\"@sendComplete\\\",\\\"@uploadingDocument\\\",\\\"@uniqueID\\\",\\\"@filesToAccept\\\",\\\"@showFileTypeWarning\\\",\\\"@whitelist\\\",\\\"@showFileSizeWarning\\\",\\\"@fileDragging\\\",\\\"@uploadDocument\\\",\\\"@startDraggingDocument\\\",\\\"@stopDraggingDocument\\\",\\\"@ondragover\\\",\\\"@dropDocument\\\",\\\"@showExpireMessage\\\",\\\"@removeDocument\\\",\\\"@downloadDocument\\\"],[[30,4],[30,5],[30,6],[30,7],[30,8],[30,9],[30,0,[\\\"session\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"uploadsFiltered\\\"]],[30,0,[\\\"unknownDocCheckboxLocation\\\"]],[30,0,[\\\"sendComplete\\\"]],[30,0,[\\\"uploadingDocument\\\"]],[30,0,[\\\"uniqueID\\\"]],[30,0,[\\\"filesToAccept\\\"]],[30,0,[\\\"showFileTypeWarning\\\"]],[30,0,[\\\"whitelist\\\"]],[30,0,[\\\"showFileSizeWarning\\\"]],[30,0,[\\\"fileDragging\\\"]],[28,[37,18],[[30,0],\\\"uploadDocument\\\"],null],[28,[37,18],[[30,0],\\\"startDraggingDocument\\\"],null],[28,[37,18],[[30,0],\\\"stopDraggingDocument\\\"],null],[28,[37,18],[[30,0],\\\"dragOver\\\"],null],[28,[37,18],[[30,0],\\\"dropDocument\\\"],null],[28,[37,18],[[30,0],\\\"showExpireMessage\\\"],null],[28,[37,18],[[30,0],\\\"removeDocument\\\"],null],[28,[37,18],[[30,0],\\\"downloadDocument\\\"],null]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],[[[41,[28,[37,11],[[30,0,[\\\"documentsFiltered\\\",\\\"length\\\"]],[30,0,[\\\"showDocument\\\"]]],null],[[[1,\\\"      \\\"],[8,[39,19],null,[[\\\"@predicate\\\"],[[28,[37,11],[[30,0,[\\\"documentsFiltered\\\",\\\"length\\\"]],[30,0,[\\\"showDocument\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,0],[15,0,[29,[\\\"documents-required-feedback \\\",[52,[28,[37,2],[[30,0,[\\\"questionType\\\"]],\\\"docupload\\\"],null],\\\"no-margin\\\",\\\"\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"labelToDisplay\\\"]],[[[1,\\\"            \\\"],[10,2],[14,0,\\\"documents-required-label\\\"],[12],[1,\\\"\\\\n              \\\"],[1,[28,[35,9],[[28,[37,10],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"model\\\"],[[30,0,[\\\"touch\\\"]],[28,[37,6],[[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"client\\\",\\\"clientID\\\"]]],null],[30,0,[\\\"context\\\"]],[30,0,[\\\"model\\\"]]]]]],null]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"uploadsFiltered\\\",\\\"length\\\"]],[[[1,\\\"            We'll need you to provide\\\\n\\\"]],[]],[[[1,\\\"            We've added\\\\n          \\\"]],[]]]],[]]],[41,[51,[30,0,[\\\"labelToDisplay\\\"]]],[[[42,[28,[37,8],[[28,[37,8],[[30,0,[\\\"documentsFiltered\\\"]]],null]],null],null,[[[41,[28,[37,2],[[30,11],0],null],[[[1,\\\"                \\\"],[1,[28,[35,21],[[30,10,[\\\"title\\\"]]],null]],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,22],[[30,11],[28,[37,23],[[30,0,[\\\"documents\\\",\\\"length\\\"]],-1],null]],null],[[[1,\\\"                \\\"],[1,[28,[35,21],[[30,10,[\\\"title\\\"]]],null]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                and\\\\n                \\\"],[1,[28,[35,21],[[30,10,[\\\"title\\\"]]],null]],[1,\\\"\\\\n              \\\"]],[]]]],[]]],[1,[28,[35,10],[[30,10,[\\\"title\\\"]]],[[\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"model\\\"],[[30,0,[\\\"touch\\\"]],[28,[37,6],[[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"client\\\",\\\"clientID\\\"]]],null],[30,0,[\\\"context\\\"]],[30,0,[\\\"model\\\"]]]]]],[41,[28,[37,22],[[30,11],[28,[37,23],[[30,0,[\\\"documents\\\",\\\"length\\\"]],-1],null]],null],[[[1,\\\",\\\"]],[]],null]],[10,11]],null],[41,[30,0,[\\\"uploadsFiltered\\\",\\\"length\\\"]],[[[1,\\\". You have uploaded:\\\\n\\\"]],[]],[[[1,\\\"              to the list of documents we'll ask you to provide once you've completed the questionnaire.\\\\n\\\"]],[]]]],[]],null],[1,\\\"\\\\n          \\\"],[8,[39,17],null,[[\\\"@client\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\",\\\"@displayList\\\",\\\"@labelToDisplay\\\",\\\"@notSureButton\\\",\\\"@session\\\",\\\"@clientRecord\\\",\\\"@uploadsFiltered\\\",\\\"@unknownDocCheckboxLocation\\\",\\\"@sendComplete\\\",\\\"@uploadingDocument\\\",\\\"@uniqueID\\\",\\\"@filesToAccept\\\",\\\"@showFileTypeWarning\\\",\\\"@whitelist\\\",\\\"@showFileSizeWarning\\\",\\\"@fileDragging\\\",\\\"@uploadDocument\\\",\\\"@startDraggingDocument\\\",\\\"@stopDraggingDocument\\\",\\\"@ondragover\\\",\\\"@dropDocument\\\",\\\"@showExpireMessage\\\",\\\"@removeDocument\\\",\\\"@downloadDocument\\\"],[[30,4],[30,5],[30,6],[30,7],[30,8],[30,9],[30,0,[\\\"session\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"uploadsFiltered\\\"]],[30,0,[\\\"unknownDocCheckboxLocation\\\"]],[30,0,[\\\"sendComplete\\\"]],[30,0,[\\\"uploadingDocument\\\"]],[30,0,[\\\"uniqueID\\\"]],[30,0,[\\\"filesToAccept\\\"]],[30,0,[\\\"showFileTypeWarning\\\"]],[30,0,[\\\"whitelist\\\"]],[30,0,[\\\"showFileSizeWarning\\\"]],[30,0,[\\\"fileDragging\\\"]],[28,[37,18],[[30,0],\\\"uploadDocument\\\"],null],[28,[37,18],[[30,0],\\\"startDraggingDocument\\\"],null],[28,[37,18],[[30,0],\\\"stopDraggingDocument\\\"],null],[28,[37,18],[[30,0],\\\"dragOver\\\"],null],[28,[37,18],[[30,0],\\\"dropDocument\\\"],null],[28,[37,18],[[30,0],\\\"showExpireMessage\\\"],null],[28,[37,18],[[30,0],\\\"removeDocument\\\"],null],[28,[37,18],[[30,0],\\\"downloadDocument\\\"],null]]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[]]]],[]]]],[\\\"doc\\\",\\\"index\\\",\\\"doc\\\",\\\"@client\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\",\\\"@displayList\\\",\\\"@labelToDisplay\\\",\\\"@notSureButton\\\",\\\"doc\\\",\\\"index\\\"],false,[\\\"if\\\",\\\"span\\\",\\\"eq\\\",\\\"br\\\",\\\"i\\\",\\\"not-eq\\\",\\\"or\\\",\\\"each\\\",\\\"-track-array\\\",\\\"sentence-case\\\",\\\"parse-text\\\",\\\"and\\\",\\\"div\\\",\\\"unless\\\",\\\"li\\\",\\\"not\\\",\\\"b\\\",\\\"documents-required-upload\\\",\\\"action\\\",\\\"liquid-if\\\",\\\"p\\\",\\\"possible-the\\\",\\\"lt\\\",\\\"sum\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/documents-required-feedback.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/documents-required-list\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <ul class=\"required-documents-list\">\n    {{#if (non-empty-string this.label)}}\n      <p>\n        {{this.label}}\n        <HelpTextIcon @helpText={{this.helpText}} @displayOnly={{this.displayOnly}} @lawyerName={{this.clientRecord.helpTextIconLawyerName}} />\n      </p>\n    {{/if}}\n    {{#if this.documentsRequired}}\n      {{yield}}\n    {{/if}}\n    {{#each this.filteredInductions as |induction|}}\n      {{#each induction.chapters as |chapter|}}\n        {{#each chapter.pages as |page|}}\n          {{#each page.questions as |question|}}\n            {{#if page.answersLocationLoop}}\n              {{#each\n                (get-answers-from client=this.client induction=induction.id chapter=chapter.id page=page.id answersLocation=page.answersLocation repeatToken=induction.repeatToken)\n                as |personObject loopIndex|\n              }}\n                <SettifyInputSwitcher\n                  @question={{question}}\n                  @model={{personObject}}\n                  @clientRecord={{this.client}}\n                  @context={{hash\n                    induction=induction.id\n                    inductionObject=induction\n                    chapter=chapter.id\n                    chapterObject=chapter\n                    page=page.id\n                    pageObject=page\n                    repeat=induction.repeatToken\n                    breadcrumb=induction.repeatBreadcrumb\n                    answersLocation=page.answersLocation\n                    loop=loopIndex\n                  }}\n                  @documentsOnly={{true}}\n                  @displayOnly={{this.displayOnly}}\n                  @notSureButton={{this.notSureButton}}\n                  @adminMode={{this.adminMode}}\n                />\n              {{/each}}\n            {{else}}\n              <SettifyInputSwitcher\n                @question={{question}}\n                @clientRecord={{this.client}}\n                @documentsOnly={{true}}\n                @displayOnly={{this.displayOnly}}\n                @notSureButton={{this.notSureButton}}\n                @adminMode={{this.adminMode}}\n                @model={{get-answers-from\n                  client=this.client\n                  induction=induction.id\n                  chapter=chapter.id\n                  page=page.id\n                  answersLocation=page.answersLocation\n                  repeatToken=induction.repeatToken\n                }}\n                @context={{hash\n                  induction=induction.id\n                  inductionObject=induction\n                  chapter=chapter.id\n                  chapterObject=chapter\n                  page=page.id\n                  pageObject=page\n                  repeat=induction.repeatToken\n                  breadcrumb=induction.repeatBreadcrumb\n                  answersLocation=page.answersLocation\n                }}\n              />\n            {{/if}}\n          {{/each}}\n        {{/each}}\n      {{/each}}\n    {{/each}}\n  </ul>\n  \n  {{#unless this.documentsRequired}}\n    {{#if this.displayOnly}}\n      <p>\n        <i class=\"fal fa-check-circle tight\" />\n        No documents required\n      </p>\n    {{else}}\n      <p class=\"no-required-documents\">\n        <i class=\"fal fa-check-circle tight\" />\n        Based on your answers in this questionnaire, there are <b>no documents that we request of you at this stage</b>.\n      </p>\n    {{/if}}\n  {{/unless}}\n  \n  {{#unless this.displayOnly}}\n    {{#if this.documentsRequired}}\n      <p class=\"font-0.8\">\n        Are there any other documents you think will be relevant?\n      </p>\n    {{else}}\n      <p>\n        <b>\n          Are there documents you think will be relevant?\n        </b>\n      </p>\n    {{/if}}\n  {{/unless}}\n  */\n  {\n    \"id\": \"1cUdWFbf\",\n    \"block\": \"[[[10,\\\"ul\\\"],[14,0,\\\"required-documents-list\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,2],[[30,0,[\\\"label\\\"]]],null],[[[1,\\\"    \\\"],[10,2],[12],[1,\\\"\\\\n      \\\"],[1,[30,0,[\\\"label\\\"]]],[1,\\\"\\\\n      \\\"],[8,[39,4],null,[[\\\"@helpText\\\",\\\"@displayOnly\\\",\\\"@lawyerName\\\"],[[30,0,[\\\"helpText\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"clientRecord\\\",\\\"helpTextIconLawyerName\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"documentsRequired\\\"]],[[[1,\\\"    \\\"],[18,7,null],[1,\\\"\\\\n\\\"]],[]],null],[42,[28,[37,7],[[28,[37,7],[[30,0,[\\\"filteredInductions\\\"]]],null]],null],null,[[[42,[28,[37,7],[[28,[37,7],[[30,1,[\\\"chapters\\\"]]],null]],null],null,[[[42,[28,[37,7],[[28,[37,7],[[30,2,[\\\"pages\\\"]]],null]],null],null,[[[42,[28,[37,7],[[28,[37,7],[[30,3,[\\\"questions\\\"]]],null]],null],null,[[[41,[30,3,[\\\"answersLocationLoop\\\"]],[[[42,[28,[37,7],[[28,[37,7],[[28,[37,8],null,[[\\\"client\\\",\\\"induction\\\",\\\"chapter\\\",\\\"page\\\",\\\"answersLocation\\\",\\\"repeatToken\\\"],[[30,0,[\\\"client\\\"]],[30,1,[\\\"id\\\"]],[30,2,[\\\"id\\\"]],[30,3,[\\\"id\\\"]],[30,3,[\\\"answersLocation\\\"]],[30,1,[\\\"repeatToken\\\"]]]]]],null]],null],null,[[[1,\\\"              \\\"],[8,[39,9],null,[[\\\"@question\\\",\\\"@model\\\",\\\"@clientRecord\\\",\\\"@context\\\",\\\"@documentsOnly\\\",\\\"@displayOnly\\\",\\\"@notSureButton\\\",\\\"@adminMode\\\"],[[30,4],[30,5],[30,0,[\\\"client\\\"]],[28,[37,10],null,[[\\\"induction\\\",\\\"inductionObject\\\",\\\"chapter\\\",\\\"chapterObject\\\",\\\"page\\\",\\\"pageObject\\\",\\\"repeat\\\",\\\"breadcrumb\\\",\\\"answersLocation\\\",\\\"loop\\\"],[[30,1,[\\\"id\\\"]],[30,1],[30,2,[\\\"id\\\"]],[30,2],[30,3,[\\\"id\\\"]],[30,3],[30,1,[\\\"repeatToken\\\"]],[30,1,[\\\"repeatBreadcrumb\\\"]],[30,3,[\\\"answersLocation\\\"]],[30,6]]]],true,[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"notSureButton\\\"]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n\\\"]],[5,6]],null]],[]],[[[1,\\\"            \\\"],[8,[39,9],null,[[\\\"@question\\\",\\\"@clientRecord\\\",\\\"@documentsOnly\\\",\\\"@displayOnly\\\",\\\"@notSureButton\\\",\\\"@adminMode\\\",\\\"@model\\\",\\\"@context\\\"],[[30,4],[30,0,[\\\"client\\\"]],true,[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"notSureButton\\\"]],[30,0,[\\\"adminMode\\\"]],[28,[37,8],null,[[\\\"client\\\",\\\"induction\\\",\\\"chapter\\\",\\\"page\\\",\\\"answersLocation\\\",\\\"repeatToken\\\"],[[30,0,[\\\"client\\\"]],[30,1,[\\\"id\\\"]],[30,2,[\\\"id\\\"]],[30,3,[\\\"id\\\"]],[30,3,[\\\"answersLocation\\\"]],[30,1,[\\\"repeatToken\\\"]]]]],[28,[37,10],null,[[\\\"induction\\\",\\\"inductionObject\\\",\\\"chapter\\\",\\\"chapterObject\\\",\\\"page\\\",\\\"pageObject\\\",\\\"repeat\\\",\\\"breadcrumb\\\",\\\"answersLocation\\\"],[[30,1,[\\\"id\\\"]],[30,1],[30,2,[\\\"id\\\"]],[30,2],[30,3,[\\\"id\\\"]],[30,3],[30,1,[\\\"repeatToken\\\"]],[30,1,[\\\"repeatBreadcrumb\\\"]],[30,3,[\\\"answersLocation\\\"]]]]]]],null],[1,\\\"\\\\n\\\"]],[]]]],[4]],null]],[3]],null]],[2]],null]],[1]],null],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[51,[30,0,[\\\"documentsRequired\\\"]]],[[[41,[30,0,[\\\"displayOnly\\\"]],[[[1,\\\"    \\\"],[10,2],[12],[1,\\\"\\\\n      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle tight\\\"],[12],[13],[1,\\\"\\\\n      No documents required\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[10,2],[14,0,\\\"no-required-documents\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle tight\\\"],[12],[13],[1,\\\"\\\\n      Based on your answers in this questionnaire, there are \\\"],[10,\\\"b\\\"],[12],[1,\\\"no documents that we request of you at this stage\\\"],[13],[1,\\\".\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[]],null],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"displayOnly\\\"]]],[[[41,[30,0,[\\\"documentsRequired\\\"]],[[[1,\\\"    \\\"],[10,2],[14,0,\\\"font-0.8\\\"],[12],[1,\\\"\\\\n      Are there any other documents you think will be relevant?\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[10,2],[12],[1,\\\"\\\\n      \\\"],[10,\\\"b\\\"],[12],[1,\\\"\\\\n        Are there documents you think will be relevant?\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[]],null]],[\\\"induction\\\",\\\"chapter\\\",\\\"page\\\",\\\"question\\\",\\\"personObject\\\",\\\"loopIndex\\\",\\\"&default\\\"],false,[\\\"ul\\\",\\\"if\\\",\\\"non-empty-string\\\",\\\"p\\\",\\\"help-text-icon\\\",\\\"yield\\\",\\\"each\\\",\\\"-track-array\\\",\\\"get-answers-from\\\",\\\"settify-input-switcher\\\",\\\"hash\\\",\\\"unless\\\",\\\"i\\\",\\\"b\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/documents-required-list.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/documents-required-upload\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <LiquidSpacer>\n    <div class=\"documents-provided docx-exclude\">\n      {{#if @uploadsFiltered.length}}\n        <table>\n          <tbody>\n            {{#each @uploadsFiltered as |document|}}\n              <tr>\n                <td>\n                  {{#if @sendComplete}}\n                    <i class=\"fal fa-check-circle\" />\n                  {{else}}\n                    <button type=\"button\" {{on \"click\" (fn @removeDocument document)}}>\n                      <i class=\"fal fa-trash-alt clickable pdf-exclude font-18\" />\n                    </button>\n                  {{/if}}\n                </td>\n                <td class=\"font-18\">\n                  <div class=\"marginbottom-10\">\n                    {{#if document.expired}}\n                      <FileTypeThumbnail @extension={{document.extension}} />\n                      <span class=\"pdf-exclude\">Expired:</span>\n                      {{document.fileName}}\n                    {{else}}\n                      <button type=\"button\" {{on \"click\" (fn @downloadDocument document)}}>\n                        <a class=\"clickable\">\n                          <FileTypeThumbnail @extension={{document.extension}} />\n                          {{document.fileName}}\n                        </a>\n                      </button>\n                    {{/if}}\n                    <span class=\"hide pdf-include\">\n                      ({{if document.expired \"Expired\" \"Expires\"}}\n                      {{pretty-date document.expiryDate}})\n                    </span>\n                    {{#if (not (and @displayOnly (not @adminMode)))}}\n                      <button type=\"button\" {{on \"click\" (fn @showExpireMessage document)}}>\n                        <i class=\"fal fa-clock tight pdf-exclude clickable {{if document.expiresSoon 'bold negative' ''}}\" />\n                      </button>\n                    {{/if}}\n                  </div>\n                  {{#if (or document.showExpireMessage (and @displayOnly (not @adminMode)))}}\n                    <p class=\"expiry-message {{if document.expiresSoon 'bold' ''}} {{if (and @displayOnly (not @adminMode)) 'client-facing'}} \">\n                      {{#if (and @session.isAuthenticated @session.data.authenticated.adminUser)}}\n                        {{#if document.expired}}\n                          For security reasons, this file was removed on\n                          {{pretty-date document.expiryDate}}. If you did not download it and save it to the matter as required, you will need to ask the client to upload it again.\n                        {{else}}\n                          For security reasons, this file will only be available until\n                          {{pretty-date document.expiryDate}}. Please download and save it to your matter before then.\n                        {{/if}}\n                      {{else}}\n                        {{#if document.expired}}\n                          For your security, this file was automatically removed from the cloud on\n                          {{pretty-date document.expiryDate}}.\n                          {{#if (eq @client.conflictCheck \"noconflict\")}}\n                            Your lawyer will have downloaded this document to their own secure storage system.\n                          {{/if}}\n                        {{else}}\n                          For your security, this file will only stay in the cloud for the next\n                          {{pretty-date document.expiryDate relativeTime=true noSuffix=true}}, after which it will be deleted automatically. Your lawyer will be prompted to download\n                          it beforehand, if required.\n                        {{/if}}\n                      {{/if}}\n                    </p>\n                  {{/if}}\n                </td>\n              </tr>\n            {{/each}}\n          </tbody>\n        </table>\n      {{/if}}\n    </div>\n  </LiquidSpacer>\n  \n  <LiquidIf @predicate={{@uploadingDocument}}>\n    <LoadingSpinner />\n  </LiquidIf>\n  \n  <LiquidIf @predicate={{and (not (get @clientRecord @unknownDocCheckboxLocation)) (not @adminMode)}}>\n    <input type=\"file\" multiple id={{concat \"document-upload-input-\" @uniqueID}} accept={{@filesToAccept}} class=\"file-upload-input\" onchange={{@uploadDocument}} />\n    <label\n      for={{concat \"document-upload-input-\" @uniqueID}}\n      class=\"clickable document-drag-zone pdf-exclude {{if @fileDragging 'dragging'}}\"\n      ondragenter={{@startDraggingDocument}}\n      ondragleave={{@stopDraggingDocument}}\n      ondragover={{@ondragover}}\n      ondrop={{@dropDocument}}\n    >\n      <i class=\"fal fa-file-plus\" />\n      {{#if @uploadsFiltered.length}}\n        Upload another document\n      {{else}}\n        {{#if @displayList}}\n          Upload here now.\n        {{else if @labelToDisplay}}\n          Upload here\n        {{else}}\n          Or you can upload here now.\n        {{/if}}\n      {{/if}}\n    </label>\n  </LiquidIf>\n  \n  <LiquidIf @predicate={{not @uploadsFiltered.length}}>\n    {{#if (or @displayOnly @notSureButton)}}\n      <CheckBox @displayOnly={{not @notSureButton}} @summaryIconIfChecked=\"fa-question-circle\" @model={{mut (get @clientRecord @unknownDocCheckboxLocation)}}>\n        I don't know where\n        {{#if (gt @uploadsFiltered.length 1)}}\n          these are.\n        {{else}}\n          this is.\n        {{/if}}\n      </CheckBox>\n    {{/if}}\n  </LiquidIf>\n  \n  <LiquidIf @predicate={{@showFileTypeWarning}}>\n    <p>\n      Note: the following file types are allowed:\n      {{#each @whitelist as |extension index|}}\n        {{~if (gt index 0) \", \"}}{{extension}}\n      {{~/each}}\n    </p>\n  </LiquidIf>\n  <LiquidIf @predicate={{@showFileSizeWarning}}>\n    <p>\n      Note: files must be less than 50mb\n    </p>\n  </LiquidIf>\n  */\n  {\n    \"id\": \"nsr/ZLLq\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"documents-provided docx-exclude\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"length\\\"]],[[[1,\\\"      \\\"],[10,\\\"table\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,6],[[28,[37,6],[[30,1]],null]],null],null,[[[1,\\\"            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,3],[[[1,\\\"                  \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                  \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,11],[\\\"click\\\",[28,[37,12],[[30,4],[30,2]],null]],null],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-trash-alt clickable pdf-exclude font-18\\\"],[12],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[14,0,\\\"font-18\\\"],[12],[1,\\\"\\\\n                \\\"],[10,0],[14,0,\\\"marginbottom-10\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,2,[\\\"expired\\\"]],[[[1,\\\"                    \\\"],[8,[39,13],null,[[\\\"@extension\\\"],[[30,2,[\\\"extension\\\"]]]],null],[1,\\\"\\\\n                    \\\"],[10,1],[14,0,\\\"pdf-exclude\\\"],[12],[1,\\\"Expired:\\\"],[13],[1,\\\"\\\\n                    \\\"],[1,[30,2,[\\\"fileName\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                    \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,11],[\\\"click\\\",[28,[37,12],[[30,5],[30,2]],null]],null],[12],[1,\\\"\\\\n                      \\\"],[10,3],[14,0,\\\"clickable\\\"],[12],[1,\\\"\\\\n                        \\\"],[8,[39,13],null,[[\\\"@extension\\\"],[[30,2,[\\\"extension\\\"]]]],null],[1,\\\"\\\\n                        \\\"],[1,[30,2,[\\\"fileName\\\"]]],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"                  \\\"],[10,1],[14,0,\\\"hide pdf-include\\\"],[12],[1,\\\"\\\\n                    (\\\"],[1,[52,[30,2,[\\\"expired\\\"]],\\\"Expired\\\",\\\"Expires\\\"]],[1,\\\"\\\\n                    \\\"],[1,[28,[35,16],[[30,2,[\\\"expiryDate\\\"]]],null]],[1,\\\")\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,17],[[28,[37,18],[[30,6],[28,[37,17],[[30,7]],null]],null]],null],[[[1,\\\"                    \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,11],[\\\"click\\\",[28,[37,12],[[30,8],[30,2]],null]],null],[12],[1,\\\"\\\\n                      \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-clock tight pdf-exclude clickable \\\",[52,[30,2,[\\\"expiresSoon\\\"]],\\\"bold negative\\\",\\\"\\\"]]]],[12],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,19],[[30,2,[\\\"showExpireMessage\\\"]],[28,[37,18],[[30,6],[28,[37,17],[[30,7]],null]],null]],null],[[[1,\\\"                  \\\"],[10,2],[15,0,[29,[\\\"expiry-message \\\",[52,[30,2,[\\\"expiresSoon\\\"]],\\\"bold\\\",\\\"\\\"],\\\" \\\",[52,[28,[37,18],[[30,6],[28,[37,17],[[30,7]],null]],null],\\\"client-facing\\\"],\\\" \\\"]]],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,18],[[30,9,[\\\"isAuthenticated\\\"]],[30,9,[\\\"data\\\",\\\"authenticated\\\",\\\"adminUser\\\"]]],null],[[[41,[30,2,[\\\"expired\\\"]],[[[1,\\\"                        For security reasons, this file was removed on\\\\n                        \\\"],[1,[28,[35,16],[[30,2,[\\\"expiryDate\\\"]]],null]],[1,\\\". If you did not download it and save it to the matter as required, you will need to ask the client to upload it again.\\\\n\\\"]],[]],[[[1,\\\"                        For security reasons, this file will only be available until\\\\n                        \\\"],[1,[28,[35,16],[[30,2,[\\\"expiryDate\\\"]]],null]],[1,\\\". Please download and save it to your matter before then.\\\\n\\\"]],[]]]],[]],[[[41,[30,2,[\\\"expired\\\"]],[[[1,\\\"                        For your security, this file was automatically removed from the cloud on\\\\n                        \\\"],[1,[28,[35,16],[[30,2,[\\\"expiryDate\\\"]]],null]],[1,\\\".\\\\n\\\"],[41,[28,[37,21],[[30,10,[\\\"conflictCheck\\\"]],\\\"noconflict\\\"],null],[[[1,\\\"                          Your lawyer will have downloaded this document to their own secure storage system.\\\\n\\\"]],[]],null]],[]],[[[1,\\\"                        For your security, this file will only stay in the cloud for the next\\\\n                        \\\"],[1,[28,[35,16],[[30,2,[\\\"expiryDate\\\"]]],[[\\\"relativeTime\\\",\\\"noSuffix\\\"],[true,true]]]],[1,\\\", after which it will be deleted automatically. Your lawyer will be prompted to download\\\\n                        it beforehand, if required.\\\\n\\\"]],[]]]],[]]],[1,\\\"                  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[8,[39,22],null,[[\\\"@predicate\\\"],[[30,11]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[39,23],null,null,null],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[8,[39,22],null,[[\\\"@predicate\\\"],[[28,[37,18],[[28,[37,17],[[28,[37,24],[[30,12],[30,13]],null]],null],[28,[37,17],[[30,7]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,\\\"input\\\"],[14,\\\"multiple\\\",\\\"\\\"],[15,1,[28,[37,26],[\\\"document-upload-input-\\\",[30,14]],null]],[15,\\\"accept\\\",[30,15]],[14,0,\\\"file-upload-input\\\"],[15,\\\"onchange\\\",[30,16]],[14,4,\\\"file\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[10,\\\"label\\\"],[15,\\\"for\\\",[28,[37,26],[\\\"document-upload-input-\\\",[30,14]],null]],[15,0,[29,[\\\"clickable document-drag-zone pdf-exclude \\\",[52,[30,17],\\\"dragging\\\"]]]],[15,\\\"ondragenter\\\",[30,18]],[15,\\\"ondragleave\\\",[30,19]],[15,\\\"ondragover\\\",[30,20]],[15,\\\"ondrop\\\",[30,21]],[12],[1,\\\"\\\\n    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-file-plus\\\"],[12],[13],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"length\\\"]],[[[1,\\\"      Upload another document\\\\n\\\"]],[]],[[[41,[30,22],[[[1,\\\"        Upload here now.\\\\n\\\"]],[]],[[[41,[30,23],[[[1,\\\"        Upload here\\\\n\\\"]],[]],[[[1,\\\"        Or you can upload here now.\\\\n      \\\"]],[]]]],[]]]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[8,[39,22],null,[[\\\"@predicate\\\"],[[28,[37,17],[[30,1,[\\\"length\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[28,[37,19],[[30,6],[30,24]],null],[[[1,\\\"    \\\"],[8,[39,28],null,[[\\\"@displayOnly\\\",\\\"@summaryIconIfChecked\\\",\\\"@model\\\"],[[28,[37,17],[[30,24]],null],\\\"fa-question-circle\\\",[28,[37,29],[[28,[37,24],[[30,12],[30,13]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      I don't know where\\\\n\\\"],[41,[28,[37,30],[[30,1,[\\\"length\\\"]],1],null],[[[1,\\\"        these are.\\\\n\\\"]],[]],[[[1,\\\"        this is.\\\\n\\\"]],[]]],[1,\\\"    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[8,[39,22],null,[[\\\"@predicate\\\"],[[30,25]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,2],[12],[1,\\\"\\\\n    Note: the following file types are allowed:\\\\n\\\"],[42,[28,[37,6],[[28,[37,6],[[30,26]],null]],null],null,[[[1,[52,[28,[37,30],[[30,28],0],null],\\\", \\\"]],[1,[30,27]]],[27,28]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"],[8,[39,22],null,[[\\\"@predicate\\\"],[[30,29]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,2],[12],[1,\\\"\\\\n    Note: files must be less than 50mb\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"@uploadsFiltered\\\",\\\"document\\\",\\\"@sendComplete\\\",\\\"@removeDocument\\\",\\\"@downloadDocument\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\",\\\"@showExpireMessage\\\",\\\"@session\\\",\\\"@client\\\",\\\"@uploadingDocument\\\",\\\"@clientRecord\\\",\\\"@unknownDocCheckboxLocation\\\",\\\"@uniqueID\\\",\\\"@filesToAccept\\\",\\\"@uploadDocument\\\",\\\"@fileDragging\\\",\\\"@startDraggingDocument\\\",\\\"@stopDraggingDocument\\\",\\\"@ondragover\\\",\\\"@dropDocument\\\",\\\"@displayList\\\",\\\"@labelToDisplay\\\",\\\"@notSureButton\\\",\\\"@showFileTypeWarning\\\",\\\"@whitelist\\\",\\\"extension\\\",\\\"index\\\",\\\"@showFileSizeWarning\\\"],false,[\\\"liquid-spacer\\\",\\\"div\\\",\\\"if\\\",\\\"table\\\",\\\"tbody\\\",\\\"each\\\",\\\"-track-array\\\",\\\"tr\\\",\\\"td\\\",\\\"i\\\",\\\"button\\\",\\\"on\\\",\\\"fn\\\",\\\"file-type-thumbnail\\\",\\\"span\\\",\\\"a\\\",\\\"pretty-date\\\",\\\"not\\\",\\\"and\\\",\\\"or\\\",\\\"p\\\",\\\"eq\\\",\\\"liquid-if\\\",\\\"loading-spinner\\\",\\\"get\\\",\\\"input\\\",\\\"concat\\\",\\\"label\\\",\\\"check-box\\\",\\\"mut\\\",\\\"gt\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/documents-required-upload.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/download-name-required\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    \n  <LiquidIf @predicate={{this.downloadNamesRequired}}>\n    <div class=\"download-piracy\">\n      <p>\n        We require the real names of each client before we can generate the Excel document.\n        {{#if (and this.potentialPiracyDetected (not-eq this.potentialPiracyDetected true))}}\n          <b>One of the clients appears to be named \"{{this.potentialPiracyDetected}}\".</b>\n        {{/if}}\n        Please provide their real names below.\n      </p>\n      \n      Client\n      <div class=\"piracy-name\">\n        <SettifyTextline @placeholder=\"First name\" @class=\"settify-sensitive\" @model={{this.model.firstName}} />\n        <SettifyTextline @placeholder=\"Surname\" @class=\"settify-sensitive\" @model={{this.model.surname}} />\n      </div>\n    \n      Client's {{this.model.otherPersonType}}\n      <div class=\"piracy-name\">\n        <SettifyTextline @placeholder=\"First name\" @class=\"settify-sensitive\" @model={{this.model.partnerFirstName}} />\n        <SettifyTextline @placeholder=\"Surname\" @class=\"settify-sensitive\" @model={{this.model.partnerSurname}} />\n      </div>\n  \n      <p>\n        <button class=\"next-button hvr-float-shadow hvr-grow\" type=\"button\" {{action \"saveNames\"}}>\n          Save\n        </button>\n      </p>\n    </div>\n  </LiquidIf>\n  \n  */\n  {\n    \"id\": \"I0kvYNwN\",\n    \"block\": \"[[[1,\\\"\\\\n\\\"],[8,[39,0],null,[[\\\"@predicate\\\"],[[30,0,[\\\"downloadNamesRequired\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"download-piracy\\\"],[12],[1,\\\"\\\\n    \\\"],[10,2],[12],[1,\\\"\\\\n      We require the real names of each client before we can generate the Excel document.\\\\n\\\"],[41,[28,[37,4],[[30,0,[\\\"potentialPiracyDetected\\\"]],[28,[37,5],[[30,0,[\\\"potentialPiracyDetected\\\"]],true],null]],null],[[[1,\\\"        \\\"],[10,\\\"b\\\"],[12],[1,\\\"One of the clients appears to be named \\\\\\\"\\\"],[1,[30,0,[\\\"potentialPiracyDetected\\\"]]],[1,\\\"\\\\\\\".\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      Please provide their real names below.\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\\n    Client\\\\n    \\\"],[10,0],[14,0,\\\"piracy-name\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,7],null,[[\\\"@placeholder\\\",\\\"@class\\\",\\\"@model\\\"],[\\\"First name\\\",\\\"settify-sensitive\\\",[30,0,[\\\"model\\\",\\\"firstName\\\"]]]],null],[1,\\\"\\\\n      \\\"],[8,[39,7],null,[[\\\"@placeholder\\\",\\\"@class\\\",\\\"@model\\\"],[\\\"Surname\\\",\\\"settify-sensitive\\\",[30,0,[\\\"model\\\",\\\"surname\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\\n    Client's \\\"],[1,[30,0,[\\\"model\\\",\\\"otherPersonType\\\"]]],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"piracy-name\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,7],null,[[\\\"@placeholder\\\",\\\"@class\\\",\\\"@model\\\"],[\\\"First name\\\",\\\"settify-sensitive\\\",[30,0,[\\\"model\\\",\\\"partnerFirstName\\\"]]]],null],[1,\\\"\\\\n      \\\"],[8,[39,7],null,[[\\\"@placeholder\\\",\\\"@class\\\",\\\"@model\\\"],[\\\"Surname\\\",\\\"settify-sensitive\\\",[30,0,[\\\"model\\\",\\\"partnerSurname\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,2],[12],[1,\\\"\\\\n      \\\"],[11,\\\"button\\\"],[24,0,\\\"next-button hvr-float-shadow hvr-grow\\\"],[24,4,\\\"button\\\"],[4,[38,9],[[30,0],\\\"saveNames\\\"],null],[12],[1,\\\"\\\\n        Save\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[],false,[\\\"liquid-if\\\",\\\"div\\\",\\\"p\\\",\\\"if\\\",\\\"and\\\",\\\"not-eq\\\",\\\"b\\\",\\\"settify-textline\\\",\\\"button\\\",\\\"action\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/download-name-required.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/download-resource\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <LiquidSpacer>\n    <br />\n    {{!--\n    {{#each fileTypeExplanation as |line|}}\n      <p>{{line}}</p>\n    {{/each}}\n    --}}\n    {{!-- {{yield}} --}}\n    {{#if (and this.allowEmailDocuments (not this.preDeterminedRecipients))}}\n      <div>Who should the {{this.fileType}} be sent to?</div>\n      {{#each this.recipients as |recipient index|}}\n        <div class=\"full-width-inline-block position-relative zindex-1\">\n          <LawyerSelect\n            @lawyerName={{recipient.lawyerName}}\n            @lawyerEmail={{recipient.lawyerEmail}}\n            @lawyerEmailValid={{this.lawyerEmailValid}}\n            @lawyerBCCs={{recipient.lawyerBCCs}}\n            @lawyerCCs={{recipient.lawyerCCs}}\n            @lawyerBio={{recipient.lawyerBio}}\n            @lawyerReadMoreURL={{recipient.lawyerReadMoreURL}}\n            @lawyerPhotoURL={{recipient.lawyerPhotoURL}}\n            @compIndex={{index}}\n            @updateRecipients={{this.updateRecipientsCallback}}\n          />\n        </div>\n        {{#if this.isAllowedToBeRemoved}}\n          <i class=\"fal fa-times-circle clickable icon-delete floatright\" {{action \"removeLawyer\" recipient}}></i>\n        {{/if}}\n      {{/each}}\n  \n      <div class=\"clickable another-recipient-label\" {{action \"addAdditionalRecipient\"}}>\n        <i class=\"fal fa-plus-circle\"></i> Add another recipient\n      </div>\n      <LiquidIf @predicate={{this.invalidEmailMessage}}>\n        <small class=\"negative\">Your message contains invalid characters (&#60; or &#62;). Please remove before emailing</small>\n      </LiquidIf>\n      <SettifyTextarea @model={{this.emailMessage}} @placeholder=\"You can write a message to your colleague here\" @label=\"Add a message\" @max={{2000}} />\n      <LiquidIf @predicate={{this.noDocumentSelected}}>\n        <small class=\"negative floatright\">Please select a document to email</small>\n      </LiquidIf>\n      <button\n        type=\"button\"\n        class=\"next-button hvr-float-shadow hvr-grow {{if (or (not this.lawyerEmailValid) this.invalidEmailMessage) 'disabled-button'}}\"\n        {{action (if (and this.lawyerEmailValid (not this.invalidEmailMessage)) \"download\" \"nullAction\")}}\n      >\n        Email {{this.fileType}}\n      </button>\n    {{/if}}\n  </LiquidSpacer>\n  \n  <div class=\"clearboth\">\n  \n  </div>\n  \n  {{#if (or this.allowMobileDownload (not this.onMobileDevice))}}\n    {{#if (and this.allowEmailDocuments (not this.preDeterminedRecipients))}}\n      <small>\n        <a class=\"clickable\" {{action \"downloadLocally\"}}>\n          <i class=\"fal fa-cloud-download-alt\" />Alternatively, click here to download\n          the {{this.fileType}} to your computer.\n        </a>\n      </small>\n      <br />\n      <br />\n    {{else}}\n      <p class=\"flex-evenly flex-wrap\">\n        <a class=\"download-resource-button {{if this.downloadNamesRequired 'disabled' 'clickable'}}\" {{action (if this.downloadNamesRequired \"nullAction\" \"downloadLocally\")}}>\n          <i class=\"fal fa-cloud-download-alt\" />\n          Download {{sentence-case this.fileType}}\n        </a>\n        {{#if this.allowEmailDocuments}}\n          <a class=\"download-resource-button {{if this.downloadNamesRequired 'disabled' 'clickable'}}\" {{action (if this.downloadNamesRequired \"nullAction\" \"toggleEmailDocuments\")}}>\n            <i class=\"fal fa-envelope\" />\n            Email {{sentence-case this.fileType}}\n          </a>\n        {{/if}}\n        {{yield}}\n      </p>\n    {{/if}}\n  {{/if}}\n  {{#each this.fileTypeExplanation as |line|}}\n    <LiquidIf @predicate={{get this.documentsSelected line.document}}>\n      <small><strong>{{line.document}}</strong></small>\n      <br />\n      <small>{{line.explanation}}</small>\n      <br />\n      <br />\n    </LiquidIf>\n  {{/each}}\n  \n  */\n  {\n    \"id\": \"NDdCMAnp\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,3],[[30,0,[\\\"allowEmailDocuments\\\"]],[28,[37,4],[[30,0,[\\\"preDeterminedRecipients\\\"]]],null]],null],[[[1,\\\"    \\\"],[10,0],[12],[1,\\\"Who should the \\\"],[1,[30,0,[\\\"fileType\\\"]]],[1,\\\" be sent to?\\\"],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,7],[[28,[37,7],[[30,0,[\\\"recipients\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[10,0],[14,0,\\\"full-width-inline-block position-relative zindex-1\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,8],null,[[\\\"@lawyerName\\\",\\\"@lawyerEmail\\\",\\\"@lawyerEmailValid\\\",\\\"@lawyerBCCs\\\",\\\"@lawyerCCs\\\",\\\"@lawyerBio\\\",\\\"@lawyerReadMoreURL\\\",\\\"@lawyerPhotoURL\\\",\\\"@compIndex\\\",\\\"@updateRecipients\\\"],[[30,1,[\\\"lawyerName\\\"]],[30,1,[\\\"lawyerEmail\\\"]],[30,0,[\\\"lawyerEmailValid\\\"]],[30,1,[\\\"lawyerBCCs\\\"]],[30,1,[\\\"lawyerCCs\\\"]],[30,1,[\\\"lawyerBio\\\"]],[30,1,[\\\"lawyerReadMoreURL\\\"]],[30,1,[\\\"lawyerPhotoURL\\\"]],[30,2],[30,0,[\\\"updateRecipientsCallback\\\"]]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"isAllowedToBeRemoved\\\"]],[[[1,\\\"        \\\"],[11,\\\"i\\\"],[24,0,\\\"fal fa-times-circle clickable icon-delete floatright\\\"],[4,[38,10],[[30,0],\\\"removeLawyer\\\",[30,1]],null],[12],[13],[1,\\\"\\\\n\\\"]],[]],null]],[1,2]],null],[1,\\\"\\\\n    \\\"],[11,0],[24,0,\\\"clickable another-recipient-label\\\"],[4,[38,10],[[30,0],\\\"addAdditionalRecipient\\\"],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle\\\"],[12],[13],[1,\\\" Add another recipient\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,11],null,[[\\\"@predicate\\\"],[[30,0,[\\\"invalidEmailMessage\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,\\\"small\\\"],[14,0,\\\"negative\\\"],[12],[1,\\\"Your message contains invalid characters (< or >). Please remove before emailing\\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[8,[39,13],null,[[\\\"@model\\\",\\\"@placeholder\\\",\\\"@label\\\",\\\"@max\\\"],[[30,0,[\\\"emailMessage\\\"]],\\\"You can write a message to your colleague here\\\",\\\"Add a message\\\",2000]],null],[1,\\\"\\\\n    \\\"],[8,[39,11],null,[[\\\"@predicate\\\"],[[30,0,[\\\"noDocumentSelected\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,\\\"small\\\"],[14,0,\\\"negative floatright\\\"],[12],[1,\\\"Please select a document to email\\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[11,\\\"button\\\"],[16,0,[29,[\\\"next-button hvr-float-shadow hvr-grow \\\",[52,[28,[37,15],[[28,[37,4],[[30,0,[\\\"lawyerEmailValid\\\"]]],null],[30,0,[\\\"invalidEmailMessage\\\"]]],null],\\\"disabled-button\\\"]]]],[24,4,\\\"button\\\"],[4,[38,10],[[30,0],[52,[28,[37,3],[[30,0,[\\\"lawyerEmailValid\\\"]],[28,[37,4],[[30,0,[\\\"invalidEmailMessage\\\"]]],null]],null],\\\"download\\\",\\\"nullAction\\\"]],null],[12],[1,\\\"\\\\n      Email \\\"],[1,[30,0,[\\\"fileType\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"clearboth\\\"],[12],[1,\\\"\\\\n\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,15],[[30,0,[\\\"allowMobileDownload\\\"]],[28,[37,4],[[30,0,[\\\"onMobileDevice\\\"]]],null]],null],[[[41,[28,[37,3],[[30,0,[\\\"allowEmailDocuments\\\"]],[28,[37,4],[[30,0,[\\\"preDeterminedRecipients\\\"]]],null]],null],[[[1,\\\"    \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n      \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,10],[[30,0],\\\"downloadLocally\\\"],null],[12],[1,\\\"\\\\n        \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-cloud-download-alt\\\"],[12],[13],[1,\\\"Alternatively, click here to download\\\\n        the \\\"],[1,[30,0,[\\\"fileType\\\"]]],[1,\\\" to your computer.\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[10,2],[14,0,\\\"flex-evenly flex-wrap\\\"],[12],[1,\\\"\\\\n      \\\"],[11,3],[16,0,[29,[\\\"download-resource-button \\\",[52,[30,0,[\\\"downloadNamesRequired\\\"]],\\\"disabled\\\",\\\"clickable\\\"]]]],[4,[38,10],[[30,0],[52,[30,0,[\\\"downloadNamesRequired\\\"]],\\\"nullAction\\\",\\\"downloadLocally\\\"]],null],[12],[1,\\\"\\\\n        \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-cloud-download-alt\\\"],[12],[13],[1,\\\"\\\\n        Download \\\"],[1,[28,[35,18],[[30,0,[\\\"fileType\\\"]]],null]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"allowEmailDocuments\\\"]],[[[1,\\\"        \\\"],[11,3],[16,0,[29,[\\\"download-resource-button \\\",[52,[30,0,[\\\"downloadNamesRequired\\\"]],\\\"disabled\\\",\\\"clickable\\\"]]]],[4,[38,10],[[30,0],[52,[30,0,[\\\"downloadNamesRequired\\\"]],\\\"nullAction\\\",\\\"toggleEmailDocuments\\\"]],null],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-envelope\\\"],[12],[13],[1,\\\"\\\\n          Email \\\"],[1,[28,[35,18],[[30,0,[\\\"fileType\\\"]]],null]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[18,4,null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[]],null],[42,[28,[37,7],[[28,[37,7],[[30,0,[\\\"fileTypeExplanation\\\"]]],null]],null],null,[[[1,\\\"  \\\"],[8,[39,11],null,[[\\\"@predicate\\\"],[[28,[37,20],[[30,0,[\\\"documentsSelected\\\"]],[30,3,[\\\"document\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,\\\"small\\\"],[12],[10,\\\"strong\\\"],[12],[1,[30,3,[\\\"document\\\"]]],[13],[13],[1,\\\"\\\\n    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[10,\\\"small\\\"],[12],[1,[30,3,[\\\"explanation\\\"]]],[13],[1,\\\"\\\\n    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[3]],null]],[\\\"recipient\\\",\\\"index\\\",\\\"line\\\",\\\"&default\\\"],false,[\\\"liquid-spacer\\\",\\\"br\\\",\\\"if\\\",\\\"and\\\",\\\"not\\\",\\\"div\\\",\\\"each\\\",\\\"-track-array\\\",\\\"lawyer-select\\\",\\\"i\\\",\\\"action\\\",\\\"liquid-if\\\",\\\"small\\\",\\\"settify-textarea\\\",\\\"button\\\",\\\"or\\\",\\\"a\\\",\\\"p\\\",\\\"sentence-case\\\",\\\"yield\\\",\\\"get\\\",\\\"strong\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/download-resource.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/edit-common-tasks\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! MVPTODO: make this a better comopnent\n   - Don't need to pass objects to actions, since we're now a component with limited scope\n   - Can use computed properties to determine whether or not we can move up or move down, rather than having so much logic here in the template.\n   }}\n  <small class=\"display-flex flex-wrap {{if this.readOnly 'no-display'}}\">\n    {{#if this.object.created}}\n      {{#if this.object.deleted}}\n        <a class=\"clickable\" {{action \"enableElement\"}}><i class=\"fal fa-trash-restore-alt\" />Enable this {{this.name}}</a>\n      {{else}}\n        <a class=\"clickable\" {{action \"disableElement\" this.object}}><i class=\"fal fa-trash-alt\" />Disable this {{this.name}}</a>\n      {{/if}}\n    {{/if}}\n    {{#if (or (not this.object.created) this.iCan.permanentlyDelete)}}\n      <a class=\"clickable\" {{action \"toggleDeleteElement\" this.object}}><i class=\"fal fa-trash-alt\" />Delete this {{this.name}}</a>\n    {{/if}}\n    <a class=\"clickable\" {{action \"duplicate\" this.parentObject this.parentKey this.index}}>\n      <i class=\"fal fa-copy\" />\n      Duplicate this\n      {{this.name}}\n    </a>\n    <a class={{if this.index \"clickable\" \"disabled\"}} {{action \"moveElementUp\" this.parentObject this.parentKey this.index}}>\n      <i class=\"fal fa-arrow-circle-{{if (eq this.isTable 'column') 'left' 'up'}}\" />\n      {{#if (eq this.isTable \"column\")}}\n        Move left\n      {{else}}\n        Move up\n      {{/if}}\n    </a>\n    <a class={{if (eq (sum 1 this.index) this.parentList.length) \"disabled\" \"clickable\"}} {{action \"moveElementDown\" this.parentObject this.parentKey this.index}}>\n      <i class=\"fal fa-arrow-circle-{{if (eq this.isTable 'column') 'right' 'down'}}\" />\n      {{#if (eq this.isTable \"column\")}}\n        Move right\n      {{else}}\n        Move down\n      {{/if}}\n    </a>\n    {{#if (eq this.isTable \"column\")}}\n      <a class=\"clickable\" {{action this.insertElementLeft}}>\n        <i class=\"fal fa-chevron-circle-left\" />\n        Insert column left\n      </a>\n    {{/if}}\n    {{#if (eq this.isTable \"column\")}}\n      <a class=\"clickable\" {{action this.insertElementRight}}>\n        <i class=\"fal fa-chevron-circle-right\" />\n        Insert column right\n      </a>\n    {{/if}}\n    <LiquidIf @predicate={{this.object.showDelete}}>\n      <i class=\"fal fa-exclamation-circle\" />\n      Are you sure?\n      <a class=\"clickable\" {{action \"deleteElement\" this.parentObject this.parentKey this.object}}>Click here to confirm</a>\n    </LiquidIf>\n  </small>\n  \n  */\n  {\n    \"id\": \"3gxIqNPx\",\n    \"block\": \"[[[10,\\\"small\\\"],[15,0,[29,[\\\"display-flex flex-wrap \\\",[52,[30,0,[\\\"readOnly\\\"]],\\\"no-display\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"object\\\",\\\"created\\\"]],[[[41,[30,0,[\\\"object\\\",\\\"deleted\\\"]],[[[1,\\\"      \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,3],[[30,0],\\\"enableElement\\\"],null],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-trash-restore-alt\\\"],[12],[13],[1,\\\"Enable this \\\"],[1,[30,0,[\\\"name\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,3],[[30,0],\\\"disableElement\\\",[30,0,[\\\"object\\\"]]],null],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-trash-alt\\\"],[12],[13],[1,\\\"Disable this \\\"],[1,[30,0,[\\\"name\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]]]],[]],null],[41,[28,[37,5],[[28,[37,6],[[30,0,[\\\"object\\\",\\\"created\\\"]]],null],[30,0,[\\\"iCan\\\",\\\"permanentlyDelete\\\"]]],null],[[[1,\\\"    \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,3],[[30,0],\\\"toggleDeleteElement\\\",[30,0,[\\\"object\\\"]]],null],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-trash-alt\\\"],[12],[13],[1,\\\"Delete this \\\"],[1,[30,0,[\\\"name\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,3],[[30,0],\\\"duplicate\\\",[30,0,[\\\"parentObject\\\"]],[30,0,[\\\"parentKey\\\"]],[30,0,[\\\"index\\\"]]],null],[12],[1,\\\"\\\\n    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-copy\\\"],[12],[13],[1,\\\"\\\\n    Duplicate this\\\\n    \\\"],[1,[30,0,[\\\"name\\\"]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[11,3],[16,0,[52,[30,0,[\\\"index\\\"]],\\\"clickable\\\",\\\"disabled\\\"]],[4,[38,3],[[30,0],\\\"moveElementUp\\\",[30,0,[\\\"parentObject\\\"]],[30,0,[\\\"parentKey\\\"]],[30,0,[\\\"index\\\"]]],null],[12],[1,\\\"\\\\n    \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-arrow-circle-\\\",[52,[28,[37,7],[[30,0,[\\\"isTable\\\"]],\\\"column\\\"],null],\\\"left\\\",\\\"up\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,7],[[30,0,[\\\"isTable\\\"]],\\\"column\\\"],null],[[[1,\\\"      Move left\\\\n\\\"]],[]],[[[1,\\\"      Move up\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n  \\\"],[11,3],[16,0,[52,[28,[37,7],[[28,[37,8],[1,[30,0,[\\\"index\\\"]]],null],[30,0,[\\\"parentList\\\",\\\"length\\\"]]],null],\\\"disabled\\\",\\\"clickable\\\"]],[4,[38,3],[[30,0],\\\"moveElementDown\\\",[30,0,[\\\"parentObject\\\"]],[30,0,[\\\"parentKey\\\"]],[30,0,[\\\"index\\\"]]],null],[12],[1,\\\"\\\\n    \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-arrow-circle-\\\",[52,[28,[37,7],[[30,0,[\\\"isTable\\\"]],\\\"column\\\"],null],\\\"right\\\",\\\"down\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,7],[[30,0,[\\\"isTable\\\"]],\\\"column\\\"],null],[[[1,\\\"      Move right\\\\n\\\"]],[]],[[[1,\\\"      Move down\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,7],[[30,0,[\\\"isTable\\\"]],\\\"column\\\"],null],[[[1,\\\"    \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,3],[[30,0],[30,0,[\\\"insertElementLeft\\\"]]],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-chevron-circle-left\\\"],[12],[13],[1,\\\"\\\\n      Insert column left\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,7],[[30,0,[\\\"isTable\\\"]],\\\"column\\\"],null],[[[1,\\\"    \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,3],[[30,0],[30,0,[\\\"insertElementRight\\\"]]],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-chevron-circle-right\\\"],[12],[13],[1,\\\"\\\\n      Insert column right\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[8,[39,9],null,[[\\\"@predicate\\\"],[[30,0,[\\\"object\\\",\\\"showDelete\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-exclamation-circle\\\"],[12],[13],[1,\\\"\\\\n    Are you sure?\\\\n    \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,3],[[30,0],\\\"deleteElement\\\",[30,0,[\\\"parentObject\\\"]],[30,0,[\\\"parentKey\\\"]],[30,0,[\\\"object\\\"]]],null],[12],[1,\\\"Click here to confirm\\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[],false,[\\\"small\\\",\\\"if\\\",\\\"a\\\",\\\"action\\\",\\\"i\\\",\\\"or\\\",\\\"not\\\",\\\"eq\\\",\\\"sum\\\",\\\"liquid-if\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/edit-common-tasks.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/edit-firm-summary-element\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <p>\n    Select an element to add to the summary:\n    <SettifySelect @label=\"Id for element\" @model={{this.elementToAdd}} @content={{this.listOfPossibleAdditions}} @name=\"ID\" @labelPath=\"id\" @valuePath=\"id\" />\n    <LiquidIf @predicate={{this.showAddWholeChunkQuestion}}>\n      <p class=\"rightalign\">\n        <button type=\"button\" class=\"next-button hvr-float-shadow hvr-grow\" {{action \"addHeading\"}}>\n          Add heading only\n        </button>\n        <button type=\"button\" class=\"next-button hvr-float-shadow hvr-grow\" {{action \"addContentLocal\" this.elementToAdd}}>\n          Add heading and content\n        </button>\n      </p>\n    </LiquidIf>\n  </p>\n  */\n  {\n    \"id\": \"sHDsXzKr\",\n    \"block\": \"[[[10,2],[12],[1,\\\"\\\\n  Select an element to add to the summary:\\\\n  \\\"],[8,[39,1],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@content\\\",\\\"@name\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"Id for element\\\",[30,0,[\\\"elementToAdd\\\"]],[30,0,[\\\"listOfPossibleAdditions\\\"]],\\\"ID\\\",\\\"id\\\",\\\"id\\\"]],null],[1,\\\"\\\\n  \\\"],[8,[39,2],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showAddWholeChunkQuestion\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,2],[14,0,\\\"rightalign\\\"],[12],[1,\\\"\\\\n      \\\"],[11,\\\"button\\\"],[24,0,\\\"next-button hvr-float-shadow hvr-grow\\\"],[24,4,\\\"button\\\"],[4,[38,4],[[30,0],\\\"addHeading\\\"],null],[12],[1,\\\"\\\\n        Add heading only\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[11,\\\"button\\\"],[24,0,\\\"next-button hvr-float-shadow hvr-grow\\\"],[24,4,\\\"button\\\"],[4,[38,4],[[30,0],\\\"addContentLocal\\\",[30,0,[\\\"elementToAdd\\\"]]],null],[12],[1,\\\"\\\\n        Add heading and content\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[13]],[],false,[\\\"p\\\",\\\"settify-select\\\",\\\"liquid-if\\\",\\\"button\\\",\\\"action\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/edit-firm-summary-element.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/email-list\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <LiquidSpacer>\n    {{#each this.model as |item|}}\n      <div class=\"full-width-inline-block\">\n        <SettifyEmailInput @model={{item.email}} @placeholder={{this.placeholder}} />\n      </div>\n      <i class=\"fal fa-times-circle clickable icon-delete floatright\" {{action \"removeItem\" item}}></i>\n    {{/each}}\n  </LiquidSpacer>\n  \n  <div>\n    <button type=\"button\" {{action \"addItem\"}} class=\"clickable plain-button\">\n      <i class=\"fal fa-plus-circle\"></i>\n      {{this.addtext}}\n    </button>\n  </div>\n  */\n  {\n    \"id\": \"7owTqDy5\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,2],[[28,[37,2],[[30,0,[\\\"model\\\"]]],null]],null],null,[[[1,\\\"    \\\"],[10,0],[14,0,\\\"full-width-inline-block\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,4],null,[[\\\"@model\\\",\\\"@placeholder\\\"],[[30,1,[\\\"email\\\"]],[30,0,[\\\"placeholder\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[11,\\\"i\\\"],[24,0,\\\"fal fa-times-circle clickable icon-delete floatright\\\"],[4,[38,6],[[30,0],\\\"removeItem\\\",[30,1]],null],[12],[13],[1,\\\"\\\\n\\\"]],[1]],null]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[12],[1,\\\"\\\\n  \\\"],[11,\\\"button\\\"],[24,0,\\\"clickable plain-button\\\"],[24,4,\\\"button\\\"],[4,[38,6],[[30,0],\\\"addItem\\\"],null],[12],[1,\\\"\\\\n    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[1,[30,0,[\\\"addtext\\\"]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"item\\\"],false,[\\\"liquid-spacer\\\",\\\"each\\\",\\\"-track-array\\\",\\\"div\\\",\\\"settify-email-input\\\",\\\"i\\\",\\\"action\\\",\\\"button\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/email-list.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/file-virus-scan-status\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"malware-scan-wrapper\">\n    {{#if (has-block)}}\n      {{yield this.displayStatus.fileIsSafe}}\n    {{/if}}\n  \n    {{#if this.displayStatus.message}}\n      <small class=\"malware-scan-status\">\n        {{#if this.displayStatus.icon}}\n          <i class=\"tight fal {{this.displayStatus.icon}}\" aria-hidden=\"true\"/>\n        {{/if}}\n        {{this.displayStatus.message}}\n      </small>\n    {{/if}}\n  </div>\n  \n  */\n  {\n    \"id\": \"oJs1zmyE\",\n    \"block\": \"[[[10,0],[14,0,\\\"malware-scan-wrapper\\\"],[12],[1,\\\"\\\\n\\\"],[41,[48,[30,1]],[[[1,\\\"    \\\"],[18,1,[[30,0,[\\\"displayStatus\\\",\\\"fileIsSafe\\\"]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"displayStatus\\\",\\\"message\\\"]],[[[1,\\\"    \\\"],[10,\\\"small\\\"],[14,0,\\\"malware-scan-status\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"displayStatus\\\",\\\"icon\\\"]],[[[1,\\\"        \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"tight fal \\\",[30,0,[\\\"displayStatus\\\",\\\"icon\\\"]]]]],[14,\\\"aria-hidden\\\",\\\"true\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[1,[30,0,[\\\"displayStatus\\\",\\\"message\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[13],[1,\\\"\\\\n\\\"]],[\\\"&default\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"has-block\\\",\\\"yield\\\",\\\"small\\\",\\\"i\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/file-virus-scan-status.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/formatted-number\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <Input @value={{this.value}} placeholder={{this.placeholder}} id={{this.uniqueID}} class={{this.class}} min={{this.min}} max={{this.max}} maxlength={{this.maxlength}}/>\n  \n  */\n  {\n    \"id\": \"/UWTWiU3\",\n    \"block\": \"[[[8,[39,0],[[16,\\\"placeholder\\\",[30,0,[\\\"placeholder\\\"]]],[16,1,[30,0,[\\\"uniqueID\\\"]]],[16,0,[30,0,[\\\"class\\\"]]],[16,\\\"min\\\",[30,0,[\\\"min\\\"]]],[16,\\\"max\\\",[30,0,[\\\"max\\\"]]],[16,\\\"maxlength\\\",[30,0,[\\\"maxlength\\\"]]]],[[\\\"@value\\\"],[[30,0,[\\\"value\\\"]]]],null],[1,\\\"\\\\n\\\"]],[],false,[\\\"input\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/formatted-number.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/invitation-row-component\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{yield}}\n  */\n  {\n    \"id\": \"PgGmYq9i\",\n    \"block\": \"[[[18,1,null]],[\\\"&default\\\"],false,[\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/invitation-row-component.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/invite-new-client-email\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div id=\"preview-email-css-wrapper\">\n    <p>\n      Dear\n      <span class=\"settify-sensitive\">{{trim @clientFirstName}}</span>,\n    </p>\n    <p>Thank you for allowing {{@firm.name}} to assist you with your matter.</p>\n    {{#if (and @lawyerName @appointmentDate @appointmentTime)}}\n      <p>\n        I confirm you have booked\n        {{#if @initialPhoneMeeting}}\n          a call\n        {{else}}\n          an appointment\n        {{/if}}\n        for\n        {{@formattedAppointmentDate}}\n        at\n        {{@appointmentTime}}.\n        {{#if (and (not @initialPhoneMeeting) (gt @availableOffices.length 1))}}\n          The appointment will be at our\n          {{@selectedOffice.suburb}}\n          offices, at\n          {{#if @selectedOffice.mapURL}}\n            <a href={{@selectedOffice.mapURL}} target=\"_blank\" rel=\"noopener noreferrer\">{{address-string @selectedOffice}}</a>.\n          {{else}}\n            {{address-string @selectedOffice}}.\n          {{/if}}\n        {{/if}}\n        Please allow approximately one hour for this first meeting.\n      </p>\n      {{#if (and @initialPhoneMeeting @includePhoneMeetingMessage @formattedPhoneMeetingMessage)}}\n        {{@formattedPhoneMeetingMessage}}\n      {{/if}}\n      {{#if (and @includeMeetingHyperlink @hyperlinkParsed)}}\n        <p>\n          <a href={{@hyperlinkParsed}} target=\"_blank\" rel=\"noopener noreferrer\">\n            {{or @hyperlinkText @hyperlinkParsed}}\n          </a>\n        </p>\n      {{/if}}\n      {{#unless @model.detailedInductionComplete}}\n        <p>\n          In order to make the most of our time when we first meet, I invite you to complete our short induction questionnaire online.\n        </p>\n        <p>\n          By completing this process in your own time and space, you will enable me to consider some of the key information on your matter ahead of our meeting, so that we can make\n          the most of our initial conference. If you have any problems or queries, I would be happy to address them when we meet.\n        </p>\n      {{/unless}}\n    {{else if @model}}\n      <p>\n        As discussed, the next step is for you to return to our online induction, and either complete the remaining sections, provide more detail where sections were skipped over, or\n        update it to reflect any change in your circumstances. This will be a significant help in gathering the information required to progress your matter, in an efficient and\n        effective manner.\n      </p>\n    {{else}}\n      <p>\n        We invite you to make use of our\n        {{unless @firm.disbursesFees \"free\"}}\n        online induction tool. By answering a few simple questions, you will receive personalized information about the Family Law system in Illinois, and how it might apply in your\n        situation.\n      </p>\n      <p>\n        If you decide you'd like to engage us as your lawyers, you will then have the option of providing your relationship history online. By completing this process in your own\n        time and space, you will enable us to consider some of the key information on your matter before we meet with you. This will help us reduce costs, and get the most out of our\n        initial consultation.\n      </p>\n    {{/if}}\n  \n    {{#if @forceIncludeSettifyButton}}\n      <p>\n        To assist us in preparing for the meeting, we would be grateful if you could return to our online induction, and either complete the remaining sections, provide more detail\n        where sections were skipped over, or update it to reflect any change in your circumstances. This will be a significant help in gathering the information required to progress\n        your matter, in an efficient and effective manner.\n      </p>\n    {{/if}}\n  \n    {{#if (or (not @model.detailedInductionComplete) @forceIncludeSettifyButton (and @model (not @appointmentDate)))}}\n      <div id=\"email_button\" class=\"centertext\">\n        <div class=\"validationbutton\"><p>{{@buttonLabel}}</p></div>\n      </div>\n    {{/if}}\n  \n    <div id=\"optionalExtra\">\n      <LiquidIf @predicate={{not @showOptionalExtra}}>\n        {{#if @formattedOptionalMessage}}\n          {{@formattedOptionalMessage}}\n        {{/if}}\n        <button type=\"button\" {{on \"click\" @toggleOptionalExtra}}>\n          <span class=\"optionalExtraButton clickable underlined\">\n            <i class=\"fal fa-pencil\" />\n            {{#if @optionalExtraMessage}}\n              Edit custom message\n            {{else}}\n              Click here to add a custom message\n            {{/if}}\n          </span>\n        </button>\n      </LiquidIf>\n      <LiquidIf @predicate={{@showOptionalExtra}}>\n        <SettifyTextarea @model={{@optionalExtraMessage}} @max={{16384}} />\n        <button type=\"button\" {{on \"click\" @previewOptionalExtra}}>\n          <span class=\"optionalExtraButton clickable\">\n            <i class=\"fal fa-eye\" />\n            Preview\n          </span>\n        </button>\n        <button type=\"reset\" {{on \"click\" @toggleOptionalExtra}}>\n          <span class=\"optionalExtraButton clickable\">\n            <i class=\"fal fa-times-circle\" />\n            Remove custom message\n          </span>\n        </button>\n      </LiquidIf>\n    </div>\n  \n    {{#if (and @lawyerBio (not @noLawyerBios))}}\n      <div id=\"inviteEmailLawyerBio\" class=\"inviteEmailLawyerBio\">\n        {{#if @lawyerPhotoURL}}\n          <table border=\"0\" class=\"lawyer-bio-table\">\n            <tbody>\n              <tr>\n                <td valign=\"top\" class=\"lawyer-bio-heading\">\n                  <p class=\"purple\">\n                    <strong>{{@lawyerBioHeading}}</strong>\n                  </p>\n                  <p class=\"lawyer-bio-text\">\n                    {{@lawyerBio}}\n                  </p>\n                  {{#if @lawyerReadMoreURL}}\n                    <p>\n                      <a href={{@lawyerReadMoreURL}} target=\"_blank\" rel=\"noopener noreferrer\">Read more...</a>\n                    </p>\n                  {{/if}}\n                </td>\n                <td valign=\"top\" class=\"width-40\">\n                  <img src={{@lawyerPhotoURL}} width=\"200\" alt=\"{{@lawyerName}}\" />\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        {{else}}\n          <p class=\"purple\">\n            <strong>{{@lawyerBioHeading}}</strong>\n          </p>\n          <p class=\"lawyer-bio-text\">\n            {{@lawyerBio}}\n          </p>\n          {{#if @lawyerReadMoreURL}}\n            <p>\n              <a href={{@lawyerReadMoreURL}} target=\"_blank\" rel=\"noopener noreferrer\">Read more...</a>\n            </p>\n          {{/if}}\n        {{/if}}\n      </div>\n    {{/if}}\n  \n    {{#if (and @secondLawyerBio (not @noLawyerBios))}}\n      <div id=\"inviteEmailSecondLawyerBio\" class=\"inviteEmailLawyerBio second-lawyer-bio\">\n        {{#if @secondLawyerPhotoURL}}\n          <table border=\"0\" class=\"lawyer-bio-table\">\n            <tbody>\n              <tr>\n                <td valign=\"top\" class=\"lawyer-bio-heading\">\n                  <p class=\"purple\">\n                    <strong>{{@secondLawyerBioHeading}}</strong>\n                  </p>\n                  <p class=\"lawyer-bio-text\">\n                    {{@secondLawyerBio}}\n                  </p>\n                  {{#if @secondLawyerReadMoreURL}}\n                    <p>\n                      <a href={{@secondLawyerReadMoreURL}} target=\"_blank\" rel=\"noopener noreferrer\">Read more...</a>\n                    </p>\n                  {{/if}}\n                </td>\n                <td valign=\"top\" class=\"width-40\">\n                  <img src={{@secondLawyerPhotoURL}} width=\"200\" alt=\"{{@secondLawyerName}}\" />\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        {{else}}\n          <p class=\"purple\">\n            <strong>{{@secondLawyerBioHeading}}</strong>\n          </p>\n          <p class=\"lawyer-bio-text\">\n            {{@secondLawyerBio}}\n          </p>\n          {{#if @secondLawyerReadMoreURL}}\n            <p>\n              <a href={{@secondLawyerReadMoreURL}} target=\"_blank\" rel=\"noopener noreferrer\">Read more...</a>\n            </p>\n          {{/if}}\n        {{/if}}\n      </div>\n    {{/if}}\n  \n    {{#if (and @lawyerName @appointmentDate @appointmentTime)}}\n      {{#if @model}}\n        <p>\n          I look forward to\n          {{#if @initialPhoneMeeting}}\n            speaking\n          {{else}}\n            meeting\n          {{/if}}\n          with you soon.\n        </p>\n      {{else}}\n        <p>\n          I hope you find our online legal tools easy to use, and I look forward to\n          {{#if @initialPhoneMeeting}}\n            speaking\n          {{else}}\n            meeting\n          {{/if}}\n          with you soon.\n        </p>\n      {{/if}}\n    {{else}}\n      <p>\n        We hope that you find our system helpful, and look forward to assisting you further.\n      </p>\n    {{/if}}\n  \n    {{#if (not-eq @emailSenderName @firm.name)}}\n      <p>Kind regards,</p>\n      <p>\n        {{@emailSenderName}}\n        {{#if @emailSenderTitle}}\n          <br />\n          {{@emailSenderTitle}}\n        {{/if}}\n  \n        {{#if (and (eq @emailSenderName @lawyerName) @lawyerDetails.accreditedSpecialist)}}\n          <p>\n            <img class=\"floatnone\" src=\"https://cdn.settify.com.au/accredited-specialist-{{@lawyerDetails.accreditedSpecialist}}.png\" alt=\"Accredited Specialist\" />\n          </p>\n        {{/if}}\n      </p>\n    {{else}}\n      <p>\n        Yours sincerely,\n      </p>\n    {{/if}}\n  \n    <p>\n      <strong>{{@firm.name}}</strong>\n      <br />\n      <small>\n        {{#if @emailSenderEmail}}\n          {{@emailSenderEmail}}\n          <br />\n        {{/if}}\n        {{#if @emailSenderPhone}}\n          {{@emailSenderPhone}}\n          <br />\n        {{/if}}\n        {{#if (and @lawyerName @appointmentDate @appointmentTime)}}\n          <AddressPrinter @address={{@selectedOffice}} />\n        {{/if}}\n      </small>\n    </p>\n  </div>\n  */\n  {\n    \"id\": \"ls0gTaLt\",\n    \"block\": \"[[[10,0],[14,1,\\\"preview-email-css-wrapper\\\"],[12],[1,\\\"\\\\n  \\\"],[10,2],[12],[1,\\\"\\\\n    Dear\\\\n    \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[28,[35,3],[[30,1]],null]],[13],[1,\\\",\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,2],[12],[1,\\\"Thank you for allowing \\\"],[1,[30,2,[\\\"name\\\"]]],[1,\\\" to assist you with your matter.\\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[30,3],[30,4],[30,5]],null],[[[1,\\\"    \\\"],[10,2],[12],[1,\\\"\\\\n      I confirm you have booked\\\\n\\\"],[41,[30,6],[[[1,\\\"        a call\\\\n\\\"]],[]],[[[1,\\\"        an appointment\\\\n\\\"]],[]]],[1,\\\"      for\\\\n      \\\"],[1,[30,7]],[1,\\\"\\\\n      at\\\\n      \\\"],[1,[30,5]],[1,\\\".\\\\n\\\"],[41,[28,[37,5],[[28,[37,6],[[30,6]],null],[28,[37,7],[[30,8,[\\\"length\\\"]],1],null]],null],[[[1,\\\"        The appointment will be at our\\\\n        \\\"],[1,[30,9,[\\\"suburb\\\"]]],[1,\\\"\\\\n        offices, at\\\\n\\\"],[41,[30,9,[\\\"mapURL\\\"]],[[[1,\\\"          \\\"],[10,3],[15,6,[30,9,[\\\"mapURL\\\"]]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,[28,[35,9],[[30,9]],null]],[13],[1,\\\".\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[1,[28,[35,9],[[30,9]],null]],[1,\\\".\\\\n\\\"]],[]]]],[]],null],[1,\\\"      Please allow approximately one hour for this first meeting.\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[30,6],[30,10],[30,11]],null],[[[1,\\\"      \\\"],[1,[30,11]],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,5],[[30,12],[30,13]],null],[[[1,\\\"      \\\"],[10,2],[12],[1,\\\"\\\\n        \\\"],[10,3],[15,6,[30,13]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[28,[35,10],[[30,14],[30,13]],null]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[51,[30,15,[\\\"detailedInductionComplete\\\"]]],[[[1,\\\"      \\\"],[10,2],[12],[1,\\\"\\\\n        In order to make the most of our time when we first meet, I invite you to complete our short induction questionnaire online.\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        By completing this process in your own time and space, you will enable me to consider some of the key information on your matter ahead of our meeting, so that we can make\\\\n        the most of our initial conference. If you have any problems or queries, I would be happy to address them when we meet.\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],[[[41,[30,15],[[[1,\\\"    \\\"],[10,2],[12],[1,\\\"\\\\n      As discussed, the next step is for you to return to our online induction, and either complete the remaining sections, provide more detail where sections were skipped over, or\\\\n      update it to reflect any change in your circumstances. This will be a significant help in gathering the information required to progress your matter, in an efficient and\\\\n      effective manner.\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[10,2],[12],[1,\\\"\\\\n      We invite you to make use of our\\\\n      \\\"],[1,[52,[51,[30,2,[\\\"disbursesFees\\\"]]],\\\"free\\\"]],[1,\\\"\\\\n      online induction tool. By answering a few simple questions, you will receive personalized information about the Family Law system in Illinois, and how it might apply in your\\\\n      situation.\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,2],[12],[1,\\\"\\\\n      If you decide you'd like to engage us as your lawyers, you will then have the option of providing your relationship history online. By completing this process in your own\\\\n      time and space, you will enable us to consider some of the key information on your matter before we meet with you. This will help us reduce costs, and get the most out of our\\\\n      initial consultation.\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]],[]]],[1,\\\"\\\\n\\\"],[41,[30,16],[[[1,\\\"    \\\"],[10,2],[12],[1,\\\"\\\\n      To assist us in preparing for the meeting, we would be grateful if you could return to our online induction, and either complete the remaining sections, provide more detail\\\\n      where sections were skipped over, or update it to reflect any change in your circumstances. This will be a significant help in gathering the information required to progress\\\\n      your matter, in an efficient and effective manner.\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,10],[[28,[37,6],[[30,15,[\\\"detailedInductionComplete\\\"]]],null],[30,16],[28,[37,5],[[30,15],[28,[37,6],[[30,4]],null]],null]],null],[[[1,\\\"    \\\"],[10,0],[14,1,\\\"email_button\\\"],[14,0,\\\"centertext\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"validationbutton\\\"],[12],[10,2],[12],[1,[30,17]],[13],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[10,0],[14,1,\\\"optionalExtra\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,12],null,[[\\\"@predicate\\\"],[[28,[37,6],[[30,18]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,19],[[[1,\\\"        \\\"],[1,[30,19]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,14],[\\\"click\\\",[30,20]],null],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"optionalExtraButton clickable underlined\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-pencil\\\"],[12],[13],[1,\\\"\\\\n\\\"],[41,[30,21],[[[1,\\\"            Edit custom message\\\\n\\\"]],[]],[[[1,\\\"            Click here to add a custom message\\\\n\\\"]],[]]],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[8,[39,12],null,[[\\\"@predicate\\\"],[[30,18]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[39,16],null,[[\\\"@model\\\",\\\"@max\\\"],[[30,21],16384]],null],[1,\\\"\\\\n      \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,14],[\\\"click\\\",[30,22]],null],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"optionalExtraButton clickable\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-eye\\\"],[12],[13],[1,\\\"\\\\n          Preview\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[11,\\\"button\\\"],[24,4,\\\"reset\\\"],[4,[38,14],[\\\"click\\\",[30,20]],null],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"optionalExtraButton clickable\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-times-circle\\\"],[12],[13],[1,\\\"\\\\n          Remove custom message\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,5],[[30,23],[28,[37,6],[[30,24]],null]],null],[[[1,\\\"    \\\"],[10,0],[14,1,\\\"inviteEmailLawyerBio\\\"],[14,0,\\\"inviteEmailLawyerBio\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,25],[[[1,\\\"        \\\"],[10,\\\"table\\\"],[14,\\\"border\\\",\\\"0\\\"],[14,0,\\\"lawyer-bio-table\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[14,\\\"valign\\\",\\\"top\\\"],[14,0,\\\"lawyer-bio-heading\\\"],[12],[1,\\\"\\\\n                \\\"],[10,2],[14,0,\\\"purple\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"strong\\\"],[12],[1,[30,26]],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,2],[14,0,\\\"lawyer-bio-text\\\"],[12],[1,\\\"\\\\n                  \\\"],[1,[30,23]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,27],[[[1,\\\"                  \\\"],[10,2],[12],[1,\\\"\\\\n                    \\\"],[10,3],[15,6,[30,27]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"Read more...\\\"],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[14,\\\"valign\\\",\\\"top\\\"],[14,0,\\\"width-40\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"img\\\"],[15,\\\"src\\\",[30,25]],[14,\\\"width\\\",\\\"200\\\"],[15,\\\"alt\\\",[29,[[30,3]]]],[12],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,2],[14,0,\\\"purple\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"strong\\\"],[12],[1,[30,26]],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"lawyer-bio-text\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[30,23]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,27],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[10,3],[15,6,[30,27]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"Read more...\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[30,28],[28,[37,6],[[30,24]],null]],null],[[[1,\\\"    \\\"],[10,0],[14,1,\\\"inviteEmailSecondLawyerBio\\\"],[14,0,\\\"inviteEmailLawyerBio second-lawyer-bio\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,29],[[[1,\\\"        \\\"],[10,\\\"table\\\"],[14,\\\"border\\\",\\\"0\\\"],[14,0,\\\"lawyer-bio-table\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[14,\\\"valign\\\",\\\"top\\\"],[14,0,\\\"lawyer-bio-heading\\\"],[12],[1,\\\"\\\\n                \\\"],[10,2],[14,0,\\\"purple\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"strong\\\"],[12],[1,[30,30]],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,2],[14,0,\\\"lawyer-bio-text\\\"],[12],[1,\\\"\\\\n                  \\\"],[1,[30,28]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,31],[[[1,\\\"                  \\\"],[10,2],[12],[1,\\\"\\\\n                    \\\"],[10,3],[15,6,[30,31]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"Read more...\\\"],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[14,\\\"valign\\\",\\\"top\\\"],[14,0,\\\"width-40\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"img\\\"],[15,\\\"src\\\",[30,29]],[14,\\\"width\\\",\\\"200\\\"],[15,\\\"alt\\\",[29,[[30,32]]]],[12],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,2],[14,0,\\\"purple\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"strong\\\"],[12],[1,[30,30]],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"lawyer-bio-text\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[30,28]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,31],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[10,3],[15,6,[30,31]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"Read more...\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[30,3],[30,4],[30,5]],null],[[[41,[30,15],[[[1,\\\"      \\\"],[10,2],[12],[1,\\\"\\\\n        I look forward to\\\\n\\\"],[41,[30,6],[[[1,\\\"          speaking\\\\n\\\"]],[]],[[[1,\\\"          meeting\\\\n\\\"]],[]]],[1,\\\"        with you soon.\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,2],[12],[1,\\\"\\\\n        I hope you find our online legal tools easy to use, and I look forward to\\\\n\\\"],[41,[30,6],[[[1,\\\"          speaking\\\\n\\\"]],[]],[[[1,\\\"          meeting\\\\n\\\"]],[]]],[1,\\\"        with you soon.\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[]],[[[1,\\\"    \\\"],[10,2],[12],[1,\\\"\\\\n      We hope that you find our system helpful, and look forward to assisting you further.\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n\\\"],[41,[28,[37,23],[[30,33],[30,2,[\\\"name\\\"]]],null],[[[1,\\\"    \\\"],[10,2],[12],[1,\\\"Kind regards,\\\"],[13],[1,\\\"\\\\n    \\\"],[10,2],[12],[1,\\\"\\\\n      \\\"],[1,[30,33]],[1,\\\"\\\\n\\\"],[41,[30,34],[[[1,\\\"        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[1,[30,34]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[28,[37,25],[[30,33],[30,3]],null],[30,35,[\\\"accreditedSpecialist\\\"]]],null],[[[1,\\\"        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[10,\\\"img\\\"],[14,0,\\\"floatnone\\\"],[15,\\\"src\\\",[29,[\\\"https://cdn.settify.com.au/accredited-specialist-\\\",[30,35,[\\\"accreditedSpecialist\\\"]],\\\".png\\\"]]],[14,\\\"alt\\\",\\\"Accredited Specialist\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[10,2],[12],[1,\\\"\\\\n      Yours sincerely,\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n  \\\"],[10,2],[12],[1,\\\"\\\\n    \\\"],[10,\\\"strong\\\"],[12],[1,[30,2,[\\\"name\\\"]]],[13],[1,\\\"\\\\n    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,36],[[[1,\\\"        \\\"],[1,[30,36]],[1,\\\"\\\\n        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,37],[[[1,\\\"        \\\"],[1,[30,37]],[1,\\\"\\\\n        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,5],[[30,3],[30,4],[30,5]],null],[[[1,\\\"        \\\"],[8,[39,27],null,[[\\\"@address\\\"],[[30,9]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@clientFirstName\\\",\\\"@firm\\\",\\\"@lawyerName\\\",\\\"@appointmentDate\\\",\\\"@appointmentTime\\\",\\\"@initialPhoneMeeting\\\",\\\"@formattedAppointmentDate\\\",\\\"@availableOffices\\\",\\\"@selectedOffice\\\",\\\"@includePhoneMeetingMessage\\\",\\\"@formattedPhoneMeetingMessage\\\",\\\"@includeMeetingHyperlink\\\",\\\"@hyperlinkParsed\\\",\\\"@hyperlinkText\\\",\\\"@model\\\",\\\"@forceIncludeSettifyButton\\\",\\\"@buttonLabel\\\",\\\"@showOptionalExtra\\\",\\\"@formattedOptionalMessage\\\",\\\"@toggleOptionalExtra\\\",\\\"@optionalExtraMessage\\\",\\\"@previewOptionalExtra\\\",\\\"@lawyerBio\\\",\\\"@noLawyerBios\\\",\\\"@lawyerPhotoURL\\\",\\\"@lawyerBioHeading\\\",\\\"@lawyerReadMoreURL\\\",\\\"@secondLawyerBio\\\",\\\"@secondLawyerPhotoURL\\\",\\\"@secondLawyerBioHeading\\\",\\\"@secondLawyerReadMoreURL\\\",\\\"@secondLawyerName\\\",\\\"@emailSenderName\\\",\\\"@emailSenderTitle\\\",\\\"@lawyerDetails\\\",\\\"@emailSenderEmail\\\",\\\"@emailSenderPhone\\\"],false,[\\\"div\\\",\\\"p\\\",\\\"span\\\",\\\"trim\\\",\\\"if\\\",\\\"and\\\",\\\"not\\\",\\\"gt\\\",\\\"a\\\",\\\"address-string\\\",\\\"or\\\",\\\"unless\\\",\\\"liquid-if\\\",\\\"button\\\",\\\"on\\\",\\\"i\\\",\\\"settify-textarea\\\",\\\"table\\\",\\\"tbody\\\",\\\"tr\\\",\\\"td\\\",\\\"strong\\\",\\\"img\\\",\\\"not-eq\\\",\\\"br\\\",\\\"eq\\\",\\\"small\\\",\\\"address-printer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/invite-new-client-email.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/invoice-item\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <li class={{if this.isExpanded \"expanded\"}}>\n    <a class=\"clickable\" {{action \"displayInvoiceDetails\"}}>{{invoice-item-name this.invoice}}</a>\n    {{#if this.invoice.requestCompleted}}\n      <span title=\"Request completed\">\n        <i class=\"fal fa-check-circle\" />\n      </span>\n    {{/if}}\n    {{#if (and (not (defined this.invoice.requestCompleted)) this.requestSentOlderThan7Days)}}\n      <span title=\"Request not completed and request sent more than a week ago\">\n        <i class=\"fal fa-hourglass-end\" />\n      </span>\n    {{/if}}\n    {{#if this.invoice.unsubscribed}}\n      <span title=\"Unsubscribed\">\n        <i class=\"fal fa-bell-slash\" />\n      </span>\n    {{/if}}\n    <LiquidIf @predicate={{this.isExpanded}}>\n      <div class=\"invoice-details {{if this.isExpanded 'expanded'}}\">\n        <table>\n          <tbody>\n            <tr>\n              <td>Date requested:</td>\n              <td>{{this.dateSent}}</td>\n            </tr>\n            <tr>\n              <td>Request completed (and invoice issued):</td>\n              <td>{{this.dateCompleted}}</td>\n            </tr>\n            {{#if this.invoice.xeroInvoiceNumber}}\n              <tr>\n                <td>Xero invoice number:</td>\n                <td>{{this.invoice.xeroInvoiceNumber}}</td>\n              </tr>\n            {{/if}}\n            <tr>\n              <td>Date unsubscribed:</td>\n              <td>{{this.dateUnsubscribed}}</td>\n            </tr>\n            <tr>\n              <td>Billing portal:</td>\n              <td><a target=\"_blank\" href={{this.billingPortalURL}} rel=\"noopener noreferrer\">Billing portal link</a></td>\n            </tr>\n          </tbody>\n        </table>\n        <LiquidIf @predicate={{this.invoice.requestCompleted}}>\n          <LiquidIf @predicate={{not this.showFailureMessage this.showSuccessMessage}}>\n            <LiquidIf @predicate={{not this.showEmailBox}}>\n              <a class=\"clickable\" {{action \"enterEmails\"}}>\n                <i class=\"fal fa-undo\" />\n                Click here to undo the invoice so the firm can try again\n              </a>\n            </LiquidIf>\n            <LiquidIf @predicate={{this.showEmailBox}}>\n              <p>\n                Undo-ing the invoice allows the firm to have another go at marking the leads as \"became a client\" or \"did not become a client\".\n              </p>\n              <p>\n                We can automatically notify the firm that the invoice has been reset, and send them a link to go back and correct their mistake. Just provide name(s) and email(s)\n                below. (We pre-fill this information using the firm's general contact information, but feel free to pick someone different if you've been contacted by a specific\n                person.)\n              </p>\n              <SettifyTextline @model={{this.names}} @required={{true}} @label=\"Name(s)\" />\n              <SettifyEmailInput @model={{this.emails}} @required={{true}} @allowMultipleEmails={{true}} @label=\"Email address(es)\" @placeholder=\"One or more email addresses\" />\n              <a class=\"clickable undo-link\" {{action \"undoInvoice\"}}><i class=\"fal fa-undo\" /> Undo invoice</a>\n              <a class=\"clickable undo-link negative\" {{action \"hideEmailBox\"}}><i class=\"fal fa-times negative\" />Cancel</a>\n            </LiquidIf>\n          </LiquidIf>}\n          <LoadingDisplay @loading={{this.loading}} @success={{this.showSuccessMessage}} @error={{this.showFailureMessage}} @showError={{true}}>\n            Invoice voided successfully.\n            <br /><br />\n            This page will refresh in a few seconds, and you will see the updated invoice status.\n          </LoadingDisplay>\n        </LiquidIf>\n      </div>\n    </LiquidIf>\n  </li>\n  */\n  {\n    \"id\": \"c/ximTZD\",\n    \"block\": \"[[[10,\\\"li\\\"],[15,0,[52,[30,0,[\\\"isExpanded\\\"]],\\\"expanded\\\"]],[12],[1,\\\"\\\\n  \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,3],[[30,0],\\\"displayInvoiceDetails\\\"],null],[12],[1,[28,[35,4],[[30,0,[\\\"invoice\\\"]]],null]],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"invoice\\\",\\\"requestCompleted\\\"]],[[[1,\\\"    \\\"],[10,1],[14,\\\"title\\\",\\\"Request completed\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,7],[[28,[37,8],[[28,[37,9],[[30,0,[\\\"invoice\\\",\\\"requestCompleted\\\"]]],null]],null],[30,0,[\\\"requestSentOlderThan7Days\\\"]]],null],[[[1,\\\"    \\\"],[10,1],[14,\\\"title\\\",\\\"Request not completed and request sent more than a week ago\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-hourglass-end\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"invoice\\\",\\\"unsubscribed\\\"]],[[[1,\\\"    \\\"],[10,1],[14,\\\"title\\\",\\\"Unsubscribed\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-bell-slash\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[30,0,[\\\"isExpanded\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,0],[15,0,[29,[\\\"invoice-details \\\",[52,[30,0,[\\\"isExpanded\\\"]],\\\"expanded\\\"]]]],[12],[1,\\\"\\\\n      \\\"],[10,\\\"table\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[12],[1,\\\"Date requested:\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[12],[1,[30,0,[\\\"dateSent\\\"]]],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[12],[1,\\\"Request completed (and invoice issued):\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[12],[1,[30,0,[\\\"dateCompleted\\\"]]],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"invoice\\\",\\\"xeroInvoiceNumber\\\"]],[[[1,\\\"            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"Xero invoice number:\\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,[30,0,[\\\"invoice\\\",\\\"xeroInvoiceNumber\\\"]]],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[12],[1,\\\"Date unsubscribed:\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[12],[1,[30,0,[\\\"dateUnsubscribed\\\"]]],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[12],[1,\\\"Billing portal:\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[12],[10,3],[14,\\\"target\\\",\\\"_blank\\\"],[15,6,[30,0,[\\\"billingPortalURL\\\"]]],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"Billing portal link\\\"],[13],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[30,0,[\\\"invoice\\\",\\\"requestCompleted\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[28,[37,8],[[30,0,[\\\"showFailureMessage\\\"]],[30,0,[\\\"showSuccessMessage\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[28,[37,8],[[30,0,[\\\"showEmailBox\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,3],[[30,0],\\\"enterEmails\\\"],null],[12],[1,\\\"\\\\n              \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-undo\\\"],[12],[13],[1,\\\"\\\\n              Click here to undo the invoice so the firm can try again\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showEmailBox\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              Undo-ing the invoice allows the firm to have another go at marking the leads as \\\\\\\"became a client\\\\\\\" or \\\\\\\"did not become a client\\\\\\\".\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              We can automatically notify the firm that the invoice has been reset, and send them a link to go back and correct their mistake. Just provide name(s) and email(s)\\\\n              below. (We pre-fill this information using the firm's general contact information, but feel free to pick someone different if you've been contacted by a specific\\\\n              person.)\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[8,[39,17],null,[[\\\"@model\\\",\\\"@required\\\",\\\"@label\\\"],[[30,0,[\\\"names\\\"]],true,\\\"Name(s)\\\"]],null],[1,\\\"\\\\n            \\\"],[8,[39,18],null,[[\\\"@model\\\",\\\"@required\\\",\\\"@allowMultipleEmails\\\",\\\"@label\\\",\\\"@placeholder\\\"],[[30,0,[\\\"emails\\\"]],true,true,\\\"Email address(es)\\\",\\\"One or more email addresses\\\"]],null],[1,\\\"\\\\n            \\\"],[11,3],[24,0,\\\"clickable undo-link\\\"],[4,[38,3],[[30,0],\\\"undoInvoice\\\"],null],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-undo\\\"],[12],[13],[1,\\\" Undo invoice\\\"],[13],[1,\\\"\\\\n            \\\"],[11,3],[24,0,\\\"clickable undo-link negative\\\"],[4,[38,3],[[30,0],\\\"hideEmailBox\\\"],null],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-times negative\\\"],[12],[13],[1,\\\"Cancel\\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"}\\\\n        \\\"],[8,[39,19],null,[[\\\"@loading\\\",\\\"@success\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,0,[\\\"loading\\\"]],[30,0,[\\\"showSuccessMessage\\\"]],[30,0,[\\\"showFailureMessage\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          Invoice voided successfully.\\\\n          \\\"],[10,\\\"br\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n          This page will refresh in a few seconds, and you will see the updated invoice status.\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[13]],[],false,[\\\"li\\\",\\\"if\\\",\\\"a\\\",\\\"action\\\",\\\"invoice-item-name\\\",\\\"span\\\",\\\"i\\\",\\\"and\\\",\\\"not\\\",\\\"defined\\\",\\\"liquid-if\\\",\\\"div\\\",\\\"table\\\",\\\"tbody\\\",\\\"tr\\\",\\\"td\\\",\\\"p\\\",\\\"settify-textline\\\",\\\"settify-email-input\\\",\\\"loading-display\\\",\\\"br\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/invoice-item.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/lead-billing-options\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <LiquidIf @predicate={{this.showBillingStatusOptions}}>\n    {{#if this.displayOnly}}\n      <span class=\"conversion-bubble clickable\" {{action (if this.lead.editingNotes 'cancelEditClientNotes' 'editClientNotes') this.lead}}>\n        <i class=\"fal fa-{{this.leadsBillingType.icon}}\" /> {{this.leadsBillingType.displayName}}\n      </span>\n    {{else}}\n      <div class=\"lead-billing\">\n        <p style=\"margin-bottom: 5px\">\n          <small>Billing Status:</small>\n          {{#if this.isBillingStatusLocked}}\n            <span class=\"conversion-bubble\"><i class=\"fal fa-lock\"/>{{this.leadsBillingType.displayName}}</span>\n          {{else if (and this.billingInvoiceType (not this.editingBilling))}}\n            <span class=\"conversion-bubble\">\n              <i class=\"fal fa-{{this.leadsBillingType.icon}}\" /> {{this.leadsBillingType.displayName}}\n            </span>\n            <a class=\"clickable\" title=\"Discard changes\" style=\"font-size: 12px; opacity: 0.8;\" {{action 'editLeadType'}}>(edit)</a>\n          {{else}}\n            {{#each this.conversionTypesForLead as |type|}}\n              <span title=\"{{type.description}}\" {{action 'setInvoiceType' this.lead type}} class=\"conversion-bubble clickable\">\n                <i class=\"fal fa-{{type.fontawesome}}\"/> {{type.longName}}\n              </span>\n            {{/each}}\n            {{#if this.editingBilling}}\n              <a class=\"clickable\" title=\"Discard changes\" style=\"font-size: 11px; opacity: 0.8;\" {{action 'editLeadType'}}>(cancel)</a>\n            {{/if}}\n            {{#if this.updatingLeadBilling}}\n              <i class=\"fal fa-spinner fa-spin\" style=\"min-width: unset; margin: 0; font-size: 11px;\"/>\n            {{/if}}\n          {{/if}}\n        </p>\n      </div>\n    {{/if}}\n  </LiquidIf>\n  \n  */\n  {\n    \"id\": \"eN7WSCwZ\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showBillingStatusOptions\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"displayOnly\\\"]],[[[1,\\\"    \\\"],[11,1],[24,0,\\\"conversion-bubble clickable\\\"],[4,[38,3],[[30,0],[52,[30,0,[\\\"lead\\\",\\\"editingNotes\\\"]],\\\"cancelEditClientNotes\\\",\\\"editClientNotes\\\"],[30,0,[\\\"lead\\\"]]],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-\\\",[30,0,[\\\"leadsBillingType\\\",\\\"icon\\\"]]]]],[12],[13],[1,\\\" \\\"],[1,[30,0,[\\\"leadsBillingType\\\",\\\"displayName\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"lead-billing\\\"],[12],[1,\\\"\\\\n      \\\"],[10,2],[14,5,\\\"margin-bottom: 5px\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"small\\\"],[12],[1,\\\"Billing Status:\\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"isBillingStatusLocked\\\"]],[[[1,\\\"          \\\"],[10,1],[14,0,\\\"conversion-bubble\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-lock\\\"],[12],[13],[1,[30,0,[\\\"leadsBillingType\\\",\\\"displayName\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,0,[\\\"billingInvoiceType\\\"]],[28,[37,9],[[30,0,[\\\"editingBilling\\\"]]],null]],null],[[[1,\\\"          \\\"],[10,1],[14,0,\\\"conversion-bubble\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-\\\",[30,0,[\\\"leadsBillingType\\\",\\\"icon\\\"]]]]],[12],[13],[1,\\\" \\\"],[1,[30,0,[\\\"leadsBillingType\\\",\\\"displayName\\\"]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[11,3],[24,0,\\\"clickable\\\"],[24,\\\"title\\\",\\\"Discard changes\\\"],[24,5,\\\"font-size: 12px; opacity: 0.8;\\\"],[4,[38,3],[[30,0],\\\"editLeadType\\\"],null],[12],[1,\\\"(edit)\\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[42,[28,[37,12],[[28,[37,12],[[30,0,[\\\"conversionTypesForLead\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[11,1],[16,\\\"title\\\",[29,[[30,1,[\\\"description\\\"]]]]],[24,0,\\\"conversion-bubble clickable\\\"],[4,[38,3],[[30,0],\\\"setInvoiceType\\\",[30,0,[\\\"lead\\\"]],[30,1]],null],[12],[1,\\\"\\\\n              \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-\\\",[30,1,[\\\"fontawesome\\\"]]]]],[12],[13],[1,\\\" \\\"],[1,[30,1,[\\\"longName\\\"]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[41,[30,0,[\\\"editingBilling\\\"]],[[[1,\\\"            \\\"],[11,3],[24,0,\\\"clickable\\\"],[24,\\\"title\\\",\\\"Discard changes\\\"],[24,5,\\\"font-size: 11px; opacity: 0.8;\\\"],[4,[38,3],[[30,0],\\\"editLeadType\\\"],null],[12],[1,\\\"(cancel)\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"updatingLeadBilling\\\"]],[[[1,\\\"            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-spinner fa-spin\\\"],[14,5,\\\"min-width: unset; margin: 0; font-size: 11px;\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"]],[]]]],[]]],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[]]]]],[1,\\\"\\\\n\\\"]],[\\\"type\\\"],false,[\\\"liquid-if\\\",\\\"if\\\",\\\"span\\\",\\\"action\\\",\\\"i\\\",\\\"div\\\",\\\"p\\\",\\\"small\\\",\\\"and\\\",\\\"not\\\",\\\"a\\\",\\\"each\\\",\\\"-track-array\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/lead-billing-options.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/line-icon\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <img class=\"summary-icon-image {{if @large \"large\"}} {{if @inline \"inline\"}} {{if @slidingScale \"sliding-scale\"}}\" id={{@id}} alt=\"\" src={{this.imgSrc}} style={{this.style}}>\n  \n  */\n  {\n    \"id\": \"sMtEwW4N\",\n    \"block\": \"[[[10,\\\"img\\\"],[15,0,[29,[\\\"summary-icon-image \\\",[52,[30,1],\\\"large\\\"],\\\" \\\",[52,[30,2],\\\"inline\\\"],\\\" \\\",[52,[30,3],\\\"sliding-scale\\\"]]]],[15,1,[30,4]],[14,\\\"alt\\\",\\\"\\\"],[15,\\\"src\\\",[30,0,[\\\"imgSrc\\\"]]],[15,5,[30,0,[\\\"style\\\"]]],[12],[13],[1,\\\"\\\\n\\\"]],[\\\"@large\\\",\\\"@inline\\\",\\\"@slidingScale\\\",\\\"@id\\\"],false,[\\\"img\\\",\\\"if\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/line-icon.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/loading-display\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <LiquidIf @predicate={{@loading}}>\n    <LoadingSpinner />\n  </LiquidIf>\n  <LiquidIf @predicate={{and @success (not @hideSuccess)}}>\n    <p>\n      <i class=\"fal fa-check-circle\" />\n      {{yield}}\n    </p>\n  </LiquidIf>\n  <LiquidIf @predicate={{and @error @showError}}>\n    <p>\n      <i class=\"fal fa-times-circle negative\" />\n      <b>Error:</b>\n      {{@error}}\n    </p>\n  </LiquidIf>\n  */\n  {\n    \"id\": \"MSEWxtoK\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@predicate\\\"],[[30,1]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[39,1],null,null,null],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"],[8,[39,0],null,[[\\\"@predicate\\\"],[[28,[37,2],[[30,2],[28,[37,3],[[30,3]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,2],[12],[1,\\\"\\\\n    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[18,6,null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"],[8,[39,0],null,[[\\\"@predicate\\\"],[[28,[37,2],[[30,4],[30,5]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,2],[12],[1,\\\"\\\\n    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-times-circle negative\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[10,\\\"b\\\"],[12],[1,\\\"Error:\\\"],[13],[1,\\\"\\\\n    \\\"],[1,[30,4]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"@loading\\\",\\\"@success\\\",\\\"@hideSuccess\\\",\\\"@error\\\",\\\"@showError\\\",\\\"&default\\\"],false,[\\\"liquid-if\\\",\\\"loading-spinner\\\",\\\"and\\\",\\\"not\\\",\\\"p\\\",\\\"i\\\",\\\"yield\\\",\\\"b\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/loading-display.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/loading-spinner\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"loading-container\">\n    <div class=\"spinner\">\n      <span></span>\n      <span></span>\n      <span></span>\n      <span></span>\n    </div>\n  </div>\n  \n  */\n  {\n    \"id\": \"JibbgRJp\",\n    \"block\": \"[[[10,0],[14,0,\\\"loading-container\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"spinner\\\"],[12],[1,\\\"\\\\n    \\\"],[10,1],[12],[13],[1,\\\"\\\\n    \\\"],[10,1],[12],[13],[1,\\\"\\\\n    \\\"],[10,1],[12],[13],[1,\\\"\\\\n    \\\"],[10,1],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[],false,[\\\"div\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/loading-spinner.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/no-information\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <span class=\"no-information-provided\">(No information provided)</span>\n  \n  */\n  {\n    \"id\": \"qmny6nqE\",\n    \"block\": \"[[[10,1],[14,0,\\\"no-information-provided\\\"],[12],[1,\\\"(No information provided)\\\"],[13],[1,\\\"\\\\n\\\"]],[],false,[\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/no-information.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/page-from-form\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.page}}\n    {{#unless this.onlyDisplayQuestions}}\n      {{#if this.page.icon}}\n        <LineIcon @src={{sum \"https://cdn.settify.com.au/icons/\" (de-fingerprint this.page.icon)}} />\n      {{/if}}\n      {{#if this.page.title}}\n        <h3\n          style={{if this.page.helpText \"display:inline-block\" \"\"}}\n          class=\"{{if this.summaryMode 'summary-mode' ''}} {{if (and this.page.bannerTitle this.summaryMode) 'banner-title' ''}}\"\n        >\n          {{!-- <span class=\"debug\">P{{pageIndex}}:</span> --}}\n          {{parse-text this.page.title touch=this.client.touch model=this.model clientRecord=this.client context=this.context}}\n        </h3>\n      {{/if}}\n      {{#if this.page.helpText}}\n        <HelpTextIcon @helpText={{this.page.helpText}} @lawyerName={{this.client.helpTextIconLawyerName}} />\n      {{/if}}\n    {{/unless}}\n  \n    {{#unless this.onlyDisplayHeading}}\n      <LiquidBind @value={{this.loop}}>\n        {{#each this.page.questions as |q|}}\n          {{#if (or (not this.onlyDisplayQuestions) (and this.onlyDisplayQuestions (eq q.id this.context.question)))}}\n            {{#if @useNewSwitcher}}\n              <V2::QuestionTypeSwitcher\n                @question={{q}}\n                @model={{this.model}}\n                @clientRecord={{this.client}}\n                @context={{this.context}}\n                @displayOnly={{this.displayOnly}}\n                @adminMode={{this.adminMode}}\n                @practiceAreaSettings={{this.practiceAreaSettings}}\n              />\n            {{else}}\n              <SettifyInputSwitcher\n                @question={{q}}\n                @model={{this.model}}\n                @clientRecord={{this.client}}\n                @context={{this.context}}\n                @displayOnly={{this.displayOnly}}\n                @adminMode={{this.adminMode}}\n                @practiceAreaSettings={{this.practiceAreaSettings}}\n              />\n            {{/if}}\n          {{/if}}\n        {{/each}}\n      </LiquidBind>\n    {{/unless}}\n  \n  {{else}}\n    <h3>No page found</h3>\n    <p>Please make sure you are using the correct context to render a page</p>\n  \n    {{#if this.missingError}}\n      <p>You need to pass through the {{this.missingError}}</p>\n    {{/if}}\n  {{/if}}\n  */\n  {\n    \"id\": \"pPa2vkZI\",\n    \"block\": \"[[[41,[30,0,[\\\"page\\\"]],[[[41,[51,[30,0,[\\\"onlyDisplayQuestions\\\"]]],[[[41,[30,0,[\\\"page\\\",\\\"icon\\\"]],[[[1,\\\"      \\\"],[8,[39,2],null,[[\\\"@src\\\"],[[28,[37,3],[\\\"https://cdn.settify.com.au/icons/\\\",[28,[37,4],[[30,0,[\\\"page\\\",\\\"icon\\\"]]],null]],null]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"page\\\",\\\"title\\\"]],[[[1,\\\"      \\\"],[10,\\\"h3\\\"],[15,5,[52,[30,0,[\\\"page\\\",\\\"helpText\\\"]],\\\"display:inline-block\\\",\\\"\\\"]],[15,0,[29,[[52,[30,0,[\\\"summaryMode\\\"]],\\\"summary-mode\\\",\\\"\\\"],\\\" \\\",[52,[28,[37,6],[[30,0,[\\\"page\\\",\\\"bannerTitle\\\"]],[30,0,[\\\"summaryMode\\\"]]],null],\\\"banner-title\\\",\\\"\\\"]]]],[12],[1,\\\"\\\\n\\\"],[1,\\\"        \\\"],[1,[28,[35,7],[[30,0,[\\\"page\\\",\\\"title\\\"]]],[[\\\"touch\\\",\\\"model\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"client\\\",\\\"touch\\\"]],[30,0,[\\\"model\\\"]],[30,0,[\\\"client\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"page\\\",\\\"helpText\\\"]],[[[1,\\\"      \\\"],[8,[39,8],null,[[\\\"@helpText\\\",\\\"@lawyerName\\\"],[[30,0,[\\\"page\\\",\\\"helpText\\\"]],[30,0,[\\\"client\\\",\\\"helpTextIconLawyerName\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"onlyDisplayHeading\\\"]]],[[[1,\\\"    \\\"],[8,[39,9],null,[[\\\"@value\\\"],[[30,0,[\\\"loop\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"page\\\",\\\"questions\\\"]]],null]],null],null,[[[41,[28,[37,12],[[28,[37,13],[[30,0,[\\\"onlyDisplayQuestions\\\"]]],null],[28,[37,6],[[30,0,[\\\"onlyDisplayQuestions\\\"]],[28,[37,14],[[30,1,[\\\"id\\\"]],[30,0,[\\\"context\\\",\\\"question\\\"]]],null]],null]],null],[[[41,[30,2],[[[1,\\\"            \\\"],[8,[39,15],null,[[\\\"@question\\\",\\\"@model\\\",\\\"@clientRecord\\\",\\\"@context\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\",\\\"@practiceAreaSettings\\\"],[[30,1],[30,0,[\\\"model\\\"]],[30,0,[\\\"client\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"            \\\"],[8,[39,16],null,[[\\\"@question\\\",\\\"@model\\\",\\\"@clientRecord\\\",\\\"@context\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\",\\\"@practiceAreaSettings\\\"],[[30,1],[30,0,[\\\"model\\\"]],[30,0,[\\\"client\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]]]],[]],null]],[1]],null],[1,\\\"    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"  \\\"],[10,\\\"h3\\\"],[12],[1,\\\"No page found\\\"],[13],[1,\\\"\\\\n  \\\"],[10,2],[12],[1,\\\"Please make sure you are using the correct context to render a page\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"missingError\\\"]],[[[1,\\\"    \\\"],[10,2],[12],[1,\\\"You need to pass through the \\\"],[1,[30,0,[\\\"missingError\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]]],[\\\"q\\\",\\\"@useNewSwitcher\\\"],false,[\\\"if\\\",\\\"unless\\\",\\\"line-icon\\\",\\\"sum\\\",\\\"de-fingerprint\\\",\\\"h3\\\",\\\"and\\\",\\\"parse-text\\\",\\\"help-text-icon\\\",\\\"liquid-bind\\\",\\\"each\\\",\\\"-track-array\\\",\\\"or\\\",\\\"not\\\",\\\"eq\\\",\\\"v2/question-type-switcher\\\",\\\"settify-input-switcher\\\",\\\"p\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/page-from-form.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/periodic-payment\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.displayOnly}}\n    <div class=\"readonly-textarea\">\n      {{#if (defined this.value)}}\n        {{format-number this.value money=true}} per\n        {{#if (defined this.timeperiod)}}\n          {{this.timeperiod}}\n        {{else}}\n          <NoInformation />\n        {{/if}}\n      {{else}}\n        <NoInformation />\n      {{/if}}\n    </div>\n  {{else}}\n    <div class=\"form-group flex-top\">\n      <div class=\"periodic-payment-value\">\n        <SettifyNumber @model={{this.value}} @placeholder=\"$\" @money={{true}} @min={{0}} @displayOnly={{this.displayOnly}} />\n      </div>\n      <div class=\"periodic-payment-per\">\n        per\n      </div>\n      <div class=\"periodic-payment-timeperiod\">\n        <SettifySelect @label=\"\" @model={{this.timeperiod}} @name=\"timeperiod\" @content={{this.timePeriods}} @labelPath=\"label\" @valuePath=\"value\" />\n      </div>\n    </div>\n    {{yield}}\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"hyGjQaK6\",\n    \"block\": \"[[[41,[30,0,[\\\"displayOnly\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"readonly-textarea\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,2],[[30,0,[\\\"value\\\"]]],null],[[[1,\\\"      \\\"],[1,[28,[35,3],[[30,0,[\\\"value\\\"]]],[[\\\"money\\\"],[true]]]],[1,\\\" per\\\\n\\\"],[41,[28,[37,2],[[30,0,[\\\"timeperiod\\\"]]],null],[[[1,\\\"        \\\"],[1,[30,0,[\\\"timeperiod\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[8,[39,4],null,null,null],[1,\\\"\\\\n\\\"]],[]]]],[]],[[[1,\\\"      \\\"],[8,[39,4],null,null,null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"form-group flex-top\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"periodic-payment-value\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,5],null,[[\\\"@model\\\",\\\"@placeholder\\\",\\\"@money\\\",\\\"@min\\\",\\\"@displayOnly\\\"],[[30,0,[\\\"value\\\"]],\\\"$\\\",true,0,[30,0,[\\\"displayOnly\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"periodic-payment-per\\\"],[12],[1,\\\"\\\\n      per\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"periodic-payment-timeperiod\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,6],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@name\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"\\\",[30,0,[\\\"timeperiod\\\"]],\\\"timeperiod\\\",[30,0,[\\\"timePeriods\\\"]],\\\"label\\\",\\\"value\\\"]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[18,1,null],[1,\\\"\\\\n\\\"]],[]]]],[\\\"&default\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"defined\\\",\\\"format-number\\\",\\\"no-information\\\",\\\"settify-number\\\",\\\"settify-select\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/periodic-payment.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/pms-settings-inputs-actionstep\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <SettifyTextline @label=\"Webform URL\" @model={{mut this.pmsSettingsModel.webformURL}} @disabled={{true}} @placeholder={{this.options.webformURL}} />\n  <SettifyTextline\n    @label=\"Organisation key\"\n    @model={{mut this.pmsSettingsModel.organisationKey}}\n    @placeholder=\"'value' of <input type='hidden' name='organization_key' from webform\"\n  />\n  <SettifyTextline @label=\"Webform UID\" @model={{mut this.pmsSettingsModel.webformUID}} @placeholder=\"'value' of <input type='hidden' name='uid' from webform\" />\n  <SettifyTextline @label=\"Client Prefix\" @model={{mut this.pmsSettingsModel.clientPrefix}} @placeholder=\"p27__\" />\n  <SettifyTextline @label=\"Spouse Prefix\" @model={{mut this.pmsSettingsModel.spousePrefix}} @placeholder=\"p36__\" />\n  \n  */\n  {\n    \"id\": \"pPBKTDsH\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@disabled\\\",\\\"@placeholder\\\"],[\\\"Webform URL\\\",[28,[37,1],[[30,0,[\\\"pmsSettingsModel\\\",\\\"webformURL\\\"]]],null],true,[30,0,[\\\"options\\\",\\\"webformURL\\\"]]]],null],[1,\\\"\\\\n\\\"],[8,[39,0],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@placeholder\\\"],[\\\"Organisation key\\\",[28,[37,1],[[30,0,[\\\"pmsSettingsModel\\\",\\\"organisationKey\\\"]]],null],\\\"'value' of <input type='hidden' name='organization_key' from webform\\\"]],null],[1,\\\"\\\\n\\\"],[8,[39,0],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@placeholder\\\"],[\\\"Webform UID\\\",[28,[37,1],[[30,0,[\\\"pmsSettingsModel\\\",\\\"webformUID\\\"]]],null],\\\"'value' of <input type='hidden' name='uid' from webform\\\"]],null],[1,\\\"\\\\n\\\"],[8,[39,0],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@placeholder\\\"],[\\\"Client Prefix\\\",[28,[37,1],[[30,0,[\\\"pmsSettingsModel\\\",\\\"clientPrefix\\\"]]],null],\\\"p27__\\\"]],null],[1,\\\"\\\\n\\\"],[8,[39,0],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@placeholder\\\"],[\\\"Spouse Prefix\\\",[28,[37,1],[[30,0,[\\\"pmsSettingsModel\\\",\\\"spousePrefix\\\"]]],null],\\\"p36__\\\"]],null],[1,\\\"\\\\n\\\"]],[],false,[\\\"settify-textline\\\",\\\"mut\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/pms-settings-inputs-actionstep.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/pms-settings-inputs-webhook\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <SettifyTextline @label=\"Short name\" @model={{mut this.pmsSettingsModel.name}} @placeholder=\"somedomain\" />\n  <LiquidIf @predicate={{gt this.pmsSettingsModel.name.length 10}}>\n    <p><small>Short name validation failed. Maximum of 10 characters allowed.</small></p>\n  </LiquidIf>\n  <SettifyTextline @label=\"Domain (include the 'https://' prefix)\" @model={{mut this.pmsSettingsModel.URL}} @placeholder=\"https://somedomain.com/endpoint\" />\n  <LiquidIf @predicate={{and this.pmsSettingsModel.URL (not this.isValidURL)}}>\n    <p><small>Invalid URL</small></p>\n  </LiquidIf>\n  <SettifySelect @label=\"Content type\" @model={{mut this.pmsSettingsModel.type}} @content={{this.options.type}} @labelPath=\"label\" @valuePath=\"value\" />\n  */\n  {\n    \"id\": \"CPjsbh9O\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@placeholder\\\"],[\\\"Short name\\\",[28,[37,1],[[30,0,[\\\"pmsSettingsModel\\\",\\\"name\\\"]]],null],\\\"somedomain\\\"]],null],[1,\\\"\\\\n\\\"],[8,[39,2],null,[[\\\"@predicate\\\"],[[28,[37,3],[[30,0,[\\\"pmsSettingsModel\\\",\\\"name\\\",\\\"length\\\"]],10],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[1,\\\"Short name validation failed. Maximum of 10 characters allowed.\\\"],[13],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"],[8,[39,0],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@placeholder\\\"],[\\\"Domain (include the 'https://' prefix)\\\",[28,[37,1],[[30,0,[\\\"pmsSettingsModel\\\",\\\"URL\\\"]]],null],\\\"https://somedomain.com/endpoint\\\"]],null],[1,\\\"\\\\n\\\"],[8,[39,2],null,[[\\\"@predicate\\\"],[[28,[37,6],[[30,0,[\\\"pmsSettingsModel\\\",\\\"URL\\\"]],[28,[37,7],[[30,0,[\\\"isValidURL\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[1,\\\"Invalid URL\\\"],[13],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"],[8,[39,8],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\"],[\\\"Content type\\\",[28,[37,1],[[30,0,[\\\"pmsSettingsModel\\\",\\\"type\\\"]]],null],[30,0,[\\\"options\\\",\\\"type\\\"]],\\\"label\\\",\\\"value\\\"]],null]],[],false,[\\\"settify-textline\\\",\\\"mut\\\",\\\"liquid-if\\\",\\\"gt\\\",\\\"p\\\",\\\"small\\\",\\\"and\\\",\\\"not\\\",\\\"settify-select\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/pms-settings-inputs-webhook.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/postal-address-select\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if @displayOnly}}\n    <PropertyAddress @address={{@postalAddress}} @displayOnly={{@displayOnly}} @label={{@label}} @hideunknown={{true}} @notSureModel={{@notSureModel}} @required={{@required}} />\n  {{else}}\n    {{#if (non-empty-string @label)}}\n      {{@label}}\n    {{else if (has-block)}}\n      {{yield}}\n    {{/if}}\n    {{#if @required}}\n      <span class=\"required-field-marker {{if this.allFieldsProvided 'required-field-provided'}}\"></span>\n    {{/if}}\n    <LiquidIf @predicate={{or (not @notSureModel) @notSureOptionDoesNotHideComponent}}>\n      <HelpTextIcon @helpText={{@helpText}} @displayOnly={{@displayOnly}} />\n      {{#if this.userAddresses.length}}\n        {{#each this.userAddresses as |add|}}\n          <RadioButtons\n            @text={{add.label}}\n            @onChange={{action \"selectAddress\" add.id}}\n            @model={{this.whichAddress}}\n            @value={{add.id}}\n            @unselectable={{true}}\n            @displayOnly={{@displayOnly}}\n          />\n        {{/each}}\n        <LiquidIf @predicate={{and this.whichAddress (not-eq this.whichAddress \"addnew\")}}>\n          <button type=\"button\" class=\"small\" {{on \"click\" (action \"toggleEditAddress\")}}>\n            <i class=\"fal fa-pencil\" />\n            Edit this address\n          </button>\n        </LiquidIf>\n        {{#unless this.effectivelyEmptyAddressList}}\n          <RadioButtons @text=\"A different address\" @model={{this.whichAddress}} @value=\"addnew\" @unselectable={{true}} />\n        {{/unless}}\n      {{/if}}\n  \n      <LiquidIf @predicate={{or this.showEditAddress (eq this.whichAddress \"addnew\")}}>\n        <PropertyAddress\n          @address={{@postalAddress}}\n          @displayOnly={{@displayOnly}}\n          @required={{@required}}\n          @detailed={{@detailed}}\n          @addressOptions={{@addressOptions}}\n          @hideunknown={{true}}\n          @autoComplete={{this.autoComplete}}\n          @onChange={{action \"selectAddress\" \"addnew\"}}\n        />\n      </LiquidIf>\n    </LiquidIf>\n  \n    <LiquidIf @predicate={{and @notSureOption}}>\n      <CheckBox @text={{or @notSureOptionText \"I'm not sure\"}} @model={{@notSureModel}} @onChange={{@onChange}} />\n    </LiquidIf>\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"4/0E8Anl\",\n    \"block\": \"[[[41,[30,1],[[[1,\\\"  \\\"],[8,[39,1],null,[[\\\"@address\\\",\\\"@displayOnly\\\",\\\"@label\\\",\\\"@hideunknown\\\",\\\"@notSureModel\\\",\\\"@required\\\"],[[30,2],[30,1],[30,3],true,[30,4],[30,5]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,3]],null],[[[1,\\\"    \\\"],[1,[30,3]],[1,\\\"\\\\n\\\"]],[]],[[[41,[48,[30,14]],[[[1,\\\"    \\\"],[18,14,null],[1,\\\"\\\\n  \\\"]],[]],null]],[]]],[41,[30,5],[[[1,\\\"    \\\"],[10,1],[15,0,[29,[\\\"required-field-marker \\\",[52,[30,0,[\\\"allFieldsProvided\\\"]],\\\"required-field-provided\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[8,[39,6],null,[[\\\"@predicate\\\"],[[28,[37,7],[[28,[37,8],[[30,4]],null],[30,6]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[39,9],null,[[\\\"@helpText\\\",\\\"@displayOnly\\\"],[[30,7],[30,1]]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"userAddresses\\\",\\\"length\\\"]],[[[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"userAddresses\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[8,[39,12],null,[[\\\"@text\\\",\\\"@onChange\\\",\\\"@model\\\",\\\"@value\\\",\\\"@unselectable\\\",\\\"@displayOnly\\\"],[[30,8,[\\\"label\\\"]],[28,[37,13],[[30,0],\\\"selectAddress\\\",[30,8,[\\\"id\\\"]]],null],[30,0,[\\\"whichAddress\\\"]],[30,8,[\\\"id\\\"]],true,[30,1]]],null],[1,\\\"\\\\n\\\"]],[8]],null],[1,\\\"      \\\"],[8,[39,6],null,[[\\\"@predicate\\\"],[[28,[37,14],[[30,0,[\\\"whichAddress\\\"]],[28,[37,15],[[30,0,[\\\"whichAddress\\\"]],\\\"addnew\\\"],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[11,\\\"button\\\"],[24,0,\\\"small\\\"],[24,4,\\\"button\\\"],[4,[38,17],[\\\"click\\\",[28,[37,13],[[30,0],\\\"toggleEditAddress\\\"],null]],null],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-pencil\\\"],[12],[13],[1,\\\"\\\\n          Edit this address\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"effectivelyEmptyAddressList\\\"]]],[[[1,\\\"        \\\"],[8,[39,12],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\",\\\"@unselectable\\\"],[\\\"A different address\\\",[30,0,[\\\"whichAddress\\\"]],\\\"addnew\\\",true]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"\\\\n    \\\"],[8,[39,6],null,[[\\\"@predicate\\\"],[[28,[37,7],[[30,0,[\\\"showEditAddress\\\"]],[28,[37,20],[[30,0,[\\\"whichAddress\\\"]],\\\"addnew\\\"],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[39,1],null,[[\\\"@address\\\",\\\"@displayOnly\\\",\\\"@required\\\",\\\"@detailed\\\",\\\"@addressOptions\\\",\\\"@hideunknown\\\",\\\"@autoComplete\\\",\\\"@onChange\\\"],[[30,2],[30,1],[30,5],[30,9],[30,10],true,[30,0,[\\\"autoComplete\\\"]],[28,[37,13],[[30,0],\\\"selectAddress\\\",\\\"addnew\\\"],null]]],null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\\n  \\\"],[8,[39,6],null,[[\\\"@predicate\\\"],[[28,[37,14],[[30,11]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[39,21],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@onChange\\\"],[[28,[37,7],[[30,12],\\\"I'm not sure\\\"],null],[30,4],[30,13]]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]],[\\\"@displayOnly\\\",\\\"@postalAddress\\\",\\\"@label\\\",\\\"@notSureModel\\\",\\\"@required\\\",\\\"@notSureOptionDoesNotHideComponent\\\",\\\"@helpText\\\",\\\"add\\\",\\\"@detailed\\\",\\\"@addressOptions\\\",\\\"@notSureOption\\\",\\\"@notSureOptionText\\\",\\\"@onChange\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"property-address\\\",\\\"non-empty-string\\\",\\\"has-block\\\",\\\"yield\\\",\\\"span\\\",\\\"liquid-if\\\",\\\"or\\\",\\\"not\\\",\\\"help-text-icon\\\",\\\"each\\\",\\\"-track-array\\\",\\\"radio-buttons\\\",\\\"action\\\",\\\"and\\\",\\\"not-eq\\\",\\\"button\\\",\\\"on\\\",\\\"i\\\",\\\"unless\\\",\\\"eq\\\",\\\"check-box\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/postal-address-select.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/powered-by-settify-div\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"centertext\">\n    <p>\n      <PoweredBySettify />\n    </p>\n  </div>\n  \n  */\n  {\n    \"id\": \"RStC7G4Q\",\n    \"block\": \"[[[10,0],[14,0,\\\"centertext\\\"],[12],[1,\\\"\\\\n  \\\"],[10,2],[12],[1,\\\"\\\\n    \\\"],[8,[39,2],null,null,null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[],false,[\\\"div\\\",\\\"p\\\",\\\"powered-by-settify\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/powered-by-settify-div.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/powered-by-settify\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <small class=\"powered-by-text\">\n    <LinkTo @route=\"yourinformation\">powered by <img class=\"powered-by-image\" src=\"/assets/images/settify-logo.png\" alt=\"Powered by Settify\"></LinkTo>\n  </small>\n  \n  */\n  {\n    \"id\": \"bFLAQhtz\",\n    \"block\": \"[[[10,\\\"small\\\"],[14,0,\\\"powered-by-text\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[39,1],null,[[\\\"@route\\\"],[\\\"yourinformation\\\"]],[[\\\"default\\\"],[[[[1,\\\"powered by \\\"],[10,\\\"img\\\"],[14,0,\\\"powered-by-image\\\"],[14,\\\"src\\\",\\\"/assets/images/settify-logo.png\\\"],[14,\\\"alt\\\",\\\"Powered by Settify\\\"],[12],[13]],[]]]]],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[],false,[\\\"small\\\",\\\"link-to\\\",\\\"img\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/powered-by-settify.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/preferred-office\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (gt this.firm.addresses.length 1)}}\n    <p data-test-preferred-office-wrapper>\n      {{#if this.required}}\n        Which of our offices will you visit?<span class=\"required-field-marker {{if this.model.preferredOffice 'required-field-provided'}}\"></span>\n      {{else}}\n        Which of our offices will you visit?\n      {{/if}}\n      {{#each this.firm.addresses as |office|}}\n        <RadioButtons @text={{office.suburb}} @value={{office.suburb}} @model={{this.model.preferredOffice}} />\n      {{/each}}\n      {{#if this.firm.settings.induction.allowClientsToRequestPhoneMeetings}}\n        <RadioButtons @testID=\"skypeoption\" @text=\"I'd prefer a phone call, Skype, or similar\" @value=\"Phone call, Skype, or similar\" @model={{this.model.preferredOffice}} />\n      {{/if}}\n    </p>\n  {{/if}}\n  \n  <LiquidIf @predicate={{eq this.model.preferredOffice \"Phone call, Skype, or similar\"}}>\n    <p data-test-skype-request>\n      <SettifyTextline\n        @headerLabel={{true}}\n        @label=\"Not a problem. Please provide details for us to get in touch\"\n        @placeholder=\"Eg, your phone number, your skype handle, etc\"\n        @model={{this.model.preferredOfficeMoreInfo}}\n      />\n    </p>\n  </LiquidIf>\n  {{yield}}\n  */\n  {\n    \"id\": \"GjNO90yH\",\n    \"block\": \"[[[41,[28,[37,1],[[30,0,[\\\"firm\\\",\\\"addresses\\\",\\\"length\\\"]],1],null],[[[1,\\\"  \\\"],[10,2],[14,\\\"data-test-preferred-office-wrapper\\\",\\\"\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"required\\\"]],[[[1,\\\"      Which of our offices will you visit?\\\"],[10,1],[15,0,[29,[\\\"required-field-marker \\\",[52,[30,0,[\\\"model\\\",\\\"preferredOffice\\\"]],\\\"required-field-provided\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      Which of our offices will you visit?\\\\n\\\"]],[]]],[42,[28,[37,5],[[28,[37,5],[[30,0,[\\\"firm\\\",\\\"addresses\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[8,[39,6],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\"],[[30,1,[\\\"suburb\\\"]],[30,1,[\\\"suburb\\\"]],[30,0,[\\\"model\\\",\\\"preferredOffice\\\"]]]],null],[1,\\\"\\\\n\\\"]],[1]],null],[41,[30,0,[\\\"firm\\\",\\\"settings\\\",\\\"induction\\\",\\\"allowClientsToRequestPhoneMeetings\\\"]],[[[1,\\\"      \\\"],[8,[39,6],null,[[\\\"@testID\\\",\\\"@text\\\",\\\"@value\\\",\\\"@model\\\"],[\\\"skypeoption\\\",\\\"I'd prefer a phone call, Skype, or similar\\\",\\\"Phone call, Skype, or similar\\\",[30,0,[\\\"model\\\",\\\"preferredOffice\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[8,[39,7],null,[[\\\"@predicate\\\"],[[28,[37,8],[[30,0,[\\\"model\\\",\\\"preferredOffice\\\"]],\\\"Phone call, Skype, or similar\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,2],[14,\\\"data-test-skype-request\\\",\\\"\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,9],null,[[\\\"@headerLabel\\\",\\\"@label\\\",\\\"@placeholder\\\",\\\"@model\\\"],[true,\\\"Not a problem. Please provide details for us to get in touch\\\",\\\"Eg, your phone number, your skype handle, etc\\\",[30,0,[\\\"model\\\",\\\"preferredOfficeMoreInfo\\\"]]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"],[18,2,null]],[\\\"office\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"gt\\\",\\\"p\\\",\\\"span\\\",\\\"each\\\",\\\"-track-array\\\",\\\"radio-buttons\\\",\\\"liquid-if\\\",\\\"eq\\\",\\\"settify-textline\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/preferred-office.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/radio-buttons\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.displayOnly}}\n    {{#if (eq this.model this.value)}}\n      {{this.text}}\n      {{yield}}\n      <br />\n    {{/if}}\n  {{else}}\n    <LiquidIf @predicate={{or (not this.unselectable) (eq this.value this.model) (not this.model)}}>\n      <div class=\"radio {{this.class}}\" data-test-radio={{this.testID}}>\n        <span {{action \"select\" this.value}} onkeydown={{action \"onkeydown\"}}>\n          <label class=\"ember-radio-button {{if (eq this.model this.value) 'checked'}}\">\n            <input type=\"radio\" value={{this.value}} name={{this.groupName}} checked={{eq this.model this.value}} />\n            {{#unless this.displayOnly}}\n              <svg viewBox=\"0 0 20 20\" class=\"radio-svg hidden\">\n                <circle cx=\"10\" cy=\"10\" r=\"9\"></circle>\n                <path\n                  d=\"M10,7 C8.34314575,7 7,8.34314575 7,10 C7,11.6568542 8.34314575,13 10,13 C11.6568542,13 13,11.6568542 13,10 C13,8.34314575 11.6568542,7 10,7 Z\"\n                  class=\"inner\"\n                ></path>\n                <path\n                  d=\"M10,1 L10,1 L10,1 C14.9705627,1 19,5.02943725 19,10 L19,10 L19,10 C19,14.9705627 14.9705627,19 10,19 L10,19 L10,19 C5.02943725,19 1,14.9705627 1,10 L1,10 L1,10 C1,5.02943725 5.02943725,1 10,1 L10,1 Z\"\n                  class=\"outer\"\n                ></path>\n              </svg>\n            {{/unless}}\n            {{this.text}}\n            {{yield}}\n            {{#if (and this.unselectable (eq this.value this.model))}}\n              <small class=\"cancel-button\">[cancel]</small>\n            {{/if}}\n          </label>\n        </span>\n        <HelpTextIcon @helpText={{this.helpText}} @displayOnly={{this.displayOnly}} @lawyerName={{this.clientRecord.helpTextIconLawyerName}} />\n      </div>\n    </LiquidIf>\n  {{/if}}\n  */\n  {\n    \"id\": \"PjmD/T0K\",\n    \"block\": \"[[[41,[30,0,[\\\"displayOnly\\\"]],[[[41,[28,[37,1],[[30,0,[\\\"model\\\"]],[30,0,[\\\"value\\\"]]],null],[[[1,\\\"    \\\"],[1,[30,0,[\\\"text\\\"]]],[1,\\\"\\\\n    \\\"],[18,1,null],[1,\\\"\\\\n    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],[[[1,\\\"  \\\"],[8,[39,4],null,[[\\\"@predicate\\\"],[[28,[37,5],[[28,[37,6],[[30,0,[\\\"unselectable\\\"]]],null],[28,[37,1],[[30,0,[\\\"value\\\"]],[30,0,[\\\"model\\\"]]],null],[28,[37,6],[[30,0,[\\\"model\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,0],[15,0,[29,[\\\"radio \\\",[30,0,[\\\"class\\\"]]]]],[15,\\\"data-test-radio\\\",[30,0,[\\\"testID\\\"]]],[12],[1,\\\"\\\\n      \\\"],[11,1],[16,\\\"onkeydown\\\",[28,[37,9],[[30,0],\\\"onkeydown\\\"],null]],[4,[38,9],[[30,0],\\\"select\\\",[30,0,[\\\"value\\\"]]],null],[12],[1,\\\"\\\\n        \\\"],[10,\\\"label\\\"],[15,0,[29,[\\\"ember-radio-button \\\",[52,[28,[37,1],[[30,0,[\\\"model\\\"]],[30,0,[\\\"value\\\"]]],null],\\\"checked\\\"]]]],[12],[1,\\\"\\\\n          \\\"],[10,\\\"input\\\"],[15,2,[30,0,[\\\"value\\\"]]],[15,3,[30,0,[\\\"groupName\\\"]]],[15,\\\"checked\\\",[28,[37,1],[[30,0,[\\\"model\\\"]],[30,0,[\\\"value\\\"]]],null]],[14,4,\\\"radio\\\"],[12],[13],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"displayOnly\\\"]]],[[[1,\\\"            \\\"],[10,\\\"svg\\\"],[14,\\\"viewBox\\\",\\\"0 0 20 20\\\"],[14,0,\\\"radio-svg hidden\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"circle\\\"],[14,\\\"cx\\\",\\\"10\\\"],[14,\\\"cy\\\",\\\"10\\\"],[14,\\\"r\\\",\\\"9\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[10,\\\"path\\\"],[14,\\\"d\\\",\\\"M10,7 C8.34314575,7 7,8.34314575 7,10 C7,11.6568542 8.34314575,13 10,13 C11.6568542,13 13,11.6568542 13,10 C13,8.34314575 11.6568542,7 10,7 Z\\\"],[14,0,\\\"inner\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[10,\\\"path\\\"],[14,\\\"d\\\",\\\"M10,1 L10,1 L10,1 C14.9705627,1 19,5.02943725 19,10 L19,10 L19,10 C19,14.9705627 14.9705627,19 10,19 L10,19 L10,19 C5.02943725,19 1,14.9705627 1,10 L1,10 L1,10 C1,5.02943725 5.02943725,1 10,1 L10,1 Z\\\"],[14,0,\\\"outer\\\"],[12],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[1,[30,0,[\\\"text\\\"]]],[1,\\\"\\\\n          \\\"],[18,1,null],[1,\\\"\\\\n\\\"],[41,[28,[37,16],[[30,0,[\\\"unselectable\\\"]],[28,[37,1],[[30,0,[\\\"value\\\"]],[30,0,[\\\"model\\\"]]],null]],null],[[[1,\\\"            \\\"],[10,\\\"small\\\"],[14,0,\\\"cancel-button\\\"],[12],[1,\\\"[cancel]\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,18],null,[[\\\"@helpText\\\",\\\"@displayOnly\\\",\\\"@lawyerName\\\"],[[30,0,[\\\"helpText\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"clientRecord\\\",\\\"helpTextIconLawyerName\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]],[\\\"&default\\\"],false,[\\\"if\\\",\\\"eq\\\",\\\"yield\\\",\\\"br\\\",\\\"liquid-if\\\",\\\"or\\\",\\\"not\\\",\\\"div\\\",\\\"span\\\",\\\"action\\\",\\\"label\\\",\\\"input\\\",\\\"unless\\\",\\\"svg\\\",\\\"circle\\\",\\\"path\\\",\\\"and\\\",\\\"small\\\",\\\"help-text-icon\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/radio-buttons.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/record-polling-overlay\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"record-polling-container\">\n    {{#if @recordpolling.multiUserActive}}\n      <div>\n        <span class=\"record-polling-message fadein\" >\n          <i class=\"fal fa-user\" />\n          <i class=\"fal fa-user record-polling-offset-glyph\" />\n        </span>\n      </div>\n    {{/if}}\n    {{#each @recordpolling.messageQueue as |message|}}\n      {{#if (eq message.type \"promptreload\")}}\n        <div {{on \"click\" (fn @forceRecordUpdate message.params.fromCookie)}} class=\"clickable\">\n          <span class=\"record-polling-message record-polling-prompt\">\n            <i class=\"fal fa-exclamation-circle\" /> {{message.text}}\n          </span>\n        </div>\n      {{else if (eq message.type \"error\")}}\n        <div>\n          <span class=\"record-polling-message record-polling-error fadeinout\">\n            <i class=\"fal fa-exclamation-circle\" /> {{message.text}}\n          </span>\n        </div>\n      {{else}}\n        <div class=\"record-polling-rollup-container\">\n          <span class=\"record-polling-message fadeinout\">\n            {{message.text}}\n          </span>\n        </div>\n      {{/if}}\n    {{/each}}\n  </div>\n  \n  */\n  {\n    \"id\": \"6G2G6mCD\",\n    \"block\": \"[[[10,0],[14,0,\\\"record-polling-container\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"multiUserActive\\\"]],[[[1,\\\"    \\\"],[10,0],[12],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"record-polling-message fadein\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-user\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-user record-polling-offset-glyph\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[42,[28,[37,5],[[28,[37,5],[[30,1,[\\\"messageQueue\\\"]]],null]],null],null,[[[41,[28,[37,6],[[30,2,[\\\"type\\\"]],\\\"promptreload\\\"],null],[[[1,\\\"      \\\"],[11,0],[24,0,\\\"clickable\\\"],[4,[38,7],[\\\"click\\\",[28,[37,8],[[30,3],[30,2,[\\\"params\\\",\\\"fromCookie\\\"]]],null]],null],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"record-polling-message record-polling-prompt\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-exclamation-circle\\\"],[12],[13],[1,\\\" \\\"],[1,[30,2,[\\\"text\\\"]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,6],[[30,2,[\\\"type\\\"]],\\\"error\\\"],null],[[[1,\\\"      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"record-polling-message record-polling-error fadeinout\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-exclamation-circle\\\"],[12],[13],[1,\\\" \\\"],[1,[30,2,[\\\"text\\\"]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"record-polling-rollup-container\\\"],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"record-polling-message fadeinout\\\"],[12],[1,\\\"\\\\n          \\\"],[1,[30,2,[\\\"text\\\"]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]],[]]]],[2]],null],[13],[1,\\\"\\\\n\\\"]],[\\\"@recordpolling\\\",\\\"message\\\",\\\"@forceRecordUpdate\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"span\\\",\\\"i\\\",\\\"each\\\",\\\"-track-array\\\",\\\"eq\\\",\\\"on\\\",\\\"fn\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/record-polling-overlay.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/required-field\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <span class=\"required-field\"><i class=\"fal fa-exclamation-circle negative tight\" />Required</span>\n  */\n  {\n    \"id\": \"Z9RIvXxP\",\n    \"block\": \"[[[10,1],[14,0,\\\"required-field\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-exclamation-circle negative tight\\\"],[12],[13],[1,\\\"Required\\\"],[13]],[],false,[\\\"span\\\",\\\"i\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/required-field.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/resource-upload\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div>\n    <div style=\"display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap;\">\n      <p>\n        <b>\n          {{this.uploadName}}\n          Upload\n          {{#if this.size}}\n            ({{this.size}})\n          {{/if}}\n        </b>\n      </p>\n      {{#if (eq this.uploadType \"favicon\")}}\n        <img class=\"firm-header-logo\" alt=\"Favicon\" style=\"max-width: 100px\" src={{this.imageURL}} />\n      {{else if (or (eq this.uploadType \"headerimage\") (eq this.uploadType \"landingimage\"))}}\n        {{#if (not this.practiceArea)}}\n          <p>Practice area not selected.</p>\n        {{else if this.emptyImageSrc}}\n          <p>\n            Image not yet added, please upload it below.\n          </p>\n        {{else}}\n          <p>Current image</p>\n          <div class=\"header-image-preview\">\n            <img src={{this.imageURL}} alt=\"custom header\" style=\"max-width: 100%;\" onerror={{action \"setEmptyImageMessage\"}} />\n          </div>\n        {{/if}}\n      {{else if this.imageURL}}\n        {{#if this.emptyImageSrc}}\n          <p>\n            Image not yet added, please upload it below.\n          </p>\n        {{else}}\n          <img class=\"firm-header-logo\" alt=\"custom header\" style=\"max-width: 250px\" src={{this.imageURL}} onerror={{action \"setEmptyImageMessage\"}} />\n        {{/if}}\n      {{/if}}\n    </div>\n    {{#if this.practiceAreaSpecific}}\n      <span>Practice Area</span>\n      <SettifySelect @model={{this.practiceArea}} @content={{this.practiceAreas}} @labelPath=\"label\" @valuePath=\"value\" @prompt=\"Practice area\" />\n      <br />\n    {{/if}}\n  \n    {{#if this.referral}}\n      <div style=\"margin-bottom: 1em\">\n        <SettifyTextline @model={{this.referrerName}} @placeholder=\"Referrers name\" />\n      </div>\n    {{/if}}\n  \n    <LiquidIf @predicate={{or (not this.referral) (and this.referral this.referrerName)}}>\n      <SettifyFileUpload\n        @uploadName={{this.uploadName}}\n        @maxKB={{this.maxKB}}\n        @accept={{this.accept}}\n        @adminMode={{this.adminMode}}\n        @bucket={{this.bucket}}\n        @forceFileName={{this.forceFileName}}\n        @forceConfirm={{this.forceConfirm}}\n        @showImagePreview={{this.showImagePreview}}\n        @onUploadComplete={{if this.callbackAction (action \"uploadComplete\")}}\n      />\n    </LiquidIf>\n  </div>\n  */\n  {\n    \"id\": \"JWTe/TOS\",\n    \"block\": \"[[[10,0],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,5,\\\"display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap;\\\"],[12],[1,\\\"\\\\n    \\\"],[10,2],[12],[1,\\\"\\\\n      \\\"],[10,\\\"b\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[30,0,[\\\"uploadName\\\"]]],[1,\\\"\\\\n        Upload\\\\n\\\"],[41,[30,0,[\\\"size\\\"]],[[[1,\\\"          (\\\"],[1,[30,0,[\\\"size\\\"]]],[1,\\\")\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,4],[[30,0,[\\\"uploadType\\\"]],\\\"favicon\\\"],null],[[[1,\\\"      \\\"],[10,\\\"img\\\"],[14,0,\\\"firm-header-logo\\\"],[14,\\\"alt\\\",\\\"Favicon\\\"],[14,5,\\\"max-width: 100px\\\"],[15,\\\"src\\\",[30,0,[\\\"imageURL\\\"]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,6],[[28,[37,4],[[30,0,[\\\"uploadType\\\"]],\\\"headerimage\\\"],null],[28,[37,4],[[30,0,[\\\"uploadType\\\"]],\\\"landingimage\\\"],null]],null],[[[41,[28,[37,7],[[30,0,[\\\"practiceArea\\\"]]],null],[[[1,\\\"        \\\"],[10,2],[12],[1,\\\"Practice area not selected.\\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"emptyImageSrc\\\"]],[[[1,\\\"        \\\"],[10,2],[12],[1,\\\"\\\\n          Image not yet added, please upload it below.\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,2],[12],[1,\\\"Current image\\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"header-image-preview\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"img\\\"],[15,\\\"src\\\",[30,0,[\\\"imageURL\\\"]]],[14,\\\"alt\\\",\\\"custom header\\\"],[14,5,\\\"max-width: 100%;\\\"],[15,\\\"onerror\\\",[28,[37,8],[[30,0],\\\"setEmptyImageMessage\\\"],null]],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]],[]]]],[]],[[[41,[30,0,[\\\"imageURL\\\"]],[[[41,[30,0,[\\\"emptyImageSrc\\\"]],[[[1,\\\"        \\\"],[10,2],[12],[1,\\\"\\\\n          Image not yet added, please upload it below.\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,\\\"img\\\"],[14,0,\\\"firm-header-logo\\\"],[14,\\\"alt\\\",\\\"custom header\\\"],[14,5,\\\"max-width: 250px\\\"],[15,\\\"src\\\",[30,0,[\\\"imageURL\\\"]]],[15,\\\"onerror\\\",[28,[37,8],[[30,0],\\\"setEmptyImageMessage\\\"],null]],[12],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"]],[]],null]],[]]]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"practiceAreaSpecific\\\"]],[[[1,\\\"    \\\"],[10,1],[12],[1,\\\"Practice Area\\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,10],null,[[\\\"@model\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\",\\\"@prompt\\\"],[[30,0,[\\\"practiceArea\\\"]],[30,0,[\\\"practiceAreas\\\"]],\\\"label\\\",\\\"value\\\",\\\"Practice area\\\"]],null],[1,\\\"\\\\n    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"referral\\\"]],[[[1,\\\"    \\\"],[10,0],[14,5,\\\"margin-bottom: 1em\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,12],null,[[\\\"@model\\\",\\\"@placeholder\\\"],[[30,0,[\\\"referrerName\\\"]],\\\"Referrers name\\\"]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[28,[37,6],[[28,[37,7],[[30,0,[\\\"referral\\\"]]],null],[28,[37,14],[[30,0,[\\\"referral\\\"]],[30,0,[\\\"referrerName\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[39,15],null,[[\\\"@uploadName\\\",\\\"@maxKB\\\",\\\"@accept\\\",\\\"@adminMode\\\",\\\"@bucket\\\",\\\"@forceFileName\\\",\\\"@forceConfirm\\\",\\\"@showImagePreview\\\",\\\"@onUploadComplete\\\"],[[30,0,[\\\"uploadName\\\"]],[30,0,[\\\"maxKB\\\"]],[30,0,[\\\"accept\\\"]],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"bucket\\\"]],[30,0,[\\\"forceFileName\\\"]],[30,0,[\\\"forceConfirm\\\"]],[30,0,[\\\"showImagePreview\\\"]],[52,[30,0,[\\\"callbackAction\\\"]],[28,[37,8],[[30,0],\\\"uploadComplete\\\"],null]]]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[13]],[],false,[\\\"div\\\",\\\"p\\\",\\\"b\\\",\\\"if\\\",\\\"eq\\\",\\\"img\\\",\\\"or\\\",\\\"not\\\",\\\"action\\\",\\\"span\\\",\\\"settify-select\\\",\\\"br\\\",\\\"settify-textline\\\",\\\"liquid-if\\\",\\\"and\\\",\\\"settify-file-upload\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/resource-upload.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/resume-link-widget\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <p class={{if this.small \"small\" \"\"}}>\n    If you would like to invite the client in an email yourself,\n    <a class=\"clickable\" {{action \"copyLink\"}}>click here</a>\n    to copy a link to send the client.\n  </p>\n  \n  */\n  {\n    \"id\": \"f/c2Mywe\",\n    \"block\": \"[[[10,2],[15,0,[52,[30,0,[\\\"small\\\"]],\\\"small\\\",\\\"\\\"]],[12],[1,\\\"\\\\n  If you would like to invite the client in an email yourself,\\\\n  \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,3],[[30,0],\\\"copyLink\\\"],null],[12],[1,\\\"click here\\\"],[13],[1,\\\"\\\\n  to copy a link to send the client.\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[],false,[\\\"p\\\",\\\"if\\\",\\\"a\\\",\\\"action\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/resume-link-widget.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/same-information-warning\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <LiquidIf @predicate={{this.foundSameValue}}>\n    <b class=\"negative\">\n      It looks as though you have given the same {{this.label}} for both you and your {{this.model.otherPersonType}}\n    </b>\n  </LiquidIf>\n  \n  */\n  {\n    \"id\": \"1tmnEpYS\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@predicate\\\"],[[30,0,[\\\"foundSameValue\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,\\\"b\\\"],[14,0,\\\"negative\\\"],[12],[1,\\\"\\\\n    It looks as though you have given the same \\\"],[1,[30,0,[\\\"label\\\"]]],[1,\\\" for both you and your \\\"],[1,[30,0,[\\\"model\\\",\\\"otherPersonType\\\"]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[],false,[\\\"liquid-if\\\",\\\"b\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/same-information-warning.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/save-progress-widget\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! Don't need the save progress functionality once the user has an actual account }}\n  {{#unless this.model.passwordProtected}}\n    {{#unless this.alwaysOpen}}\n      <p class=\"clearboth marginbottom-0\">\n        <a class=\"clickable {{if this.small 'small'}}\" {{action \"toggleSaveProgress\"}}>\n          {{#if this.model.hasReceivedResumeLinkEmail}}\n            {{#unless this.rightAlign}}\n              <i class=\"fal fa-save\"></i>\n            {{~/unless~}}\n            Your changes are saved automatically\n            {{~#if this.rightAlign~}}\n              <i class=\"fal fa-save\"></i>\n            {{/if}}\n          {{else}}\n            {{#unless this.rightAlign}}\n              <i class=\"fal fa-save\"></i>\n            {{~/unless~}}\n            {{~#if this.text~}}\n              {{this.text}}\n            {{~else~}}\n              Save my progress\n            {{~/if~}}\n            {{~#if this.rightAlign~}}\n              <i class=\"fal fa-save\"></i>\n            {{/if}}\n          {{/if}}\n        </a>\n      </p>\n    {{/unless}}\n    <LiquidIf @predicate={{or this.showSaveProgress this.alwaysOpen}}>\n      <p class=\"leftalign\">\n        {{#if this.saveProgressRepeatVisitor}}\n          We've previously sent an email to\n          <span class=\"settify-sensitive\">{{this.model.email}}</span>\n          with a link that lets you come back at any time. No further action is required, as we automatically save any new changes. If you've misplaced your link, however, we can\n          re-send it for you now.\n        {{else}}\n          Enter your email address to save your progress now. We'll send you a link that you can use to come back at any time, and we'll also save your answers automatically from\n          here on.\n          {{this.firm.name}}\n          will not receive your information unless you request an appointment.\n        {{/if}}\n  \n        <SettifyEmailInput @model={{this.model.email}} @placeholder=\"example@address.com\" @required={{true}} @validation={{this.saveProgressEmailValid}} />\n        <small>\n          <i class=\"fal fa-lock-alt\" />Make sure to choose a secure email address\n        </small>\n      </p>\n  \n      <LiquidIf @predicate={{this.saveProgressLoading}}>\n        <LoadingSpinner />\n      </LiquidIf>\n  \n      <LiquidIf @predicate={{this.saveProgressError}}>\n        <p class=\"leftalign\">\n          <strong>Uh oh!</strong>\n          We were unable to send you the email. Please check your email address is entered correctly, and that you are connected to the internet.\n        </p>\n      </LiquidIf>\n  \n      <LiquidIf @predicate={{this.saveProgressComplete}}>\n        <p class=\"leftalign\">\n          <i class=\"fal fa-check-circle\" />\n          Your progress has been saved, and we've sent you an email that will let you come back to this process at any time. If you don't receive the email within a few minutes,\n          please check your spam or junk mail folder.\n        </p>\n      </LiquidIf>\n  \n      <LiquidIf @predicate={{not this.saveProgressComplete}}>\n        <div class=\"{{if this.rightAlign 'rightalign' 'leftalign'}}\">\n          <button\n            type=\"button\"\n            data-settify-action={{if this.saveProgressEmailValid \"saveprogress\"}}\n            class=\"next-button hvr-float-shadow hvr-grow {{unless this.saveProgressEmailValid 'disabled-button'}}\"\n            {{action (if this.saveProgressEmailValid \"saveProgress\" \"nullAction\")}}\n          >\n            {{#if this.saveProgressRepeatVisitor}}\n              Re-send my email\n            {{else if this.saveProgressError}}\n              Try again\n            {{else}}\n              Save my progress\n            {{/if}}\n          </button>\n        </div>\n      </LiquidIf>\n  \n    </LiquidIf>\n  {{/unless}}\n  */\n  {\n    \"id\": \"cGUmIqiQ\",\n    \"block\": \"[[[41,[51,[30,0,[\\\"model\\\",\\\"passwordProtected\\\"]]],[[[41,[51,[30,0,[\\\"alwaysOpen\\\"]]],[[[1,\\\"    \\\"],[10,2],[14,0,\\\"clearboth marginbottom-0\\\"],[12],[1,\\\"\\\\n      \\\"],[11,3],[16,0,[29,[\\\"clickable \\\",[52,[30,0,[\\\"small\\\"]],\\\"small\\\"]]]],[4,[38,4],[[30,0],\\\"toggleSaveProgress\\\"],null],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"hasReceivedResumeLinkEmail\\\"]],[[[41,[51,[30,0,[\\\"rightAlign\\\"]]],[[[1,\\\"            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-save\\\"],[12],[13]],[]],null],[1,\\\"Your changes are saved automatically\\\"],[41,[30,0,[\\\"rightAlign\\\"]],[[[10,\\\"i\\\"],[14,0,\\\"fal fa-save\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],[[[41,[51,[30,0,[\\\"rightAlign\\\"]]],[[[1,\\\"            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-save\\\"],[12],[13]],[]],null],[41,[30,0,[\\\"text\\\"]],[[[1,[30,0,[\\\"text\\\"]]]],[]],[[[1,\\\"Save my progress\\\"]],[]]],[41,[30,0,[\\\"rightAlign\\\"]],[[[10,\\\"i\\\"],[14,0,\\\"fal fa-save\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[8,[39,6],null,[[\\\"@predicate\\\"],[[28,[37,7],[[30,0,[\\\"showSaveProgress\\\"]],[30,0,[\\\"alwaysOpen\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,2],[14,0,\\\"leftalign\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"saveProgressRepeatVisitor\\\"]],[[[1,\\\"        We've previously sent an email to\\\\n        \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"email\\\"]]],[13],[1,\\\"\\\\n        with a link that lets you come back at any time. No further action is required, as we automatically save any new changes. If you've misplaced your link, however, we can\\\\n        re-send it for you now.\\\\n\\\"]],[]],[[[1,\\\"        Enter your email address to save your progress now. We'll send you a link that you can use to come back at any time, and we'll also save your answers automatically from\\\\n        here on.\\\\n        \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\"\\\\n        will not receive your information unless you request an appointment.\\\\n\\\"]],[]]],[1,\\\"\\\\n      \\\"],[8,[39,9],null,[[\\\"@model\\\",\\\"@placeholder\\\",\\\"@required\\\",\\\"@validation\\\"],[[30,0,[\\\"model\\\",\\\"email\\\"]],\\\"example@address.com\\\",true,[30,0,[\\\"saveProgressEmailValid\\\"]]]],null],[1,\\\"\\\\n      \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-lock-alt\\\"],[12],[13],[1,\\\"Make sure to choose a secure email address\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[8,[39,6],null,[[\\\"@predicate\\\"],[[30,0,[\\\"saveProgressLoading\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[39,11],null,null,null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\\n    \\\"],[8,[39,6],null,[[\\\"@predicate\\\"],[[30,0,[\\\"saveProgressError\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,2],[14,0,\\\"leftalign\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"strong\\\"],[12],[1,\\\"Uh oh!\\\"],[13],[1,\\\"\\\\n        We were unable to send you the email. Please check your email address is entered correctly, and that you are connected to the internet.\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\\n    \\\"],[8,[39,6],null,[[\\\"@predicate\\\"],[[30,0,[\\\"saveProgressComplete\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,2],[14,0,\\\"leftalign\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"\\\\n        Your progress has been saved, and we've sent you an email that will let you come back to this process at any time. If you don't receive the email within a few minutes,\\\\n        please check your spam or junk mail folder.\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\\n    \\\"],[8,[39,6],null,[[\\\"@predicate\\\"],[[28,[37,13],[[30,0,[\\\"saveProgressComplete\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,0],[15,0,[29,[[52,[30,0,[\\\"rightAlign\\\"]],\\\"rightalign\\\",\\\"leftalign\\\"]]]],[12],[1,\\\"\\\\n        \\\"],[11,\\\"button\\\"],[16,\\\"data-settify-action\\\",[52,[30,0,[\\\"saveProgressEmailValid\\\"]],\\\"saveprogress\\\"]],[16,0,[29,[\\\"next-button hvr-float-shadow hvr-grow \\\",[52,[51,[30,0,[\\\"saveProgressEmailValid\\\"]]],\\\"disabled-button\\\"]]]],[24,4,\\\"button\\\"],[4,[38,4],[[30,0],[52,[30,0,[\\\"saveProgressEmailValid\\\"]],\\\"saveProgress\\\",\\\"nullAction\\\"]],null],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"saveProgressRepeatVisitor\\\"]],[[[1,\\\"            Re-send my email\\\\n\\\"]],[]],[[[41,[30,0,[\\\"saveProgressError\\\"]],[[[1,\\\"            Try again\\\\n\\\"]],[]],[[[1,\\\"            Save my progress\\\\n          \\\"]],[]]]],[]]],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[],false,[\\\"unless\\\",\\\"p\\\",\\\"a\\\",\\\"if\\\",\\\"action\\\",\\\"i\\\",\\\"liquid-if\\\",\\\"or\\\",\\\"span\\\",\\\"settify-email-input\\\",\\\"small\\\",\\\"loading-spinner\\\",\\\"strong\\\",\\\"not\\\",\\\"div\\\",\\\"button\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/save-progress-widget.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/searched-clients-list\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <LiquidIf @predicate={{this.isSearching}}>\n    <LoadingSpinner />\n  </LiquidIf>\n  <LiquidIf @predicate={{this.model.length}}>\n    <p data-test-searched-client-message>\n      <i class=\"far fa-question-circle\"></i>\n      We've found\n      {{#if (gt this.model.length 1)}}\n        a few existing Settify records\n      {{else}}\n        an existing Settify record\n      {{/if}}\n      that might be from this person. If the person you're trying to invite is in the list below, you can send them a follow up email instead, so they don't have to re-enter any of\n      their information. You can also click to view the client information, in case it's not obvious whether it's the same person.\n    </p>\n    <table class=\"invited-clients-table\" width=\"100%\">\n      <thead>\n        <tr>\n          <th class=\"admin-name-header\">\n            Client name\n          </th>\n          <th>\n            Last Accessed\n          </th>\n          <th>\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        {{#each this.model as |client|}}\n          <tr>\n            <td>\n              {{#if client.hasConflict}}\n                <span class=\"settify-sensitive\"><del>{{client.name}}</del></span>\n                <i\n                  data-test-has-conflict-icon\n                  class=\"fal fa-times-circle negative disabled-conflict tight\"\n                  title=\"You previously advised that {{this.firm.name}} was unable to assist this client!\"\n                />\n              {{else}}\n                <PracticeAreaLink @clientID={{client.clientID}} @practiceArea={{client.practiceArea}}>\n                  <span class=\"settify-sensitive\">{{client.name}}</span>\n                </PracticeAreaLink>\n              {{/if}}\n            </td>\n            <td class=\"text-nowrap\">\n              {{pretty-date client.lastFirmAccess relativeTime=true}}\n              <i class=\"clickable fal fa-info-circle margin-0\" {{action \"toggleInvitationEmailHistory\" client}} />\n            </td>\n            <td>\n              <LinkTo data-test-follow-up-mail @route=\"admin.invite\" @query={{hash clientID=client.clientID}}>\n                <span class=\"conversion-bubble clickable text-nowrap\">Use this existing record</span>\n              </LinkTo>\n            </td>\n          </tr>\n          {{#if client.showInvitationEmailHistory}}\n            <tr class=\"no-border\">\n              <td colspan=\"3\" class=\"paddingbottom-0.5\">\n                <InvitationEmailHistory\n                  @clientID={{client.clientID}}\n                  @showReminderEmails={{true}}\n                  @clientPracticeArea={{client.practiceArea}}\n                  @showEmailUpdateButton={{client.showEmailUpdateButton}}\n                />\n              </td>\n            </tr>\n          {{/if}}\n        {{/each}}\n      </tbody>\n    </table>\n    <p>\n      <a class=\"clickable\" {{action \"closeResultsBox\"}}>\n        {{#if (gt this.model.length 1)}}\n          No, those are all different people\n        {{else}}\n          No, that's a different person\n        {{/if}}\n        or I would like to send a fresh invitation anyway\n      </a>\n    </p>\n  </LiquidIf>\n  */\n  {\n    \"id\": \"YcVI/hbH\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@predicate\\\"],[[30,0,[\\\"isSearching\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[39,1],null,null,null],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"],[8,[39,0],null,[[\\\"@predicate\\\"],[[30,0,[\\\"model\\\",\\\"length\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,2],[14,\\\"data-test-searched-client-message\\\",\\\"\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"i\\\"],[14,0,\\\"far fa-question-circle\\\"],[12],[13],[1,\\\"\\\\n    We've found\\\\n\\\"],[41,[28,[37,5],[[30,0,[\\\"model\\\",\\\"length\\\"]],1],null],[[[1,\\\"      a few existing Settify records\\\\n\\\"]],[]],[[[1,\\\"      an existing Settify record\\\\n\\\"]],[]]],[1,\\\"    that might be from this person. If the person you're trying to invite is in the list below, you can send them a follow up email instead, so they don't have to re-enter any of\\\\n    their information. You can also click to view the client information, in case it's not obvious whether it's the same person.\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,\\\"table\\\"],[14,0,\\\"invited-clients-table\\\"],[14,\\\"width\\\",\\\"100%\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"th\\\"],[14,0,\\\"admin-name-header\\\"],[12],[1,\\\"\\\\n          Client name\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"th\\\"],[12],[1,\\\"\\\\n          Last Accessed\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"th\\\"],[12],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,12],[[28,[37,12],[[30,0,[\\\"model\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"hasConflict\\\"]],[[[1,\\\"              \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[10,\\\"del\\\"],[12],[1,[30,1,[\\\"name\\\"]]],[13],[13],[1,\\\"\\\\n              \\\"],[10,\\\"i\\\"],[14,\\\"data-test-has-conflict-icon\\\",\\\"\\\"],[14,0,\\\"fal fa-times-circle negative disabled-conflict tight\\\"],[15,\\\"title\\\",[29,[\\\"You previously advised that \\\",[30,0,[\\\"firm\\\",\\\"name\\\"]],\\\" was unable to assist this client!\\\"]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"              \\\"],[8,[39,16],null,[[\\\"@clientID\\\",\\\"@practiceArea\\\"],[[30,1,[\\\"clientID\\\"]],[30,1,[\\\"practiceArea\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,1,[\\\"name\\\"]]],[13],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[14,0,\\\"text-nowrap\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[28,[35,17],[[30,1,[\\\"lastFirmAccess\\\"]]],[[\\\"relativeTime\\\"],[true]]]],[1,\\\"\\\\n            \\\"],[11,\\\"i\\\"],[24,0,\\\"clickable fal fa-info-circle margin-0\\\"],[4,[38,18],[[30,0],\\\"toggleInvitationEmailHistory\\\",[30,1]],null],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,19],[[24,\\\"data-test-follow-up-mail\\\",\\\"\\\"]],[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.invite\\\",[28,[37,20],null,[[\\\"clientID\\\"],[[30,1,[\\\"clientID\\\"]]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"conversion-bubble clickable text-nowrap\\\"],[12],[1,\\\"Use this existing record\\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"showInvitationEmailHistory\\\"]],[[[1,\\\"          \\\"],[10,\\\"tr\\\"],[14,0,\\\"no-border\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[14,\\\"colspan\\\",\\\"3\\\"],[14,0,\\\"paddingbottom-0.5\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,21],null,[[\\\"@clientID\\\",\\\"@showReminderEmails\\\",\\\"@clientPracticeArea\\\",\\\"@showEmailUpdateButton\\\"],[[30,1,[\\\"clientID\\\"]],true,[30,1,[\\\"practiceArea\\\"]],[30,1,[\\\"showEmailUpdateButton\\\"]]]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[1]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,2],[12],[1,\\\"\\\\n    \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,18],[[30,0],\\\"closeResultsBox\\\"],null],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[30,0,[\\\"model\\\",\\\"length\\\"]],1],null],[[[1,\\\"        No, those are all different people\\\\n\\\"]],[]],[[[1,\\\"        No, that's a different person\\\\n\\\"]],[]]],[1,\\\"      or I would like to send a fresh invitation anyway\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"client\\\"],false,[\\\"liquid-if\\\",\\\"loading-spinner\\\",\\\"p\\\",\\\"i\\\",\\\"if\\\",\\\"gt\\\",\\\"table\\\",\\\"thead\\\",\\\"tr\\\",\\\"th\\\",\\\"tbody\\\",\\\"each\\\",\\\"-track-array\\\",\\\"td\\\",\\\"span\\\",\\\"del\\\",\\\"practice-area-link\\\",\\\"pretty-date\\\",\\\"action\\\",\\\"link-to\\\",\\\"hash\\\",\\\"invitation-email-history\\\",\\\"a\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/searched-clients-list.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/select-or-create-base\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{yield}}\n  \n  */\n  {\n    \"id\": \"TkzViVuk\",\n    \"block\": \"[[[18,1,null],[1,\\\"\\\\n\\\"]],[\\\"&default\\\"],false,[\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/select-or-create-base.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/select-or-create-legacy\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (non-empty-string this.label)}}\n    <p class={{if (and this.required (not this.hasContent)) \"can-highlight\"}}>\n      {{this.label}}\n      {{#if (and this.required (not this.displayOnly))}}\n        <span class=\"required-field-marker {{if this.hasContent 'required-field-provided'}}\"></span>\n      {{/if}}\n      <HelpTextIcon @helpText={{this.helpText}} @displayOnly={{this.displayOnly}} @lawyerName={{this.clientRecord.helpTextIconLawyerName}} />\n      {{#if this.displayOnly}}\n        <br />\n      {{/if}}\n    </p>\n  {{/if}}\n  {{#if (and this.displayOnly (not this.model))}}\n    <NoInformation />\n    {{#if this.required}}\n      <RequiredField />\n    {{/if}}\n  {{/if}}\n  {{#if this.multipleSelections}}\n    {{#unless (or this.hideSelect this.displayOnly)}}\n      <div class=\"select-or-create-options multiple\">\n        {{!-- <LiquidIf @predicate={{not augmentedSourceList.length}}>\n          We're not yet aware of any potential {{itemName}}s.\n        </LiquidIf> --}}\n        <LiquidIf @predicate={{this.augmentedSourceList.length}}>\n          <LiquidSpacer>\n            {{#each this.augmentedSourceList as |item|}}\n              <div class=\"display-flex {{if item.indent (sum 'indent-' item.indent)}} {{if item.disabled 'opacity-0.5' ''}}\">\n                {{#if (and this.useFamilyTree item.indent)}}\n                  <span class=\"horizontal-line {{if item.noLine 'no-line' ''}}\"></span>\n                {{/if}}\n                <CheckBox @text={{or item.label \"No name provided\"}} @model={{item.selected}} @disabled={{item.disabled}} />\n              </div>\n            {{/each}}\n          </LiquidSpacer>\n        </LiquidIf>\n        <div>\n          <button type=\"button\" {{action \"addItem\"}} class=\"clickable plain-button free-list-add\">\n            <i class=\"fal fa-plus-circle\"></i>\n            Add\n            {{if this.augmentedSourceList.length \"another\" \"your first\"}}\n            {{this.itemName}}\n          </button>\n        </div>\n      </div>\n    {{/unless}}\n  \n    <LiquidIf @predicate={{and (has-block) this.model.length}}>\n      {{#unless (or this.hideSelect this.displayOnly)}}\n        <p>\n          Now, let's get a bit more information about\n          {{#if (gt this.model.length 1)}}\n            these\n            {{this.itemName}}s.\n          {{else}}\n            this\n            {{this.itemName}}.\n          {{/if}}\n        </p>\n      {{/unless}}\n      {{#each this.augmentedSourceList as |item|}}\n        <LiquidIf @predicate={{item.selected}}>\n          <div class=\"select-or-create-block multiple\">\n            {{#if this.displayOnly}}\n              {{! In displayOnly, always show the questions, so set editingExistingItem to false }}\n              {{yield item.source false}}\n            {{else}}\n              <h3>{{item.label}}</h3>\n              {{yield item.source (not item.source.tmpVarNewCreation)}}\n            {{/if}}\n          </div>\n        </LiquidIf>\n      {{/each}}\n    </LiquidIf>\n  \n  {{else}}\n    {{#unless this.displayOnly}}\n      {{#unless this.hideSelect}}\n        <p class=\"select-or-create-options\">\n          {{!-- {{settify-select\n            model=model\n            name=name\n            content=augmentedSourceList\n            labelPath=\"label\"\n            valuePath=\"value\"\n            prompt=prompt\n            headerLabel=headerLabel\n            displayOnly=displayOnly\n          }} --}}\n          {{#each this.augmentedSourceList as |item|}}\n            <div class=\"display-flex {{if (and item.indent (not this.model)) (sum 'indent-' item.indent)}}\">\n              {{#if (and this.useFamilyTree item.indent (not this.model))}}\n                <span class=\"horizontal-line {{if item.noLine 'no-line' ''}}\"></span>\n              {{/if}}\n              <RadioButtons @displayOnly={{this.displayOnly}} @text={{or item.label \"No name provided\"}} @value={{item.value}} @model={{this.model}} @unselectable={{true}} />\n            </div>\n          {{/each}}\n        </p>\n      {{/unless}}\n    {{/unless}}\n  \n    <LiquidIf @predicate={{this.newItem}}>\n      <div class=\"select-or-create-block\">\n        {{yield this.newItem false}}\n  \n        {{#unless this.hideSelect}}\n          <a class=\"clickable\" {{action \"removeNewItem\"}}>\n            <i class=\"fal fa-times-circle clickable icon-delete\" />\n            Cancel (do not add this\n            {{this.itemName}})\n          </a>\n        {{/unless}}\n      </div>\n    </LiquidIf>\n    <LiquidIf @predicate={{and this.selectedItem (not this.newItem) (not this.displayOnly) this.editExistingItems}}>\n      {{! <div class=\"free-list-block\"> }}\n      {{yield this.selectedItem true}}\n      {{! </div> }}\n    </LiquidIf>\n    {{#if (and this.displayOnly this.selectedItem)}}\n      {{yield this.selectedItem false}}\n    {{/if}}\n  {{/if}}\n  */\n  {\n    \"id\": \"Gh2NE2ah\",\n    \"block\": \"[[[41,[28,[37,1],[[30,0,[\\\"label\\\"]]],null],[[[1,\\\"  \\\"],[10,2],[15,0,[52,[28,[37,3],[[30,0,[\\\"required\\\"]],[28,[37,4],[[30,0,[\\\"hasContent\\\"]]],null]],null],\\\"can-highlight\\\"]],[12],[1,\\\"\\\\n    \\\"],[1,[30,0,[\\\"label\\\"]]],[1,\\\"\\\\n\\\"],[41,[28,[37,3],[[30,0,[\\\"required\\\"]],[28,[37,4],[[30,0,[\\\"displayOnly\\\"]]],null]],null],[[[1,\\\"      \\\"],[10,1],[15,0,[29,[\\\"required-field-marker \\\",[52,[30,0,[\\\"hasContent\\\"]],\\\"required-field-provided\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[8,[39,6],null,[[\\\"@helpText\\\",\\\"@displayOnly\\\",\\\"@lawyerName\\\"],[[30,0,[\\\"helpText\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"clientRecord\\\",\\\"helpTextIconLawyerName\\\"]]]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"displayOnly\\\"]],[[[1,\\\"      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,3],[[30,0,[\\\"displayOnly\\\"]],[28,[37,4],[[30,0,[\\\"model\\\"]]],null]],null],[[[1,\\\"  \\\"],[8,[39,8],null,null,null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"required\\\"]],[[[1,\\\"    \\\"],[8,[39,9],null,null,null],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[41,[30,0,[\\\"multipleSelections\\\"]],[[[41,[51,[28,[37,11],[[30,0,[\\\"hideSelect\\\"]],[30,0,[\\\"displayOnly\\\"]]],null]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"select-or-create-options multiple\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"      \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[30,0,[\\\"augmentedSourceList\\\",\\\"length\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[39,14],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,16],[[28,[37,16],[[30,0,[\\\"augmentedSourceList\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[10,0],[15,0,[29,[\\\"display-flex \\\",[52,[30,1,[\\\"indent\\\"]],[28,[37,17],[\\\"indent-\\\",[30,1,[\\\"indent\\\"]]],null]],\\\" \\\",[52,[30,1,[\\\"disabled\\\"]],\\\"opacity-0.5\\\",\\\"\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,3],[[30,0,[\\\"useFamilyTree\\\"]],[30,1,[\\\"indent\\\"]]],null],[[[1,\\\"                \\\"],[10,1],[15,0,[29,[\\\"horizontal-line \\\",[52,[30,1,[\\\"noLine\\\"]],\\\"no-line\\\",\\\"\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[8,[39,18],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@disabled\\\"],[[28,[37,11],[[30,1,[\\\"label\\\"]],\\\"No name provided\\\"],null],[30,1,[\\\"selected\\\"]],[30,1,[\\\"disabled\\\"]]]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[11,\\\"button\\\"],[24,0,\\\"clickable plain-button free-list-add\\\"],[24,4,\\\"button\\\"],[4,[38,20],[[30,0],\\\"addItem\\\"],null],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle\\\"],[12],[13],[1,\\\"\\\\n          Add\\\\n          \\\"],[1,[52,[30,0,[\\\"augmentedSourceList\\\",\\\"length\\\"]],\\\"another\\\",\\\"your first\\\"]],[1,\\\"\\\\n          \\\"],[1,[30,0,[\\\"itemName\\\"]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[28,[37,3],[[48,[30,4]],[30,0,[\\\"model\\\",\\\"length\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[51,[28,[37,11],[[30,0,[\\\"hideSelect\\\"]],[30,0,[\\\"displayOnly\\\"]]],null]],[[[1,\\\"      \\\"],[10,2],[12],[1,\\\"\\\\n        Now, let's get a bit more information about\\\\n\\\"],[41,[28,[37,23],[[30,0,[\\\"model\\\",\\\"length\\\"]],1],null],[[[1,\\\"          these\\\\n          \\\"],[1,[30,0,[\\\"itemName\\\"]]],[1,\\\"s.\\\\n\\\"]],[]],[[[1,\\\"          this\\\\n          \\\"],[1,[30,0,[\\\"itemName\\\"]]],[1,\\\".\\\\n\\\"]],[]]],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[42,[28,[37,16],[[28,[37,16],[[30,0,[\\\"augmentedSourceList\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[30,2,[\\\"selected\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"select-or-create-block multiple\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"displayOnly\\\"]],[[[1,\\\"            \\\"],[18,4,[[30,2,[\\\"source\\\"]],false]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"            \\\"],[10,\\\"h3\\\"],[12],[1,[30,2,[\\\"label\\\"]]],[13],[1,\\\"\\\\n            \\\"],[18,4,[[30,2,[\\\"source\\\"]],[28,[37,4],[[30,2,[\\\"source\\\",\\\"tmpVarNewCreation\\\"]]],null]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"]],[]],[[[41,[51,[30,0,[\\\"displayOnly\\\"]]],[[[41,[51,[30,0,[\\\"hideSelect\\\"]]],[[[1,\\\"      \\\"],[10,2],[14,0,\\\"select-or-create-options\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,16],[[28,[37,16],[[30,0,[\\\"augmentedSourceList\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[10,0],[15,0,[29,[\\\"display-flex \\\",[52,[28,[37,3],[[30,3,[\\\"indent\\\"]],[28,[37,4],[[30,0,[\\\"model\\\"]]],null]],null],[28,[37,17],[\\\"indent-\\\",[30,3,[\\\"indent\\\"]]],null]]]]],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,3],[[30,0,[\\\"useFamilyTree\\\"]],[30,3,[\\\"indent\\\"]],[28,[37,4],[[30,0,[\\\"model\\\"]]],null]],null],[[[1,\\\"              \\\"],[10,1],[15,0,[29,[\\\"horizontal-line \\\",[52,[30,3,[\\\"noLine\\\"]],\\\"no-line\\\",\\\"\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[8,[39,26],null,[[\\\"@displayOnly\\\",\\\"@text\\\",\\\"@value\\\",\\\"@model\\\",\\\"@unselectable\\\"],[[30,0,[\\\"displayOnly\\\"]],[28,[37,11],[[30,3,[\\\"label\\\"]],\\\"No name provided\\\"],null],[30,3,[\\\"value\\\"]],[30,0,[\\\"model\\\"]],true]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[3]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"\\\\n  \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[30,0,[\\\"newItem\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"select-or-create-block\\\"],[12],[1,\\\"\\\\n      \\\"],[18,4,[[30,0,[\\\"newItem\\\"]],false]],[1,\\\"\\\\n\\\\n\\\"],[41,[51,[30,0,[\\\"hideSelect\\\"]]],[[[1,\\\"        \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,20],[[30,0],\\\"removeNewItem\\\"],null],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-times-circle clickable icon-delete\\\"],[12],[13],[1,\\\"\\\\n          Cancel (do not add this\\\\n          \\\"],[1,[30,0,[\\\"itemName\\\"]]],[1,\\\")\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[28,[37,3],[[30,0,[\\\"selectedItem\\\"]],[28,[37,4],[[30,0,[\\\"newItem\\\"]]],null],[28,[37,4],[[30,0,[\\\"displayOnly\\\"]]],null],[30,0,[\\\"editExistingItems\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[1,\\\"    \\\"],[18,4,[[30,0,[\\\"selectedItem\\\"]],true]],[1,\\\"\\\\n\\\"],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[28,[37,3],[[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"selectedItem\\\"]]],null],[[[1,\\\"    \\\"],[18,4,[[30,0,[\\\"selectedItem\\\"]],false]],[1,\\\"\\\\n\\\"]],[]],null]],[]]]],[\\\"item\\\",\\\"item\\\",\\\"item\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"non-empty-string\\\",\\\"p\\\",\\\"and\\\",\\\"not\\\",\\\"span\\\",\\\"help-text-icon\\\",\\\"br\\\",\\\"no-information\\\",\\\"required-field\\\",\\\"unless\\\",\\\"or\\\",\\\"div\\\",\\\"liquid-if\\\",\\\"liquid-spacer\\\",\\\"each\\\",\\\"-track-array\\\",\\\"sum\\\",\\\"check-box\\\",\\\"button\\\",\\\"action\\\",\\\"i\\\",\\\"has-block\\\",\\\"gt\\\",\\\"yield\\\",\\\"h3\\\",\\\"radio-buttons\\\",\\\"a\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/select-or-create-legacy.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/select-or-create-multiple\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (non-empty-string this.label)}}\n    <p class={{if (and this.required (not this.hasContent)) \"can-highlight\"}}>\n      {{this.label}}\n      {{#if (and this.required (not this.displayOnly))}}\n        <span class=\"required-field-marker {{if this.hasContent 'required-field-provided'}}\"></span>\n      {{/if}}\n      <HelpTextIcon @helpText={{this.helpText}} @displayOnly={{this.displayOnly}} @lawyerName={{this.clientRecord.helpTextIconLawyerName}} />\n      {{#if this.displayOnly}}\n        <br />\n      {{/if}}\n    </p>\n  {{/if}}\n  {{#if (and this.displayOnly (not this.model))}}\n    <NoInformation />\n    {{#if this.required}}\n      <RequiredField />\n    {{/if}}\n  {{/if}}\n  {{#unless (or this.hideSelect this.displayOnly)}}\n    <div class=\"select-or-create-options multiple\">\n      <LiquidIf @predicate={{this.augmentedSourceList.length}}>\n        <LiquidSpacer>\n          <LiquidIf @predicate={{not this.notSureModel}}>\n            {{#each this.augmentedSourceList as |item|}}\n              <div class=\"display-flex {{or (if item.indent (sum 'indent-' item.indent)) (if item.disabled 'opacity-0.5')}}\">\n                <CheckBox @text={{or item.label \"No name provided\"}} @model={{item.selected}} @disabled={{item.disabled}} />\n              </div>\n            {{/each}}\n          </LiquidIf>\n          <LiquidIf @predicate={{and this.notSureOption (eq this.selectedEntities.length 0)}}>\n            <CheckBox @text={{or this.notSureOptionText \"I'm not sure\"}} @model={{this.notSureModel}} />\n          </LiquidIf>\n        </LiquidSpacer>\n      </LiquidIf>\n  \n      <LiquidIf @predicate={{not this.notSureModel}}>\n        <div>\n          <button type=\"button\" {{action \"addItem\"}} class=\"clickable plain-button free-list-add\">\n            <i class=\"fal fa-plus-circle\"></i>\n            {{parse-text this.addAnotherText model=this.Client touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n          </button>\n        </div>\n      </LiquidIf>\n    </div>\n  {{/unless}}\n  \n  <LiquidIf @predicate={{and (has-block) this.selectedEntities.length (not this.notSureModel)}}>\n    {{#unless (or this.hideSelect this.displayOnly)}}\n      <p>\n        Let's get a bit more information about\n        {{#if (gt this.selectedEntities.length 1)}}\n          these\n          {{parse-text this.itemNamePlural model=this.Client touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}.\n        {{else}}\n          this\n          {{parse-text this.itemName model=this.Client touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}.\n        {{/if}}\n      </p>\n    {{/unless}}\n    {{#each this.augmentedSourceList as |item|}}\n      <LiquidIf @predicate={{item.selected}}>\n        {{#if this.displayOnly}}\n          {{yield item.source false}}\n        {{else}}\n          <div class=\"select-or-create-block multiple-write-and-read\">\n            <h3 class=\"clickable\" {{action \"toggleExpand\" item.source}}>\n              <i class=\"marginleft-0 fal fa-chevron-circle-{{if item.source.expand 'right' 'down'}} clickable\"></i>\n              {{item.label}}\n            </h3>\n            <LiquidIf @predicate={{not item.source.expand}}>\n              {{yield item.source (not item.source.tmpVarNewCreation)}}\n            </LiquidIf>\n          </div>\n        {{/if}}\n      </LiquidIf>\n    {{/each}}\n  </LiquidIf>\n  */\n  {\n    \"id\": \"TnWx9DjA\",\n    \"block\": \"[[[41,[28,[37,1],[[30,0,[\\\"label\\\"]]],null],[[[1,\\\"  \\\"],[10,2],[15,0,[52,[28,[37,3],[[30,0,[\\\"required\\\"]],[28,[37,4],[[30,0,[\\\"hasContent\\\"]]],null]],null],\\\"can-highlight\\\"]],[12],[1,\\\"\\\\n    \\\"],[1,[30,0,[\\\"label\\\"]]],[1,\\\"\\\\n\\\"],[41,[28,[37,3],[[30,0,[\\\"required\\\"]],[28,[37,4],[[30,0,[\\\"displayOnly\\\"]]],null]],null],[[[1,\\\"      \\\"],[10,1],[15,0,[29,[\\\"required-field-marker \\\",[52,[30,0,[\\\"hasContent\\\"]],\\\"required-field-provided\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[8,[39,6],null,[[\\\"@helpText\\\",\\\"@displayOnly\\\",\\\"@lawyerName\\\"],[[30,0,[\\\"helpText\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"clientRecord\\\",\\\"helpTextIconLawyerName\\\"]]]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"displayOnly\\\"]],[[[1,\\\"      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,3],[[30,0,[\\\"displayOnly\\\"]],[28,[37,4],[[30,0,[\\\"model\\\"]]],null]],null],[[[1,\\\"  \\\"],[8,[39,8],null,null,null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"required\\\"]],[[[1,\\\"    \\\"],[8,[39,9],null,null,null],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[41,[51,[28,[37,11],[[30,0,[\\\"hideSelect\\\"]],[30,0,[\\\"displayOnly\\\"]]],null]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"select-or-create-options multiple\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[30,0,[\\\"augmentedSourceList\\\",\\\"length\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[39,14],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[28,[37,4],[[30,0,[\\\"notSureModel\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,16],[[28,[37,16],[[30,0,[\\\"augmentedSourceList\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[10,0],[15,0,[29,[\\\"display-flex \\\",[28,[37,11],[[52,[30,1,[\\\"indent\\\"]],[28,[37,17],[\\\"indent-\\\",[30,1,[\\\"indent\\\"]]],null]],[52,[30,1,[\\\"disabled\\\"]],\\\"opacity-0.5\\\"]],null]]]],[12],[1,\\\"\\\\n              \\\"],[8,[39,18],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@disabled\\\"],[[28,[37,11],[[30,1,[\\\"label\\\"]],\\\"No name provided\\\"],null],[30,1,[\\\"selected\\\"]],[30,1,[\\\"disabled\\\"]]]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[28,[37,3],[[30,0,[\\\"notSureOption\\\"]],[28,[37,19],[[30,0,[\\\"selectedEntities\\\",\\\"length\\\"]],0],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[39,18],null,[[\\\"@text\\\",\\\"@model\\\"],[[28,[37,11],[[30,0,[\\\"notSureOptionText\\\"]],\\\"I'm not sure\\\"],null],[30,0,[\\\"notSureModel\\\"]]]],null],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\\n    \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[28,[37,4],[[30,0,[\\\"notSureModel\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[11,\\\"button\\\"],[24,0,\\\"clickable plain-button free-list-add\\\"],[24,4,\\\"button\\\"],[4,[38,21],[[30,0],\\\"addItem\\\"],null],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[1,[28,[35,23],[[30,0,[\\\"addAnotherText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"Client\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[28,[37,3],[[48,[30,3]],[30,0,[\\\"selectedEntities\\\",\\\"length\\\"]],[28,[37,4],[[30,0,[\\\"notSureModel\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[51,[28,[37,11],[[30,0,[\\\"hideSelect\\\"]],[30,0,[\\\"displayOnly\\\"]]],null]],[[[1,\\\"    \\\"],[10,2],[12],[1,\\\"\\\\n      Let's get a bit more information about\\\\n\\\"],[41,[28,[37,25],[[30,0,[\\\"selectedEntities\\\",\\\"length\\\"]],1],null],[[[1,\\\"        these\\\\n        \\\"],[1,[28,[35,23],[[30,0,[\\\"itemNamePlural\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"Client\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\".\\\\n\\\"]],[]],[[[1,\\\"        this\\\\n        \\\"],[1,[28,[35,23],[[30,0,[\\\"itemName\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"Client\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\".\\\\n\\\"]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[42,[28,[37,16],[[28,[37,16],[[30,0,[\\\"augmentedSourceList\\\"]]],null]],null],null,[[[1,\\\"    \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[30,2,[\\\"selected\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"displayOnly\\\"]],[[[1,\\\"        \\\"],[18,3,[[30,2,[\\\"source\\\"]],false]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"select-or-create-block multiple-write-and-read\\\"],[12],[1,\\\"\\\\n          \\\"],[11,\\\"h3\\\"],[24,0,\\\"clickable\\\"],[4,[38,21],[[30,0],\\\"toggleExpand\\\",[30,2,[\\\"source\\\"]]],null],[12],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"marginleft-0 fal fa-chevron-circle-\\\",[52,[30,2,[\\\"source\\\",\\\"expand\\\"]],\\\"right\\\",\\\"down\\\"],\\\" clickable\\\"]]],[12],[13],[1,\\\"\\\\n            \\\"],[1,[30,2,[\\\"label\\\"]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[8,[39,13],null,[[\\\"@predicate\\\"],[[28,[37,4],[[30,2,[\\\"source\\\",\\\"expand\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[18,3,[[30,2,[\\\"source\\\"]],[28,[37,4],[[30,2,[\\\"source\\\",\\\"tmpVarNewCreation\\\"]]],null]]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[2]],null]],[]]]]]],[\\\"item\\\",\\\"item\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"non-empty-string\\\",\\\"p\\\",\\\"and\\\",\\\"not\\\",\\\"span\\\",\\\"help-text-icon\\\",\\\"br\\\",\\\"no-information\\\",\\\"required-field\\\",\\\"unless\\\",\\\"or\\\",\\\"div\\\",\\\"liquid-if\\\",\\\"liquid-spacer\\\",\\\"each\\\",\\\"-track-array\\\",\\\"sum\\\",\\\"check-box\\\",\\\"eq\\\",\\\"button\\\",\\\"action\\\",\\\"i\\\",\\\"parse-text\\\",\\\"has-block\\\",\\\"gt\\\",\\\"yield\\\",\\\"h3\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/select-or-create-multiple.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/select-or-create-singular\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (non-empty-string this.label)}}\n    <p class={{if (and this.required (not this.hasContent)) \"can-highlight\"}}>\n      {{this.label}}\n      {{#if (and this.required (not this.displayOnly))}}\n        <span class=\"required-field-marker {{if this.hasContent 'required-field-provided'}}\"></span>\n      {{/if}}\n      <HelpTextIcon @helpText={{this.helpText}} @displayOnly={{this.displayOnly}} @lawyerName={{this.clientRecord.helpTextIconLawyerName}} />\n      {{#if this.displayOnly}}\n        <br />\n      {{/if}}\n    </p>\n  {{/if}}\n  {{#if (and this.displayOnly (not this.model))}}\n    <NoInformation />\n    {{#if this.required}}\n      <RequiredField />\n    {{/if}}\n  {{/if}}\n  {{#unless this.displayOnly}}\n    {{#unless this.hideSelect}}\n      <p class=\"select-or-create-options\">\n        {{#each this.augmentedSourceList as |item|}}\n          <div class=\"display-flex {{if (and item.indent (not this.model)) (sum 'indent-' item.indent)}}\">\n            {{#if (and this.useFamilyTree item.indent (not this.model))}}\n              <span class=\"horizontal-line {{if item.noLine 'no-line' ''}}\"></span>\n            {{/if}}\n            <RadioButtons @displayOnly={{this.displayOnly}} @text={{or item.label \"No name provided\"}} @value={{item.value}} @model={{this.model}} @unselectable={{true}} />\n          </div>\n        {{/each}}\n      </p>\n    {{/unless}}\n  {{/unless}}\n  <LiquidIf @predicate={{this.newItem}}>\n    <div class=\"select-or-create-block\">\n      {{yield this.newItem false}}\n      {{#unless this.hideSelect}}\n        <a class=\"clickable\" {{action \"removeNewItem\"}}>\n          <i class=\"fal fa-times-circle clickable icon-delete\" />\n          Cancel (do not add this\n          {{parse-text this.itemName model=this.Client touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}})\n        </a>\n      {{/unless}}\n    </div>\n  </LiquidIf>\n  <LiquidIf @predicate={{and this.selectedItem (not this.newItem) (not this.displayOnly) this.editExistingItems}}>\n    {{yield this.selectedItem true}}\n  </LiquidIf>\n  {{#if (and this.displayOnly this.selectedItem)}}\n    {{yield this.selectedItem false}}\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"E6qehRud\",\n    \"block\": \"[[[41,[28,[37,1],[[30,0,[\\\"label\\\"]]],null],[[[1,\\\"  \\\"],[10,2],[15,0,[52,[28,[37,3],[[30,0,[\\\"required\\\"]],[28,[37,4],[[30,0,[\\\"hasContent\\\"]]],null]],null],\\\"can-highlight\\\"]],[12],[1,\\\"\\\\n    \\\"],[1,[30,0,[\\\"label\\\"]]],[1,\\\"\\\\n\\\"],[41,[28,[37,3],[[30,0,[\\\"required\\\"]],[28,[37,4],[[30,0,[\\\"displayOnly\\\"]]],null]],null],[[[1,\\\"      \\\"],[10,1],[15,0,[29,[\\\"required-field-marker \\\",[52,[30,0,[\\\"hasContent\\\"]],\\\"required-field-provided\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[8,[39,6],null,[[\\\"@helpText\\\",\\\"@displayOnly\\\",\\\"@lawyerName\\\"],[[30,0,[\\\"helpText\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"clientRecord\\\",\\\"helpTextIconLawyerName\\\"]]]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"displayOnly\\\"]],[[[1,\\\"      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,3],[[30,0,[\\\"displayOnly\\\"]],[28,[37,4],[[30,0,[\\\"model\\\"]]],null]],null],[[[1,\\\"  \\\"],[8,[39,8],null,null,null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"required\\\"]],[[[1,\\\"    \\\"],[8,[39,9],null,null,null],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[41,[51,[30,0,[\\\"displayOnly\\\"]]],[[[41,[51,[30,0,[\\\"hideSelect\\\"]]],[[[1,\\\"    \\\"],[10,2],[14,0,\\\"select-or-create-options\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,12],[[28,[37,12],[[30,0,[\\\"augmentedSourceList\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[10,0],[15,0,[29,[\\\"display-flex \\\",[52,[28,[37,3],[[30,1,[\\\"indent\\\"]],[28,[37,4],[[30,0,[\\\"model\\\"]]],null]],null],[28,[37,14],[\\\"indent-\\\",[30,1,[\\\"indent\\\"]]],null]]]]],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,3],[[30,0,[\\\"useFamilyTree\\\"]],[30,1,[\\\"indent\\\"]],[28,[37,4],[[30,0,[\\\"model\\\"]]],null]],null],[[[1,\\\"            \\\"],[10,1],[15,0,[29,[\\\"horizontal-line \\\",[52,[30,1,[\\\"noLine\\\"]],\\\"no-line\\\",\\\"\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[8,[39,15],null,[[\\\"@displayOnly\\\",\\\"@text\\\",\\\"@value\\\",\\\"@model\\\",\\\"@unselectable\\\"],[[30,0,[\\\"displayOnly\\\"]],[28,[37,16],[[30,1,[\\\"label\\\"]],\\\"No name provided\\\"],null],[30,1,[\\\"value\\\"]],[30,0,[\\\"model\\\"]],true]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[8,[39,17],null,[[\\\"@predicate\\\"],[[30,0,[\\\"newItem\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"select-or-create-block\\\"],[12],[1,\\\"\\\\n    \\\"],[18,2,[[30,0,[\\\"newItem\\\"]],false]],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"hideSelect\\\"]]],[[[1,\\\"      \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,20],[[30,0],\\\"removeNewItem\\\"],null],[12],[1,\\\"\\\\n        \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-times-circle clickable icon-delete\\\"],[12],[13],[1,\\\"\\\\n        Cancel (do not add this\\\\n        \\\"],[1,[28,[35,22],[[30,0,[\\\"itemName\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"Client\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\")\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"],[8,[39,17],null,[[\\\"@predicate\\\"],[[28,[37,3],[[30,0,[\\\"selectedItem\\\"]],[28,[37,4],[[30,0,[\\\"newItem\\\"]]],null],[28,[37,4],[[30,0,[\\\"displayOnly\\\"]]],null],[30,0,[\\\"editExistingItems\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[18,2,[[30,0,[\\\"selectedItem\\\"]],true]],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[28,[37,3],[[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"selectedItem\\\"]]],null],[[[1,\\\"  \\\"],[18,2,[[30,0,[\\\"selectedItem\\\"]],false]],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"item\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"non-empty-string\\\",\\\"p\\\",\\\"and\\\",\\\"not\\\",\\\"span\\\",\\\"help-text-icon\\\",\\\"br\\\",\\\"no-information\\\",\\\"required-field\\\",\\\"unless\\\",\\\"each\\\",\\\"-track-array\\\",\\\"div\\\",\\\"sum\\\",\\\"radio-buttons\\\",\\\"or\\\",\\\"liquid-if\\\",\\\"yield\\\",\\\"a\\\",\\\"action\\\",\\\"i\\\",\\\"parse-text\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/select-or-create-singular.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/select-or-create-switcher-presets\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#unless @question.disableDefaults}}\n    <LiquidIf @predicate={{and @question.allowPeople (not @item.name)}}>\n      {{#if @question.askFor.title}}\n        <SettifyInputSwitcher\n          @question={{hash id=\"title\" type=\"title\" title=\"Title\" required=@question.requiredFields.title}}\n          @highlightRequiredFields={{@highlightRequiredFields}}\n          @displayOnly={{@displayOnly}}\n          @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n          @clientRecord={{@clientRecord}}\n          @model={{@item}}\n          @adminMode={{@adminMode}}\n        />\n      {{/if}}\n      <SettifyInputSwitcher\n        @question={{hash id=\"firstName\" type=\"firstname\" title=\"First name\" required=@question.requiredFields.firstName}}\n        @highlightRequiredFields={{@highlightRequiredFields}}\n        @displayOnly={{@displayOnly}}\n        @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n        @clientRecord={{@clientRecord}}\n        @model={{@item}}\n        @adminMode={{@adminMode}}\n      />\n      {{#if @question.askFor.middleName}}\n        <SettifyInputSwitcher\n          @question={{hash id=\"middleName\" type=\"textline\" title=\"Middle name\" required=@question.requiredFields.middleName}}\n          @highlightRequiredFields={{@highlightRequiredFields}}\n          @displayOnly={{@displayOnly}}\n          @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n          @clientRecord={{@clientRecord}}\n          @model={{@item}}\n          @adminMode={{@adminMode}}\n        />\n      {{/if}}\n      {{#if @question.askFor.surname}}\n        <SettifyInputSwitcher\n          @question={{hash id=\"surname\" type=\"textline\" title=(if (eq @question.surnameOrLastNameLabel \"lastName\") \"Last name\" \"Surname\") required=@question.requiredFields.surname}}\n          @highlightRequiredFields={{@highlightRequiredFields}}\n          @displayOnly={{@displayOnly}}\n          @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n          @clientRecord={{@clientRecord}}\n          @model={{@item}}\n          @adminMode={{@adminMode}}\n        />\n      {{/if}}\n      {{#if @question.askFor.dateOfBirth}}\n        <SettifyInputSwitcher\n          @question={{hash id=\"dob\" type=\"date\" title=\"Date of birth\" required=@question.requiredFields.dateOfBirth}}\n          @highlightRequiredFields={{@highlightRequiredFields}}\n          @displayOnly={{@displayOnly}}\n          @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n          @clientRecord={{@clientRecord}}\n          @model={{@item}}\n          @adminMode={{@adminMode}}\n        />\n      {{/if}}\n      {{#if @question.askFor.placeOfBirth}}\n        <SettifyInputSwitcher\n          @question={{hash id=\"placeOfBirth\" type=\"textline\" title=\"Place of birth (city and country)\" required=@question.requiredFields.placeOfBirth}}\n          @highlightRequiredFields={{@highlightRequiredFields}}\n          @displayOnly={{@displayOnly}}\n          @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n          @clientRecord={{@clientRecord}}\n          @model={{@item}}\n          @adminMode={{@adminMode}}\n        />\n      {{/if}}\n      {{#if @question.askFor.occupation}}\n        <SettifyInputSwitcher\n          @question={{hash id=\"occupation\" type=\"textline\" title=\"Occupation\" required=@question.requiredFields.occupation}}\n          @highlightRequiredFields={{@highlightRequiredFields}}\n          @displayOnly={{@displayOnly}}\n          @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n          @clientRecord={{@clientRecord}}\n          @model={{@item}}\n          @adminMode={{@adminMode}}\n        />\n      {{/if}}\n      {{#if @question.askFor.language}}\n        <SettifyInputSwitcher\n          @question={{hash\n            id=\"language\"\n            type=\"textline\"\n            title=\"First language\"\n            required=@question.requiredFields.language\n            default=\"English\"\n            placeholder=\"English\"\n            displayPlaceholderInSummary=true\n          }}\n          @highlightRequiredFields={{@highlightRequiredFields}}\n          @displayOnly={{@displayOnly}}\n          @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n          @clientRecord={{@clientRecord}}\n          @model={{@item}}\n          @adminMode={{@adminMode}}\n        />\n      {{/if}}\n    </LiquidIf>\n    <LiquidIf @predicate={{and @question.allowCorporations (not @item.firstName)}}>\n      <SettifyInputSwitcher\n        @question={{hash id=\"name\" type=\"textline\" title=\"Company name\" required=@question.requiredFields.name}}\n        @highlightRequiredFields={{@highlightRequiredFields}}\n        @displayOnly={{@displayOnly}}\n        @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n        @clientRecord={{@clientRecord}}\n        @model={{@item}}\n        @adminMode={{@adminMode}}\n      />\n      <SettifyInputSwitcher\n        @question={{hash id=\"acn\" type=\"textline\" title=\"Company ACN\" required=@question.requiredFields.acn}}\n        @highlightRequiredFields={{@highlightRequiredFields}}\n        @displayOnly={{@displayOnly}}\n        @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n        @clientRecord={{@clientRecord}}\n        @model={{@item}}\n        @adminMode={{@adminMode}}\n      />\n      <LiquidIf @predicate={{@item.name}}>\n        {{#if @question.askFor.chairman}}\n          <SettifyInputSwitcher\n            @question={{hash id=\"chairman\" type=\"textline\" title=\"Chairman of Directors\" required=@question.requiredFields.chairman}}\n            @highlightRequiredFields={{@highlightRequiredFields}}\n            @displayOnly={{@displayOnly}}\n            @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n            @clientRecord={{@clientRecord}}\n            @model={{@item}}\n            @adminMode={{@adminMode}}\n          />\n        {{/if}}\n        {{#if @question.askFor.authorisedRepresentative}}\n          <SettifyInputSwitcher\n            @question={{hash id=\"authorisedRepresentative\" type=\"textline\" title=\"Authorised representative\" required=@question.requiredFields.authorisedRepresentative}}\n            @highlightRequiredFields={{@highlightRequiredFields}}\n            @displayOnly={{@displayOnly}}\n            @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n            @clientRecord={{@clientRecord}}\n            @model={{@item}}\n            @adminMode={{@adminMode}}\n          />\n          <SettifyInputSwitcher\n            @question={{hash\n              id=\"authorisedRepresentativeType\"\n              type=\"radio\"\n              title=\"What is the authorised representative's role?\"\n              shortTitle=\"Their role\"\n              options=this.authorisedRepresentativeTypeOptions\n              required=@question.requiredFields.authorisedRepresentative\n            }}\n            @highlightRequiredFields={{@highlightRequiredFields}}\n            @displayOnly={{@displayOnly}}\n            @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n            @clientRecord={{@clientRecord}}\n            @model={{@item}}\n            @adminMode={{@adminMode}}\n          />\n        {{/if}}\n      </LiquidIf>\n    </LiquidIf>\n    {{#if @question.askFor.email}}\n      <SettifyInputSwitcher\n        @question={{hash id=\"email\" type=\"email\" title=\"Email address\" required=@question.requiredFields.email}}\n        @highlightRequiredFields={{@highlightRequiredFields}}\n        @displayOnly={{@displayOnly}}\n        @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n        @clientRecord={{@clientRecord}}\n        @model={{@item}}\n        @adminMode={{@adminMode}}\n      />\n    {{/if}}\n    {{#if @question.askFor.phone}}\n      <SettifyInputSwitcher\n        @question={{hash id=\"phone\" type=\"phone\" title=\"Direct phone\" required=@question.requiredFields.phone}}\n        @highlightRequiredFields={{@highlightRequiredFields}}\n        @displayOnly={{@displayOnly}}\n        @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n        @clientRecord={{@clientRecord}}\n        @model={{@item}}\n        @adminMode={{@adminMode}}\n      />\n    {{/if}}\n    {{#if @question.askFor.fax}}\n      <SettifyInputSwitcher\n        @question={{hash id=\"fax\" type=\"phone\" title=\"Fax number\" required=@question.requiredFields.fax}}\n        @highlightRequiredFields={{@highlightRequiredFields}}\n        @displayOnly={{@displayOnly}}\n        @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n        @clientRecord={{@clientRecord}}\n        @model={{@item}}\n        @adminMode={{@adminMode}}\n      />\n    {{/if}}\n    {{#if @question.askFor.mobile}}\n      <SettifyInputSwitcher\n        @question={{hash id=\"mobile\" type=\"phone\" title=\"Mobile number\" required=@question.requiredFields.phone}}\n        @highlightRequiredFields={{@highlightRequiredFields}}\n        @displayOnly={{@displayOnly}}\n        @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n        @clientRecord={{@clientRecord}}\n        @model={{@item}}\n        @adminMode={{@adminMode}}\n      />\n    {{/if}}\n    {{#if @question.askFor.address}}\n      <SettifyInputSwitcher\n        @question={{hash id=\"address\" type=\"address\" title=\"Address\" required=@question.requiredFields.address}}\n        @filterListOverride={{@filterList}}\n        @filterTypeOverride={{@filterType}}\n        @highlightRequiredFields={{@highlightRequiredFields}}\n        @displayOnly={{@displayOnly}}\n        @context={{augment-hash @context editingExistingItem=@editingExistingItem}}\n        @clientRecord={{@clientRecord}}\n        @model={{@item}}\n        @adminMode={{@adminMode}}\n      />\n    {{/if}}\n  {{/unless}}\n  */\n  {\n    \"id\": \"4eVNEdOH\",\n    \"block\": \"[[[41,[51,[30,1,[\\\"disableDefaults\\\"]]],[[[1,\\\"  \\\"],[8,[39,1],null,[[\\\"@predicate\\\"],[[28,[37,2],[[30,1,[\\\"allowPeople\\\"]],[28,[37,3],[[30,2,[\\\"name\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"askFor\\\",\\\"title\\\"]],[[[1,\\\"      \\\"],[8,[39,5],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,6],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"title\\\",\\\"title\\\",\\\"Title\\\",[30,1,[\\\"requiredFields\\\",\\\"title\\\"]]]]],[30,3],[30,4],[28,[37,7],[[30,5]],[[\\\"editingExistingItem\\\"],[[30,6]]]],[30,7],[30,2],[30,8]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[8,[39,5],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,6],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"firstName\\\",\\\"firstname\\\",\\\"First name\\\",[30,1,[\\\"requiredFields\\\",\\\"firstName\\\"]]]]],[30,3],[30,4],[28,[37,7],[[30,5]],[[\\\"editingExistingItem\\\"],[[30,6]]]],[30,7],[30,2],[30,8]]],null],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"askFor\\\",\\\"middleName\\\"]],[[[1,\\\"      \\\"],[8,[39,5],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,6],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"middleName\\\",\\\"textline\\\",\\\"Middle name\\\",[30,1,[\\\"requiredFields\\\",\\\"middleName\\\"]]]]],[30,3],[30,4],[28,[37,7],[[30,5]],[[\\\"editingExistingItem\\\"],[[30,6]]]],[30,7],[30,2],[30,8]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,1,[\\\"askFor\\\",\\\"surname\\\"]],[[[1,\\\"      \\\"],[8,[39,5],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,6],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"surname\\\",\\\"textline\\\",[52,[28,[37,8],[[30,1,[\\\"surnameOrLastNameLabel\\\"]],\\\"lastName\\\"],null],\\\"Last name\\\",\\\"Surname\\\"],[30,1,[\\\"requiredFields\\\",\\\"surname\\\"]]]]],[30,3],[30,4],[28,[37,7],[[30,5]],[[\\\"editingExistingItem\\\"],[[30,6]]]],[30,7],[30,2],[30,8]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,1,[\\\"askFor\\\",\\\"dateOfBirth\\\"]],[[[1,\\\"      \\\"],[8,[39,5],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,6],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"dob\\\",\\\"date\\\",\\\"Date of birth\\\",[30,1,[\\\"requiredFields\\\",\\\"dateOfBirth\\\"]]]]],[30,3],[30,4],[28,[37,7],[[30,5]],[[\\\"editingExistingItem\\\"],[[30,6]]]],[30,7],[30,2],[30,8]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,1,[\\\"askFor\\\",\\\"placeOfBirth\\\"]],[[[1,\\\"      \\\"],[8,[39,5],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,6],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"placeOfBirth\\\",\\\"textline\\\",\\\"Place of birth (city and country)\\\",[30,1,[\\\"requiredFields\\\",\\\"placeOfBirth\\\"]]]]],[30,3],[30,4],[28,[37,7],[[30,5]],[[\\\"editingExistingItem\\\"],[[30,6]]]],[30,7],[30,2],[30,8]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,1,[\\\"askFor\\\",\\\"occupation\\\"]],[[[1,\\\"      \\\"],[8,[39,5],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,6],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"occupation\\\",\\\"textline\\\",\\\"Occupation\\\",[30,1,[\\\"requiredFields\\\",\\\"occupation\\\"]]]]],[30,3],[30,4],[28,[37,7],[[30,5]],[[\\\"editingExistingItem\\\"],[[30,6]]]],[30,7],[30,2],[30,8]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,1,[\\\"askFor\\\",\\\"language\\\"]],[[[1,\\\"      \\\"],[8,[39,5],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,6],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\",\\\"default\\\",\\\"placeholder\\\",\\\"displayPlaceholderInSummary\\\"],[\\\"language\\\",\\\"textline\\\",\\\"First language\\\",[30,1,[\\\"requiredFields\\\",\\\"language\\\"]],\\\"English\\\",\\\"English\\\",true]]],[30,3],[30,4],[28,[37,7],[[30,5]],[[\\\"editingExistingItem\\\"],[[30,6]]]],[30,7],[30,2],[30,8]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[39,1],null,[[\\\"@predicate\\\"],[[28,[37,2],[[30,1,[\\\"allowCorporations\\\"]],[28,[37,3],[[30,2,[\\\"firstName\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[39,5],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,6],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"name\\\",\\\"textline\\\",\\\"Company name\\\",[30,1,[\\\"requiredFields\\\",\\\"name\\\"]]]]],[30,3],[30,4],[28,[37,7],[[30,5]],[[\\\"editingExistingItem\\\"],[[30,6]]]],[30,7],[30,2],[30,8]]],null],[1,\\\"\\\\n    \\\"],[8,[39,5],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,6],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"acn\\\",\\\"textline\\\",\\\"Company ACN\\\",[30,1,[\\\"requiredFields\\\",\\\"acn\\\"]]]]],[30,3],[30,4],[28,[37,7],[[30,5]],[[\\\"editingExistingItem\\\"],[[30,6]]]],[30,7],[30,2],[30,8]]],null],[1,\\\"\\\\n    \\\"],[8,[39,1],null,[[\\\"@predicate\\\"],[[30,2,[\\\"name\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"askFor\\\",\\\"chairman\\\"]],[[[1,\\\"        \\\"],[8,[39,5],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,6],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"chairman\\\",\\\"textline\\\",\\\"Chairman of Directors\\\",[30,1,[\\\"requiredFields\\\",\\\"chairman\\\"]]]]],[30,3],[30,4],[28,[37,7],[[30,5]],[[\\\"editingExistingItem\\\"],[[30,6]]]],[30,7],[30,2],[30,8]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,1,[\\\"askFor\\\",\\\"authorisedRepresentative\\\"]],[[[1,\\\"        \\\"],[8,[39,5],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,6],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"authorisedRepresentative\\\",\\\"textline\\\",\\\"Authorised representative\\\",[30,1,[\\\"requiredFields\\\",\\\"authorisedRepresentative\\\"]]]]],[30,3],[30,4],[28,[37,7],[[30,5]],[[\\\"editingExistingItem\\\"],[[30,6]]]],[30,7],[30,2],[30,8]]],null],[1,\\\"\\\\n        \\\"],[8,[39,5],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,6],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"shortTitle\\\",\\\"options\\\",\\\"required\\\"],[\\\"authorisedRepresentativeType\\\",\\\"radio\\\",\\\"What is the authorised representative's role?\\\",\\\"Their role\\\",[30,0,[\\\"authorisedRepresentativeTypeOptions\\\"]],[30,1,[\\\"requiredFields\\\",\\\"authorisedRepresentative\\\"]]]]],[30,3],[30,4],[28,[37,7],[[30,5]],[[\\\"editingExistingItem\\\"],[[30,6]]]],[30,7],[30,2],[30,8]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"askFor\\\",\\\"email\\\"]],[[[1,\\\"    \\\"],[8,[39,5],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,6],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"email\\\",\\\"email\\\",\\\"Email address\\\",[30,1,[\\\"requiredFields\\\",\\\"email\\\"]]]]],[30,3],[30,4],[28,[37,7],[[30,5]],[[\\\"editingExistingItem\\\"],[[30,6]]]],[30,7],[30,2],[30,8]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,1,[\\\"askFor\\\",\\\"phone\\\"]],[[[1,\\\"    \\\"],[8,[39,5],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,6],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"phone\\\",\\\"phone\\\",\\\"Direct phone\\\",[30,1,[\\\"requiredFields\\\",\\\"phone\\\"]]]]],[30,3],[30,4],[28,[37,7],[[30,5]],[[\\\"editingExistingItem\\\"],[[30,6]]]],[30,7],[30,2],[30,8]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,1,[\\\"askFor\\\",\\\"fax\\\"]],[[[1,\\\"    \\\"],[8,[39,5],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,6],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"fax\\\",\\\"phone\\\",\\\"Fax number\\\",[30,1,[\\\"requiredFields\\\",\\\"fax\\\"]]]]],[30,3],[30,4],[28,[37,7],[[30,5]],[[\\\"editingExistingItem\\\"],[[30,6]]]],[30,7],[30,2],[30,8]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,1,[\\\"askFor\\\",\\\"mobile\\\"]],[[[1,\\\"    \\\"],[8,[39,5],null,[[\\\"@question\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,6],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"mobile\\\",\\\"phone\\\",\\\"Mobile number\\\",[30,1,[\\\"requiredFields\\\",\\\"phone\\\"]]]]],[30,3],[30,4],[28,[37,7],[[30,5]],[[\\\"editingExistingItem\\\"],[[30,6]]]],[30,7],[30,2],[30,8]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,1,[\\\"askFor\\\",\\\"address\\\"]],[[[1,\\\"    \\\"],[8,[39,5],null,[[\\\"@question\\\",\\\"@filterListOverride\\\",\\\"@filterTypeOverride\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@adminMode\\\"],[[28,[37,6],null,[[\\\"id\\\",\\\"type\\\",\\\"title\\\",\\\"required\\\"],[\\\"address\\\",\\\"address\\\",\\\"Address\\\",[30,1,[\\\"requiredFields\\\",\\\"address\\\"]]]]],[30,9],[30,10],[30,3],[30,4],[28,[37,7],[[30,5]],[[\\\"editingExistingItem\\\"],[[30,6]]]],[30,7],[30,2],[30,8]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]],null]],[\\\"@question\\\",\\\"@item\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@editingExistingItem\\\",\\\"@clientRecord\\\",\\\"@adminMode\\\",\\\"@filterList\\\",\\\"@filterType\\\"],false,[\\\"unless\\\",\\\"liquid-if\\\",\\\"and\\\",\\\"not\\\",\\\"if\\\",\\\"settify-input-switcher\\\",\\\"hash\\\",\\\"augment-hash\\\",\\\"eq\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/select-or-create-switcher-presets.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/settify-email-input\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.displayOnly}}\n    <div class=\"readonly-textarea settify-sensitive\">\n      {{this.label}}{{yield}}\n      {{#if this.model}}\n        {{this.model}}\n      {{else if this.notSureModel}}\n        Not sure\n      {{else}}\n        <NoInformation />\n        {{#if this.required}}\n          <RequiredField />\n        {{/if}}\n      {{/if}}\n      <br />\n    </div>\n  {{else}}\n    {{#if this.headerLabel}}\n      {{! headerLabel will place either label or yield on top of input rather than within}}\n      {{#if (non-empty-string this.label)}}\n        {{this.label}}\n      {{else if (has-block)}}\n        {{yield}}\n      {{/if}}\n      {{#if this.required}}\n        <span class=\"required-field-marker {{if this.validEmail 'required-field-provided'}}\"></span>\n      {{/if}}\n      <HelpTextIcon @helpText={{this.helpText}} @lawyerName={{this.clientRecord.helpTextIconLawyerName}} />\n    {{/if}}\n    <LiquidIf @predicate={{or (not this.notSureModel) this.notSureOptionDoesNotHideComponent}}>\n      <div class=\"{{if this.allowMultipleEmails 'settify-textarea-container' ''}} settify-sensitive\">\n        <div class={{if this.allowMultipleEmails \"settify-textarea\" \"settify-input\"}}>\n          {{#if this.allowMultipleEmails}}\n            <Textarea\n              class=\"form-control {{this.class}} {{if (and this.required (not this.model)) 'can-highlight'}}\"\n              @value={{this.model}}\n              name=\"email\"\n              rows={{2}}\n              placeholder=\"\"\n              disabled={{this.disabled}}\n              readonly={{this.readonly}}\n              autocomplete={{this.autoCompleteValue}}\n              maxlength={{32000}}\n            />\n          {{else}}\n            <Input\n              @value={{this.model}}\n              name=\"email\"\n              placeholder=\"\"\n              disabled={{this.disabled}}\n              readonly={{this.readonly}}\n              class={{sum \"form-control settify-sensitive\" this.class \" \" (if (and this.required (not this.validEmail)) \"can-highlight\")}}\n              maxlength={{256}}\n              @type=\"email\"\n              autocomplete={{this.autoCompleteValue}}\n            />\n          {{/if}}\n          <label class=\"settify-input-label {{if this.inputEntered 'valid'}}\">\n            {{#if (and this.label (not this.headerLabel))}}\n              {{this.label}}\n            {{else if (and (has-block) (not this.headerLabel))}}\n              {{yield}}\n            {{else if this.placeholder}}\n              <span class={{if (and this.inputEntered (not this.required)) \"fade\"}}>{{this.placeholder}}</span>\n            {{/if}}\n  \n            {{#if (and this.required (not this.headerLabel))}}\n              <span class=\"required-field-marker {{if this.validEmail 'required-field-provided'}}\"></span>\n            {{/if}}\n  \n            {{#if (and this.placeholder (or this.label (has-block)) (not this.headerLabel))}}\n              <span class=\"placeholder {{if this.inputEntered 'fade'}}\">{{this.placeholder}}</span>\n            {{/if}}\n          </label>\n          <span class=\"settify-input-line\"></span>\n        </div>\n      </div>\n      <LiquidIf @predicate={{this.potentialIssue}}>\n        <p>\n          Are you sure you meant\n          <b>{{this.potentialIssue.problem}}</b>, not\n          <b>{{this.potentialIssue.correction}}?</b>\n          If not,\n          <a class=\"clickable\" {{action \"fixIssue\" this.potentialIssue}}>click here and we'll fix it for you</a>.\n        </p>\n      </LiquidIf>\n      <LiquidIf @predicate={{this.showWarning}}>\n        <p><small>That doesn't look like a valid email address to us</small></p>\n      </LiquidIf>\n    </LiquidIf>\n    <LiquidIf @predicate={{and this.notSureOption (not this.model)}}>\n      <CheckBox @text={{or this.notSureOptionText \"I'm not sure\"}} @model={{this.notSureModel}} @onChange={{this.onChange}} />\n    </LiquidIf>\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"lCiMgMva\",\n    \"block\": \"[[[41,[30,0,[\\\"displayOnly\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"readonly-textarea settify-sensitive\\\"],[12],[1,\\\"\\\\n    \\\"],[1,[30,0,[\\\"label\\\"]]],[18,1,null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\"]],[[[1,\\\"      \\\"],[1,[30,0,[\\\"model\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"notSureModel\\\"]],[[[1,\\\"      Not sure\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[39,3],null,null,null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"required\\\"]],[[[1,\\\"        \\\"],[8,[39,4],null,null,null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"]],[]]]],[]]],[1,\\\"    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"headerLabel\\\"]],[[[41,[28,[37,6],[[30,0,[\\\"label\\\"]]],null],[[[1,\\\"      \\\"],[1,[30,0,[\\\"label\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[48,[30,1]],[[[1,\\\"      \\\"],[18,1,null],[1,\\\"\\\\n    \\\"]],[]],null]],[]]],[41,[30,0,[\\\"required\\\"]],[[[1,\\\"      \\\"],[10,1],[15,0,[29,[\\\"required-field-marker \\\",[52,[30,0,[\\\"validEmail\\\"]],\\\"required-field-provided\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[8,[39,9],null,[[\\\"@helpText\\\",\\\"@lawyerName\\\"],[[30,0,[\\\"helpText\\\"]],[30,0,[\\\"clientRecord\\\",\\\"helpTextIconLawyerName\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[28,[37,11],[[28,[37,12],[[30,0,[\\\"notSureModel\\\"]]],null],[30,0,[\\\"notSureOptionDoesNotHideComponent\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,0],[15,0,[29,[[52,[30,0,[\\\"allowMultipleEmails\\\"]],\\\"settify-textarea-container\\\",\\\"\\\"],\\\" settify-sensitive\\\"]]],[12],[1,\\\"\\\\n      \\\"],[10,0],[15,0,[52,[30,0,[\\\"allowMultipleEmails\\\"]],\\\"settify-textarea\\\",\\\"settify-input\\\"]],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"allowMultipleEmails\\\"]],[[[1,\\\"          \\\"],[8,[39,13],[[16,0,[29,[\\\"form-control \\\",[30,0,[\\\"class\\\"]],\\\" \\\",[52,[28,[37,14],[[30,0,[\\\"required\\\"]],[28,[37,12],[[30,0,[\\\"model\\\"]]],null]],null],\\\"can-highlight\\\"]]]],[24,3,\\\"email\\\"],[16,\\\"rows\\\",2],[24,\\\"placeholder\\\",\\\"\\\"],[16,\\\"disabled\\\",[30,0,[\\\"disabled\\\"]]],[16,\\\"readonly\\\",[30,0,[\\\"readonly\\\"]]],[16,\\\"autocomplete\\\",[30,0,[\\\"autoCompleteValue\\\"]]],[16,\\\"maxlength\\\",32000]],[[\\\"@value\\\"],[[30,0,[\\\"model\\\"]]]],null],[1,\\\"\\\"]],[]],[[[1,\\\"          \\\"],[8,[39,15],[[24,3,\\\"email\\\"],[24,\\\"placeholder\\\",\\\"\\\"],[16,\\\"disabled\\\",[30,0,[\\\"disabled\\\"]]],[16,\\\"readonly\\\",[30,0,[\\\"readonly\\\"]]],[16,0,[28,[37,16],[\\\"form-control settify-sensitive\\\",[30,0,[\\\"class\\\"]],\\\" \\\",[52,[28,[37,14],[[30,0,[\\\"required\\\"]],[28,[37,12],[[30,0,[\\\"validEmail\\\"]]],null]],null],\\\"can-highlight\\\"]],null]],[16,\\\"maxlength\\\",256],[16,\\\"autocomplete\\\",[30,0,[\\\"autoCompleteValue\\\"]]]],[[\\\"@value\\\",\\\"@type\\\"],[[30,0,[\\\"model\\\"]],\\\"email\\\"]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"        \\\"],[10,\\\"label\\\"],[15,0,[29,[\\\"settify-input-label \\\",[52,[30,0,[\\\"inputEntered\\\"]],\\\"valid\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,14],[[30,0,[\\\"label\\\"]],[28,[37,12],[[30,0,[\\\"headerLabel\\\"]]],null]],null],[[[1,\\\"            \\\"],[1,[30,0,[\\\"label\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,14],[[48,[30,1]],[28,[37,12],[[30,0,[\\\"headerLabel\\\"]]],null]],null],[[[1,\\\"            \\\"],[18,1,null],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"placeholder\\\"]],[[[1,\\\"            \\\"],[10,1],[15,0,[52,[28,[37,14],[[30,0,[\\\"inputEntered\\\"]],[28,[37,12],[[30,0,[\\\"required\\\"]]],null]],null],\\\"fade\\\"]],[12],[1,[30,0,[\\\"placeholder\\\"]]],[13],[1,\\\"\\\\n          \\\"]],[]],null]],[]]]],[]]],[1,\\\"\\\\n\\\"],[41,[28,[37,14],[[30,0,[\\\"required\\\"]],[28,[37,12],[[30,0,[\\\"headerLabel\\\"]]],null]],null],[[[1,\\\"            \\\"],[10,1],[15,0,[29,[\\\"required-field-marker \\\",[52,[30,0,[\\\"validEmail\\\"]],\\\"required-field-provided\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,14],[[30,0,[\\\"placeholder\\\"]],[28,[37,11],[[30,0,[\\\"label\\\"]],[48,[30,1]]],null],[28,[37,12],[[30,0,[\\\"headerLabel\\\"]]],null]],null],[[[1,\\\"            \\\"],[10,1],[15,0,[29,[\\\"placeholder \\\",[52,[30,0,[\\\"inputEntered\\\"]],\\\"fade\\\"]]]],[12],[1,[30,0,[\\\"placeholder\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"settify-input-line\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[30,0,[\\\"potentialIssue\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        Are you sure you meant\\\\n        \\\"],[10,\\\"b\\\"],[12],[1,[30,0,[\\\"potentialIssue\\\",\\\"problem\\\"]]],[13],[1,\\\", not\\\\n        \\\"],[10,\\\"b\\\"],[12],[1,[30,0,[\\\"potentialIssue\\\",\\\"correction\\\"]]],[1,\\\"?\\\"],[13],[1,\\\"\\\\n        If not,\\\\n        \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,21],[[30,0],\\\"fixIssue\\\",[30,0,[\\\"potentialIssue\\\"]]],null],[12],[1,\\\"click here and we'll fix it for you\\\"],[13],[1,\\\".\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showWarning\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[1,\\\"That doesn't look like a valid email address to us\\\"],[13],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[39,10],null,[[\\\"@predicate\\\"],[[28,[37,14],[[30,0,[\\\"notSureOption\\\"]],[28,[37,12],[[30,0,[\\\"model\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[39,23],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@onChange\\\"],[[28,[37,11],[[30,0,[\\\"notSureOptionText\\\"]],\\\"I'm not sure\\\"],null],[30,0,[\\\"notSureModel\\\"]],[30,0,[\\\"onChange\\\"]]]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]],[\\\"&default\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"yield\\\",\\\"no-information\\\",\\\"required-field\\\",\\\"br\\\",\\\"non-empty-string\\\",\\\"has-block\\\",\\\"span\\\",\\\"help-text-icon\\\",\\\"liquid-if\\\",\\\"or\\\",\\\"not\\\",\\\"textarea\\\",\\\"and\\\",\\\"input\\\",\\\"sum\\\",\\\"label\\\",\\\"p\\\",\\\"b\\\",\\\"a\\\",\\\"action\\\",\\\"small\\\",\\\"check-box\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/settify-email-input.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/settify-file-upload\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <LiquidIf @predicate={{this.uploading}}>\n    <LoadingSpinner />\n  </LiquidIf>\n  <LiquidIf @predicate={{this.s3result}}>\n    <b>{{this.s3result}}</b>\n  </LiquidIf>\n  <FileVirusScanStatus @bucket={{this.model.Bucket}} @key={{this.model.Key}} as |fileIsSafe|>\n    <LiquidIf @predicate={{this.uploadComplete}}>\n      {{#if fileIsSafe}}\n        <a class=\"clickable\" {{action \"download\"}}>{{this.model.Filename}}</a>\n      {{else}}\n        {{this.model.Filename}}\n      {{/if}}\n    </LiquidIf>\n    <LiquidIf @predicate={{not this.uploadComplete}}>\n      <div class=\"photo-upload\">\n        <div class=\"form-group\" ondragenter={{action \"startDraggingFile\"}} ondragleave={{action \"stopDraggingFile\"}} ondragover={{action \"dragOver\"}} ondrop={{action \"dropFile\"}}>\n          <input type=\"file\" id={{sum \"file-chooser-\" this.uid}} accept={{this.acceptBothCases}} class=\"fileselect\" onchange={{action \"uploadFile\"}} />\n          <label for={{sum \"file-chooser-\" this.uid}} class={{if this.fileDragging \"dragging\"}}>\n            <i class=\"fal fa-cloud-upload\"></i>\n            <span>Upload your attachment here</span><br /><br />\n            <span><small>Attachments must be in {{this.acceptPrettyString}} format, and no greater than {{this.maxUploadPrettyString}} in size</small></span>\n          </label>\n        </div>\n        <LiquidIf @predicate={{this.confirmingUpload}}>\n          <div class=\"upload-confirm\">\n            {{#if this.showImagePreview}}\n              <p>Preview</p>\n              <div style=\"display: flex; justify-content: center;\">\n                <img alt=\"preview\" style=\"max-width: 500px\" src={{this.previewURL}} />\n              </div>\n            {{/if}}\n            <div style=\"display: flex; flex-direction: row-reverse;\">\n              <button class=\"next-button hvr-float-shadow hvr-grow\" type=\"button\" {{action 'actionUpload' true}}>Confirm</button>\n              <button class=\"next-button hvr-float-shadow hvr-grow negative\" type=\"button\" {{action 'actionUpload' false}}>Cancel</button>\n            </div>\n          </div>\n        </LiquidIf>\n      </div>\n    </LiquidIf>\n  </FileVirusScanStatus>\n  \n  */\n  {\n    \"id\": \"OgKPFsZ0\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@predicate\\\"],[[30,0,[\\\"uploading\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[39,1],null,null,null],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"],[8,[39,0],null,[[\\\"@predicate\\\"],[[30,0,[\\\"s3result\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,\\\"b\\\"],[12],[1,[30,0,[\\\"s3result\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"],[8,[39,3],null,[[\\\"@bucket\\\",\\\"@key\\\"],[[30,0,[\\\"model\\\",\\\"Bucket\\\"]],[30,0,[\\\"model\\\",\\\"Key\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[8,[39,0],null,[[\\\"@predicate\\\"],[[30,0,[\\\"uploadComplete\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,1],[[[1,\\\"      \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,6],[[30,0],\\\"download\\\"],null],[12],[1,[30,0,[\\\"model\\\",\\\"Filename\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[1,[30,0,[\\\"model\\\",\\\"Filename\\\"]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[39,0],null,[[\\\"@predicate\\\"],[[28,[37,7],[[30,0,[\\\"uploadComplete\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"photo-upload\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"form-group\\\"],[15,\\\"ondragenter\\\",[28,[37,6],[[30,0],\\\"startDraggingFile\\\"],null]],[15,\\\"ondragleave\\\",[28,[37,6],[[30,0],\\\"stopDraggingFile\\\"],null]],[15,\\\"ondragover\\\",[28,[37,6],[[30,0],\\\"dragOver\\\"],null]],[15,\\\"ondrop\\\",[28,[37,6],[[30,0],\\\"dropFile\\\"],null]],[12],[1,\\\"\\\\n        \\\"],[10,\\\"input\\\"],[15,1,[28,[37,10],[\\\"file-chooser-\\\",[30,0,[\\\"uid\\\"]]],null]],[15,\\\"accept\\\",[30,0,[\\\"acceptBothCases\\\"]]],[14,0,\\\"fileselect\\\"],[15,\\\"onchange\\\",[28,[37,6],[[30,0],\\\"uploadFile\\\"],null]],[14,4,\\\"file\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[10,\\\"label\\\"],[15,\\\"for\\\",[28,[37,10],[\\\"file-chooser-\\\",[30,0,[\\\"uid\\\"]]],null]],[15,0,[52,[30,0,[\\\"fileDragging\\\"]],\\\"dragging\\\"]],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-cloud-upload\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[10,1],[12],[1,\\\"Upload your attachment here\\\"],[13],[10,\\\"br\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[10,1],[12],[10,\\\"small\\\"],[12],[1,\\\"Attachments must be in \\\"],[1,[30,0,[\\\"acceptPrettyString\\\"]]],[1,\\\" format, and no greater than \\\"],[1,[30,0,[\\\"maxUploadPrettyString\\\"]]],[1,\\\" in size\\\"],[13],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,0],null,[[\\\"@predicate\\\"],[[30,0,[\\\"confirmingUpload\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"upload-confirm\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showImagePreview\\\"]],[[[1,\\\"            \\\"],[10,2],[12],[1,\\\"Preview\\\"],[13],[1,\\\"\\\\n            \\\"],[10,0],[14,5,\\\"display: flex; justify-content: center;\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"img\\\"],[14,\\\"alt\\\",\\\"preview\\\"],[14,5,\\\"max-width: 500px\\\"],[15,\\\"src\\\",[30,0,[\\\"previewURL\\\"]]],[12],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[10,0],[14,5,\\\"display: flex; flex-direction: row-reverse;\\\"],[12],[1,\\\"\\\\n            \\\"],[11,\\\"button\\\"],[24,0,\\\"next-button hvr-float-shadow hvr-grow\\\"],[24,4,\\\"button\\\"],[4,[38,6],[[30,0],\\\"actionUpload\\\",true],null],[12],[1,\\\"Confirm\\\"],[13],[1,\\\"\\\\n            \\\"],[11,\\\"button\\\"],[24,0,\\\"next-button hvr-float-shadow hvr-grow negative\\\"],[24,4,\\\"button\\\"],[4,[38,6],[[30,0],\\\"actionUpload\\\",false],null],[12],[1,\\\"Cancel\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[1]]]]],[1,\\\"\\\\n\\\"]],[\\\"fileIsSafe\\\"],false,[\\\"liquid-if\\\",\\\"loading-spinner\\\",\\\"b\\\",\\\"file-virus-scan-status\\\",\\\"if\\\",\\\"a\\\",\\\"action\\\",\\\"not\\\",\\\"div\\\",\\\"input\\\",\\\"sum\\\",\\\"label\\\",\\\"i\\\",\\\"span\\\",\\\"br\\\",\\\"small\\\",\\\"p\\\",\\\"img\\\",\\\"button\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/settify-file-upload.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/settify-footer\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"odd-row footer-container\">\n    <div class=\"row centered footer-row\">\n      <div class=\"footer-left\">\n        <div style=\"display: flex; align-items: center; justify-content: space-between; font-size: medium;\">\n          <div style=\"line-height: 24px\">\n            <LinkTo @route=\"v2.firms.index\"><i class=\"fa fa-lightbulb-o\" /> Try New UI</LinkTo>\n          </div>\n          <div>\n            <span class=\"footer-link\"><LinkTo @route=\"index\"><i class=\"fal fa-home-lg-alt\" />Home</LinkTo></span>\n            {{#if this.session.isAuthenticated}}\n              <span class=\"footer-link\"><LinkTo @route=\"changepassword\"><i class=\"fal fa-th\" />Change Password</LinkTo></span>\n              {{#if (and this.session.data.authenticated.adminUser this.firm.settings.allowMFA)}}\n                <span class=\"footer-link\"><LinkTo @route=\"mfa\"><i class=\"fal fa-mobile\" />Multi-Factor Authentication</LinkTo></span>\n              {{/if}}\n              <span class=\"footer-link\"><LinkTo @route=\"v2.auth.logout\" @query={{hash email=\"\" clientID=\"\"}}><i class=\"fal fa-sign-out-alt\" />Log Out</LinkTo></span>\n            {{else}}\n              <span class=\"footer-link\"><LinkTo class=\"login-button\" @route=\"v2.auth.login\" @query={{hash email=\"\" clientID=\"\"}}><i class=\"fal fa-sign-in-alt\" />Log In</LinkTo></span>\n            {{/if}}\n          </div>\n          <div>You are logged in as {{this.session.data.authenticated.username}}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n  \n  {{yield}}\n  */\n  {\n    \"id\": \"XzkV87Qx\",\n    \"block\": \"[[[10,0],[14,0,\\\"odd-row footer-container\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row centered footer-row\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"footer-left\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,5,\\\"display: flex; align-items: center; justify-content: space-between; font-size: medium;\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,5,\\\"line-height: 24px\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,1],null,[[\\\"@route\\\"],[\\\"v2.firms.index\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fa fa-lightbulb-o\\\"],[12],[13],[1,\\\" Try New UI\\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[12],[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"footer-link\\\"],[12],[8,[39,1],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-home-lg-alt\\\"],[12],[13],[1,\\\"Home\\\"]],[]]]]],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"session\\\",\\\"isAuthenticated\\\"]],[[[1,\\\"            \\\"],[10,1],[14,0,\\\"footer-link\\\"],[12],[8,[39,1],null,[[\\\"@route\\\"],[\\\"changepassword\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-th\\\"],[12],[13],[1,\\\"Change Password\\\"]],[]]]]],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[30,0,[\\\"session\\\",\\\"data\\\",\\\"authenticated\\\",\\\"adminUser\\\"]],[30,0,[\\\"firm\\\",\\\"settings\\\",\\\"allowMFA\\\"]]],null],[[[1,\\\"              \\\"],[10,1],[14,0,\\\"footer-link\\\"],[12],[8,[39,1],null,[[\\\"@route\\\"],[\\\"mfa\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-mobile\\\"],[12],[13],[1,\\\"Multi-Factor Authentication\\\"]],[]]]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[10,1],[14,0,\\\"footer-link\\\"],[12],[8,[39,1],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"v2.auth.logout\\\",[28,[37,6],null,[[\\\"email\\\",\\\"clientID\\\"],[\\\"\\\",\\\"\\\"]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-sign-out-alt\\\"],[12],[13],[1,\\\"Log Out\\\"]],[]]]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"            \\\"],[10,1],[14,0,\\\"footer-link\\\"],[12],[8,[39,1],[[24,0,\\\"login-button\\\"]],[[\\\"@route\\\",\\\"@query\\\"],[\\\"v2.auth.login\\\",[28,[37,6],null,[[\\\"email\\\",\\\"clientID\\\"],[\\\"\\\",\\\"\\\"]]]]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-sign-in-alt\\\"],[12],[13],[1,\\\"Log In\\\"]],[]]]]],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[12],[1,\\\"You are logged in as \\\"],[1,[30,0,[\\\"session\\\",\\\"data\\\",\\\"authenticated\\\",\\\"username\\\"]]],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[18,1,null]],[\\\"&default\\\"],false,[\\\"div\\\",\\\"link-to\\\",\\\"i\\\",\\\"span\\\",\\\"if\\\",\\\"and\\\",\\\"hash\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/settify-footer.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/settify-grid-input\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#unless this.blueprintMode}}\n    {{#if (non-empty-string this.label)}}\n      {{this.label}}\n    {{else if (has-block)}}\n      {{yield}}\n    {{/if}}\n    {{#if this.required}}\n      <span class=\"required-field-marker {{if this.validEmail 'required-field-provided'}}\"></span>\n    {{/if}}\n    <HelpTextIcon @helpText={{this.helpText}} @displayOnly={{this.displayOnly}} @lawyerName={{this.clientRecord.helpTextIconLawyerName}} />\n  {{/unless}}\n  {{#if (and this.displayOnly (not this.model.length) (not this.sourcedRows.length) (not this.blueprintMode))}}\n    <NoInformation />\n    {{#if this.required}}\n      <RequiredField />\n    {{/if}}\n  {{else}}\n    <table class=\"grid-input {{this.stylingClasses}}\">\n      <tbody>\n        {{#if this.showColumnHeaders}}\n          <tr>\n            {{#each this.columns as |c|}}\n              {{#if (should-display question=c clientRecord=this.clientRecord context=this.context touch=this.clientRecord.touch model=this.model)}}\n                <th class={{c.width}}>{{parse-text c.columnHeader model=c clientRecord=this.clientRecord context=this.context}}</th>\n              {{/if}}\n            {{/each}}\n            {{#unless (or this.blueprintMode this.displayOnly)}}\n              <th class=\"delete-column\"></th>\n            {{/unless}}\n          </tr>\n        {{/if}}\n        {{#if this.blueprintMode}}\n          {{#each this.startingRows as |row|}}\n            <tr>\n              {{#each this.columns as |c|}}\n                <td class={{c.width}}>\n                  {{or (get row c.title) c.title}}\n                </td>\n              {{/each}}\n            </tr>\n          {{/each}}\n          <tr>\n            <td colspan={{this.columns.length}}>\n              (add more rows if required)\n            </td>\n          </tr>\n          {{#if this.autoTotal}}\n            <tr>\n              {{#each this.columns as |c|}}\n                <td class={{c.width}}>\n                  {{#each this.autoTotal as |at|}}\n                    {{#if (eq at c.title)}}\n                      [Total]\n                    {{/if}}\n                  {{/each}}\n                </td>\n              {{/each}}\n            </tr>\n          {{/if}}\n        {{else}}\n          {{#each this.sourcedRows as |row|}}\n            <tr>\n              {{#each this.columns as |c|}}\n                {{#if (should-display question=c clientRecord=this.clientRecord context=this.context touch=this.clientRecord.touch model=this.model)}}\n                  <td class={{c.width}}>\n                    {{#if c.sourcedRowsReadOnly}}\n                      {{parse-text c.sourcedRowsContent model=row clientRecord=this.clientRecord context=this.context}}\n                    {{else}}\n                      <SettifyInputSwitcher\n                        @model={{row}}\n                        @question={{c}}\n                        @context={{this.context}}\n                        @adminMode={{this.adminMode}}\n                        @displayOnly={{or (get row (sum c.id \"ReadOnly\")) this.displayOnly}}\n                        @clientRecord={{this.clientRecord}}\n                      />\n                    {{/if}}\n                  </td>\n                {{/if}}\n              {{/each}}\n              {{#unless this.displayOnly}}\n                <td class=\"delete-column\"></td>\n              {{/unless}}\n            </tr>\n          {{/each}}\n          {{#each this.model as |row|}}\n            <tr>\n              {{#each this.columns as |c|}}\n                {{#if (should-display question=c clientRecord=this.clientRecord context=this.context touch=this.clientRecord.touch model=this.model)}}\n                  <td class={{c.width}}>\n                    <SettifyInputSwitcher\n                      @model={{row}}\n                      @question={{c}}\n                      @context={{this.context}}\n                      @adminMode={{this.adminMode}}\n                      @displayOnly={{or (get row (sum c.id \"ReadOnly\")) this.displayOnly}}\n                      @clientRecord={{this.clientRecord}}\n                    />\n                  </td>\n                {{/if}}\n              {{/each}}\n              {{#unless this.displayOnly}}\n                <td class=\"delete-column\">\n                  {{#unless row.noDelete}}\n                    <i class=\"fal fa-trash-alt clickable negative\" {{action \"removeRow\" row}} title=\"Delete this row\" />\n                  {{/unless}}\n                </td>\n              {{/unless}}\n            </tr>\n          {{/each}}\n          {{#if this.showTotalColumn}}\n            <tr>\n              {{#each this.columns as |c|}}\n                <td class=\"{{if (defined (get this.totals c.id)) 'total-row'}} {{c.width}}\">\n                  {{#if (defined (get this.totals c.id))}}\n                    <SettifyInputSwitcher\n                      @model={{this.totals}}\n                      @question={{c}}\n                      @context={{this.context}}\n                      @adminMode={{this.adminMode}}\n                      @displayOnly={{true}}\n                      @forceDisplay={{true}}\n                      @clientRecord={{this.clientRecord}}\n                    />\n                  {{/if}}\n                </td>\n              {{/each}}\n              {{#unless this.displayOnly}}\n                <td class=\"delete-column\"></td>\n              {{/unless}}\n            </tr>\n          {{/if}}\n        {{/if}}\n      </tbody>\n    </table>\n  {{/if}}\n  \n  {{#unless (or this.displayOnly this.hideAddRowButton)}}\n    <a class=\"clickable\" {{action \"addRow\" this.row}}>\n      <i class=\"fal fa-plus-circle\" title={{sum \"Add another \" (or this.itemName \"row\")}} />\n      Add another\n      {{or this.itemName \"row\"}}\n    </a>\n  {{/unless}}\n  */\n  {\n    \"id\": \"rsLiBB2w\",\n    \"block\": \"[[[41,[51,[30,0,[\\\"blueprintMode\\\"]]],[[[41,[28,[37,2],[[30,0,[\\\"label\\\"]]],null],[[[1,\\\"    \\\"],[1,[30,0,[\\\"label\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[48,[30,11]],[[[1,\\\"    \\\"],[18,11,null],[1,\\\"\\\\n  \\\"]],[]],null]],[]]],[41,[30,0,[\\\"required\\\"]],[[[1,\\\"    \\\"],[10,1],[15,0,[29,[\\\"required-field-marker \\\",[52,[30,0,[\\\"validEmail\\\"]],\\\"required-field-provided\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[8,[39,6],null,[[\\\"@helpText\\\",\\\"@displayOnly\\\",\\\"@lawyerName\\\"],[[30,0,[\\\"helpText\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"clientRecord\\\",\\\"helpTextIconLawyerName\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,7],[[30,0,[\\\"displayOnly\\\"]],[28,[37,8],[[30,0,[\\\"model\\\",\\\"length\\\"]]],null],[28,[37,8],[[30,0,[\\\"sourcedRows\\\",\\\"length\\\"]]],null],[28,[37,8],[[30,0,[\\\"blueprintMode\\\"]]],null]],null],[[[1,\\\"  \\\"],[8,[39,9],null,null,null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"required\\\"]],[[[1,\\\"    \\\"],[8,[39,10],null,null,null],[1,\\\"\\\\n\\\"]],[]],null]],[]],[[[1,\\\"  \\\"],[10,\\\"table\\\"],[15,0,[29,[\\\"grid-input \\\",[30,0,[\\\"stylingClasses\\\"]]]]],[12],[1,\\\"\\\\n    \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showColumnHeaders\\\"]],[[[1,\\\"        \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,15],[[28,[37,15],[[30,0,[\\\"columns\\\"]]],null]],null],null,[[[41,[28,[37,16],null,[[\\\"question\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"touch\\\",\\\"model\\\"],[[30,1],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"model\\\"]]]]],[[[1,\\\"              \\\"],[10,\\\"th\\\"],[15,0,[30,1,[\\\"width\\\"]]],[12],[1,[28,[35,18],[[30,1,[\\\"columnHeader\\\"]]],[[\\\"model\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,1],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[13],[1,\\\"\\\\n\\\"]],[]],null]],[1]],null],[41,[51,[28,[37,19],[[30,0,[\\\"blueprintMode\\\"]],[30,0,[\\\"displayOnly\\\"]]],null]],[[[1,\\\"            \\\"],[10,\\\"th\\\"],[14,0,\\\"delete-column\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"blueprintMode\\\"]],[[[42,[28,[37,15],[[28,[37,15],[[30,0,[\\\"startingRows\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,15],[[28,[37,15],[[30,0,[\\\"columns\\\"]]],null]],null],null,[[[1,\\\"              \\\"],[10,\\\"td\\\"],[15,0,[30,3,[\\\"width\\\"]]],[12],[1,\\\"\\\\n                \\\"],[1,[28,[35,19],[[28,[37,21],[[30,2],[30,3,[\\\"title\\\"]]],null],[30,3,[\\\"title\\\"]]],null]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[3]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"        \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[15,\\\"colspan\\\",[30,0,[\\\"columns\\\",\\\"length\\\"]]],[12],[1,\\\"\\\\n            (add more rows if required)\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"autoTotal\\\"]],[[[1,\\\"          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,15],[[28,[37,15],[[30,0,[\\\"columns\\\"]]],null]],null],null,[[[1,\\\"              \\\"],[10,\\\"td\\\"],[15,0,[30,4,[\\\"width\\\"]]],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,15],[[28,[37,15],[[30,0,[\\\"autoTotal\\\"]]],null]],null],null,[[[41,[28,[37,22],[[30,5],[30,4,[\\\"title\\\"]]],null],[[[1,\\\"                    [Total]\\\\n\\\"]],[]],null]],[5]],null],[1,\\\"              \\\"],[13],[1,\\\"\\\\n\\\"]],[4]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],[[[42,[28,[37,15],[[28,[37,15],[[30,0,[\\\"sourcedRows\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,15],[[28,[37,15],[[30,0,[\\\"columns\\\"]]],null]],null],null,[[[41,[28,[37,16],null,[[\\\"question\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"touch\\\",\\\"model\\\"],[[30,7],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"model\\\"]]]]],[[[1,\\\"                \\\"],[10,\\\"td\\\"],[15,0,[30,7,[\\\"width\\\"]]],[12],[1,\\\"\\\\n\\\"],[41,[30,7,[\\\"sourcedRowsReadOnly\\\"]],[[[1,\\\"                    \\\"],[1,[28,[35,18],[[30,7,[\\\"sourcedRowsContent\\\"]]],[[\\\"model\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,6],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                    \\\"],[8,[39,23],null,[[\\\"@model\\\",\\\"@question\\\",\\\"@context\\\",\\\"@adminMode\\\",\\\"@displayOnly\\\",\\\"@clientRecord\\\"],[[30,6],[30,7],[30,0,[\\\"context\\\"]],[30,0,[\\\"adminMode\\\"]],[28,[37,19],[[28,[37,21],[[30,6],[28,[37,24],[[30,7,[\\\"id\\\"]],\\\"ReadOnly\\\"],null]],null],[30,0,[\\\"displayOnly\\\"]]],null],[30,0,[\\\"clientRecord\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[7]],null],[41,[51,[30,0,[\\\"displayOnly\\\"]]],[[[1,\\\"              \\\"],[10,\\\"td\\\"],[14,0,\\\"delete-column\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\"]],[6]],null],[42,[28,[37,15],[[28,[37,15],[[30,0,[\\\"model\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,15],[[28,[37,15],[[30,0,[\\\"columns\\\"]]],null]],null],null,[[[41,[28,[37,16],null,[[\\\"question\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"touch\\\",\\\"model\\\"],[[30,9],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"model\\\"]]]]],[[[1,\\\"                \\\"],[10,\\\"td\\\"],[15,0,[30,9,[\\\"width\\\"]]],[12],[1,\\\"\\\\n                  \\\"],[8,[39,23],null,[[\\\"@model\\\",\\\"@question\\\",\\\"@context\\\",\\\"@adminMode\\\",\\\"@displayOnly\\\",\\\"@clientRecord\\\"],[[30,8],[30,9],[30,0,[\\\"context\\\"]],[30,0,[\\\"adminMode\\\"]],[28,[37,19],[[28,[37,21],[[30,8],[28,[37,24],[[30,9,[\\\"id\\\"]],\\\"ReadOnly\\\"],null]],null],[30,0,[\\\"displayOnly\\\"]]],null],[30,0,[\\\"clientRecord\\\"]]]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[9]],null],[41,[51,[30,0,[\\\"displayOnly\\\"]]],[[[1,\\\"              \\\"],[10,\\\"td\\\"],[14,0,\\\"delete-column\\\"],[12],[1,\\\"\\\\n\\\"],[41,[51,[30,8,[\\\"noDelete\\\"]]],[[[1,\\\"                  \\\"],[11,\\\"i\\\"],[24,0,\\\"fal fa-trash-alt clickable negative\\\"],[24,\\\"title\\\",\\\"Delete this row\\\"],[4,[38,26],[[30,0],\\\"removeRow\\\",[30,8]],null],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\"]],[8]],null],[41,[30,0,[\\\"showTotalColumn\\\"]],[[[1,\\\"          \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,15],[[28,[37,15],[[30,0,[\\\"columns\\\"]]],null]],null],null,[[[1,\\\"              \\\"],[10,\\\"td\\\"],[15,0,[29,[[52,[28,[37,27],[[28,[37,21],[[30,0,[\\\"totals\\\"]],[30,10,[\\\"id\\\"]]],null]],null],\\\"total-row\\\"],\\\" \\\",[30,10,[\\\"width\\\"]]]]],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,27],[[28,[37,21],[[30,0,[\\\"totals\\\"]],[30,10,[\\\"id\\\"]]],null]],null],[[[1,\\\"                  \\\"],[8,[39,23],null,[[\\\"@model\\\",\\\"@question\\\",\\\"@context\\\",\\\"@adminMode\\\",\\\"@displayOnly\\\",\\\"@forceDisplay\\\",\\\"@clientRecord\\\"],[[30,0,[\\\"totals\\\"]],[30,10],[30,0,[\\\"context\\\"]],[30,0,[\\\"adminMode\\\"]],true,true,[30,0,[\\\"clientRecord\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[13],[1,\\\"\\\\n\\\"]],[10]],null],[41,[51,[30,0,[\\\"displayOnly\\\"]]],[[[1,\\\"              \\\"],[10,\\\"td\\\"],[14,0,\\\"delete-column\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n\\\"],[41,[51,[28,[37,19],[[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"hideAddRowButton\\\"]]],null]],[[[1,\\\"  \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,26],[[30,0],\\\"addRow\\\",[30,0,[\\\"row\\\"]]],null],[12],[1,\\\"\\\\n    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle\\\"],[15,\\\"title\\\",[28,[37,24],[\\\"Add another \\\",[28,[37,19],[[30,0,[\\\"itemName\\\"]],\\\"row\\\"],null]],null]],[12],[13],[1,\\\"\\\\n    Add another\\\\n    \\\"],[1,[28,[35,19],[[30,0,[\\\"itemName\\\"]],\\\"row\\\"],null]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[\\\"c\\\",\\\"row\\\",\\\"c\\\",\\\"c\\\",\\\"at\\\",\\\"row\\\",\\\"c\\\",\\\"row\\\",\\\"c\\\",\\\"c\\\",\\\"&default\\\"],false,[\\\"unless\\\",\\\"if\\\",\\\"non-empty-string\\\",\\\"has-block\\\",\\\"yield\\\",\\\"span\\\",\\\"help-text-icon\\\",\\\"and\\\",\\\"not\\\",\\\"no-information\\\",\\\"required-field\\\",\\\"table\\\",\\\"tbody\\\",\\\"tr\\\",\\\"each\\\",\\\"-track-array\\\",\\\"should-display\\\",\\\"th\\\",\\\"parse-text\\\",\\\"or\\\",\\\"td\\\",\\\"get\\\",\\\"eq\\\",\\\"settify-input-switcher\\\",\\\"sum\\\",\\\"i\\\",\\\"action\\\",\\\"defined\\\",\\\"a\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/settify-grid-input.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/settify-guess-client-input\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.displayOnly}}\n    {{this.label}}{{yield}}\n    {{#each this.content as |c|}}\n      <SettifyInputSwitcher\n        @highlightRequiredFields={{this.highlightRequiredFields}}\n        @question={{c}}\n        @context={{this.context}}\n        @clientRecord={{this.clientRecord}}\n        @model={{this.client}}\n        @displayOnly={{this.displayOnly}}\n      />\n      {{!--\n      <p>\n        {{c.title}}\n        {{#if (eq (type-of (get client c.id)) 'object')}}\n          {{#if (address-string (get client c.id))}}\n              <span class=\"settify-sensitive\">{{address-string (get client c.id)}}</span>\n          {{/if}}\n        {{else}}\n          <span class=\"settify-sensitive\">{{get client c.id}}</span>\n        {{/if}}\n      </p>\n      --}}\n    {{/each}}\n  {{else}}\n    <p>\n      We need to obtain some of your details in advance of our first meeting, so that we can contact you if required, and to include in the application in due course.\n    </p>\n    <LiquidIf @predicate={{and this.clientRecord.primaryContactPersonID this.client}}>\n      <LiquidIf @predicate={{this.isGuess}}>\n        <a href=\"\" class=\"clickable\" {{action \"setAsNewPerson\"}}>Not you? Click here to enter your details</a>\n      </LiquidIf>\n      {{#each this.content as |c|}}\n        <SettifyInputSwitcher @question={{c}} @context={{this.context}} @clientRecord={{this.clientRecord}} @model={{this.client}} @displayOnly={{this.displayOnly}} />\n      {{/each}}\n  \n      <LiquidIf @predicate={{this.previousWrongGuess}}>\n        <p>🤦 Oops, our mistake! Can you please provide your actual details above.</p>\n      </LiquidIf>\n    </LiquidIf>\n    <LiquidIf @predicate={{and (not this.clientRecord.primaryContactPersonID) (not this.client)}}>\n      <p>It looks like you've already provided some of these details. Are you in the list below?</p>\n      {{#each this.potentialMatches as |p|}}\n        <div {{action \"setClient\" p}} class=\"clickable\">\n          <CheckBox>\n            {{#each this.content as |c|}}\n              {{#if (eq (type-of (get p c.id)) \"object\")}}\n                {{#if (address-string (get p c.id))}}\n                  <span class=\"settify-sensitive\">{{address-string (get p c.id)}}</span>\n                {{/if}}\n              {{else}}\n                <span class=\"settify-sensitive\">{{get p c.id}}</span>\n              {{/if}}\n            {{/each}}\n          </CheckBox>\n        </div>\n      {{/each}}\n  \n      <a href=\"\" class=\"clickable\" {{action \"setAsNewPerson\"}}>No, I'm a different <span class=\"settify-sensitive\">{{this.lookingFor}}</span></a>\n    </LiquidIf>\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"G0HsmuYu\",\n    \"block\": \"[[[41,[30,0,[\\\"displayOnly\\\"]],[[[1,\\\"  \\\"],[1,[30,0,[\\\"label\\\"]]],[18,5,null],[1,\\\"\\\\n\\\"],[42,[28,[37,3],[[28,[37,3],[[30,0,[\\\"content\\\"]]],null]],null],null,[[[1,\\\"    \\\"],[8,[39,4],null,[[\\\"@highlightRequiredFields\\\",\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@displayOnly\\\"],[[30,0,[\\\"highlightRequiredFields\\\"]],[30,1],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"client\\\"]],[30,0,[\\\"displayOnly\\\"]]]],null],[1,\\\"\\\\n\\\"]],[1]],null]],[]],[[[1,\\\"  \\\"],[10,2],[12],[1,\\\"\\\\n    We need to obtain some of your details in advance of our first meeting, so that we can contact you if required, and to include in the application in due course.\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,6],null,[[\\\"@predicate\\\"],[[28,[37,7],[[30,0,[\\\"clientRecord\\\",\\\"primaryContactPersonID\\\"]],[30,0,[\\\"client\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[39,6],null,[[\\\"@predicate\\\"],[[30,0,[\\\"isGuess\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[11,3],[24,6,\\\"\\\"],[24,0,\\\"clickable\\\"],[4,[38,9],[[30,0],\\\"setAsNewPerson\\\"],null],[12],[1,\\\"Not you? Click here to enter your details\\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[42,[28,[37,3],[[28,[37,3],[[30,0,[\\\"content\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[8,[39,4],null,[[\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@displayOnly\\\"],[[30,2],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"client\\\"]],[30,0,[\\\"displayOnly\\\"]]]],null],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"\\\\n    \\\"],[8,[39,6],null,[[\\\"@predicate\\\"],[[30,0,[\\\"previousWrongGuess\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"🤦 Oops, our mistake! Can you please provide your actual details above.\\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[39,6],null,[[\\\"@predicate\\\"],[[28,[37,7],[[28,[37,10],[[30,0,[\\\"clientRecord\\\",\\\"primaryContactPersonID\\\"]]],null],[28,[37,10],[[30,0,[\\\"client\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,2],[12],[1,\\\"It looks like you've already provided some of these details. Are you in the list below?\\\"],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,3],[[28,[37,3],[[30,0,[\\\"potentialMatches\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[11,0],[24,0,\\\"clickable\\\"],[4,[38,9],[[30,0],\\\"setClient\\\",[30,3]],null],[12],[1,\\\"\\\\n        \\\"],[8,[39,12],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,3],[[28,[37,3],[[30,0,[\\\"content\\\"]]],null]],null],null,[[[41,[28,[37,13],[[28,[37,14],[[28,[37,15],[[30,3],[30,4,[\\\"id\\\"]]],null]],null],\\\"object\\\"],null],[[[41,[28,[37,16],[[28,[37,15],[[30,3],[30,4,[\\\"id\\\"]]],null]],null],[[[1,\\\"                \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[28,[35,16],[[28,[37,15],[[30,3],[30,4,[\\\"id\\\"]]],null]],null]],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],[[[1,\\\"              \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[28,[35,15],[[30,3],[30,4,[\\\"id\\\"]]],null]],[13],[1,\\\"\\\\n\\\"]],[]]]],[4]],null],[1,\\\"        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[3]],null],[1,\\\"\\\\n    \\\"],[11,3],[24,6,\\\"\\\"],[24,0,\\\"clickable\\\"],[4,[38,9],[[30,0],\\\"setAsNewPerson\\\"],null],[12],[1,\\\"No, I'm a different \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"lookingFor\\\"]]],[13],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]],[\\\"c\\\",\\\"c\\\",\\\"p\\\",\\\"c\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"yield\\\",\\\"each\\\",\\\"-track-array\\\",\\\"settify-input-switcher\\\",\\\"p\\\",\\\"liquid-if\\\",\\\"and\\\",\\\"a\\\",\\\"action\\\",\\\"not\\\",\\\"div\\\",\\\"check-box\\\",\\\"eq\\\",\\\"type-of\\\",\\\"get\\\",\\\"address-string\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/settify-guess-client-input.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/settify-immutable-list\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div style={{html-safe (concat \"margin-left: \" this.level \"em;\")}}>\n    <FreeList @displayOnly={{this.displayOnly}} @label={{this.label}} @model={{this.immutableList}} @itemName={{this.itemName}} @onChange={{this.onChange}} @preventEmptyLists={{false}} @immutableList={{true}} @adminMode={{this.adminMode}} @noBorder={{true}} @clientRecord={{this.clientRecord}} @helpText={{this.helpText}} as |item index|>\n      {{yield item index}}\n    </FreeList>\n  </div>\n  */\n  {\n    \"id\": \"3rNVKwr8\",\n    \"block\": \"[[[10,0],[15,5,[28,[37,1],[[28,[37,2],[\\\"margin-left: \\\",[30,0,[\\\"level\\\"]],\\\"em;\\\"],null]],null]],[12],[1,\\\"\\\\n  \\\"],[8,[39,3],null,[[\\\"@displayOnly\\\",\\\"@label\\\",\\\"@model\\\",\\\"@itemName\\\",\\\"@onChange\\\",\\\"@preventEmptyLists\\\",\\\"@immutableList\\\",\\\"@adminMode\\\",\\\"@noBorder\\\",\\\"@clientRecord\\\",\\\"@helpText\\\"],[[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"label\\\"]],[30,0,[\\\"immutableList\\\"]],[30,0,[\\\"itemName\\\"]],[30,0,[\\\"onChange\\\"]],false,true,[30,0,[\\\"adminMode\\\"]],true,[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"helpText\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[18,3,[[30,1],[30,2]]],[1,\\\"\\\\n  \\\"]],[1,2]]]]],[1,\\\"\\\\n\\\"],[13]],[\\\"item\\\",\\\"index\\\",\\\"&default\\\"],false,[\\\"div\\\",\\\"html-safe\\\",\\\"concat\\\",\\\"free-list\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/settify-immutable-list.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/settify-input-button\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{yield}}\n  <div class=\"rightalign\">\n    <LinkTo @route={{this.link}}>\n      {{#if this.completeThisChapter}}\n        <button type=\"button\" {{action \"completeThisChapter\"}} class=\"next-button\">{{this.text}}</button>\n      {{else}}\n        <button type=\"button\" class=\"next-button\">{{this.text}}</button>\n      {{/if}}\n    </LinkTo>\n  </div>\n  \n  */\n  {\n    \"id\": \"n1N75q3E\",\n    \"block\": \"[[[18,1,null],[1,\\\"\\\\n\\\"],[10,0],[14,0,\\\"rightalign\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[39,2],null,[[\\\"@route\\\"],[[30,0,[\\\"link\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"completeThisChapter\\\"]],[[[1,\\\"      \\\"],[11,\\\"button\\\"],[24,0,\\\"next-button\\\"],[24,4,\\\"button\\\"],[4,[38,5],[[30,0],\\\"completeThisChapter\\\"],null],[12],[1,[30,0,[\\\"text\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,\\\"button\\\"],[14,0,\\\"next-button\\\"],[14,4,\\\"button\\\"],[12],[1,[30,0,[\\\"text\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[\\\"&default\\\"],false,[\\\"yield\\\",\\\"div\\\",\\\"link-to\\\",\\\"if\\\",\\\"button\\\",\\\"action\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/settify-input-button.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/settify-input-slider\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{yield}}\n  <div>\n    {{#if this.displayOnly}}\n      <div>\n        {{this.selectedOption.title}}\n      </div>\n    {{else}}\n      <LiquidIf @predicate={{or (not this.notSureModel) this.notSureOptionDoesNotHideComponent}}>\n        <div class=\"slider-wrapper\">\n          {{#if (and this.includeSlidingScaleText this.slidingScaleLeftText)}}\n            <span class=\"slider-text negative\">{{this.slidingScaleLeftText}}</span>\n          {{/if}}\n          <input\n            type=\"range\"\n            class=\"form-control\"\n            style={{this.rangeFill}}\n            value={{this.sliderValue}}\n            aria-valuetext={{parse-text this.selectedOption.title}}\n            step=\"any\"\n            min=\"0.01\"\n            max={{this.maxValue}}\n            oninput={{action (mut this.sliderValue) value=\"target.value\"}}\n            onchange={{action (mut this.sliderValue) value=\"target.value\"}}\n            {{! For IE11 }}\n            id={{this.uniqID}}\n          />\n          {{#if (and this.includeSlidingScaleText this.slidingScaleRightText)}}\n            <span class=\"slider-text settify-green\">{{this.slidingScaleRightText}}</span>\n          {{/if}}\n        </div>\n        <div>\n          <p class=\"centertext\">\n            <LiquidIf @predicate={{this.selectedOption.icon}}>\n              <LineIcon @src={{this.selectedOption.icon}} @slidingScale={{true}} />\n            </LiquidIf>\n            <LiquidIf @predicate={{this.selectedOption.title}}>\n              {{parse-text this.selectedOption.title model=this.client touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n            </LiquidIf>\n          </p>\n        </div>\n      </LiquidIf>\n      <LiquidIf @predicate={{this.notSureOption}}>\n        <CheckBox @text={{or this.notSureOptionText \"I'm not sure\"}} @model={{this.notSureModel}} @onChange={{this.onChange}} />\n      </LiquidIf>\n    {{/if}}\n  </div>\n  */\n  {\n    \"id\": \"evZAkfEL\",\n    \"block\": \"[[[18,1,null],[1,\\\"\\\\n\\\"],[10,0],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"displayOnly\\\"]],[[[1,\\\"    \\\"],[10,0],[12],[1,\\\"\\\\n      \\\"],[1,[30,0,[\\\"selectedOption\\\",\\\"title\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[28,[37,4],[[28,[37,5],[[30,0,[\\\"notSureModel\\\"]]],null],[30,0,[\\\"notSureOptionDoesNotHideComponent\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"slider-wrapper\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,6],[[30,0,[\\\"includeSlidingScaleText\\\"]],[30,0,[\\\"slidingScaleLeftText\\\"]]],null],[[[1,\\\"          \\\"],[10,1],[14,0,\\\"slider-text negative\\\"],[12],[1,[30,0,[\\\"slidingScaleLeftText\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[10,\\\"input\\\"],[14,0,\\\"form-control\\\"],[15,5,[30,0,[\\\"rangeFill\\\"]]],[15,2,[30,0,[\\\"sliderValue\\\"]]],[15,\\\"aria-valuetext\\\",[28,[37,9],[[30,0,[\\\"selectedOption\\\",\\\"title\\\"]]],null]],[14,\\\"step\\\",\\\"any\\\"],[14,\\\"min\\\",\\\"0.01\\\"],[15,\\\"max\\\",[30,0,[\\\"maxValue\\\"]]],[15,\\\"oninput\\\",[28,[37,10],[[30,0],[28,[37,11],[[30,0,[\\\"sliderValue\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[15,\\\"onchange\\\",[28,[37,10],[[30,0],[28,[37,11],[[30,0,[\\\"sliderValue\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[15,1,[30,0,[\\\"uniqID\\\"]]],[14,4,\\\"range\\\"],[12],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,6],[[30,0,[\\\"includeSlidingScaleText\\\"]],[30,0,[\\\"slidingScaleRightText\\\"]]],null],[[[1,\\\"          \\\"],[10,1],[14,0,\\\"slider-text settify-green\\\"],[12],[1,[30,0,[\\\"slidingScaleRightText\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"centertext\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[30,0,[\\\"selectedOption\\\",\\\"icon\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,13],null,[[\\\"@src\\\",\\\"@slidingScale\\\"],[[30,0,[\\\"selectedOption\\\",\\\"icon\\\"]],true]],null],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[30,0,[\\\"selectedOption\\\",\\\"title\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[1,[28,[35,9],[[30,0,[\\\"selectedOption\\\",\\\"title\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"client\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[8,[39,3],null,[[\\\"@predicate\\\"],[[30,0,[\\\"notSureOption\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[8,[39,14],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@onChange\\\"],[[28,[37,4],[[30,0,[\\\"notSureOptionText\\\"]],\\\"I'm not sure\\\"],null],[30,0,[\\\"notSureModel\\\"]],[30,0,[\\\"onChange\\\"]]]],null],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[13]],[\\\"&default\\\"],false,[\\\"yield\\\",\\\"div\\\",\\\"if\\\",\\\"liquid-if\\\",\\\"or\\\",\\\"not\\\",\\\"and\\\",\\\"span\\\",\\\"input\\\",\\\"parse-text\\\",\\\"action\\\",\\\"mut\\\",\\\"p\\\",\\\"line-icon\\\",\\\"check-box\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/settify-input-slider.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/settify-input-switcher\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.blueprintMode}}\n    {{! We want to display this in a nice format for the blueprints }}\n    <div class=\"input-switcher {{this.inputStylingClasses}}\">\n      {{#if (eq this.question.type \"paragraph\")}}\n        {{#if (defined this.question.displayIf excludeEmptyObjects=true)}}\n          <span class=\"conditional\"><i class=\"fal fa-code-branch tight\" />Conditional text:</span>\n        {{/if}}\n        <p class=\"settify-input-paragraph {{this.stylingClasses}}\"><b>{{parse-text\n              this.question.content\n              model=this.model\n              touch=this.clientRecord.touch\n              clientRecord=this.clientRecord\n              context=this.context\n              blueprintMode=true\n            }}</b></p>\n      {{else if (eq this.question.type \"heading\")}}\n        {{#if (defined this.question.displayIf excludeEmptyObjects=true)}}\n          <span class=\"conditional\"><i class=\"fal fa-code-branch tight\" />Conditional text:</span>\n        {{/if}}\n        <div class=\"chapter-animation-container\">\n          <h2>{{parse-text this.question.content model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context blueprintMode=true}}</h2>\n        </div>\n      {{else if (eq this.question.type \"image\")}}\n        <div class={{this.stylingClasses}}>\n          <span>{{parse-text this.question.content model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}</span>\n        </div>\n      {{else if (eq this.question.type \"requestanappointment\")}}\n        <div class=\"chapter-animation-container\">\n          <h2>A button to finish the induction and book an appointment</h2>\n        </div>\n      {{else if (eq this.question.type \"link\")}}\n        {{#if (defined this.question.displayIf excludeEmptyObjects=true)}}\n          <span class=\"conditional\"><i class=\"fal fa-code-branch tight\" />Only shown if relevant:</span>\n        {{/if}}\n        <p class=\"settify-input-paragraph {{this.stylingClasses}}\">\n          <b>{{parse-text this.question.content model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context blueprintMode=true}}</b>\n          (link to\n          {{this.question.link}})\n        </p>\n      {{else if (eq this.question.type \"guessclient\")}}\n        {{#if (defined this.question.displayIf excludeEmptyObjects=true)}}\n          <span class=\"conditional\"><i class=\"fal fa-code-branch tight\" />Only shown if relevant:</span>\n        {{/if}}\n        <p>A smart input that guesses the client in the family tree and asks about:</p>\n        {{#each this.question.content as |c|}}\n          <SettifyInputSwitcher\n            @question={{c}}\n            @context={{this.context}}\n            @clientRecord={{this.clientRecord}}\n            @model={{this.item}}\n            @displayOnly={{this.displayOnly}}\n            @blueprintMode={{true}}\n          />\n        {{/each}}\n      {{else if (eq this.question.type \"documentsRequiredList\")}}\n        {{#if (defined this.question.displayIf excludeEmptyObjects=true)}}\n          <span class=\"conditional\"><i class=\"fal fa-code-branch tight\" />Only shown if relevant:</span>\n        {{/if}}\n        <p class=\"settify-input-paragraph {{this.stylingClasses}}\">\n          <b>{{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context blueprintMode=true}}</b>\n          {{#if this.question.filterType}}\n            {{this.question.filterType}}:\n            {{this.question.filterList}}\n          {{/if}}\n        </p>\n      {{else}}\n        {{#if (defined this.question.displayIf excludeEmptyObjects=true)}}\n          <span class=\"conditional\"><i class=\"fal fa-code-branch tight\" />Only asked if relevant:</span>\n        {{/if}}\n        <b>{{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context blueprintMode=true}}</b>\n      {{/if}}\n      {{this.questionTypeString}}\n      {{#if this.question.showConfidenceSlider}}\n        <p class=\"feedback-paragraph\">With a confidence-slider</p>\n      {{/if}}\n      {{#if this.question.helpText}}\n        <p class=\"feedback-paragraph\">\n          <span class=\"helptext\"><i class=\"fal fa-question tight\" />Additional help:</span>\n          {{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context blueprintMode=true}}\n        </p>\n      {{/if}}\n  \n      {{#if this.question.documentsRequired}}\n        <DocumentsRequiredFeedback\n          @questionType={{this.question.type}}\n          @documents={{this.question.documentsRequired}}\n          @blueprintMode={{true}}\n          @notSureButton={{this.notSureButton}}\n          @labelToDisplay={{this.labelToDisplay}}\n          @adminMode={{this.adminMode}}\n        />\n      {{/if}}\n  \n      {{#if this.question.options.length}}\n        <ul>\n          {{#each this.question.options as |option|}}\n            {{#unless option.deleted}}\n              <li>\n                {{parse-text option.title model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context blueprintMode=true}}\n                {{#if (defined option.displayIf excludeEmptyObjects=true)}}\n                  (only shown if relevant)\n                {{/if}}\n                <DocumentsRequiredFeedback @documents={{option.documentsRequired}} @blueprintMode={{true}} @notSureButton={{this.notSureButton}} @adminMode={{this.adminMode}} />\n                {{#if option.helpText}}\n                  <p class=\"feedback-paragraph\">\n                    <span class=\"helptext\"><i class=\"fal fa-question tight\" />Additional help if desired:</span>\n                    {{parse-text option.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context blueprintMode=true}}\n                  </p>\n                {{/if}}\n                {{#if option.feedback}}\n                  <p class=\"feedback-paragraph\">\n                    <span class=\"helptext\"><i class=\"fal fa-comments tight\" />If selected, display:</span>\n                    {{parse-text option.feedback model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context blueprintMode=true}}\n                  </p>\n                {{/if}}\n                {{#if option.feedbackToLawyer}}\n                  <p class=\"feedback-paragraph\">\n                    <span class=\"helptext\"><i class=\"fal fa-lightbulb-on tight\" />If selected, advise lawyer:</span>\n                    {{parse-text option.feedbackToLawyer model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context blueprintMode=true}}\n                  </p>\n                {{/if}}\n              </li>\n            {{/unless}}\n          {{/each}}\n        </ul>\n      {{/if}}\n      {{#if this.question.onYes.feedback}}\n        <p class=\"feedback-paragraph\">\n          <span class=\"helptext\"><i class=\"fal fa-comments tight\" />If yes, display:</span>\n          {{parse-text this.question.onYes.feedback model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context blueprintMode=true}}\n        </p>\n      {{/if}}\n      {{#if this.question.onYes.feedbackToLawyer}}\n        <p class=\"feedback-paragraph\">\n          <span class=\"helptext\"><i class=\"fal fa-lightbulb-on tight\" />If yes, advise lawyer:</span>\n          {{parse-text this.question.onYes.feedbackToLawyer model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context blueprintMode=true}}\n        </p>\n      {{/if}}\n      <DocumentsRequiredFeedback\n        @documents={{this.question.onYes.documentsRequired}}\n        @blueprintMode={{true}}\n        @selectedWording=\"yes\"\n        @notSureButton={{this.notSureButton}}\n        @adminMode={{this.adminMode}}\n      />\n      {{#if this.question.onNo.feedback}}\n        <p class=\"feedback-paragraph\">\n          <span class=\"helptext\"><i class=\"fal fa-comments tight\" />If no, display:</span>\n          {{parse-text this.question.onNo.feedback model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context blueprintMode=true}}\n        </p>\n      {{/if}}\n      {{#if this.question.onNo.feedbackToLawyer}}\n        <p class=\"feedback-paragraph\">\n          <span class=\"helptext\"><i class=\"fal fa-lightbulb-on tight\" />If no, advise lawyer:</span>\n          {{parse-text this.question.onNo.feedbackToLawyer model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context blueprintMode=true}}\n        </p>\n      {{/if}}\n      <DocumentsRequiredFeedback\n        @documents={{this.question.onNo.documentsRequired}}\n        @blueprintMode={{true}}\n        @selectedWording=\"no\"\n        @notSureButton={{this.notSureButton}}\n        @adminMode={{this.adminMode}}\n      />\n      {{#if this.question.onNotSure.feedback}}\n        <p class=\"feedback-paragraph\">\n          <span class=\"helptext\"><i class=\"fal fa-comments tight\" />If not sure, display:</span>\n          {{parse-text this.question.onNotSure.feedback model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context blueprintMode=true}}\n        </p>\n      {{/if}}\n      {{#if this.question.onNotSure.feedbackToLawyer}}\n        <p class=\"feedback-paragraph\">\n          <span class=\"helptext\"><i class=\"fal fa-lightbulb-on tight\" />If not sure, advise lawyer:</span>\n          {{parse-text\n            this.question.onNotSure.feedbackToLawyer\n            model=this.model\n            touch=this.clientRecord.touch\n            clientRecord=this.clientRecord\n            context=this.context\n            blueprintMode=true\n          }}\n        </p>\n      {{/if}}\n      <DocumentsRequiredFeedback\n        @documents={{this.question.onNotSure.documentsRequired}}\n        @blueprintMode={{true}}\n        @selectedWording=\"not sure\"\n        @notSureButton={{this.notSureButton}}\n        @adminMode={{this.adminMode}}\n      />\n      {{#if (eq this.question.type \"selectorcreate\")}}\n        <div class=\"askForValues\">\n          Ask for:\n          {{#if this.question.allowPeople}}\n            First name; Surname;\n          {{/if}}\n          {{#if this.question.allowCorporations}}\n            Company name; ACN;\n          {{/if}}\n          {{#each-in this.question.askFor as |key value|}}\n            {{#if value}}\n              {{sentence-case key}};\n            {{/if}}\n          {{/each-in}}\n          {{#each this.question.content as |item|}}\n            {{#unless item.deleted}}\n              {{parse-text\n                (sentence-case (or item.shortTitle item.title))\n                model=this.model\n                touch=this.clientRecord.touch\n                clientRecord=this.clientRecord\n                context=this.context\n                blueprintMode=true\n              }};\n            {{/unless}}\n          {{/each}}\n        </div>\n      {{/if}}\n      {{#if this.question.columns.length}}\n        <SettifyGridInput\n          @blueprintMode={{true}}\n          @displayOnly={{true}}\n          @columns={{this.question.columns}}\n          @context={{this.context}}\n          @showColumnHeaders={{this.question.showColumnHeaders}}\n          @autoTotal={{this.question.autoTotal}}\n          @startingRows={{this.question.startingRows}}\n          @clientRecord={{this.clientRecord}}\n        />\n      {{/if}}\n      {{#if (or (eq this.question.type \"block\") (eq this.question.type \"list\"))}}\n        {{#each this.question.content as |item|}}\n          {{#unless item.deleted}}\n            {{!-- {{#unless (or (eq item.type 'paragraph') (eq item.type 'link'))}} --}}\n            <p class=\"content\">\n              <SettifyInputSwitcher\n                @question={{item}}\n                @context={{this.context}}\n                @clientRecord={{this.clientRecord}}\n                @model={{this.model}}\n                @displayOnly={{this.displayOnly}}\n                @blueprintMode={{this.blueprintMode}}\n                @adminMode={{this.adminMode}}\n              />\n            </p>\n            {{!-- {{/unless}} --}}\n          {{/unless}}\n        {{/each}}\n      {{/if}}\n    </div>\n  {{else if this.documentsOnly}}\n    {{#if this.shouldDisplay}}\n      {{! We just want to see what documents will be requested }}\n      {{#if this.question.documentsRequired}}\n        <DocumentsRequiredFeedback\n          @documents={{this.question.documentsRequired}}\n          @showDocument={{true}}\n          @model={{this.model}}\n          @displayOnly={{this.displayOnly}}\n          @notSureButton={{this.notSureButton}}\n          @displayList={{true}}\n          @context={{this.context}}\n          @clientID={{this.clientRecord.clientID}}\n          @questionID={{this.variableStorageName}}\n          @client={{this.clientRecord}}\n          @objectID={{this.model.id}}\n          @adminMode={{this.adminMode}}\n        />\n      {{/if}}\n      {{#if (eq this.question.type \"radio\")}}\n        {{#each this.question.options as |option|}}\n          {{#if (should-display question=option clientRecord=this.clientRecord context=this.context touch=this.clientRecord.touch)}}\n            <DocumentsRequiredFeedback\n              @documents={{option.documentsRequired}}\n              @showDocument={{eq (get this.model this.variableStorageName) (or option.id option.title)}}\n              @model={{this.model}}\n              @displayOnly={{this.displayOnly}}\n              @notSureButton={{this.notSureButton}}\n              @displayList={{true}}\n              @context={{this.context}}\n              @clientID={{this.clientRecord.clientID}}\n              @questionID={{this.variableStorageName}}\n              @client={{this.clientRecord}}\n              @adminMode={{this.adminMode}}\n            />\n          {{/if}}\n        {{/each}}\n      {{else if (eq this.question.type \"yesno\")}}\n        <DocumentsRequiredFeedback\n          @documents={{this.question.onYes.documentsRequired}}\n          @showDocument={{eq (get this.model this.variableStorageName) \"yes\"}}\n          @model={{this.model}}\n          @displayOnly={{this.displayOnly}}\n          @notSureButton={{this.notSureButton}}\n          @displayList={{true}}\n          @objectID={{this.model.id}}\n          @context={{this.context}}\n          @clientID={{this.clientRecord.clientID}}\n          @questionID={{this.variableStorageName}}\n          @client={{this.clientRecord}}\n          @adminMode={{this.adminMode}}\n        />\n        <DocumentsRequiredFeedback\n          @documents={{this.question.onNo.documentsRequired}}\n          @showDocument={{eq (get this.model this.variableStorageName) \"no\"}}\n          @model={{this.model}}\n          @displayOnly={{this.displayOnly}}\n          @notSureButton={{this.notSureButton}}\n          @displayList={{true}}\n          @objectID={{this.model.id}}\n          @context={{this.context}}\n          @clientID={{this.clientRecord.clientID}}\n          @questionID={{this.variableStorageName}}\n          @client={{this.clientRecord}}\n          @adminMode={{this.adminMode}}\n        />\n        <DocumentsRequiredFeedback\n          @documents={{this.question.onNotSure.documentsRequired}}\n          @showDocument={{eq (get this.model this.variableStorageName) \"notsure\"}}\n          @model={{this.model}}\n          @displayOnly={{this.displayOnly}}\n          @notSureButton={{this.notSureButton}}\n          @displayList={{true}}\n          @objectID={{this.model.id}}\n          @context={{this.context}}\n          @clientID={{this.clientRecord.clientID}}\n          @questionID={{this.variableStorageName}}\n          @client={{this.clientRecord}}\n          @adminMode={{this.adminMode}}\n        />\n      {{else if (eq this.question.type \"checkbox\")}}\n        {{#each this.question.options as |option|}}\n          {{#if (should-display question=option clientRecord=this.clientRecord context=this.context touch=this.clientRecord.touch)}}\n            <DocumentsRequiredFeedback\n              @documents={{option.documentsRequired}}\n              @showDocument={{eq (get this.model (or option.id option.title)) true}}\n              @model={{this.model}}\n              @displayOnly={{this.displayOnly}}\n              @notSureButton={{this.notSureButton}}\n              @displayList={{true}}\n              @objectID={{this.model.id}}\n              @context={{this.context}}\n              @clientID={{this.clientRecord.clientID}}\n              @questionID={{this.variableStorageName}}\n              @client={{this.clientRecord}}\n              @adminMode={{this.adminMode}}\n            />\n          {{/if}}\n        {{/each}}\n      {{else if (eq this.question.type \"selectorcreate\")}}\n        {{#if this.question.multipleSelections}}\n          {{#each (get this.model this.variableStorageName) as |personID|}}\n            {{! For each person we should see if there are any questions with documents }}\n            {{#each this.question.content as |content|}}\n              <SettifyInputSwitcher\n                @question={{content}}\n                @model={{get-answers-from\n                  client=this.clientRecord\n                  induction=this.context.induction\n                  answersLocation=(sum this.context.chapter \".\" this.context.page \".\" this.question.id)\n                  repeatToken=this.context.repeat\n                  filterByID=personID\n                }}\n                @clientRecord={{this.clientRecord}}\n                @context={{this.context}}\n                @displayOnly={{this.displayOnly}}\n                @documentsOnly={{true}}\n                @notSureButton={{this.notSureButton}}\n                @adminMode={{this.adminMode}}\n              />\n            {{/each}}\n          {{/each}}\n        {{else}}\n          {{#each this.question.content as |content|}}\n            <SettifyInputSwitcher\n              @question={{content}}\n              @model={{get-answers-from\n                client=this.clientRecord\n                induction=this.context.induction\n                answersLocation=(sum this.context.chapter \".\" this.context.page \".\" this.question.id)\n                repeatToken=this.context.repeat\n                filterByID=this.model\n              }}\n              @clientRecord={{this.clientRecord}}\n              @context={{this.context}}\n              @displayOnly={{this.displayOnly}}\n              @documentsOnly={{true}}\n              @notSureButton={{this.notSureButton}}\n              @adminMode={{this.adminMode}}\n            />\n          {{/each}}\n        {{/if}}\n      {{else if (eq this.question.type \"list\")}}\n        {{! For each item we should see if there are any questions with documents }}\n        {{#each (get this.model this.variableStorageName) as |item|}}\n          {{#each this.question.content as |content|}}\n            <SettifyInputSwitcher\n              @question={{content}}\n              @model={{item}}\n              @adminMode={{this.adminMode}}\n              @clientRecord={{this.clientRecord}}\n              @context={{this.context}}\n              @displayOnly={{this.displayOnly}}\n              @documentsOnly={{true}}\n              @notSureButton={{this.notSureButton}}\n            />\n          {{/each}}\n        {{/each}}\n      {{else if (eq this.question.type \"checkboxlist\")}}\n        <CheckBoxList\n          @documentsOnly={{true}}\n          @sourceList={{or this.question.sourceListIDs this.clientRecord.knownEntities}}\n          @displayOnly={{this.displayOnly}}\n          @content={{this.question.content}}\n          @checkboxProperty={{this.question.id}}\n          @required={{this.questionIsRequired}}\n          @context={{this.context}}\n          @clientRecord={{this.clientRecord}}\n          @notSureButton={{this.notSureButton}}\n        />\n      {{else if (eq this.question.type \"immutableList\")}}\n        <SettifyImmutableList\n          @documentsOnly={{true}}\n          @sourceList={{or this.question.sourceListIDs this.clientRecord.knownEntities}}\n          @displayOnly={{this.displayOnly}}\n          @model={{mut (get this.model this.variableStorageName)}}\n          @itemName={{or this.question.itemName \"item\"}}\n          @clientRecord={{this.clientRecord}}\n          @adminMode={{this.adminMode}}\n          @context={{this.context}}\n          as |item index|\n        >\n          {{#each this.question.content as |c|}}\n            <SettifyInputSwitcher\n              @question={{c}}\n              @context={{this.context}}\n              @clientRecord={{this.clientRecord}}\n              @model={{item}}\n              @displayOnly={{this.displayOnly}}\n              @adminMode={{this.adminMode}}\n              @documentsOnly={{true}}\n              @notSureButton={{this.notSureButton}}\n            />\n          {{/each}}\n        </SettifyImmutableList>\n      {{else if this.question.content}}\n        {{#each this.question.content as |content|}}\n          <SettifyInputSwitcher\n            @question={{content}}\n            @model={{this.model}}\n            @clientRecord={{this.clientRecord}}\n            @context={{this.context}}\n            @displayOnly={{this.displayOnly}}\n            @documentsOnly={{true}}\n            @notSureButton={{this.notSureButton}}\n          />\n        {{/each}}\n      {{/if}}\n    {{/if}}\n  {{else}}\n    {{#if this.shouldDisplay}}\n      {{! We want to display the question to the client }}\n      <div style={{this.yPosition}} data-question-id=\"{{this.question.id}}\" data-question-type=\"{{this.question.type}}\">\n        <LiquidIf @predicate={{this.shouldDisplay}} @class={{if this.shouldDisplay \"should-display-container\" \"should-display-hidden\"}}>\n          <div class=\"input-switcher {{this.inputStylingClasses}}\">\n            {{#if (eq this.question.type \"textline\")}}\n              <SettifyTextline\n                @label={{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @model={{mut (get this.model this.variableStorageName)}}\n                @displayOnly={{this.displayOnly}}\n                @onChange={{action \"changed\"}}\n                @placeholder={{parse-text this.question.placeholder model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @required={{this.questionIsRequired}}\n                @displayPlaceholderInSummary={{this.question.displayPlaceholderInSummary}}\n                @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @clientRecord={{this.clientRecord}}\n                @headerLabel={{this.headerLabelComputed}}\n                @notSureOption={{this.question.notSureOption}}\n                @notSureOptionDoesNotHideComponent={{this.question.notSureOptionDoesNotHideComponent}}\n                @notSureOptionText={{this.question.notSureOptionText}}\n                @notSureModel={{mut (get this.model this.notSureVariableStorageName)}}\n              />\n            {{else if (eq this.question.type \"textarea\")}}\n              <div class={{this.stylingClasses}}>\n                <SettifyTextarea\n                  @label={{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                  @model={{mut (get this.model this.variableStorageName)}}\n                  @displayOnly={{this.displayOnly}}\n                  @onChange={{action \"changed\"}}\n                  @noTopGap={{true}}\n                  @placeholder={{parse-text this.question.placeholder model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                  @required={{this.questionIsRequired}}\n                  @displayPlaceholderInSummary={{this.question.displayPlaceholderInSummary}}\n                  @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                  @clientRecord={{this.clientRecord}}\n                  @headerLabel={{this.headerLabelComputed}}\n                  @notSureOption={{this.question.notSureOption}}\n                  @notSureOptionDoesNotHideComponent={{this.question.notSureOptionDoesNotHideComponent}}\n                  @notSureOptionText={{this.question.notSureOptionText}}\n                  @notSureModel={{mut (get this.model this.notSureVariableStorageName)}}\n                />\n              </div>\n            {{else if (eq this.question.type \"officeselect\")}}\n              {{#if (gt this.firm.addresses.length 1)}}\n                <div class={{this.stylingClasses}}>\n                  {{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                  {{#if (and this.questionIsRequired (not this.displayOnly))}}\n                    <span class=\"required-field-marker {{if (get this.model this.variableStorageName) 'required-field-provided'}}\"></span>\n                  {{/if}}\n                  <HelpTextIcon @helpText={{this.question.helpText}} @displayOnly={{this.displayOnly}} @lawyerName={{this.clientRecord.helpTextIconLawyerName}} />\n  \n                  {{#each this.firm.addresses as |office|}}\n                    <RadioButtons\n                      @text={{address-string office}}\n                      @value={{address-string office}}\n                      @model={{mut (get this.model this.variableStorageName)}}\n                      @displayOnly={{this.displayOnly}}\n                    />\n                  {{/each}}\n                  {{#each this.question.options as |option|}}\n                    <RadioButtons @text={{option.title}} @value={{option.id}} @model={{mut (get this.model this.variableStorageName)}} @displayOnly={{this.displayOnly}} />\n                  {{/each}}\n                </div>\n              {{/if}}\n            {{else if (eq this.question.type \"address\")}}\n              <PostalAddressSelect\n                @postalAddress={{mut (get this.model this.variableStorageName)}}\n                @displayOnly={{this.displayOnly}}\n                @label={{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @onChange={{action \"changed\"}}\n                @required={{this.questionIsRequired}}\n                @detailed={{this.question.detailed}}\n                @addressOptions={{this.question.addressOptions}}\n                @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @clientRecord={{this.clientRecord}}\n                @hideSelect={{this.question.hideSelect}}\n                @filterType={{this.filterType}}\n                @filterList={{this.filterList}}\n                @notSureOption={{this.question.notSureOption}}\n                @notSureOptionDoesNotHideComponent={{this.question.notSureOptionDoesNotHideComponent}}\n                @notSureOptionText={{this.question.notSureOptionText}}\n                @notSureModel={{mut (get this.model this.notSureVariableStorageName)}}\n              />\n            {{else if (eq this.question.type \"firstname\")}}\n              <SettifyNameInput\n                @label={{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @gender={{mut (get this.model (sum this.variableStorageName \"-gender\"))}}\n                @pronouns={{mut (get this.model (sum this.variableStorageName \"-pronouns\"))}}\n                @name={{mut (get this.model this.variableStorageName)}}\n                @displayOnly={{this.displayOnly}}\n                @onChange={{action \"changed\"}}\n                @placeholder={{parse-text this.question.placeholder model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @clientRecord={{this.clientRecord}}\n                @practiceAreaSettings={{this.practiceAreaSettings}}\n                @required={{this.questionIsRequired}}\n                @displayPlaceholderInSummary={{this.question.displayPlaceholderInSummary}}\n                @headerLabel={{this.headerLabelComputed}}\n              />\n            {{else if (eq this.question.type \"date\")}}\n              <SettifyDateInput\n                @label={{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @day={{mut (get this.model (sum this.variableStorageName \"day\"))}}\n                @month={{mut (get this.model (sum this.variableStorageName \"month\"))}}\n                @year={{mut (get this.model (sum this.variableStorageName \"year\"))}}\n                @displayOnly={{this.displayOnly}}\n                @onChange={{action \"changed\"}}\n                @required={{this.questionIsRequired}}\n                @requiredSpecificity={{this.question.requiredSpecificity}}\n                @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @clientRecord={{this.clientRecord}}\n                @headerLabel={{this.headerLabelComputed}}\n                @monthInputFirst={{eq this.question.dateLayout \"MM/DD/YYYY\"}}\n                @allowFuture={{this.question.allowFuture}}\n                @notSureOption={{this.question.notSureOption}}\n                @notSureOptionDoesNotHideComponent={{this.question.notSureOptionDoesNotHideComponent}}\n                @notSureOptionText={{this.question.notSureOptionText}}\n                @notSureModel={{mut (get this.model this.notSureVariableStorageName)}}\n              />\n            {{else if (eq this.question.type \"number\")}}\n              <SettifyNumber\n                @label={{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @model={{mut (get this.model this.variableStorageName)}}\n                @displayOnly={{this.displayOnly}}\n                @onChange={{action \"changed\"}}\n                @required={{this.questionIsRequired}}\n                @placeholder={{parse-text this.question.placeholder model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @clientRecord={{this.clientRecord}}\n                @headerLabel={{this.headerLabelComputed}}\n                @min={{this.question.min}}\n                @max={{this.question.max}}\n                @suggestedMillionsThreshold={{this.question.suggestedMillionsThreshold}}\n                @suggestedThousandsThreshold={{this.question.suggestedThousandsThreshold}}\n                @nocommas={{this.question.noCommas}}\n                @notSureOption={{this.question.notSureOption}}\n                @notSureOptionDoesNotHideComponent={{this.question.notSureOptionDoesNotHideComponent}}\n                @notSureOptionText={{this.question.notSureOptionText}}\n                @notSureModel={{mut (get this.model this.notSureVariableStorageName)}}\n              />\n            {{else if (eq this.question.type \"money\")}}\n              <SettifyNumber\n                @label={{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @model={{mut (get this.model this.variableStorageName)}}\n                @displayOnly={{this.displayOnly}}\n                @onChange={{action \"changed\"}}\n                @required={{this.questionIsRequired}}\n                @placeholder={{if\n                  this.question.placeholder\n                  (parse-text this.question.placeholder model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context)\n                  \"$\"\n                }}\n                @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @clientRecord={{this.clientRecord}}\n                @money={{true}}\n                @prefix={{this.question.prefix}}\n                @preventFading={{this.question.preventFading}}\n                @headerLabel={{this.headerLabelComputed}}\n                @min={{this.question.min}}\n                @max={{this.question.max}}\n                @suggestedMillionsThreshold={{this.question.suggestedMillionsThreshold}}\n                @suggestedThousandsThreshold={{this.question.suggestedThousandsThreshold}}\n                @notSureOption={{this.question.notSureOption}}\n                @notSureOptionDoesNotHideComponent={{this.question.notSureOptionDoesNotHideComponent}}\n                @notSureOptionText={{this.question.notSureOptionText}}\n                @notSureModel={{mut (get this.model this.notSureVariableStorageName)}}\n              />\n              <LiquidIf @predicate={{and this.question.showConfidenceSlider (get this.model this.variableStorageName)}}>\n                <ConfidenceSlider\n                  @model={{mut (get this.model (sum this.variableStorageName \"-confidence\"))}}\n                  @maxconfidence={{this.question.confidenceSliderMaxValue}}\n                  @displayOnly={{this.displayOnly}}\n                />\n              </LiquidIf>\n            {{else if (eq this.question.type \"phone\")}}\n              <SettifyPhonenumber\n                @label={{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @model={{mut (get this.model this.variableStorageName)}}\n                @validation={{mut (get this.model (sum this.variableStorageName \"-valid\"))}}\n                @displayOnly={{this.displayOnly}}\n                @onChange={{action \"changed\"}}\n                @placeholder={{parse-text this.question.placeholder model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @required={{this.questionIsRequired}}\n                @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @clientRecord={{this.clientRecord}}\n                @headerLabel={{this.headerLabelComputed}}\n                @notSureOption={{this.question.notSureOption}}\n                @notSureOptionDoesNotHideComponent={{this.question.notSureOptionDoesNotHideComponent}}\n                @notSureOptionText={{this.question.notSureOptionText}}\n                @notSureModel={{mut (get this.model this.notSureVariableStorageName)}}\n              />\n            {{else if (eq this.question.type \"email\")}}\n              <SettifyEmailInput\n                @label={{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @model={{mut (get this.model this.variableStorageName)}}\n                @validation={{mut (get this.model (sum this.variableStorageName \"-valid\"))}}\n                @displayOnly={{this.displayOnly}}\n                @onChange={{action \"changed\"}}\n                @placeholder={{parse-text this.question.placeholder model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @required={{this.questionIsRequired}}\n                @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @clientRecord={{this.clientRecord}}\n                @headerLabel={{this.headerLabelComputed}}\n                @notSureOption={{this.question.notSureOption}}\n                @notSureOptionDoesNotHideComponent={{this.question.notSureOptionDoesNotHideComponent}}\n                @notSureOptionText={{this.question.notSureOptionText}}\n                @notSureModel={{mut (get this.model this.notSureVariableStorageName)}}\n              />\n            {{else if (eq this.question.type \"paragraph\")}}\n              <p class=\"settify-input-paragraph {{this.stylingClasses}}\">{{parse-text\n                  this.question.content\n                  model=this.model\n                  touch=this.clientRecord.touch\n                  clientRecord=this.clientRecord\n                  context=this.context\n                }}\n                <HelpTextIcon\n                  @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                  @lawyerName={{this.clientRecord.helpTextIconLawyerName}}\n                  @displayOnly={{this.displayOnly}}\n                /></p>\n            {{else if (eq this.question.type \"button\")}}\n              <SettifyInputButton\n                @link={{this.question.link}}\n                @completeThisChapter={{this.question.completeThisChapter}}\n                @text={{this.question.title}}\n                @displayOnly={{this.displayOnly}}\n                @context={{this.context}}\n                @clientRecord={{this.clientRecord}}\n              />\n            {{else if (eq this.question.type \"heading\")}}\n              <div class=\"{{if this.adminMode 'sub-heading' 'chapter-animation-container'}}{{this.stylingClasses}}\">\n                <h2>{{parse-text this.question.content model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}</h2>\n                {{#unless this.displayOnly}}\n                  <ChapterAnimation @icon={{this.question.icons}} />\n                {{/unless}}\n              </div>\n            {{else if (eq this.question.type \"image\")}}\n              <div class=\"image-wrapper {{this.stylingClasses}}\">\n                {{#if (or this.question.includeInSummary this.question.includeInFirmSummary (not this.displayOnly))}}\n                  {{! In adminMode we use the S3 bucket so icons work when the brief is downloaded }}\n                  <LineIcon @src={{if this.adminMode (sum \"https://cdn.settify.com.au/icons/\" (de-fingerprint this.question.icon)) this.question.icon}} @inline={{this.adminMode}} />\n                {{/if}}\n                {{#if this.question.content}}\n                  {{parse-text this.question.content model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                {{/if}}\n              </div>\n            {{else if (eq this.question.type \"link\")}}\n              <p class={{this.stylingClasses}}>\n                {{#if this.question.toggleButton}}\n                  <a href=\"#\" class=\"settify-input-paragraph\" {{action \"changed\"}}>{{parse-text\n                      (if (get this.model this.question.id) this.question.alternateContent this.question.content)\n                      model=this.model\n                      touch=this.clientRecord.touch\n                      clientRecord=this.clientRecord\n                      context=this.context\n                    }}</a>\n                {{else}}\n                  <a href={{this.question.link}} target=\"_blank\" rel=\"noopener noreferrer\" class=\"settify-input-paragraph\">{{parse-text\n                      this.question.content\n                      model=this.model\n                      touch=this.clientRecord.touch\n                      clientRecord=this.clientRecord\n                      context=this.context\n                    }}</a>\n                {{/if}}\n              </p>\n            {{else if (eq this.question.type \"inputslider\")}}\n              <div>\n                {{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                <SettifyInputSlider\n                  @model={{mut (get this.model this.variableStorageName)}}\n                  @client={{this.model}}\n                  @values={{this.question.options}}\n                  @onChange={{action \"changed\"}}\n                  @defaultIndex={{this.question.defaultIndex}}\n                  @displayOnly={{this.displayOnly}}\n                  @context={{this.context}}\n                  @clientRecord={{this.clientRecord}}\n                  @includeSlidingScaleText={{this.question.includeSlidingScaleText}}\n                  @slidingScaleLeftText={{this.question.slidingScaleLeftText}}\n                  @slidingScaleRightText={{this.question.slidingScaleRightText}}\n                  @notSureOption={{this.question.notSureOption}}\n                  @notSureOptionDoesNotHideComponent={{this.question.notSureOptionDoesNotHideComponent}}\n                  @notSureOptionText={{this.question.notSureOptionText}}\n                  @notSureModel={{mut (get this.model this.notSureVariableStorageName)}}\n                />\n              </div>\n            {{else if (eq this.question.type \"multiradio\")}}\n              <MultiRadioButtons\n                @label={{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @model={{this.model}}\n                @rows={{this.question.multiRadioRows}}\n                @options={{this.question.options}}\n                @displayOnly={{this.displayOnly}}\n                @context={{this.context}}\n                @clientRecord={{this.clientRecord}}\n              />\n            {{else if (eq this.question.type \"radio\")}}\n              <div class=\"summary-inline radio-inline {{if (and this.questionIsRequired (not (get this.model this.variableStorageName))) 'can-highlight'}}\">\n                {{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                {{#if (and this.questionIsRequired (not this.displayOnly))}}\n                  <span class=\"required-field-marker {{if (get this.model this.variableStorageName) 'required-field-provided'}}\"></span>\n                {{else if (and this.questionIsRequired this.displayOnly (not (get this.model this.variableStorageName)))}}\n                  <RequiredField />\n                {{/if}}\n                <HelpTextIcon\n                  @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                  @lawyerName={{this.clientRecord.helpTextIconLawyerName}}\n                  @displayOnly={{this.displayOnly}}\n                />\n                <MonitorChanges @model={{get this.model this.variableStorageName}} @onChange={{action \"changed\" (get this.model this.variableStorageName)}} />\n                {{#each this.question.options as |option|}}\n                  {{#if (should-display question=option clientRecord=this.clientRecord context=this.context touch=this.clientRecord.touch model=this.model)}}\n                    <RadioButtons\n                      @text={{parse-text option.title model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                      @model={{mut (get this.model this.variableStorageName)}}\n                      @value={{or option.id option.title}}\n                      @displayOnly={{this.displayOnly}}\n                      @unselectable={{this.question.unselectable}}\n                      @name={{this.question.id}}\n                      @helpText={{parse-text option.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                    />\n                    <DocumentsRequiredFeedback\n                      @documents={{option.documentsRequired}}\n                      @showDocument={{eq (get this.model this.variableStorageName) (or option.id option.title)}}\n                      @model={{this.model}}\n                      @displayOnly={{this.displayOnly}}\n                      @notSureButton={{this.notSureButton}}\n                      @displayInline={{true}}\n                      @objectID={{this.model.id}}\n                      @context={{this.context}}\n                      @clientID={{this.clientRecord.clientID}}\n                      @questionID={{this.variableStorageName}}\n                      @client={{this.clientRecord}}\n                      @adminMode={{this.adminMode}}\n                    />\n                  {{/if}}\n                {{/each}}\n                {{#each this.question.options as |option|}}\n                  {{#unless this.displayOnly}}\n                    <LiquidIf\n                      @predicate={{and\n                        (should-display question=option clientRecord=this.clientRecord context=this.context touch=this.clientRecord.touch)\n                        option.feedback\n                        (eq (get this.model this.variableStorageName) option.id)\n                      }}\n                    >\n                      <br />\n                      <p class=\"feedback-paragraph\">\n                        {{parse-text option.feedback model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                      </p>\n                    </LiquidIf>\n                  {{/unless}}\n                  {{#if\n                    (and\n                      this.adminMode\n                      (should-display question=option clientRecord=this.clientRecord context=this.context touch=this.clientRecord.touch)\n                      option.feedbackToLawyer\n                      (eq (get this.model this.variableStorageName) option.id)\n                    )\n                  }}\n                    <p class=\"lawyer-feedback-paragraph\">\n                      <i class=\"fal fa-lightbulb-on tight\" />\n                      {{parse-text option.feedbackToLawyer model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                    </p>\n                  {{/if}}\n                {{/each}}\n              </div>\n              {{#if (and this.displayOnly (not (defined (get this.model this.variableStorageName))))}}\n                <NoInformation />\n              {{/if}}\n            {{else if (eq this.question.type \"yesno\")}}\n              {{#if (and this.displayOnly this.question.onYes.title (eq (get this.model this.variableStorageName) \"yes\"))}}\n                <YesnomaybeIcon @icon={{or this.question.onYes.icon \"positive\"}} />\n                {{parse-text this.question.onYes.title model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}<br />\n                <DocumentsRequiredFeedback\n                  @documents={{this.question.onYes.documentsRequired}}\n                  @showDocument={{eq (get this.model this.variableStorageName) \"yes\"}}\n                  @model={{this.model}}\n                  @notSureButton={{this.notSureButton}}\n                  @displayOnly={{this.displayOnly}}\n                  @displayInline={{true}}\n                  @objectID={{this.model.id}}\n                  @context={{this.context}}\n                  @clientID={{this.clientRecord.clientID}}\n                  @questionID={{this.variableStorageName}}\n                  @client={{this.clientRecord}}\n                  @adminMode={{this.adminMode}}\n                />\n              {{else if (and this.displayOnly this.question.onNo.title (eq (get this.model this.variableStorageName) \"no\"))}}\n                <YesnomaybeIcon @icon={{or this.question.onNo.icon \"negative\"}} />\n                {{parse-text this.question.onNo.title model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}<br />\n                <DocumentsRequiredFeedback\n                  @documents={{this.question.onNo.documentsRequired}}\n                  @notSureButton={{this.notSureButton}}\n                  @showDocument={{eq (get this.model this.variableStorageName) \"no\"}}\n                  @model={{this.model}}\n                  @displayOnly={{this.displayOnly}}\n                  @displayInline={{true}}\n                  @objectID={{this.model.id}}\n                  @context={{this.context}}\n                  @clientID={{this.clientRecord.clientID}}\n                  @questionID={{this.variableStorageName}}\n                  @client={{this.clientRecord}}\n                  @adminMode={{this.adminMode}}\n                />\n              {{else if (and this.displayOnly this.question.onNotSure.title (eq (get this.model this.variableStorageName) \"notsure\"))}}\n                <YesnomaybeIcon @icon={{or this.question.onNotSure.icon \"notsure\"}} />\n                {{parse-text this.question.onNotSure.title model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}<br />\n                <DocumentsRequiredFeedback\n                  @documents={{this.question.onNotSure.documentsRequired}}\n                  @notSureButton={{this.notSureButton}}\n                  @showDocument={{eq (get this.model this.variableStorageName) \"notsure\"}}\n                  @model={{this.model}}\n                  @displayOnly={{this.displayOnly}}\n                  @displayInline={{true}}\n                  @objectID={{this.model.id}}\n                  @context={{this.context}}\n                  @clientID={{this.clientRecord.clientID}}\n                  @questionID={{this.variableStorageName}}\n                  @client={{this.clientRecord}}\n                  @adminMode={{this.adminMode}}\n                />\n              {{else}}\n                <div class=\"summary-inline {{if (and this.questionIsRequired (not (get this.model this.variableStorageName))) 'can-highlight'}}\">\n                  {{#if (and this.displayOnly (get this.model (sum this.variableStorageName \"-askcolleague\")))}}\n                    <i class=\"fal fa-users\" />\n                  {{/if}}\n                  {{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                  {{#if (and this.questionIsRequired (not this.displayOnly))}}\n                    <span class=\"required-field-marker {{if (get this.model this.variableStorageName) 'required-field-provided'}}\"></span>\n                  {{else if (and this.questionIsRequired this.displayOnly (not (get this.model this.variableStorageName)))}}\n                    <RequiredField />\n                  {{/if}}\n                  <MonitorChanges @model={{get this.model this.variableStorageName}} @onChange={{action \"changed\" (get this.model this.variableStorageName)}} />\n                  {{!-- {{#check-box class=(sum \"toggle-box inline \" (if showAskOthers 'selected')) model=showAskOthers}}\n                  <i class=\"fal fa-users\" />\n                {{/check-box}} --}}\n                  <HelpTextIcon\n                    @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                    @lawyerName={{this.clientRecord.helpTextIconLawyerName}}\n                    @displayOnly={{this.displayOnly}}\n                  />\n                  <LiquidIf @predicate={{this.showAskOthers}}>\n                    {{! MVP TODO - proper implementation of ask others }}\n                    <MonitorChanges @model={{get this.model (sum this.variableStorageName \"-askcolleague\")}} @onChange={{action \"changed\"}} />\n                    <SelectOrCreateSingular\n                      @sourceList={{this.tempPeopleList}}\n                      @addNewText=\"Ask someone else\"\n                      @itemLabelFormat={{if this.displayOnly \"firstName surname %will %be %asked %for %this %information\" \"%Ask firstName surname %for %this %information\"}}\n                      @model={{mut (get this.model (sum this.variableStorageName \"-askcolleague\"))}}\n                      @prompt=\"Who do you want to ask?\"\n                      @displayOnly={{this.displayOnly}}\n                      as |item editingExistingItem|\n                    >\n                      <SettifyTextline @model={{item.firstName}} @label=\"First name\" />\n                      <SettifyTextline @model={{item.surname}} @label=\"Surname\" />\n                      <SettifyEmailInput @model={{item.email}} @label=\"Email address\" />\n                    </SelectOrCreateSingular>\n                  </LiquidIf>\n                  <LiquidIf @predicate={{not this.showAskOthers}}>\n                    <RadioButtons\n                      @name={{this.question.id}}\n                      @text=\"Yes\"\n                      @model={{mut (get this.model this.variableStorageName)}}\n                      @value=\"yes\"\n                      @displayOnly={{this.displayOnly}}\n                      @helpText={{this.question.onYes.helpText}}\n                    />\n                    <RadioButtons\n                      @name={{this.question.id}}\n                      @text=\"No\"\n                      @model={{mut (get this.model this.variableStorageName)}}\n                      @value=\"no\"\n                      @displayOnly={{this.displayOnly}}\n                      @helpText={{this.question.onNo.helpText}}\n                    />\n                    {{#unless this.question.excludeNotSure}}\n                      <RadioButtons\n                        @text=\"I'm not sure\"\n                        @model={{mut (get this.model this.variableStorageName)}}\n                        @value=\"notsure\"\n                        @displayOnly={{this.displayOnly}}\n                        @helpText={{this.question.onNotSure.helpText}}\n                      />\n                    {{/unless}}\n                    {{#unless this.displayOnly}}\n                      <LiquidIf @predicate={{and (eq (get this.model this.variableStorageName) \"yes\") this.question.onYes.feedback}}>\n                        <br />\n                        <p class=\"feedback-paragraph\">\n                          {{parse-text this.question.onYes.feedback model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                        </p>\n                      </LiquidIf>\n                      <LiquidIf @predicate={{and (eq (get this.model this.variableStorageName) \"no\") this.question.onNo.feedback}}>\n                        <br />\n                        <p class=\"feedback-paragraph\">\n                          {{parse-text this.question.onNo.feedback model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                        </p>\n                      </LiquidIf>\n                      <LiquidIf @predicate={{and (eq (get this.model this.variableStorageName) \"notsure\") this.question.onNotSure.feedback}}>\n                        <br />\n                        <p class=\"feedback-paragraph\">\n                          {{parse-text this.question.onNotSure.feedback model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                        </p>\n                      </LiquidIf>\n                    {{/unless}}\n                    <LiquidIf @predicate={{and this.adminMode (eq (get this.model this.variableStorageName) \"yes\") this.question.onYes.feedbackToLawyer}}>\n                      <p class=\"lawyer-feedback-paragraph\">\n                        <i class=\"fal fa-lightbulb-on tight\" />\n                        {{parse-text this.question.onYes.feedbackToLawyer model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                      </p>\n                    </LiquidIf>\n                    <LiquidIf @predicate={{and this.adminMode (eq (get this.model this.variableStorageName) \"no\") this.question.onNo.feedbackToLawyer}}>\n                      <p class=\"lawyer-feedback-paragraph\">\n                        <i class=\"fal fa-lightbulb-on tight\" />\n                        {{parse-text this.question.onNo.feedbackToLawyer model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                      </p>\n                    </LiquidIf>\n                    <LiquidIf @predicate={{and this.adminMode (eq (get this.model this.variableStorageName) \"notsure\") this.question.onNotSure.feedbackToLawyer}}>\n                      <p class=\"lawyer-feedback-paragraph\">\n                        <i class=\"fal fa-lightbulb-on tight\" />\n                        {{parse-text this.question.onNotSure.feedbackToLawyer model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                      </p>\n                    </LiquidIf>\n                    <DocumentsRequiredFeedback\n                      @documents={{this.question.onYes.documentsRequired}}\n                      @showDocument={{eq (get this.model this.variableStorageName) \"yes\"}}\n                      @model={{this.model}}\n                      @displayOnly={{this.displayOnly}}\n                      @displayInline={{true}}\n                      @notSureButton={{this.notSureButton}}\n                      @objectID={{this.model.id}}\n                      @context={{this.context}}\n                      @clientID={{this.clientRecord.clientID}}\n                      @questionID={{this.variableStorageName}}\n                      @client={{this.clientRecord}}\n                      @adminMode={{this.adminMode}}\n                    />\n                    <DocumentsRequiredFeedback\n                      @documents={{this.question.onNo.documentsRequired}}\n                      @showDocument={{eq (get this.model this.variableStorageName) \"no\"}}\n                      @model={{this.model}}\n                      @notSureButton={{this.notSureButton}}\n                      @displayOnly={{this.displayOnly}}\n                      @displayInline={{true}}\n                      @objectID={{this.model.id}}\n                      @context={{this.context}}\n                      @clientID={{this.clientRecord.clientID}}\n                      @questionID={{this.variableStorageName}}\n                      @client={{this.clientRecord}}\n                      @adminMode={{this.adminMode}}\n                    />\n                    <DocumentsRequiredFeedback\n                      @documents={{this.question.onNotSure.documentsRequired}}\n                      @showDocument={{eq (get this.model this.variableStorageName) \"notsure\"}}\n                      @model={{this.model}}\n                      @displayOnly={{this.displayOnly}}\n                      @notSureButton={{this.notSureButton}}\n                      @displayInline={{true}}\n                      @objectID={{this.model.id}}\n                      @context={{this.context}}\n                      @clientID={{this.clientRecord.clientID}}\n                      @questionID={{this.variableStorageName}}\n                      @client={{this.clientRecord}}\n                      @adminMode={{this.adminMode}}\n                    />\n                  </LiquidIf>\n                </div>\n                {{#if (and this.displayOnly (not (get this.model (sum this.variableStorageName \"-askcolleague\")) (defined (get this.model this.variableStorageName))))}}\n                  <NoInformation />\n                {{/if}}\n              {{/if}}\n            {{else if (eq this.question.type \"checkbox\")}}\n              <div class={{this.stylingClasses}}>\n                {{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                <HelpTextIcon\n                  @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                  @lawyerName={{this.clientRecord.helpTextIconLawyerName}}\n                  @displayOnly={{this.displayOnly}}\n                />\n                {{#each this.question.options as |option|}}\n                  {{#if (should-display question=option clientRecord=this.clientRecord context=this.context touch=this.clientRecord.touch model=this.model)}}\n                    <CheckBox\n                      @text={{parse-text\n                        (if this.displayOnly (or option.shortTitle option.title) option.title)\n                        model=this.model\n                        touch=this.clientRecord.touch\n                        clientRecord=this.clientRecord\n                        context=this.context\n                      }}\n                      @model={{mut (get this.model (or option.id option.title))}}\n                      @helpText={{parse-text option.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                      @displayOnly={{this.displayOnly}}\n                      @required={{option.required}}\n                      @hideIcon={{option.hideIcon}}\n                      @onChange={{action \"changed\" option}}\n                    />\n                    <DocumentsRequiredFeedback\n                      @documents={{option.documentsRequired}}\n                      @showDocument={{eq (get this.model (or option.id option.title)) true}}\n                      @model={{this.model}}\n                      @displayOnly={{this.displayOnly}}\n                      @notSureButton={{this.notSureButton}}\n                      @displayInline={{true}}\n                      @objectID={{this.model.id}}\n                      @context={{this.context}}\n                      @clientID={{this.clientRecord.clientID}}\n                      @questionID={{this.variableStorageName}}\n                      @client={{this.clientRecord}}\n                      @adminMode={{this.adminMode}}\n                    />\n                  {{/if}}\n                {{/each}}\n              </div>\n              {{#each this.question.options as |option|}}\n                {{#unless this.displayOnly}}\n                  <LiquidIf\n                    @predicate={{and\n                      (should-display question=option clientRecord=this.clientRecord context=this.context touch=this.clientRecord.touch)\n                      option.feedback\n                      (get this.model (or option.id option.title))\n                    }}\n                  >\n                    <p class=\"feedback-paragraph\">\n                      {{parse-text option.feedback model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                    </p>\n                  </LiquidIf>\n                {{/unless}}\n                <LiquidIf\n                  @predicate={{and\n                    this.adminMode\n                    (should-display question=option clientRecord=this.clientRecord context=this.context touch=this.clientRecord.touch)\n                    option.feedbackToLawyer\n                    (get this.model (or option.id option.title))\n                  }}\n                >\n                  <p class=\"lawyer-feedback-paragraph\">\n                    <i class=\"fal fa-lightbulb-on tight\" />\n                    {{parse-text option.feedbackToLawyer model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                  </p>\n                </LiquidIf>\n              {{/each}}\n              {{#if (and this.displayOnly this.noCheckboxesTicked)}}\n                {{#if (gt this.noCheckboxesTicked 1)}}\n                  <span class=\"textgrey\">(None selected)</span>\n                {{else}}\n                  {{parse-text\n                    (or (get this.question.options \"0.shortTitle\") (get this.question.options \"0.title\"))\n                    model=this.model\n                    touch=this.clientRecord.touch\n                    clientRecord=this.clientRecord\n                    context=this.context\n                  }}\n                  {{possible-colon displayOnly=this.displayOnly title=(or (get this.question.options \"0.shortTitle\") (get this.question.options \"0.title\"))}}\n                  No\n                {{/if}}\n              {{/if}}\n            {{else if (eq this.question.type \"list\")}}\n              {{#if this.question.tabbedList}}\n                <TabbedList\n                  @model={{mut (get this.model this.variableStorageName)}}\n                  @label={{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                  @itemTypeString={{or this.question.itemName \"item\"}}\n                  @itemLabelFormat={{or this.question.itemLabelFormat \"firstName surname\"}}\n                  @displayOnly={{this.displayOnly}}\n                  @adminMode={{this.adminMode}}\n                  @defaults={{this.defaults}}\n                  @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                  @clientRecord={{this.clientRecord}}\n                  as |item|\n                >\n                  {{#each this.question.content as |c|}}\n                    <SettifyInputSwitcher\n                      @question={{c}}\n                      @context={{this.context}}\n                      @clientRecord={{this.clientRecord}}\n                      @practiceAreaSettings={{this.practiceAreaSettings}}\n                      @model={{item}}\n                      @displayOnly={{this.displayOnly}}\n                      @adminMode={{this.adminMode}}\n                      @highlightRequiredFields={{this.highlightRequiredFields}}\n                    />\n                  {{/each}}\n                </TabbedList>\n              {{else}}\n                <FreeList\n                  @displayOnly={{this.displayOnly}}\n                  @label={{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                  @model={{mut (get this.model this.variableStorageName)}}\n                  @itemName={{or this.question.itemName \"item\"}}\n                  @onChange={{action \"changed\"}}\n                  @preventEmptyLists={{true}}\n                  @adminMode={{this.adminMode}}\n                  @immutableList={{this.question.immutableList}}\n                  @noBorder={{this.question.noBorder}}\n                  @clientRecord={{this.clientRecord}}\n                  @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                  as |item index|\n                >\n                  {{#each this.question.content as |c|}}\n                    <SettifyInputSwitcher\n                      @question={{c}}\n                      @context={{this.context}}\n                      @clientRecord={{this.clientRecord}}\n                      @practiceAreaSettings={{this.practiceAreaSettings}}\n                      @model={{item}}\n                      @displayOnly={{this.displayOnly}}\n                      @adminMode={{this.adminMode}}\n                      @highlightRequiredFields={{this.highlightRequiredFields}}\n                    />\n                  {{/each}}\n                </FreeList>\n              {{/if}}\n            {{else if (eq this.question.type \"familytreeselect\")}}\n              {{#if (eq this.clientRecord.practiceArea \"Probate\")}}\n                <FamilyTreeProbate\n                  @displayOnly={{this.displayOnly}}\n                  @label={{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                  @onChange={{action \"changed\"}}\n                  @clientRecord={{this.clientRecord}}\n                  @practiceAreaSettings={{this.practiceAreaSettings}}\n                  @hideDetail={{false}}\n                  @adminMode={{this.adminMode}}\n                  @summaryMode={{this.summaryMode}}\n                  @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                  @checkboxProperty={{this.question.id}}\n                  @multipleSelections={{this.question.multipleSelections}}\n                  @enableDeceased={{this.question.enableDeceased}}\n                  @enableOrganisations={{this.question.enableOrganisations}}\n                  @disableDeceasedPeople={{this.question.disableDeceasedPeople}}\n                  @disableEditing={{this.question.disableEditing}}\n                  as |item|\n                >\n                  {{#each this.question.content as |c|}}\n                    <SettifyInputSwitcher\n                      @question={{c}}\n                      @context={{this.context}}\n                      @clientRecord={{this.clientRecord}}\n                      @practiceAreaSettings={{this.practiceAreaSettings}}\n                      @model={{get-known-entity this.clientRecord item}}\n                      @displayOnly={{this.displayOnly}}\n                    />\n                  {{/each}}\n                  {{#if this.question.askForMoreInfo}}\n                    <SettifyTextarea\n                      @label={{if this.displayOnly \"\" \"Please tell us more\"}}\n                      @model={{mut (get (get-known-entity this.clientRecord item) (concat this.question.id \"MoreInfo\"))}}\n                      @displayOnly={{this.displayOnly}}\n                      @onChange={{action \"changed\"}}\n                      @headerLabel={{false}}\n                    />\n                  {{/if}}\n                </FamilyTreeProbate>\n              {{else}}\n                <FamilyTree\n                  @displayOnly={{this.displayOnly}}\n                  @label={{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                  @onChange={{action \"changed\"}}\n                  @clientRecord={{this.clientRecord}}\n                  @practiceAreaSettings={{this.practiceAreaSettings}}\n                  @hideDetail={{false}}\n                  @adminMode={{this.adminMode}}\n                  @summaryMode={{this.summaryMode}}\n                  @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                  @checkboxProperty={{this.question.id}}\n                  @multipleSelections={{this.question.multipleSelections}}\n                  @enableDeceased={{this.question.enableDeceased}}\n                  @enableOrganisations={{this.question.enableOrganisations}}\n                  @disableDeceasedPeople={{this.question.disableDeceasedPeople}}\n                  @disableEditing={{this.question.disableEditing}}\n                  as |item|\n                >\n                  {{#each this.question.content as |c|}}\n                    <SettifyInputSwitcher\n                      @question={{c}}\n                      @context={{this.context}}\n                      @clientRecord={{this.clientRecord}}\n                      @practiceAreaSettings={{this.practiceAreaSettings}}\n                      @model={{get-known-entity this.clientRecord item}}\n                      @displayOnly={{this.displayOnly}}\n                    />\n                  {{/each}}\n                  {{#if this.question.askForMoreInfo}}\n                    <SettifyTextarea\n                      @label={{if this.displayOnly \"\" \"Please tell us more\"}}\n                      @model={{mut (get (get-known-entity this.clientRecord item) (concat this.question.id \"MoreInfo\"))}}\n                      @displayOnly={{this.displayOnly}}\n                      @onChange={{action \"changed\"}}\n                      @headerLabel={{false}}\n                    />\n                  {{/if}}\n                </FamilyTree>\n              {{/if}}\n            {{else if (eq this.question.type \"immutableList\")}}\n              <SettifyImmutableList\n                @sourceList={{or this.question.sourceListIDs this.clientRecord.knownEntities}}\n                @displayOnly={{this.displayOnly}}\n                @label={{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @model={{this.model}}\n                @itemName={{or this.question.itemName \"item\"}}\n                @class={{this.stylingClasses}}\n                @onChange={{action \"changed\"}}\n                @clientRecord={{this.clientRecord}}\n                @adminMode={{this.adminMode}}\n                @context={{this.context}}\n                @level={{or this.level 0}}\n                @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                as |item index|\n              >\n                {{#each this.question.content as |c|}}\n                  <SettifyInputSwitcher\n                    @question={{c}}\n                    @context={{this.context}}\n                    @clientRecord={{this.clientRecord}}\n                    @practiceAreaSettings={{this.practiceAreaSettings}}\n                    @model={{item}}\n                    @level={{sum this.level 1}}\n                    @displayOnly={{this.displayOnly}}\n                    @adminMode={{this.adminMode}}\n                    @highlightRequiredFields={{this.highlightRequiredFields}}\n                  />\n                {{/each}}\n              </SettifyImmutableList>\n            {{else if (or (eq this.question.type \"selectorcreate\") (eq this.question.type \"selectorcreatemulti\") (eq this.question.type \"selectorcreatesingle\"))}}\n              {{#if (or (eq this.clientRecord.practiceArea \"Probate\") (and (eq this.clientRecord.practiceArea \"Forms\") (eq this.question.type \"selectorcreate\")))}}\n                <SelectOrCreateLegacy\n                  @label={{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                  @sourceList={{this.clientRecord.knownEntitiesAndFamilyMembers}}\n                  @outputList={{this.clientRecord.knownEntities}}\n                  @addNewText={{or this.question.addNewText \"Someone else\"}}\n                  @itemLabelFormat={{or this.question.itemLabelFormat \"firstName surname name\"}}\n                  @model={{mut (get this.model this.variableStorageName)}}\n                  @displayOnly={{this.displayOnly}}\n                  @editExistingItems={{true}}\n                  @required={{this.question.required}}\n                  @itemName={{or this.question.itemName \"item\"}}\n                  @headerLabel={{this.headerLabelComputed}}\n                  @multipleSelections={{this.question.multipleSelections}}\n                  @hideSelectSuggest={{this.question.hideSelect}}\n                  @useFamilyTree={{this.question.useFamilyTree}}\n                  @filterType={{this.filterType}}\n                  @filterList={{this.filterList}}\n                  @allowPeople={{this.question.allowPeople}}\n                  @allowCorporations={{this.question.allowCorporations}}\n                  @editMode={{this.editMode}}\n                  @setAsPrimaryContact={{this.question.setAsPrimaryContact}}\n                  @allowDeceased={{this.question.allowDeceased}}\n                  @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                  @clientRecord={{this.clientRecord}}\n                  @practiceAreaSettings={{this.practiceAreaSettings}}\n                  @onChange={{action \"changed\"}}\n                  as |item editingExistingItem|\n                >\n                  {{#unless this.question.customContentFirst}}\n                    <SelectOrCreateSwitcherPresets\n                      @item={{item}}\n                      @editingExistingItem={{editingExistingItem}}\n                      @question={{this.question}}\n                      @context={{this.context}}\n                      @clientRecord={{this.clientRecord}}\n                      @highlightRequiredFields={{this.highlightRequiredFields}}\n                      @displayOnly={{this.displayOnly}}\n                      @adminMode={{this.adminMode}}\n                      @filterList={{this.filterList}}\n                      @filterType={{this.filterType}}\n                    />\n                  {{/unless}}\n                  {{#each this.question.content as |c|}}\n                    <SettifyInputSwitcher\n                      @question={{c}}\n                      @displayOnly={{this.displayOnly}}\n                      @context={{augment-hash this.context editingExistingItem=editingExistingItem}}\n                      @clientRecord={{this.clientRecord}}\n                      @practiceAreaSettings={{this.practiceAreaSettings}}\n                      @model={{item}}\n                      @filterListOverride={{c.filterList}}\n                      @filterTypeOverride={{c.filterType}}\n                      @adminMode={{this.adminMode}}\n                      @highlightRequiredFields={{this.highlightRequiredFields}}\n                    />\n                  {{/each}}\n                  {{#if this.question.customContentFirst}}\n                    <SelectOrCreateSwitcherPresets\n                      @item={{item}}\n                      @editingExistingItem={{editingExistingItem}}\n                      @question={{this.question}}\n                      @context={{this.context}}\n                      @clientRecord={{this.clientRecord}}\n                      @highlightRequiredFields={{this.highlightRequiredFields}}\n                      @displayOnly={{this.displayOnly}}\n                      @adminMode={{this.adminMode}}\n                      @filterList={{this.filterList}}\n                      @filterType={{this.filterType}}\n                    />\n                  {{/if}}\n                </SelectOrCreateLegacy>\n              {{else if (or (eq this.clientRecord.practiceArea \"Estates\") (eq this.clientRecord.practiceArea \"Family\") (eq this.clientRecord.practiceArea \"Wills\"))}}\n                {{#if this.question.multipleSelections}}\n                  <SelectOrCreateMultiple\n                    @label={{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                    @sourceList={{this.clientRecord.knownEntities}}\n                    @outputList={{this.clientRecord.knownEntities}}\n                    @addNewText={{or this.question.addNewText \"Someone else\"}}\n                    @itemLabelFormat={{or this.question.itemLabelFormat \"firstName surname name\"}}\n                    @model={{mut (get this.model this.variableStorageName)}}\n                    @displayOnly={{this.displayOnly}}\n                    @editExistingItems={{true}}\n                    @required={{this.questionIsRequired}}\n                    @itemName={{or this.question.itemName \"item\"}}\n                    @itemNamePluralNoun={{this.question.itemNamePluralNoun}}\n                    @headerLabel={{this.headerLabelComputed}}\n                    @hideSelectSuggest={{this.question.hideSelect}}\n                    @filterType={{this.filterType}}\n                    @filterList={{this.filterList}}\n                    @notSureOption={{this.question.notSureOption}}\n                    @notSureOptionText={{this.question.notSureOptionText}}\n                    @notSureModel={{mut (get this.model (sum this.variableStorageName \"-notsure\"))}}\n                    @client={{this.model}}\n                    @allowPeople={{this.question.allowPeople}}\n                    @allowCorporations={{this.question.allowCorporations}}\n                    @editMode={{this.editMode}}\n                    @setAsPrimaryContact={{this.question.setAsPrimaryContact}}\n                    @allowDeceased={{this.question.allowDeceased}}\n                    @context={{this.context}}\n                    @questionID={{this.question.id}}\n                    @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                    @clientRecord={{this.clientRecord}}\n                    @practiceAreaSettings={{this.practiceAreaSettings}}\n                    @onChange={{action \"changed\"}}\n                    as |item editingExistingItem|\n                  >\n                    {{#unless this.question.customContentFirst}}\n                      <SelectOrCreateSwitcherPresets\n                        @item={{item}}\n                        @editingExistingItem={{editingExistingItem}}\n                        @question={{this.question}}\n                        @context={{this.context}}\n                        @clientRecord={{this.clientRecord}}\n                        @highlightRequiredFields={{this.highlightRequiredFields}}\n                        @displayOnly={{this.displayOnly}}\n                        @adminMode={{this.adminMode}}\n                        @filterList={{this.filterList}}\n                        @filterType={{this.filterType}}\n                      />\n                    {{/unless}}\n                    {{#each this.question.content as |c|}}\n                      <SettifyInputSwitcher\n                        @question={{c}}\n                        @displayOnly={{this.displayOnly}}\n                        @context={{augment-hash this.context editingExistingItem=editingExistingItem}}\n                        @clientRecord={{this.clientRecord}}\n                        @practiceAreaSettings={{this.practiceAreaSettings}}\n                        @model={{item}}\n                        @filterListOverride={{c.filterList}}\n                        @filterTypeOverride={{c.filterType}}\n                        @adminMode={{this.adminMode}}\n                        @highlightRequiredFields={{this.highlightRequiredFields}}\n                      />\n                    {{/each}}\n                    {{#if this.question.customContentFirst}}\n                      <SelectOrCreateSwitcherPresets\n                        @item={{item}}\n                        @editingExistingItem={{editingExistingItem}}\n                        @question={{this.question}}\n                        @context={{this.context}}\n                        @clientRecord={{this.clientRecord}}\n                        @highlightRequiredFields={{this.highlightRequiredFields}}\n                        @displayOnly={{this.displayOnly}}\n                        @adminMode={{this.adminMode}}\n                        @filterList={{this.filterList}}\n                        @filterType={{this.filterType}}\n                      />\n                    {{/if}}\n                  </SelectOrCreateMultiple>\n                {{else}}\n                  <SelectOrCreateSingular\n                    @label={{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                    @sourceList={{this.clientRecord.knownEntities}}\n                    @outputList={{this.clientRecord.knownEntities}}\n                    @addNewText={{or this.question.addNewText \"Someone else\"}}\n                    @itemLabelFormat={{or this.question.itemLabelFormat \"firstName surname name\"}}\n                    @model={{mut (get this.model this.variableStorageName)}}\n                    @displayOnly={{this.displayOnly}}\n                    @editExistingItems={{true}}\n                    @required={{this.questionIsRequired}}\n                    @itemName={{or this.question.itemName \"item\"}}\n                    @itemNamePluralNoun={{this.question.itemNamePluralNoun}}\n                    @headerLabel={{this.headerLabelComputed}}\n                    @hideSelectSuggest={{this.question.hideSelect}}\n                    @filterType={{this.filterType}}\n                    @filterList={{this.filterList}}\n                    @notSureOption={{this.question.notSureOption}}\n                    @notSureOptionText={{this.question.notSureOptionText}}\n                    @notSureModel={{mut (get this.model (sum this.variableStorageName \"-notsure\"))}}\n                    @client={{this.model}}\n                    @allowPeople={{this.question.allowPeople}}\n                    @allowCorporations={{this.question.allowCorporations}}\n                    @editMode={{this.editMode}}\n                    @setAsPrimaryContact={{this.question.setAsPrimaryContact}}\n                    @allowDeceased={{this.question.allowDeceased}}\n                    @context={{this.context}}\n                    @questionID={{this.question.id}}\n                    @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                    @clientRecord={{this.clientRecord}}\n                    @practiceAreaSettings={{this.practiceAreaSettings}}\n                    @onChange={{action \"changed\"}}\n                    as |item editingExistingItem|\n                  >\n                    {{#unless this.question.customContentFirst}}\n                      <SelectOrCreateSwitcherPresets\n                        @item={{item}}\n                        @editingExistingItem={{editingExistingItem}}\n                        @question={{this.question}}\n                        @context={{this.context}}\n                        @clientRecord={{this.clientRecord}}\n                        @highlightRequiredFields={{this.highlightRequiredFields}}\n                        @displayOnly={{this.displayOnly}}\n                        @adminMode={{this.adminMode}}\n                        @filterList={{this.filterList}}\n                        @filterType={{this.filterType}}\n                      />\n                    {{/unless}}\n                    {{#each this.question.content as |c|}}\n                      <SettifyInputSwitcher\n                        @question={{c}}\n                        @displayOnly={{this.displayOnly}}\n                        @context={{augment-hash this.context editingExistingItem=editingExistingItem}}\n                        @clientRecord={{this.clientRecord}}\n                        @practiceAreaSettings={{this.practiceAreaSettings}}\n                        @model={{item}}\n                        @filterListOverride={{c.filterList}}\n                        @filterTypeOverride={{c.filterType}}\n                        @adminMode={{this.adminMode}}\n                        @highlightRequiredFields={{this.highlightRequiredFields}}\n                      />\n                    {{/each}}\n                    {{#if this.question.customContentFirst}}\n                      <SelectOrCreateSwitcherPresets\n                        @item={{item}}\n                        @editingExistingItem={{editingExistingItem}}\n                        @question={{this.question}}\n                        @context={{this.context}}\n                        @clientRecord={{this.clientRecord}}\n                        @highlightRequiredFields={{this.highlightRequiredFields}}\n                        @displayOnly={{this.displayOnly}}\n                        @adminMode={{this.adminMode}}\n                        @filterList={{this.filterList}}\n                        @filterType={{this.filterType}}\n                      />\n                    {{/if}}\n                  </SelectOrCreateSingular>\n                {{/if}}\n              {{else if (eq this.question.type \"selectorcreatemulti\")}}\n                <SelectOrCreateMultiple\n                  @label={{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                  @sourceList={{this.clientRecord.knownEntities}}\n                  @outputList={{this.clientRecord.knownEntities}}\n                  @addNewText={{or this.question.addNewText \"Someone else\"}}\n                  @itemLabelFormat={{or this.question.itemLabelFormat \"firstName surname name\"}}\n                  @model={{mut (get this.model this.variableStorageName)}}\n                  @displayOnly={{this.displayOnly}}\n                  @editExistingItems={{true}}\n                  @required={{this.questionIsRequired}}\n                  @itemName={{or this.question.itemName \"item\"}}\n                  @itemNamePluralNoun={{this.question.itemNamePluralNoun}}\n                  @headerLabel={{this.headerLabelComputed}}\n                  @hideSelectSuggest={{this.question.hideSelect}}\n                  @filterType={{this.filterType}}\n                  @filterList={{this.filterList}}\n                  @notSureOption={{this.question.notSureOption}}\n                  @notSureOptionText={{this.question.notSureOptionText}}\n                  @notSureModel={{mut (get this.model (sum this.variableStorageName \"-notsure\"))}}\n                  @client={{this.model}}\n                  @allowPeople={{this.question.allowPeople}}\n                  @allowCorporations={{this.question.allowCorporations}}\n                  @editMode={{this.editMode}}\n                  @setAsPrimaryContact={{this.question.setAsPrimaryContact}}\n                  @allowDeceased={{this.question.allowDeceased}}\n                  @context={{this.context}}\n                  @questionID={{this.question.id}}\n                  @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                  @clientRecord={{this.clientRecord}}\n                  @practiceAreaSettings={{this.practiceAreaSettings}}\n                  @onChange={{action \"changed\"}}\n                  as |item editingExistingItem|\n                >\n                  {{#unless this.question.customContentFirst}}\n                    <SelectOrCreateSwitcherPresets\n                      @item={{item}}\n                      @editingExistingItem={{editingExistingItem}}\n                      @question={{this.question}}\n                      @context={{this.context}}\n                      @clientRecord={{this.clientRecord}}\n                      @highlightRequiredFields={{this.highlightRequiredFields}}\n                      @displayOnly={{this.displayOnly}}\n                      @adminMode={{this.adminMode}}\n                      @filterList={{this.filterList}}\n                      @filterType={{this.filterType}}\n                    />\n                  {{/unless}}\n                  {{#each this.question.content as |c|}}\n                    <SettifyInputSwitcher\n                      @question={{c}}\n                      @displayOnly={{this.displayOnly}}\n                      @context={{augment-hash this.context editingExistingItem=editingExistingItem}}\n                      @clientRecord={{this.clientRecord}}\n                      @practiceAreaSettings={{this.practiceAreaSettings}}\n                      @model={{item}}\n                      @filterListOverride={{c.filterList}}\n                      @filterTypeOverride={{c.filterType}}\n                      @adminMode={{this.adminMode}}\n                      @highlightRequiredFields={{this.highlightRequiredFields}}\n                    />\n                  {{/each}}\n                  {{#if this.question.customContentFirst}}\n                    <SelectOrCreateSwitcherPresets\n                      @item={{item}}\n                      @editingExistingItem={{editingExistingItem}}\n                      @question={{this.question}}\n                      @context={{this.context}}\n                      @clientRecord={{this.clientRecord}}\n                      @highlightRequiredFields={{this.highlightRequiredFields}}\n                      @displayOnly={{this.displayOnly}}\n                      @adminMode={{this.adminMode}}\n                      @filterList={{this.filterList}}\n                      @filterType={{this.filterType}}\n                    />\n                  {{/if}}\n                </SelectOrCreateMultiple>\n              {{else if (eq this.question.type \"selectorcreatesingle\")}}\n                <SelectOrCreateSingular\n                  @label={{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                  @sourceList={{this.clientRecord.knownEntities}}\n                  @outputList={{this.clientRecord.knownEntities}}\n                  @addNewText={{or this.question.addNewText \"Someone else\"}}\n                  @itemLabelFormat={{or this.question.itemLabelFormat \"firstName surname name\"}}\n                  @model={{mut (get this.model this.variableStorageName)}}\n                  @displayOnly={{this.displayOnly}}\n                  @editExistingItems={{true}}\n                  @required={{this.questionIsRequired}}\n                  @itemName={{or this.question.itemName \"item\"}}\n                  @itemNamePluralNoun={{this.question.itemNamePluralNoun}}\n                  @headerLabel={{this.headerLabelComputed}}\n                  @hideSelectSuggest={{this.question.hideSelect}}\n                  @filterType={{this.filterType}}\n                  @filterList={{this.filterList}}\n                  @notSureOption={{this.question.notSureOption}}\n                  @notSureOptionText={{this.question.notSureOptionText}}\n                  @notSureModel={{mut (get this.model (sum this.variableStorageName \"-notsure\"))}}\n                  @client={{this.model}}\n                  @allowPeople={{this.question.allowPeople}}\n                  @allowCorporations={{this.question.allowCorporations}}\n                  @editMode={{this.editMode}}\n                  @setAsPrimaryContact={{this.question.setAsPrimaryContact}}\n                  @allowDeceased={{this.question.allowDeceased}}\n                  @context={{this.context}}\n                  @questionID={{this.question.id}}\n                  @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                  @clientRecord={{this.clientRecord}}\n                  @practiceAreaSettings={{this.practiceAreaSettings}}\n                  @onChange={{action \"changed\"}}\n                  as |item editingExistingItem|\n                >\n                  {{#unless this.question.customContentFirst}}\n                    <SelectOrCreateSwitcherPresets\n                      @item={{item}}\n                      @editingExistingItem={{editingExistingItem}}\n                      @question={{this.question}}\n                      @context={{this.context}}\n                      @clientRecord={{this.clientRecord}}\n                      @highlightRequiredFields={{this.highlightRequiredFields}}\n                      @displayOnly={{this.displayOnly}}\n                      @adminMode={{this.adminMode}}\n                      @filterList={{this.filterList}}\n                      @filterType={{this.filterType}}\n                    />\n                  {{/unless}}\n                  {{#each this.question.content as |c|}}\n                    <SettifyInputSwitcher\n                      @question={{c}}\n                      @displayOnly={{this.displayOnly}}\n                      @context={{augment-hash this.context editingExistingItem=editingExistingItem}}\n                      @clientRecord={{this.clientRecord}}\n                      @practiceAreaSettings={{this.practiceAreaSettings}}\n                      @model={{item}}\n                      @filterListOverride={{c.filterList}}\n                      @filterTypeOverride={{c.filterType}}\n                      @adminMode={{this.adminMode}}\n                      @highlightRequiredFields={{this.highlightRequiredFields}}\n                    />\n                  {{/each}}\n                  {{#if this.question.customContentFirst}}\n                    <SelectOrCreateSwitcherPresets\n                      @item={{item}}\n                      @editingExistingItem={{editingExistingItem}}\n                      @question={{this.question}}\n                      @context={{this.context}}\n                      @clientRecord={{this.clientRecord}}\n                      @highlightRequiredFields={{this.highlightRequiredFields}}\n                      @displayOnly={{this.displayOnly}}\n                      @adminMode={{this.adminMode}}\n                      @filterList={{this.filterList}}\n                      @filterType={{this.filterType}}\n                    />\n                  {{/if}}\n                </SelectOrCreateSingular>\n              {{/if}}\n            {{else if (or (eq this.question.type \"select\") (eq this.question.type \"title\"))}}\n              <MonitorChanges @model={{get this.model this.variableStorageName}} @onChange={{action \"changed\" (get this.model this.variableStorageName)}} />\n              <SettifySelect\n                @model={{mut (get this.model this.variableStorageName)}}\n                @displayOnly={{this.displayOnly}}\n                @content={{if (eq this.question.type \"title\") this.titleSelectOptions this.selectOptions}}\n                @labelPath={{or this.question.labelPath \"title\"}}\n                @valuePath={{or this.question.valuePath \"id\"}}\n                @label={{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @headerLabel={{this.headerLabelComputed}}\n                @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @clientRecord={{this.clientRecord}}\n                @prompt={{or (parse-text this.question.prompt model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context) \"--select--\"}}\n                @required={{this.questionIsRequired}}\n                @highlightRequiredFields={{this.highlightRequiredFields}}\n                @context={{this.context}}\n              />\n              {{#each this.question.options as |option|}}\n                <DocumentsRequiredFeedback\n                  @documents={{option.documentsRequired}}\n                  @showDocument={{eq (get this.model this.variableStorageName) option.id}}\n                  @model={{this.model}}\n                  @notSureButton={{this.notSureButton}}\n                  @displayOnly={{this.displayOnly}}\n                  @displayInline={{true}}\n                  @objectID={{this.model.id}}\n                  @context={{this.context}}\n                  @clientID={{this.clientRecord.clientID}}\n                  @questionID={{this.variableStorageName}}\n                  @client={{this.clientRecord}}\n                  @adminMode={{this.adminMode}}\n                />\n                {{#unless this.displayOnly}}\n                  <LiquidIf @predicate={{and option.feedback (eq (get this.model this.variableStorageName) option.id)}}>\n                    <p class=\"feedback-paragraph\">\n                      {{parse-text option.feedback model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                    </p>\n                  </LiquidIf>\n                {{/unless}}\n                <LiquidIf @predicate={{and this.adminMode option.feedbackToLawyer (eq (get this.model this.variableStorageName) option.id)}}>\n                  <p class=\"lawyer-feedback-paragraph\">\n                    <i class=\"fal fa-lightbulb-on tight\" />\n                    {{parse-text option.feedbackToLawyer model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                  </p>\n                </LiquidIf>\n              {{/each}}\n            {{else if (eq this.question.type \"grid\")}}\n              <SettifyGridInput\n                @model={{mut (get this.model this.variableStorageName)}}\n                @sourceList={{this.question.sourceListIDs}}\n                @displayOnly={{this.displayOnly}}\n                @columns={{this.question.columns}}\n                @showColumnHeaders={{this.question.showColumnHeaders}}\n                @startingRows={{this.question.startingRows}}\n                @hideAddRowButton={{this.question.hideAddRowButton}}\n                @itemName={{this.question.itemName}}\n                @context={{this.context}}\n                @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @label={{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @clientRecord={{this.clientRecord}}\n                @onChange={{action \"changed\"}}\n                @stylingClasses={{this.stylingClasses}}\n              />\n            {{else if (eq this.question.type \"checkboxlist\")}}\n              <CheckBoxList\n                @sourceList={{or this.question.sourceListIDs this.clientRecord.knownEntities}}\n                @displayOnly={{this.displayOnly}}\n                @content={{this.question.content}}\n                @checkboxProperty={{this.question.id}}\n                @required={{this.questionIsRequired}}\n                @context={{this.context}}\n                @itemLabelFormat={{or this.question.itemLabelFormat \"firstName surname name\"}}\n                @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @label={{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @clientRecord={{this.clientRecord}}\n                @onChange={{action \"changed\"}}\n              />\n            {{else if (eq this.question.type \"block\")}}\n              {{#each this.question.content as |c|}}\n                <SettifyInputSwitcher\n                  @question={{c}}\n                  @context={{this.context}}\n                  @clientRecord={{this.clientRecord}}\n                  @practiceAreaSettings={{this.practiceAreaSettings}}\n                  @model={{this.model}}\n                  @displayOnly={{this.displayOnly}}\n                  @adminMode={{this.adminMode}}\n                  @highlightRequiredFields={{this.highlightRequiredFields}}\n                />\n              {{/each}}\n            {{else if (eq this.question.type \"docupload\")}}\n              {{!-- Empty block here, because it is handled by block below: line beginning with {{#if question.documentsRequired}}--}}\n            {{else if (eq this.question.type \"hiddenCalculatedField\")}}\n              <SettifyHiddenCalculatedField\n                @content={{this.question.content}}\n                @clientRecord={{this.clientRecord}}\n                @localAnswers={{this.model}}\n                @model={{mut (get this.model this.variableStorageName)}}\n                @context={{this.context}}\n                @touch={{this.clientRecord.touch}}\n                @onChange={{action \"changed\"}}\n              />\n            {{else if (eq this.question.type \"guessclient\")}}\n              <SettifyGuessClientInput\n                @highlightRequiredFields={{this.highlightRequiredFields}}\n                @content={{this.question.content}}\n                @clientRecord={{this.clientRecord}}\n                @model={{this.model}}\n                @context={{this.context}}\n                @displayOnly={{this.displayOnly}}\n              />\n            {{else if (eq this.question.type \"summaryTable\")}}\n              <SettifySummaryTable\n                @question={{this.question}}\n                @clientRecord={{this.clientRecord}}\n                @context={{this.context}}\n                @label={{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n              />\n            {{else if (eq this.question.type \"documentsRequiredList\")}}\n              <DocumentsRequiredList\n                @client={{this.clientRecord}}\n                @class={{this.stylingClasses}}\n                @label={{this.labelToDisplay}}\n                @induction={{this.context.induction}}\n                @displayOnly={{true}}\n                @adminMode={{this.adminMode}}\n                @helpText={{parse-text this.question.helpText model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @filterList={{this.question.filterList}}\n                @filterType={{this.question.filterType}}\n              />\n            {{else if (eq this.question.type \"divider\")}}\n              <hr class=\"input-divider {{if this.question.whitespace 'whitespace'}}{{if this.question.border 'border'}}\" />\n            {{else if (eq this.question.type \"unitsPer\")}}\n              <UnitsPer\n                @label={{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n                @unitsPer={{mut (get this.model (sum this.variableStorageName \"unitsPer\"))}}\n                @timePeriod={{mut (get this.model (sum this.variableStorageName \"timePeriod\"))}}\n                @displayOnly={{this.displayOnly}}\n                @onChange={{action \"changed\"}}\n                @unitType={{this.question.unitType}}\n                @timePeriodOptions={{this.question.timePeriodOptions}}\n              />\n            {{else}}\n              {{parse-text this.labelToDisplay model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n              <small><code>(a {{this.question.type}} input)</code></small>\n            {{/if}}\n            {{yield}}\n  \n            {{#if this.question.documentsRequired}}\n              <DocumentsRequiredFeedback\n                @documents={{this.question.documentsRequired}}\n                @questionType={{this.question.type}}\n                @showDocument={{true}}\n                @model={{this.model}}\n                @displayOnly={{this.displayOnly}}\n                @notSureButton={{this.notSureButton}}\n                @objectID={{this.model.id}}\n                @context={{this.context}}\n                @clientID={{this.clientRecord.clientID}}\n                @questionID={{this.variableStorageName}}\n                @client={{this.clientRecord}}\n                @displayInline={{true}}\n                @labelToDisplay={{this.labelToDisplay}}\n                @adminMode={{this.adminMode}}\n              />\n            {{/if}}\n  \n            {{#if (and this.adminMode this.question.feedbackToLawyer (get this.model this.variableStorageName))}}\n              <p class=\"lawyer-feedback-paragraph\">\n                <i class=\"fal fa-lightbulb-on tight\" />\n                {{parse-text this.question.feedbackToLawyer model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n              </p>\n            {{else if (and this.adminMode this.question.feedbackToLawyerIfNotProvided (not (get this.model this.variableStorageName)))}}\n              <p class=\"lawyer-feedback-paragraph\">\n                <i class=\"fal fa-lightbulb-on tight\" />\n                {{parse-text this.question.feedbackToLawyerIfNotProvided model=this.model touch=this.clientRecord.touch clientRecord=this.clientRecord context=this.context}}\n              </p>\n            {{/if}}\n            {{#if this.showAnswerToggles}}\n              <Admin::SummaryEditorButtons\n                @question={{this.question}}\n                @context={{this.context}}\n                @toggleAnswer={{action \"toggleAnswer\"}}\n                @toggleSummaryEditor={{action \"toggleSummaryEditor\"}}\n              />\n            {{/if}}\n          </div>\n          <Admin::SummaryEditor\n            @question={{this.question}}\n            @showAnswerToggles={{this.showAnswerToggles}}\n            @removeTitle={{action \"removeTitle\"}}\n            @toggleIconType={{action \"toggleIconType\"}}\n          />\n        </LiquidIf>\n      </div>\n    {{/if}}\n  {{/if}}\n  */\n  {\n    \"id\": \"UnWmSasm\",\n    \"block\": \"[[[41,[30,0,[\\\"blueprintMode\\\"]],[[[1,\\\"  \\\"],[10,0],[15,0,[29,[\\\"input-switcher \\\",[30,0,[\\\"inputStylingClasses\\\"]]]]],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"paragraph\\\"],null],[[[41,[28,[37,3],[[30,0,[\\\"question\\\",\\\"displayIf\\\"]]],[[\\\"excludeEmptyObjects\\\"],[true]]],[[[1,\\\"        \\\"],[10,1],[14,0,\\\"conditional\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-code-branch tight\\\"],[12],[13],[1,\\\"Conditional text:\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[10,2],[15,0,[29,[\\\"settify-input-paragraph \\\",[30,0,[\\\"stylingClasses\\\"]]]]],[12],[10,\\\"b\\\"],[12],[1,[28,[35,8],[[30,0,[\\\"question\\\",\\\"content\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"blueprintMode\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],true]]]],[13],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"heading\\\"],null],[[[41,[28,[37,3],[[30,0,[\\\"question\\\",\\\"displayIf\\\"]]],[[\\\"excludeEmptyObjects\\\"],[true]]],[[[1,\\\"        \\\"],[10,1],[14,0,\\\"conditional\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-code-branch tight\\\"],[12],[13],[1,\\\"Conditional text:\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[10,0],[14,0,\\\"chapter-animation-container\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"h2\\\"],[12],[1,[28,[35,8],[[30,0,[\\\"question\\\",\\\"content\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"blueprintMode\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],true]]]],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"image\\\"],null],[[[1,\\\"      \\\"],[10,0],[15,0,[30,0,[\\\"stylingClasses\\\"]]],[12],[1,\\\"\\\\n        \\\"],[10,1],[12],[1,[28,[35,8],[[30,0,[\\\"question\\\",\\\"content\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"requestanappointment\\\"],null],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"chapter-animation-container\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"h2\\\"],[12],[1,\\\"A button to finish the induction and book an appointment\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"link\\\"],null],[[[41,[28,[37,3],[[30,0,[\\\"question\\\",\\\"displayIf\\\"]]],[[\\\"excludeEmptyObjects\\\"],[true]]],[[[1,\\\"        \\\"],[10,1],[14,0,\\\"conditional\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-code-branch tight\\\"],[12],[13],[1,\\\"Only shown if relevant:\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[10,2],[15,0,[29,[\\\"settify-input-paragraph \\\",[30,0,[\\\"stylingClasses\\\"]]]]],[12],[1,\\\"\\\\n        \\\"],[10,\\\"b\\\"],[12],[1,[28,[35,8],[[30,0,[\\\"question\\\",\\\"content\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"blueprintMode\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],true]]]],[13],[1,\\\"\\\\n        (link to\\\\n        \\\"],[1,[30,0,[\\\"question\\\",\\\"link\\\"]]],[1,\\\")\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"guessclient\\\"],null],[[[41,[28,[37,3],[[30,0,[\\\"question\\\",\\\"displayIf\\\"]]],[[\\\"excludeEmptyObjects\\\"],[true]]],[[[1,\\\"        \\\"],[10,1],[14,0,\\\"conditional\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-code-branch tight\\\"],[12],[13],[1,\\\"Only shown if relevant:\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[10,2],[12],[1,\\\"A smart input that guesses the client in the family tree and asks about:\\\"],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[8,[39,12],null,[[\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@blueprintMode\\\"],[[30,1],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"item\\\"]],[30,0,[\\\"displayOnly\\\"]],true]],null],[1,\\\"\\\\n\\\"]],[1]],null]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"documentsRequiredList\\\"],null],[[[41,[28,[37,3],[[30,0,[\\\"question\\\",\\\"displayIf\\\"]]],[[\\\"excludeEmptyObjects\\\"],[true]]],[[[1,\\\"        \\\"],[10,1],[14,0,\\\"conditional\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-code-branch tight\\\"],[12],[13],[1,\\\"Only shown if relevant:\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[10,2],[15,0,[29,[\\\"settify-input-paragraph \\\",[30,0,[\\\"stylingClasses\\\"]]]]],[12],[1,\\\"\\\\n        \\\"],[10,\\\"b\\\"],[12],[1,[28,[35,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"blueprintMode\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],true]]]],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"question\\\",\\\"filterType\\\"]],[[[1,\\\"          \\\"],[1,[30,0,[\\\"question\\\",\\\"filterType\\\"]]],[1,\\\":\\\\n          \\\"],[1,[30,0,[\\\"question\\\",\\\"filterList\\\"]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,3],[[30,0,[\\\"question\\\",\\\"displayIf\\\"]]],[[\\\"excludeEmptyObjects\\\"],[true]]],[[[1,\\\"        \\\"],[10,1],[14,0,\\\"conditional\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-code-branch tight\\\"],[12],[13],[1,\\\"Only asked if relevant:\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[10,\\\"b\\\"],[12],[1,[28,[35,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"blueprintMode\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],true]]]],[13],[1,\\\"\\\\n    \\\"]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]],[1,\\\"    \\\"],[1,[30,0,[\\\"questionTypeString\\\"]]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"question\\\",\\\"showConfidenceSlider\\\"]],[[[1,\\\"      \\\"],[10,2],[14,0,\\\"feedback-paragraph\\\"],[12],[1,\\\"With a confidence-slider\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"question\\\",\\\"helpText\\\"]],[[[1,\\\"      \\\"],[10,2],[14,0,\\\"feedback-paragraph\\\"],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"helptext\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-question tight\\\"],[12],[13],[1,\\\"Additional help:\\\"],[13],[1,\\\"\\\\n        \\\"],[1,[28,[35,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"blueprintMode\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],true]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"question\\\",\\\"documentsRequired\\\"]],[[[1,\\\"      \\\"],[8,[39,13],null,[[\\\"@questionType\\\",\\\"@documents\\\",\\\"@blueprintMode\\\",\\\"@notSureButton\\\",\\\"@labelToDisplay\\\",\\\"@adminMode\\\"],[[30,0,[\\\"question\\\",\\\"type\\\"]],[30,0,[\\\"question\\\",\\\"documentsRequired\\\"]],true,[30,0,[\\\"notSureButton\\\"]],[30,0,[\\\"labelToDisplay\\\"]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"question\\\",\\\"options\\\",\\\"length\\\"]],[[[1,\\\"      \\\"],[10,\\\"ul\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"options\\\"]]],null]],null],null,[[[41,[51,[30,2,[\\\"deleted\\\"]]],[[[1,\\\"            \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n              \\\"],[1,[28,[35,8],[[30,2,[\\\"title\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"blueprintMode\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],true]]]],[1,\\\"\\\\n\\\"],[41,[28,[37,3],[[30,2,[\\\"displayIf\\\"]]],[[\\\"excludeEmptyObjects\\\"],[true]]],[[[1,\\\"                (only shown if relevant)\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[8,[39,13],null,[[\\\"@documents\\\",\\\"@blueprintMode\\\",\\\"@notSureButton\\\",\\\"@adminMode\\\"],[[30,2,[\\\"documentsRequired\\\"]],true,[30,0,[\\\"notSureButton\\\"]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n\\\"],[41,[30,2,[\\\"helpText\\\"]],[[[1,\\\"                \\\"],[10,2],[14,0,\\\"feedback-paragraph\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,1],[14,0,\\\"helptext\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-question tight\\\"],[12],[13],[1,\\\"Additional help if desired:\\\"],[13],[1,\\\"\\\\n                  \\\"],[1,[28,[35,8],[[30,2,[\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"blueprintMode\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],true]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,2,[\\\"feedback\\\"]],[[[1,\\\"                \\\"],[10,2],[14,0,\\\"feedback-paragraph\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,1],[14,0,\\\"helptext\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-comments tight\\\"],[12],[13],[1,\\\"If selected, display:\\\"],[13],[1,\\\"\\\\n                  \\\"],[1,[28,[35,8],[[30,2,[\\\"feedback\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"blueprintMode\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],true]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,2,[\\\"feedbackToLawyer\\\"]],[[[1,\\\"                \\\"],[10,2],[14,0,\\\"feedback-paragraph\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,1],[14,0,\\\"helptext\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-lightbulb-on tight\\\"],[12],[13],[1,\\\"If selected, advise lawyer:\\\"],[13],[1,\\\"\\\\n                  \\\"],[1,[28,[35,8],[[30,2,[\\\"feedbackToLawyer\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"blueprintMode\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],true]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[2]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"question\\\",\\\"onYes\\\",\\\"feedback\\\"]],[[[1,\\\"      \\\"],[10,2],[14,0,\\\"feedback-paragraph\\\"],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"helptext\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-comments tight\\\"],[12],[13],[1,\\\"If yes, display:\\\"],[13],[1,\\\"\\\\n        \\\"],[1,[28,[35,8],[[30,0,[\\\"question\\\",\\\"onYes\\\",\\\"feedback\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"blueprintMode\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],true]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"question\\\",\\\"onYes\\\",\\\"feedbackToLawyer\\\"]],[[[1,\\\"      \\\"],[10,2],[14,0,\\\"feedback-paragraph\\\"],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"helptext\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-lightbulb-on tight\\\"],[12],[13],[1,\\\"If yes, advise lawyer:\\\"],[13],[1,\\\"\\\\n        \\\"],[1,[28,[35,8],[[30,0,[\\\"question\\\",\\\"onYes\\\",\\\"feedbackToLawyer\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"blueprintMode\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],true]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[8,[39,13],null,[[\\\"@documents\\\",\\\"@blueprintMode\\\",\\\"@selectedWording\\\",\\\"@notSureButton\\\",\\\"@adminMode\\\"],[[30,0,[\\\"question\\\",\\\"onYes\\\",\\\"documentsRequired\\\"]],true,\\\"yes\\\",[30,0,[\\\"notSureButton\\\"]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"question\\\",\\\"onNo\\\",\\\"feedback\\\"]],[[[1,\\\"      \\\"],[10,2],[14,0,\\\"feedback-paragraph\\\"],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"helptext\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-comments tight\\\"],[12],[13],[1,\\\"If no, display:\\\"],[13],[1,\\\"\\\\n        \\\"],[1,[28,[35,8],[[30,0,[\\\"question\\\",\\\"onNo\\\",\\\"feedback\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"blueprintMode\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],true]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"question\\\",\\\"onNo\\\",\\\"feedbackToLawyer\\\"]],[[[1,\\\"      \\\"],[10,2],[14,0,\\\"feedback-paragraph\\\"],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"helptext\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-lightbulb-on tight\\\"],[12],[13],[1,\\\"If no, advise lawyer:\\\"],[13],[1,\\\"\\\\n        \\\"],[1,[28,[35,8],[[30,0,[\\\"question\\\",\\\"onNo\\\",\\\"feedbackToLawyer\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"blueprintMode\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],true]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[8,[39,13],null,[[\\\"@documents\\\",\\\"@blueprintMode\\\",\\\"@selectedWording\\\",\\\"@notSureButton\\\",\\\"@adminMode\\\"],[[30,0,[\\\"question\\\",\\\"onNo\\\",\\\"documentsRequired\\\"]],true,\\\"no\\\",[30,0,[\\\"notSureButton\\\"]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"question\\\",\\\"onNotSure\\\",\\\"feedback\\\"]],[[[1,\\\"      \\\"],[10,2],[14,0,\\\"feedback-paragraph\\\"],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"helptext\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-comments tight\\\"],[12],[13],[1,\\\"If not sure, display:\\\"],[13],[1,\\\"\\\\n        \\\"],[1,[28,[35,8],[[30,0,[\\\"question\\\",\\\"onNotSure\\\",\\\"feedback\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"blueprintMode\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],true]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"question\\\",\\\"onNotSure\\\",\\\"feedbackToLawyer\\\"]],[[[1,\\\"      \\\"],[10,2],[14,0,\\\"feedback-paragraph\\\"],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"helptext\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-lightbulb-on tight\\\"],[12],[13],[1,\\\"If not sure, advise lawyer:\\\"],[13],[1,\\\"\\\\n        \\\"],[1,[28,[35,8],[[30,0,[\\\"question\\\",\\\"onNotSure\\\",\\\"feedbackToLawyer\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"blueprintMode\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],true]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[8,[39,13],null,[[\\\"@documents\\\",\\\"@blueprintMode\\\",\\\"@selectedWording\\\",\\\"@notSureButton\\\",\\\"@adminMode\\\"],[[30,0,[\\\"question\\\",\\\"onNotSure\\\",\\\"documentsRequired\\\"]],true,\\\"not sure\\\",[30,0,[\\\"notSureButton\\\"]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"selectorcreate\\\"],null],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"askForValues\\\"],[12],[1,\\\"\\\\n        Ask for:\\\\n\\\"],[41,[30,0,[\\\"question\\\",\\\"allowPeople\\\"]],[[[1,\\\"          First name; Surname;\\\\n\\\"]],[]],null],[41,[30,0,[\\\"question\\\",\\\"allowCorporations\\\"]],[[[1,\\\"          Company name; ACN;\\\\n\\\"]],[]],null],[42,[28,[37,17],[[30,0,[\\\"question\\\",\\\"askFor\\\"]]],null],null,[[[41,[30,3],[[[1,\\\"            \\\"],[1,[28,[35,18],[[30,4]],null]],[1,\\\";\\\\n\\\"]],[]],null]],[3,4]],null],[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[41,[51,[30,5,[\\\"deleted\\\"]]],[[[1,\\\"            \\\"],[1,[28,[35,8],[[28,[37,18],[[28,[37,19],[[30,5,[\\\"shortTitle\\\"]],[30,5,[\\\"title\\\"]]],null]],null]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"blueprintMode\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],true]]]],[1,\\\";\\\\n\\\"]],[]],null]],[5]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"question\\\",\\\"columns\\\",\\\"length\\\"]],[[[1,\\\"      \\\"],[8,[39,20],null,[[\\\"@blueprintMode\\\",\\\"@displayOnly\\\",\\\"@columns\\\",\\\"@context\\\",\\\"@showColumnHeaders\\\",\\\"@autoTotal\\\",\\\"@startingRows\\\",\\\"@clientRecord\\\"],[true,true,[30,0,[\\\"question\\\",\\\"columns\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"question\\\",\\\"showColumnHeaders\\\"]],[30,0,[\\\"question\\\",\\\"autoTotal\\\"]],[30,0,[\\\"question\\\",\\\"startingRows\\\"]],[30,0,[\\\"clientRecord\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,19],[[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"block\\\"],null],[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"list\\\"],null]],null],[[[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[41,[51,[30,6,[\\\"deleted\\\"]]],[[[1,\\\"          \\\"],[10,2],[14,0,\\\"content\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,12],null,[[\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@blueprintMode\\\",\\\"@adminMode\\\"],[[30,6],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"model\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"blueprintMode\\\"]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[6]],null]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"documentsOnly\\\"]],[[[41,[30,0,[\\\"shouldDisplay\\\"]],[[[41,[30,0,[\\\"question\\\",\\\"documentsRequired\\\"]],[[[1,\\\"      \\\"],[8,[39,13],null,[[\\\"@documents\\\",\\\"@showDocument\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@notSureButton\\\",\\\"@displayList\\\",\\\"@context\\\",\\\"@clientID\\\",\\\"@questionID\\\",\\\"@client\\\",\\\"@objectID\\\",\\\"@adminMode\\\"],[[30,0,[\\\"question\\\",\\\"documentsRequired\\\"]],true,[30,0,[\\\"model\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"notSureButton\\\"]],true,[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"clientID\\\"]],[30,0,[\\\"variableStorageName\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"model\\\",\\\"id\\\"]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"radio\\\"],null],[[[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"options\\\"]]],null]],null],null,[[[41,[28,[37,21],null,[[\\\"question\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"touch\\\"],[[30,7],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]]]]],[[[1,\\\"          \\\"],[8,[39,13],null,[[\\\"@documents\\\",\\\"@showDocument\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@notSureButton\\\",\\\"@displayList\\\",\\\"@context\\\",\\\"@clientID\\\",\\\"@questionID\\\",\\\"@client\\\",\\\"@adminMode\\\"],[[30,7,[\\\"documentsRequired\\\"]],[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],[28,[37,19],[[30,7,[\\\"id\\\"]],[30,7,[\\\"title\\\"]]],null]],null],[30,0,[\\\"model\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"notSureButton\\\"]],true,[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"clientID\\\"]],[30,0,[\\\"variableStorageName\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[7]],null]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"yesno\\\"],null],[[[1,\\\"      \\\"],[8,[39,13],null,[[\\\"@documents\\\",\\\"@showDocument\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@notSureButton\\\",\\\"@displayList\\\",\\\"@objectID\\\",\\\"@context\\\",\\\"@clientID\\\",\\\"@questionID\\\",\\\"@client\\\",\\\"@adminMode\\\"],[[30,0,[\\\"question\\\",\\\"onYes\\\",\\\"documentsRequired\\\"]],[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],\\\"yes\\\"],null],[30,0,[\\\"model\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"notSureButton\\\"]],true,[30,0,[\\\"model\\\",\\\"id\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"clientID\\\"]],[30,0,[\\\"variableStorageName\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n      \\\"],[8,[39,13],null,[[\\\"@documents\\\",\\\"@showDocument\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@notSureButton\\\",\\\"@displayList\\\",\\\"@objectID\\\",\\\"@context\\\",\\\"@clientID\\\",\\\"@questionID\\\",\\\"@client\\\",\\\"@adminMode\\\"],[[30,0,[\\\"question\\\",\\\"onNo\\\",\\\"documentsRequired\\\"]],[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],\\\"no\\\"],null],[30,0,[\\\"model\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"notSureButton\\\"]],true,[30,0,[\\\"model\\\",\\\"id\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"clientID\\\"]],[30,0,[\\\"variableStorageName\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n      \\\"],[8,[39,13],null,[[\\\"@documents\\\",\\\"@showDocument\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@notSureButton\\\",\\\"@displayList\\\",\\\"@objectID\\\",\\\"@context\\\",\\\"@clientID\\\",\\\"@questionID\\\",\\\"@client\\\",\\\"@adminMode\\\"],[[30,0,[\\\"question\\\",\\\"onNotSure\\\",\\\"documentsRequired\\\"]],[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],\\\"notsure\\\"],null],[30,0,[\\\"model\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"notSureButton\\\"]],true,[30,0,[\\\"model\\\",\\\"id\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"clientID\\\"]],[30,0,[\\\"variableStorageName\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"checkbox\\\"],null],[[[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"options\\\"]]],null]],null],null,[[[41,[28,[37,21],null,[[\\\"question\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"touch\\\"],[[30,8],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]]]]],[[[1,\\\"          \\\"],[8,[39,13],null,[[\\\"@documents\\\",\\\"@showDocument\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@notSureButton\\\",\\\"@displayList\\\",\\\"@objectID\\\",\\\"@context\\\",\\\"@clientID\\\",\\\"@questionID\\\",\\\"@client\\\",\\\"@adminMode\\\"],[[30,8,[\\\"documentsRequired\\\"]],[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[28,[37,19],[[30,8,[\\\"id\\\"]],[30,8,[\\\"title\\\"]]],null]],null],true],null],[30,0,[\\\"model\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"notSureButton\\\"]],true,[30,0,[\\\"model\\\",\\\"id\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"clientID\\\"]],[30,0,[\\\"variableStorageName\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[8]],null]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"selectorcreate\\\"],null],[[[41,[30,0,[\\\"question\\\",\\\"multipleSelections\\\"]],[[[42,[28,[37,11],[[28,[37,11],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null]],null],null,[[[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[8,[39,12],null,[[\\\"@question\\\",\\\"@model\\\",\\\"@clientRecord\\\",\\\"@context\\\",\\\"@displayOnly\\\",\\\"@documentsOnly\\\",\\\"@notSureButton\\\",\\\"@adminMode\\\"],[[30,10],[28,[37,23],null,[[\\\"client\\\",\\\"induction\\\",\\\"answersLocation\\\",\\\"repeatToken\\\",\\\"filterByID\\\"],[[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\",\\\"induction\\\"]],[28,[37,24],[[30,0,[\\\"context\\\",\\\"chapter\\\"]],\\\".\\\",[30,0,[\\\"context\\\",\\\"page\\\"]],\\\".\\\",[30,0,[\\\"question\\\",\\\"id\\\"]]],null],[30,0,[\\\"context\\\",\\\"repeat\\\"]],[30,9]]]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"displayOnly\\\"]],true,[30,0,[\\\"notSureButton\\\"]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n\\\"]],[10]],null]],[9]],null]],[]],[[[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[8,[39,12],null,[[\\\"@question\\\",\\\"@model\\\",\\\"@clientRecord\\\",\\\"@context\\\",\\\"@displayOnly\\\",\\\"@documentsOnly\\\",\\\"@notSureButton\\\",\\\"@adminMode\\\"],[[30,11],[28,[37,23],null,[[\\\"client\\\",\\\"induction\\\",\\\"answersLocation\\\",\\\"repeatToken\\\",\\\"filterByID\\\"],[[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\",\\\"induction\\\"]],[28,[37,24],[[30,0,[\\\"context\\\",\\\"chapter\\\"]],\\\".\\\",[30,0,[\\\"context\\\",\\\"page\\\"]],\\\".\\\",[30,0,[\\\"question\\\",\\\"id\\\"]]],null],[30,0,[\\\"context\\\",\\\"repeat\\\"]],[30,0,[\\\"model\\\"]]]]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"displayOnly\\\"]],true,[30,0,[\\\"notSureButton\\\"]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n\\\"]],[11]],null]],[]]]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"list\\\"],null],[[[42,[28,[37,11],[[28,[37,11],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null]],null],null,[[[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[8,[39,12],null,[[\\\"@question\\\",\\\"@model\\\",\\\"@adminMode\\\",\\\"@clientRecord\\\",\\\"@context\\\",\\\"@displayOnly\\\",\\\"@documentsOnly\\\",\\\"@notSureButton\\\"],[[30,13],[30,12],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"displayOnly\\\"]],true,[30,0,[\\\"notSureButton\\\"]]]],null],[1,\\\"\\\\n\\\"]],[13]],null]],[12]],null]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"checkboxlist\\\"],null],[[[1,\\\"      \\\"],[8,[39,25],null,[[\\\"@documentsOnly\\\",\\\"@sourceList\\\",\\\"@displayOnly\\\",\\\"@content\\\",\\\"@checkboxProperty\\\",\\\"@required\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@notSureButton\\\"],[true,[28,[37,19],[[30,0,[\\\"question\\\",\\\"sourceListIDs\\\"]],[30,0,[\\\"clientRecord\\\",\\\"knownEntities\\\"]]],null],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"question\\\",\\\"content\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]],[30,0,[\\\"questionIsRequired\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"notSureButton\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"immutableList\\\"],null],[[[1,\\\"      \\\"],[8,[39,26],null,[[\\\"@documentsOnly\\\",\\\"@sourceList\\\",\\\"@displayOnly\\\",\\\"@model\\\",\\\"@itemName\\\",\\\"@clientRecord\\\",\\\"@adminMode\\\",\\\"@context\\\"],[true,[28,[37,19],[[30,0,[\\\"question\\\",\\\"sourceListIDs\\\"]],[30,0,[\\\"clientRecord\\\",\\\"knownEntities\\\"]]],null],[30,0,[\\\"displayOnly\\\"]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[28,[37,19],[[30,0,[\\\"question\\\",\\\"itemName\\\"]],\\\"item\\\"],null],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"context\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[8,[39,12],null,[[\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\",\\\"@documentsOnly\\\",\\\"@notSureButton\\\"],[[30,16],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,14],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"adminMode\\\"]],true,[30,0,[\\\"notSureButton\\\"]]]],null],[1,\\\"\\\\n\\\"]],[16]],null],[1,\\\"      \\\"]],[14,15]]]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"question\\\",\\\"content\\\"]],[[[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[8,[39,12],null,[[\\\"@question\\\",\\\"@model\\\",\\\"@clientRecord\\\",\\\"@context\\\",\\\"@displayOnly\\\",\\\"@documentsOnly\\\",\\\"@notSureButton\\\"],[[30,17],[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"displayOnly\\\"]],true,[30,0,[\\\"notSureButton\\\"]]]],null],[1,\\\"\\\\n\\\"]],[17]],null],[1,\\\"    \\\"]],[]],null]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]],null]],[]],[[[41,[30,0,[\\\"shouldDisplay\\\"]],[[[1,\\\"    \\\"],[10,0],[15,5,[30,0,[\\\"yPosition\\\"]]],[15,\\\"data-question-id\\\",[29,[[30,0,[\\\"question\\\",\\\"id\\\"]]]]],[15,\\\"data-question-type\\\",[29,[[30,0,[\\\"question\\\",\\\"type\\\"]]]]],[12],[1,\\\"\\\\n      \\\"],[8,[39,28],null,[[\\\"@predicate\\\",\\\"@class\\\"],[[30,0,[\\\"shouldDisplay\\\"]],[52,[30,0,[\\\"shouldDisplay\\\"]],\\\"should-display-container\\\",\\\"should-display-hidden\\\"]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,0],[15,0,[29,[\\\"input-switcher \\\",[30,0,[\\\"inputStylingClasses\\\"]]]]],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"textline\\\"],null],[[[1,\\\"            \\\"],[8,[39,29],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@onChange\\\",\\\"@placeholder\\\",\\\"@required\\\",\\\"@displayPlaceholderInSummary\\\",\\\"@helpText\\\",\\\"@clientRecord\\\",\\\"@headerLabel\\\",\\\"@notSureOption\\\",\\\"@notSureOptionDoesNotHideComponent\\\",\\\"@notSureOptionText\\\",\\\"@notSureModel\\\"],[[28,[37,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"displayOnly\\\"]],[28,[37,30],[[30,0],\\\"changed\\\"],null],[28,[37,8],[[30,0,[\\\"question\\\",\\\"placeholder\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"questionIsRequired\\\"]],[30,0,[\\\"question\\\",\\\"displayPlaceholderInSummary\\\"]],[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"headerLabelComputed\\\"]],[30,0,[\\\"question\\\",\\\"notSureOption\\\"]],[30,0,[\\\"question\\\",\\\"notSureOptionDoesNotHideComponent\\\"]],[30,0,[\\\"question\\\",\\\"notSureOptionText\\\"]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"notSureVariableStorageName\\\"]]],null]],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"textarea\\\"],null],[[[1,\\\"            \\\"],[10,0],[15,0,[30,0,[\\\"stylingClasses\\\"]]],[12],[1,\\\"\\\\n              \\\"],[8,[39,31],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@onChange\\\",\\\"@noTopGap\\\",\\\"@placeholder\\\",\\\"@required\\\",\\\"@displayPlaceholderInSummary\\\",\\\"@helpText\\\",\\\"@clientRecord\\\",\\\"@headerLabel\\\",\\\"@notSureOption\\\",\\\"@notSureOptionDoesNotHideComponent\\\",\\\"@notSureOptionText\\\",\\\"@notSureModel\\\"],[[28,[37,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"displayOnly\\\"]],[28,[37,30],[[30,0],\\\"changed\\\"],null],true,[28,[37,8],[[30,0,[\\\"question\\\",\\\"placeholder\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"questionIsRequired\\\"]],[30,0,[\\\"question\\\",\\\"displayPlaceholderInSummary\\\"]],[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"headerLabelComputed\\\"]],[30,0,[\\\"question\\\",\\\"notSureOption\\\"]],[30,0,[\\\"question\\\",\\\"notSureOptionDoesNotHideComponent\\\"]],[30,0,[\\\"question\\\",\\\"notSureOptionText\\\"]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"notSureVariableStorageName\\\"]]],null]],null]]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"officeselect\\\"],null],[[[41,[28,[37,32],[[30,0,[\\\"firm\\\",\\\"addresses\\\",\\\"length\\\"]],1],null],[[[1,\\\"              \\\"],[10,0],[15,0,[30,0,[\\\"stylingClasses\\\"]]],[12],[1,\\\"\\\\n                \\\"],[1,[28,[35,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n\\\"],[41,[28,[37,33],[[30,0,[\\\"questionIsRequired\\\"]],[28,[37,34],[[30,0,[\\\"displayOnly\\\"]]],null]],null],[[[1,\\\"                  \\\"],[10,1],[15,0,[29,[\\\"required-field-marker \\\",[52,[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],\\\"required-field-provided\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                \\\"],[8,[39,35],null,[[\\\"@helpText\\\",\\\"@displayOnly\\\",\\\"@lawyerName\\\"],[[30,0,[\\\"question\\\",\\\"helpText\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"clientRecord\\\",\\\"helpTextIconLawyerName\\\"]]]],null],[1,\\\"\\\\n\\\\n\\\"],[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"firm\\\",\\\"addresses\\\"]]],null]],null],null,[[[1,\\\"                  \\\"],[8,[39,36],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\",\\\"@displayOnly\\\"],[[28,[37,37],[[30,18]],null],[28,[37,37],[[30,18]],null],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"displayOnly\\\"]]]],null],[1,\\\"\\\\n\\\"]],[18]],null],[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"options\\\"]]],null]],null],null,[[[1,\\\"                  \\\"],[8,[39,36],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\",\\\"@displayOnly\\\"],[[30,19,[\\\"title\\\"]],[30,19,[\\\"id\\\"]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"displayOnly\\\"]]]],null],[1,\\\"\\\\n\\\"]],[19]],null],[1,\\\"              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"address\\\"],null],[[[1,\\\"            \\\"],[8,[39,38],null,[[\\\"@postalAddress\\\",\\\"@displayOnly\\\",\\\"@label\\\",\\\"@onChange\\\",\\\"@required\\\",\\\"@detailed\\\",\\\"@addressOptions\\\",\\\"@helpText\\\",\\\"@clientRecord\\\",\\\"@hideSelect\\\",\\\"@filterType\\\",\\\"@filterList\\\",\\\"@notSureOption\\\",\\\"@notSureOptionDoesNotHideComponent\\\",\\\"@notSureOptionText\\\",\\\"@notSureModel\\\"],[[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"displayOnly\\\"]],[28,[37,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[28,[37,30],[[30,0],\\\"changed\\\"],null],[30,0,[\\\"questionIsRequired\\\"]],[30,0,[\\\"question\\\",\\\"detailed\\\"]],[30,0,[\\\"question\\\",\\\"addressOptions\\\"]],[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"question\\\",\\\"hideSelect\\\"]],[30,0,[\\\"filterType\\\"]],[30,0,[\\\"filterList\\\"]],[30,0,[\\\"question\\\",\\\"notSureOption\\\"]],[30,0,[\\\"question\\\",\\\"notSureOptionDoesNotHideComponent\\\"]],[30,0,[\\\"question\\\",\\\"notSureOptionText\\\"]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"notSureVariableStorageName\\\"]]],null]],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"firstname\\\"],null],[[[1,\\\"            \\\"],[8,[39,39],null,[[\\\"@label\\\",\\\"@gender\\\",\\\"@pronouns\\\",\\\"@name\\\",\\\"@displayOnly\\\",\\\"@onChange\\\",\\\"@placeholder\\\",\\\"@helpText\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@required\\\",\\\"@displayPlaceholderInSummary\\\",\\\"@headerLabel\\\"],[[28,[37,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[28,[37,24],[[30,0,[\\\"variableStorageName\\\"]],\\\"-gender\\\"],null]],null]],null],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[28,[37,24],[[30,0,[\\\"variableStorageName\\\"]],\\\"-pronouns\\\"],null]],null]],null],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"displayOnly\\\"]],[28,[37,30],[[30,0],\\\"changed\\\"],null],[28,[37,8],[[30,0,[\\\"question\\\",\\\"placeholder\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[30,0,[\\\"questionIsRequired\\\"]],[30,0,[\\\"question\\\",\\\"displayPlaceholderInSummary\\\"]],[30,0,[\\\"headerLabelComputed\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"date\\\"],null],[[[1,\\\"            \\\"],[8,[39,40],null,[[\\\"@label\\\",\\\"@day\\\",\\\"@month\\\",\\\"@year\\\",\\\"@displayOnly\\\",\\\"@onChange\\\",\\\"@required\\\",\\\"@requiredSpecificity\\\",\\\"@helpText\\\",\\\"@clientRecord\\\",\\\"@headerLabel\\\",\\\"@monthInputFirst\\\",\\\"@allowFuture\\\",\\\"@notSureOption\\\",\\\"@notSureOptionDoesNotHideComponent\\\",\\\"@notSureOptionText\\\",\\\"@notSureModel\\\"],[[28,[37,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[28,[37,24],[[30,0,[\\\"variableStorageName\\\"]],\\\"day\\\"],null]],null]],null],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[28,[37,24],[[30,0,[\\\"variableStorageName\\\"]],\\\"month\\\"],null]],null]],null],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[28,[37,24],[[30,0,[\\\"variableStorageName\\\"]],\\\"year\\\"],null]],null]],null],[30,0,[\\\"displayOnly\\\"]],[28,[37,30],[[30,0],\\\"changed\\\"],null],[30,0,[\\\"questionIsRequired\\\"]],[30,0,[\\\"question\\\",\\\"requiredSpecificity\\\"]],[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"headerLabelComputed\\\"]],[28,[37,2],[[30,0,[\\\"question\\\",\\\"dateLayout\\\"]],\\\"MM/DD/YYYY\\\"],null],[30,0,[\\\"question\\\",\\\"allowFuture\\\"]],[30,0,[\\\"question\\\",\\\"notSureOption\\\"]],[30,0,[\\\"question\\\",\\\"notSureOptionDoesNotHideComponent\\\"]],[30,0,[\\\"question\\\",\\\"notSureOptionText\\\"]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"notSureVariableStorageName\\\"]]],null]],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"number\\\"],null],[[[1,\\\"            \\\"],[8,[39,41],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@onChange\\\",\\\"@required\\\",\\\"@placeholder\\\",\\\"@helpText\\\",\\\"@clientRecord\\\",\\\"@headerLabel\\\",\\\"@min\\\",\\\"@max\\\",\\\"@suggestedMillionsThreshold\\\",\\\"@suggestedThousandsThreshold\\\",\\\"@nocommas\\\",\\\"@notSureOption\\\",\\\"@notSureOptionDoesNotHideComponent\\\",\\\"@notSureOptionText\\\",\\\"@notSureModel\\\"],[[28,[37,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"displayOnly\\\"]],[28,[37,30],[[30,0],\\\"changed\\\"],null],[30,0,[\\\"questionIsRequired\\\"]],[28,[37,8],[[30,0,[\\\"question\\\",\\\"placeholder\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"headerLabelComputed\\\"]],[30,0,[\\\"question\\\",\\\"min\\\"]],[30,0,[\\\"question\\\",\\\"max\\\"]],[30,0,[\\\"question\\\",\\\"suggestedMillionsThreshold\\\"]],[30,0,[\\\"question\\\",\\\"suggestedThousandsThreshold\\\"]],[30,0,[\\\"question\\\",\\\"noCommas\\\"]],[30,0,[\\\"question\\\",\\\"notSureOption\\\"]],[30,0,[\\\"question\\\",\\\"notSureOptionDoesNotHideComponent\\\"]],[30,0,[\\\"question\\\",\\\"notSureOptionText\\\"]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"notSureVariableStorageName\\\"]]],null]],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"money\\\"],null],[[[1,\\\"            \\\"],[8,[39,41],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@onChange\\\",\\\"@required\\\",\\\"@placeholder\\\",\\\"@helpText\\\",\\\"@clientRecord\\\",\\\"@money\\\",\\\"@prefix\\\",\\\"@preventFading\\\",\\\"@headerLabel\\\",\\\"@min\\\",\\\"@max\\\",\\\"@suggestedMillionsThreshold\\\",\\\"@suggestedThousandsThreshold\\\",\\\"@notSureOption\\\",\\\"@notSureOptionDoesNotHideComponent\\\",\\\"@notSureOptionText\\\",\\\"@notSureModel\\\"],[[28,[37,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"displayOnly\\\"]],[28,[37,30],[[30,0],\\\"changed\\\"],null],[30,0,[\\\"questionIsRequired\\\"]],[52,[30,0,[\\\"question\\\",\\\"placeholder\\\"]],[28,[37,8],[[30,0,[\\\"question\\\",\\\"placeholder\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],\\\"$\\\"],[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\"]],true,[30,0,[\\\"question\\\",\\\"prefix\\\"]],[30,0,[\\\"question\\\",\\\"preventFading\\\"]],[30,0,[\\\"headerLabelComputed\\\"]],[30,0,[\\\"question\\\",\\\"min\\\"]],[30,0,[\\\"question\\\",\\\"max\\\"]],[30,0,[\\\"question\\\",\\\"suggestedMillionsThreshold\\\"]],[30,0,[\\\"question\\\",\\\"suggestedThousandsThreshold\\\"]],[30,0,[\\\"question\\\",\\\"notSureOption\\\"]],[30,0,[\\\"question\\\",\\\"notSureOptionDoesNotHideComponent\\\"]],[30,0,[\\\"question\\\",\\\"notSureOptionText\\\"]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"notSureVariableStorageName\\\"]]],null]],null]]],null],[1,\\\"\\\\n            \\\"],[8,[39,28],null,[[\\\"@predicate\\\"],[[28,[37,33],[[30,0,[\\\"question\\\",\\\"showConfidenceSlider\\\"]],[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[39,42],null,[[\\\"@model\\\",\\\"@maxconfidence\\\",\\\"@displayOnly\\\"],[[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[28,[37,24],[[30,0,[\\\"variableStorageName\\\"]],\\\"-confidence\\\"],null]],null]],null],[30,0,[\\\"question\\\",\\\"confidenceSliderMaxValue\\\"]],[30,0,[\\\"displayOnly\\\"]]]],null],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"phone\\\"],null],[[[1,\\\"            \\\"],[8,[39,43],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@validation\\\",\\\"@displayOnly\\\",\\\"@onChange\\\",\\\"@placeholder\\\",\\\"@required\\\",\\\"@helpText\\\",\\\"@clientRecord\\\",\\\"@headerLabel\\\",\\\"@notSureOption\\\",\\\"@notSureOptionDoesNotHideComponent\\\",\\\"@notSureOptionText\\\",\\\"@notSureModel\\\"],[[28,[37,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[28,[37,24],[[30,0,[\\\"variableStorageName\\\"]],\\\"-valid\\\"],null]],null]],null],[30,0,[\\\"displayOnly\\\"]],[28,[37,30],[[30,0],\\\"changed\\\"],null],[28,[37,8],[[30,0,[\\\"question\\\",\\\"placeholder\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"questionIsRequired\\\"]],[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"headerLabelComputed\\\"]],[30,0,[\\\"question\\\",\\\"notSureOption\\\"]],[30,0,[\\\"question\\\",\\\"notSureOptionDoesNotHideComponent\\\"]],[30,0,[\\\"question\\\",\\\"notSureOptionText\\\"]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"notSureVariableStorageName\\\"]]],null]],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"email\\\"],null],[[[1,\\\"            \\\"],[8,[39,44],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@validation\\\",\\\"@displayOnly\\\",\\\"@onChange\\\",\\\"@placeholder\\\",\\\"@required\\\",\\\"@helpText\\\",\\\"@clientRecord\\\",\\\"@headerLabel\\\",\\\"@notSureOption\\\",\\\"@notSureOptionDoesNotHideComponent\\\",\\\"@notSureOptionText\\\",\\\"@notSureModel\\\"],[[28,[37,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[28,[37,24],[[30,0,[\\\"variableStorageName\\\"]],\\\"-valid\\\"],null]],null]],null],[30,0,[\\\"displayOnly\\\"]],[28,[37,30],[[30,0],\\\"changed\\\"],null],[28,[37,8],[[30,0,[\\\"question\\\",\\\"placeholder\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"questionIsRequired\\\"]],[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"headerLabelComputed\\\"]],[30,0,[\\\"question\\\",\\\"notSureOption\\\"]],[30,0,[\\\"question\\\",\\\"notSureOptionDoesNotHideComponent\\\"]],[30,0,[\\\"question\\\",\\\"notSureOptionText\\\"]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"notSureVariableStorageName\\\"]]],null]],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"paragraph\\\"],null],[[[1,\\\"            \\\"],[10,2],[15,0,[29,[\\\"settify-input-paragraph \\\",[30,0,[\\\"stylingClasses\\\"]]]]],[12],[1,[28,[35,8],[[30,0,[\\\"question\\\",\\\"content\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n              \\\"],[8,[39,35],null,[[\\\"@helpText\\\",\\\"@lawyerName\\\",\\\"@displayOnly\\\"],[[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\",\\\"helpTextIconLawyerName\\\"]],[30,0,[\\\"displayOnly\\\"]]]],null],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"button\\\"],null],[[[1,\\\"            \\\"],[8,[39,45],null,[[\\\"@link\\\",\\\"@completeThisChapter\\\",\\\"@text\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@clientRecord\\\"],[[30,0,[\\\"question\\\",\\\"link\\\"]],[30,0,[\\\"question\\\",\\\"completeThisChapter\\\"]],[30,0,[\\\"question\\\",\\\"title\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"heading\\\"],null],[[[1,\\\"            \\\"],[10,0],[15,0,[29,[[52,[30,0,[\\\"adminMode\\\"]],\\\"sub-heading\\\",\\\"chapter-animation-container\\\"],[30,0,[\\\"stylingClasses\\\"]]]]],[12],[1,\\\"\\\\n              \\\"],[10,\\\"h2\\\"],[12],[1,[28,[35,8],[[30,0,[\\\"question\\\",\\\"content\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[13],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"displayOnly\\\"]]],[[[1,\\\"                \\\"],[8,[39,46],null,[[\\\"@icon\\\"],[[30,0,[\\\"question\\\",\\\"icons\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"image\\\"],null],[[[1,\\\"            \\\"],[10,0],[15,0,[29,[\\\"image-wrapper \\\",[30,0,[\\\"stylingClasses\\\"]]]]],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,19],[[30,0,[\\\"question\\\",\\\"includeInSummary\\\"]],[30,0,[\\\"question\\\",\\\"includeInFirmSummary\\\"]],[28,[37,34],[[30,0,[\\\"displayOnly\\\"]]],null]],null],[[[1,\\\"                \\\"],[8,[39,47],null,[[\\\"@src\\\",\\\"@inline\\\"],[[52,[30,0,[\\\"adminMode\\\"]],[28,[37,24],[\\\"https://cdn.settify.com.au/icons/\\\",[28,[37,48],[[30,0,[\\\"question\\\",\\\"icon\\\"]]],null]],null],[30,0,[\\\"question\\\",\\\"icon\\\"]]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"question\\\",\\\"content\\\"]],[[[1,\\\"                \\\"],[1,[28,[35,8],[[30,0,[\\\"question\\\",\\\"content\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"link\\\"],null],[[[1,\\\"            \\\"],[10,2],[15,0,[30,0,[\\\"stylingClasses\\\"]]],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"question\\\",\\\"toggleButton\\\"]],[[[1,\\\"                \\\"],[11,3],[24,6,\\\"#\\\"],[24,0,\\\"settify-input-paragraph\\\"],[4,[38,30],[[30,0],\\\"changed\\\"],null],[12],[1,[28,[35,8],[[52,[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]]],null],[30,0,[\\\"question\\\",\\\"alternateContent\\\"]],[30,0,[\\\"question\\\",\\\"content\\\"]]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                \\\"],[10,3],[15,6,[30,0,[\\\"question\\\",\\\"link\\\"]]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[14,0,\\\"settify-input-paragraph\\\"],[12],[1,[28,[35,8],[[30,0,[\\\"question\\\",\\\"content\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"inputslider\\\"],null],[[[1,\\\"            \\\"],[10,0],[12],[1,\\\"\\\\n              \\\"],[1,[28,[35,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n              \\\"],[8,[39,50],null,[[\\\"@model\\\",\\\"@client\\\",\\\"@values\\\",\\\"@onChange\\\",\\\"@defaultIndex\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@includeSlidingScaleText\\\",\\\"@slidingScaleLeftText\\\",\\\"@slidingScaleRightText\\\",\\\"@notSureOption\\\",\\\"@notSureOptionDoesNotHideComponent\\\",\\\"@notSureOptionText\\\",\\\"@notSureModel\\\"],[[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"model\\\"]],[30,0,[\\\"question\\\",\\\"options\\\"]],[28,[37,30],[[30,0],\\\"changed\\\"],null],[30,0,[\\\"question\\\",\\\"defaultIndex\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"question\\\",\\\"includeSlidingScaleText\\\"]],[30,0,[\\\"question\\\",\\\"slidingScaleLeftText\\\"]],[30,0,[\\\"question\\\",\\\"slidingScaleRightText\\\"]],[30,0,[\\\"question\\\",\\\"notSureOption\\\"]],[30,0,[\\\"question\\\",\\\"notSureOptionDoesNotHideComponent\\\"]],[30,0,[\\\"question\\\",\\\"notSureOptionText\\\"]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"notSureVariableStorageName\\\"]]],null]],null]]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"multiradio\\\"],null],[[[1,\\\"            \\\"],[8,[39,51],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@rows\\\",\\\"@options\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@clientRecord\\\"],[[28,[37,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"model\\\"]],[30,0,[\\\"question\\\",\\\"multiRadioRows\\\"]],[30,0,[\\\"question\\\",\\\"options\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"radio\\\"],null],[[[1,\\\"            \\\"],[10,0],[15,0,[29,[\\\"summary-inline radio-inline \\\",[52,[28,[37,33],[[30,0,[\\\"questionIsRequired\\\"]],[28,[37,34],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null]],null],\\\"can-highlight\\\"]]]],[12],[1,\\\"\\\\n              \\\"],[1,[28,[35,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n\\\"],[41,[28,[37,33],[[30,0,[\\\"questionIsRequired\\\"]],[28,[37,34],[[30,0,[\\\"displayOnly\\\"]]],null]],null],[[[1,\\\"                \\\"],[10,1],[15,0,[29,[\\\"required-field-marker \\\",[52,[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],\\\"required-field-provided\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,33],[[30,0,[\\\"questionIsRequired\\\"]],[30,0,[\\\"displayOnly\\\"]],[28,[37,34],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null]],null],[[[1,\\\"                \\\"],[8,[39,52],null,null,null],[1,\\\"\\\\n              \\\"]],[]],null]],[]]],[1,\\\"              \\\"],[8,[39,35],null,[[\\\"@helpText\\\",\\\"@lawyerName\\\",\\\"@displayOnly\\\"],[[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\",\\\"helpTextIconLawyerName\\\"]],[30,0,[\\\"displayOnly\\\"]]]],null],[1,\\\"\\\\n              \\\"],[8,[39,53],null,[[\\\"@model\\\",\\\"@onChange\\\"],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],[28,[37,30],[[30,0],\\\"changed\\\",[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null]]],null],[1,\\\"\\\\n\\\"],[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"options\\\"]]],null]],null],null,[[[41,[28,[37,21],null,[[\\\"question\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"touch\\\",\\\"model\\\"],[[30,20],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"model\\\"]]]]],[[[1,\\\"                  \\\"],[8,[39,36],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\",\\\"@displayOnly\\\",\\\"@unselectable\\\",\\\"@name\\\",\\\"@helpText\\\"],[[28,[37,8],[[30,20,[\\\"title\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[28,[37,19],[[30,20,[\\\"id\\\"]],[30,20,[\\\"title\\\"]]],null],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"question\\\",\\\"unselectable\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]],[28,[37,8],[[30,20,[\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]]],null],[1,\\\"\\\\n                  \\\"],[8,[39,13],null,[[\\\"@documents\\\",\\\"@showDocument\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@notSureButton\\\",\\\"@displayInline\\\",\\\"@objectID\\\",\\\"@context\\\",\\\"@clientID\\\",\\\"@questionID\\\",\\\"@client\\\",\\\"@adminMode\\\"],[[30,20,[\\\"documentsRequired\\\"]],[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],[28,[37,19],[[30,20,[\\\"id\\\"]],[30,20,[\\\"title\\\"]]],null]],null],[30,0,[\\\"model\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"notSureButton\\\"]],true,[30,0,[\\\"model\\\",\\\"id\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"clientID\\\"]],[30,0,[\\\"variableStorageName\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[20]],null],[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"options\\\"]]],null]],null],null,[[[41,[51,[30,0,[\\\"displayOnly\\\"]]],[[[1,\\\"                  \\\"],[8,[39,28],null,[[\\\"@predicate\\\"],[[28,[37,33],[[28,[37,21],null,[[\\\"question\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"touch\\\"],[[30,21],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]]]]],[30,21,[\\\"feedback\\\"]],[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],[30,21,[\\\"id\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                    \\\"],[10,2],[14,0,\\\"feedback-paragraph\\\"],[12],[1,\\\"\\\\n                      \\\"],[1,[28,[35,8],[[30,21,[\\\"feedback\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,33],[[30,0,[\\\"adminMode\\\"]],[28,[37,21],null,[[\\\"question\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"touch\\\"],[[30,21],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]]]]],[30,21,[\\\"feedbackToLawyer\\\"]],[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],[30,21,[\\\"id\\\"]]],null]],null],[[[1,\\\"                  \\\"],[10,2],[14,0,\\\"lawyer-feedback-paragraph\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-lightbulb-on tight\\\"],[12],[13],[1,\\\"\\\\n                    \\\"],[1,[28,[35,8],[[30,21,[\\\"feedbackToLawyer\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[21]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,33],[[30,0,[\\\"displayOnly\\\"]],[28,[37,34],[[28,[37,3],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null]],null]],null],[[[1,\\\"              \\\"],[8,[39,55],null,null,null],[1,\\\"\\\\n\\\"]],[]],null]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"yesno\\\"],null],[[[41,[28,[37,33],[[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"question\\\",\\\"onYes\\\",\\\"title\\\"]],[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],\\\"yes\\\"],null]],null],[[[1,\\\"              \\\"],[8,[39,56],null,[[\\\"@icon\\\"],[[28,[37,19],[[30,0,[\\\"question\\\",\\\"onYes\\\",\\\"icon\\\"]],\\\"positive\\\"],null]]],null],[1,\\\"\\\\n              \\\"],[1,[28,[35,8],[[30,0,[\\\"question\\\",\\\"onYes\\\",\\\"title\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[8,[39,13],null,[[\\\"@documents\\\",\\\"@showDocument\\\",\\\"@model\\\",\\\"@notSureButton\\\",\\\"@displayOnly\\\",\\\"@displayInline\\\",\\\"@objectID\\\",\\\"@context\\\",\\\"@clientID\\\",\\\"@questionID\\\",\\\"@client\\\",\\\"@adminMode\\\"],[[30,0,[\\\"question\\\",\\\"onYes\\\",\\\"documentsRequired\\\"]],[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],\\\"yes\\\"],null],[30,0,[\\\"model\\\"]],[30,0,[\\\"notSureButton\\\"]],[30,0,[\\\"displayOnly\\\"]],true,[30,0,[\\\"model\\\",\\\"id\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"clientID\\\"]],[30,0,[\\\"variableStorageName\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,33],[[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"question\\\",\\\"onNo\\\",\\\"title\\\"]],[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],\\\"no\\\"],null]],null],[[[1,\\\"              \\\"],[8,[39,56],null,[[\\\"@icon\\\"],[[28,[37,19],[[30,0,[\\\"question\\\",\\\"onNo\\\",\\\"icon\\\"]],\\\"negative\\\"],null]]],null],[1,\\\"\\\\n              \\\"],[1,[28,[35,8],[[30,0,[\\\"question\\\",\\\"onNo\\\",\\\"title\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[8,[39,13],null,[[\\\"@documents\\\",\\\"@notSureButton\\\",\\\"@showDocument\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@displayInline\\\",\\\"@objectID\\\",\\\"@context\\\",\\\"@clientID\\\",\\\"@questionID\\\",\\\"@client\\\",\\\"@adminMode\\\"],[[30,0,[\\\"question\\\",\\\"onNo\\\",\\\"documentsRequired\\\"]],[30,0,[\\\"notSureButton\\\"]],[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],\\\"no\\\"],null],[30,0,[\\\"model\\\"]],[30,0,[\\\"displayOnly\\\"]],true,[30,0,[\\\"model\\\",\\\"id\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"clientID\\\"]],[30,0,[\\\"variableStorageName\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,33],[[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"question\\\",\\\"onNotSure\\\",\\\"title\\\"]],[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],\\\"notsure\\\"],null]],null],[[[1,\\\"              \\\"],[8,[39,56],null,[[\\\"@icon\\\"],[[28,[37,19],[[30,0,[\\\"question\\\",\\\"onNotSure\\\",\\\"icon\\\"]],\\\"notsure\\\"],null]]],null],[1,\\\"\\\\n              \\\"],[1,[28,[35,8],[[30,0,[\\\"question\\\",\\\"onNotSure\\\",\\\"title\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[8,[39,13],null,[[\\\"@documents\\\",\\\"@notSureButton\\\",\\\"@showDocument\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@displayInline\\\",\\\"@objectID\\\",\\\"@context\\\",\\\"@clientID\\\",\\\"@questionID\\\",\\\"@client\\\",\\\"@adminMode\\\"],[[30,0,[\\\"question\\\",\\\"onNotSure\\\",\\\"documentsRequired\\\"]],[30,0,[\\\"notSureButton\\\"]],[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],\\\"notsure\\\"],null],[30,0,[\\\"model\\\"]],[30,0,[\\\"displayOnly\\\"]],true,[30,0,[\\\"model\\\",\\\"id\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"clientID\\\"]],[30,0,[\\\"variableStorageName\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"              \\\"],[10,0],[15,0,[29,[\\\"summary-inline \\\",[52,[28,[37,33],[[30,0,[\\\"questionIsRequired\\\"]],[28,[37,34],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null]],null],\\\"can-highlight\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,33],[[30,0,[\\\"displayOnly\\\"]],[28,[37,22],[[30,0,[\\\"model\\\"]],[28,[37,24],[[30,0,[\\\"variableStorageName\\\"]],\\\"-askcolleague\\\"],null]],null]],null],[[[1,\\\"                  \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-users\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                \\\"],[1,[28,[35,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n\\\"],[41,[28,[37,33],[[30,0,[\\\"questionIsRequired\\\"]],[28,[37,34],[[30,0,[\\\"displayOnly\\\"]]],null]],null],[[[1,\\\"                  \\\"],[10,1],[15,0,[29,[\\\"required-field-marker \\\",[52,[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],\\\"required-field-provided\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,33],[[30,0,[\\\"questionIsRequired\\\"]],[30,0,[\\\"displayOnly\\\"]],[28,[37,34],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null]],null],[[[1,\\\"                  \\\"],[8,[39,52],null,null,null],[1,\\\"\\\\n                \\\"]],[]],null]],[]]],[1,\\\"                \\\"],[8,[39,53],null,[[\\\"@model\\\",\\\"@onChange\\\"],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],[28,[37,30],[[30,0],\\\"changed\\\",[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null]]],null],[1,\\\"\\\\n\\\"],[1,\\\"                \\\"],[8,[39,35],null,[[\\\"@helpText\\\",\\\"@lawyerName\\\",\\\"@displayOnly\\\"],[[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\",\\\"helpTextIconLawyerName\\\"]],[30,0,[\\\"displayOnly\\\"]]]],null],[1,\\\"\\\\n                \\\"],[8,[39,28],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showAskOthers\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[1,\\\"                  \\\"],[8,[39,53],null,[[\\\"@model\\\",\\\"@onChange\\\"],[[28,[37,22],[[30,0,[\\\"model\\\"]],[28,[37,24],[[30,0,[\\\"variableStorageName\\\"]],\\\"-askcolleague\\\"],null]],null],[28,[37,30],[[30,0],\\\"changed\\\"],null]]],null],[1,\\\"\\\\n                  \\\"],[8,[39,57],null,[[\\\"@sourceList\\\",\\\"@addNewText\\\",\\\"@itemLabelFormat\\\",\\\"@model\\\",\\\"@prompt\\\",\\\"@displayOnly\\\"],[[30,0,[\\\"tempPeopleList\\\"]],\\\"Ask someone else\\\",[52,[30,0,[\\\"displayOnly\\\"]],\\\"firstName surname %will %be %asked %for %this %information\\\",\\\"%Ask firstName surname %for %this %information\\\"],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[28,[37,24],[[30,0,[\\\"variableStorageName\\\"]],\\\"-askcolleague\\\"],null]],null]],null],\\\"Who do you want to ask?\\\",[30,0,[\\\"displayOnly\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    \\\"],[8,[39,29],null,[[\\\"@model\\\",\\\"@label\\\"],[[30,22,[\\\"firstName\\\"]],\\\"First name\\\"]],null],[1,\\\"\\\\n                    \\\"],[8,[39,29],null,[[\\\"@model\\\",\\\"@label\\\"],[[30,22,[\\\"surname\\\"]],\\\"Surname\\\"]],null],[1,\\\"\\\\n                    \\\"],[8,[39,44],null,[[\\\"@model\\\",\\\"@label\\\"],[[30,22,[\\\"email\\\"]],\\\"Email address\\\"]],null],[1,\\\"\\\\n                  \\\"]],[22,23]]]]],[1,\\\"\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[8,[39,28],null,[[\\\"@predicate\\\"],[[28,[37,34],[[30,0,[\\\"showAskOthers\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  \\\"],[8,[39,36],null,[[\\\"@name\\\",\\\"@text\\\",\\\"@model\\\",\\\"@value\\\",\\\"@displayOnly\\\",\\\"@helpText\\\"],[[30,0,[\\\"question\\\",\\\"id\\\"]],\\\"Yes\\\",[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],\\\"yes\\\",[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"question\\\",\\\"onYes\\\",\\\"helpText\\\"]]]],null],[1,\\\"\\\\n                  \\\"],[8,[39,36],null,[[\\\"@name\\\",\\\"@text\\\",\\\"@model\\\",\\\"@value\\\",\\\"@displayOnly\\\",\\\"@helpText\\\"],[[30,0,[\\\"question\\\",\\\"id\\\"]],\\\"No\\\",[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],\\\"no\\\",[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"question\\\",\\\"onNo\\\",\\\"helpText\\\"]]]],null],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"question\\\",\\\"excludeNotSure\\\"]]],[[[1,\\\"                    \\\"],[8,[39,36],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@value\\\",\\\"@displayOnly\\\",\\\"@helpText\\\"],[\\\"I'm not sure\\\",[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],\\\"notsure\\\",[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"question\\\",\\\"onNotSure\\\",\\\"helpText\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[41,[51,[30,0,[\\\"displayOnly\\\"]]],[[[1,\\\"                    \\\"],[8,[39,28],null,[[\\\"@predicate\\\"],[[28,[37,33],[[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],\\\"yes\\\"],null],[30,0,[\\\"question\\\",\\\"onYes\\\",\\\"feedback\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                      \\\"],[10,2],[14,0,\\\"feedback-paragraph\\\"],[12],[1,\\\"\\\\n                        \\\"],[1,[28,[35,8],[[30,0,[\\\"question\\\",\\\"onYes\\\",\\\"feedback\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n                    \\\"],[8,[39,28],null,[[\\\"@predicate\\\"],[[28,[37,33],[[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],\\\"no\\\"],null],[30,0,[\\\"question\\\",\\\"onNo\\\",\\\"feedback\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                      \\\"],[10,2],[14,0,\\\"feedback-paragraph\\\"],[12],[1,\\\"\\\\n                        \\\"],[1,[28,[35,8],[[30,0,[\\\"question\\\",\\\"onNo\\\",\\\"feedback\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n                    \\\"],[8,[39,28],null,[[\\\"@predicate\\\"],[[28,[37,33],[[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],\\\"notsure\\\"],null],[30,0,[\\\"question\\\",\\\"onNotSure\\\",\\\"feedback\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n                      \\\"],[10,2],[14,0,\\\"feedback-paragraph\\\"],[12],[1,\\\"\\\\n                        \\\"],[1,[28,[35,8],[[30,0,[\\\"question\\\",\\\"onNotSure\\\",\\\"feedback\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                  \\\"],[8,[39,28],null,[[\\\"@predicate\\\"],[[28,[37,33],[[30,0,[\\\"adminMode\\\"]],[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],\\\"yes\\\"],null],[30,0,[\\\"question\\\",\\\"onYes\\\",\\\"feedbackToLawyer\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    \\\"],[10,2],[14,0,\\\"lawyer-feedback-paragraph\\\"],[12],[1,\\\"\\\\n                      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-lightbulb-on tight\\\"],[12],[13],[1,\\\"\\\\n                      \\\"],[1,[28,[35,8],[[30,0,[\\\"question\\\",\\\"onYes\\\",\\\"feedbackToLawyer\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[8,[39,28],null,[[\\\"@predicate\\\"],[[28,[37,33],[[30,0,[\\\"adminMode\\\"]],[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],\\\"no\\\"],null],[30,0,[\\\"question\\\",\\\"onNo\\\",\\\"feedbackToLawyer\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    \\\"],[10,2],[14,0,\\\"lawyer-feedback-paragraph\\\"],[12],[1,\\\"\\\\n                      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-lightbulb-on tight\\\"],[12],[13],[1,\\\"\\\\n                      \\\"],[1,[28,[35,8],[[30,0,[\\\"question\\\",\\\"onNo\\\",\\\"feedbackToLawyer\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[8,[39,28],null,[[\\\"@predicate\\\"],[[28,[37,33],[[30,0,[\\\"adminMode\\\"]],[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],\\\"notsure\\\"],null],[30,0,[\\\"question\\\",\\\"onNotSure\\\",\\\"feedbackToLawyer\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    \\\"],[10,2],[14,0,\\\"lawyer-feedback-paragraph\\\"],[12],[1,\\\"\\\\n                      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-lightbulb-on tight\\\"],[12],[13],[1,\\\"\\\\n                      \\\"],[1,[28,[35,8],[[30,0,[\\\"question\\\",\\\"onNotSure\\\",\\\"feedbackToLawyer\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[8,[39,13],null,[[\\\"@documents\\\",\\\"@showDocument\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@displayInline\\\",\\\"@notSureButton\\\",\\\"@objectID\\\",\\\"@context\\\",\\\"@clientID\\\",\\\"@questionID\\\",\\\"@client\\\",\\\"@adminMode\\\"],[[30,0,[\\\"question\\\",\\\"onYes\\\",\\\"documentsRequired\\\"]],[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],\\\"yes\\\"],null],[30,0,[\\\"model\\\"]],[30,0,[\\\"displayOnly\\\"]],true,[30,0,[\\\"notSureButton\\\"]],[30,0,[\\\"model\\\",\\\"id\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"clientID\\\"]],[30,0,[\\\"variableStorageName\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n                  \\\"],[8,[39,13],null,[[\\\"@documents\\\",\\\"@showDocument\\\",\\\"@model\\\",\\\"@notSureButton\\\",\\\"@displayOnly\\\",\\\"@displayInline\\\",\\\"@objectID\\\",\\\"@context\\\",\\\"@clientID\\\",\\\"@questionID\\\",\\\"@client\\\",\\\"@adminMode\\\"],[[30,0,[\\\"question\\\",\\\"onNo\\\",\\\"documentsRequired\\\"]],[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],\\\"no\\\"],null],[30,0,[\\\"model\\\"]],[30,0,[\\\"notSureButton\\\"]],[30,0,[\\\"displayOnly\\\"]],true,[30,0,[\\\"model\\\",\\\"id\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"clientID\\\"]],[30,0,[\\\"variableStorageName\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n                  \\\"],[8,[39,13],null,[[\\\"@documents\\\",\\\"@showDocument\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@notSureButton\\\",\\\"@displayInline\\\",\\\"@objectID\\\",\\\"@context\\\",\\\"@clientID\\\",\\\"@questionID\\\",\\\"@client\\\",\\\"@adminMode\\\"],[[30,0,[\\\"question\\\",\\\"onNotSure\\\",\\\"documentsRequired\\\"]],[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],\\\"notsure\\\"],null],[30,0,[\\\"model\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"notSureButton\\\"]],true,[30,0,[\\\"model\\\",\\\"id\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"clientID\\\"]],[30,0,[\\\"variableStorageName\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,33],[[30,0,[\\\"displayOnly\\\"]],[28,[37,34],[[28,[37,22],[[30,0,[\\\"model\\\"]],[28,[37,24],[[30,0,[\\\"variableStorageName\\\"]],\\\"-askcolleague\\\"],null]],null],[28,[37,3],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null]],null]],null],[[[1,\\\"                \\\"],[8,[39,55],null,null,null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"]],[]]]],[]]]],[]]]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"checkbox\\\"],null],[[[1,\\\"            \\\"],[10,0],[15,0,[30,0,[\\\"stylingClasses\\\"]]],[12],[1,\\\"\\\\n              \\\"],[1,[28,[35,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n              \\\"],[8,[39,35],null,[[\\\"@helpText\\\",\\\"@lawyerName\\\",\\\"@displayOnly\\\"],[[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\",\\\"helpTextIconLawyerName\\\"]],[30,0,[\\\"displayOnly\\\"]]]],null],[1,\\\"\\\\n\\\"],[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"options\\\"]]],null]],null],null,[[[41,[28,[37,21],null,[[\\\"question\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"touch\\\",\\\"model\\\"],[[30,24],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"model\\\"]]]]],[[[1,\\\"                  \\\"],[8,[39,58],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@helpText\\\",\\\"@displayOnly\\\",\\\"@required\\\",\\\"@hideIcon\\\",\\\"@onChange\\\"],[[28,[37,8],[[52,[30,0,[\\\"displayOnly\\\"]],[28,[37,19],[[30,24,[\\\"shortTitle\\\"]],[30,24,[\\\"title\\\"]]],null],[30,24,[\\\"title\\\"]]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[28,[37,19],[[30,24,[\\\"id\\\"]],[30,24,[\\\"title\\\"]]],null]],null]],null],[28,[37,8],[[30,24,[\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"displayOnly\\\"]],[30,24,[\\\"required\\\"]],[30,24,[\\\"hideIcon\\\"]],[28,[37,30],[[30,0],\\\"changed\\\",[30,24]],null]]],null],[1,\\\"\\\\n                  \\\"],[8,[39,13],null,[[\\\"@documents\\\",\\\"@showDocument\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@notSureButton\\\",\\\"@displayInline\\\",\\\"@objectID\\\",\\\"@context\\\",\\\"@clientID\\\",\\\"@questionID\\\",\\\"@client\\\",\\\"@adminMode\\\"],[[30,24,[\\\"documentsRequired\\\"]],[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[28,[37,19],[[30,24,[\\\"id\\\"]],[30,24,[\\\"title\\\"]]],null]],null],true],null],[30,0,[\\\"model\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"notSureButton\\\"]],true,[30,0,[\\\"model\\\",\\\"id\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"clientID\\\"]],[30,0,[\\\"variableStorageName\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[24]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n\\\"],[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"options\\\"]]],null]],null],null,[[[41,[51,[30,0,[\\\"displayOnly\\\"]]],[[[1,\\\"                \\\"],[8,[39,28],null,[[\\\"@predicate\\\"],[[28,[37,33],[[28,[37,21],null,[[\\\"question\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"touch\\\"],[[30,25],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]]]]],[30,25,[\\\"feedback\\\"]],[28,[37,22],[[30,0,[\\\"model\\\"]],[28,[37,19],[[30,25,[\\\"id\\\"]],[30,25,[\\\"title\\\"]]],null]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  \\\"],[10,2],[14,0,\\\"feedback-paragraph\\\"],[12],[1,\\\"\\\\n                    \\\"],[1,[28,[35,8],[[30,25,[\\\"feedback\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[8,[39,28],null,[[\\\"@predicate\\\"],[[28,[37,33],[[30,0,[\\\"adminMode\\\"]],[28,[37,21],null,[[\\\"question\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"touch\\\"],[[30,25],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]]]]],[30,25,[\\\"feedbackToLawyer\\\"]],[28,[37,22],[[30,0,[\\\"model\\\"]],[28,[37,19],[[30,25,[\\\"id\\\"]],[30,25,[\\\"title\\\"]]],null]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,2],[14,0,\\\"lawyer-feedback-paragraph\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-lightbulb-on tight\\\"],[12],[13],[1,\\\"\\\\n                  \\\"],[1,[28,[35,8],[[30,25,[\\\"feedbackToLawyer\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[25]],null],[41,[28,[37,33],[[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"noCheckboxesTicked\\\"]]],null],[[[41,[28,[37,32],[[30,0,[\\\"noCheckboxesTicked\\\"]],1],null],[[[1,\\\"                \\\"],[10,1],[14,0,\\\"textgrey\\\"],[12],[1,\\\"(None selected)\\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                \\\"],[1,[28,[35,8],[[28,[37,19],[[28,[37,22],[[30,0,[\\\"question\\\",\\\"options\\\"]],\\\"0.shortTitle\\\"],null],[28,[37,22],[[30,0,[\\\"question\\\",\\\"options\\\"]],\\\"0.title\\\"],null]],null]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n                \\\"],[1,[28,[35,59],null,[[\\\"displayOnly\\\",\\\"title\\\"],[[30,0,[\\\"displayOnly\\\"]],[28,[37,19],[[28,[37,22],[[30,0,[\\\"question\\\",\\\"options\\\"]],\\\"0.shortTitle\\\"],null],[28,[37,22],[[30,0,[\\\"question\\\",\\\"options\\\"]],\\\"0.title\\\"],null]],null]]]]],[1,\\\"\\\\n                No\\\\n\\\"]],[]]]],[]],null]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"list\\\"],null],[[[41,[30,0,[\\\"question\\\",\\\"tabbedList\\\"]],[[[1,\\\"              \\\"],[8,[39,60],null,[[\\\"@model\\\",\\\"@label\\\",\\\"@itemTypeString\\\",\\\"@itemLabelFormat\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\",\\\"@defaults\\\",\\\"@helpText\\\",\\\"@clientRecord\\\"],[[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[28,[37,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[28,[37,19],[[30,0,[\\\"question\\\",\\\"itemName\\\"]],\\\"item\\\"],null],[28,[37,19],[[30,0,[\\\"question\\\",\\\"itemLabelFormat\\\"]],\\\"firstName surname\\\"],null],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"defaults\\\"]],[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"                  \\\"],[8,[39,12],null,[[\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\",\\\"@highlightRequiredFields\\\"],[[30,27],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[30,26],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"highlightRequiredFields\\\"]]]],null],[1,\\\"\\\\n\\\"]],[27]],null],[1,\\\"              \\\"]],[26]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"              \\\"],[8,[39,61],null,[[\\\"@displayOnly\\\",\\\"@label\\\",\\\"@model\\\",\\\"@itemName\\\",\\\"@onChange\\\",\\\"@preventEmptyLists\\\",\\\"@adminMode\\\",\\\"@immutableList\\\",\\\"@noBorder\\\",\\\"@clientRecord\\\",\\\"@helpText\\\"],[[30,0,[\\\"displayOnly\\\"]],[28,[37,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[28,[37,19],[[30,0,[\\\"question\\\",\\\"itemName\\\"]],\\\"item\\\"],null],[28,[37,30],[[30,0],\\\"changed\\\"],null],true,[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"question\\\",\\\"immutableList\\\"]],[30,0,[\\\"question\\\",\\\"noBorder\\\"]],[30,0,[\\\"clientRecord\\\"]],[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"                  \\\"],[8,[39,12],null,[[\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\",\\\"@highlightRequiredFields\\\"],[[30,30],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[30,28],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"highlightRequiredFields\\\"]]]],null],[1,\\\"\\\\n\\\"]],[30]],null],[1,\\\"              \\\"]],[28,29]]]]],[1,\\\"\\\\n\\\"]],[]]]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"familytreeselect\\\"],null],[[[41,[28,[37,2],[[30,0,[\\\"clientRecord\\\",\\\"practiceArea\\\"]],\\\"Probate\\\"],null],[[[1,\\\"              \\\"],[8,[39,62],null,[[\\\"@displayOnly\\\",\\\"@label\\\",\\\"@onChange\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@hideDetail\\\",\\\"@adminMode\\\",\\\"@summaryMode\\\",\\\"@helpText\\\",\\\"@checkboxProperty\\\",\\\"@multipleSelections\\\",\\\"@enableDeceased\\\",\\\"@enableOrganisations\\\",\\\"@disableDeceasedPeople\\\",\\\"@disableEditing\\\"],[[30,0,[\\\"displayOnly\\\"]],[28,[37,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[28,[37,30],[[30,0],\\\"changed\\\"],null],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],false,[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"summaryMode\\\"]],[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"question\\\",\\\"id\\\"]],[30,0,[\\\"question\\\",\\\"multipleSelections\\\"]],[30,0,[\\\"question\\\",\\\"enableDeceased\\\"]],[30,0,[\\\"question\\\",\\\"enableOrganisations\\\"]],[30,0,[\\\"question\\\",\\\"disableDeceasedPeople\\\"]],[30,0,[\\\"question\\\",\\\"disableEditing\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"                  \\\"],[8,[39,12],null,[[\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@model\\\",\\\"@displayOnly\\\"],[[30,32],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[28,[37,63],[[30,0,[\\\"clientRecord\\\"]],[30,31]],null],[30,0,[\\\"displayOnly\\\"]]]],null],[1,\\\"\\\\n\\\"]],[32]],null],[41,[30,0,[\\\"question\\\",\\\"askForMoreInfo\\\"]],[[[1,\\\"                  \\\"],[8,[39,31],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@onChange\\\",\\\"@headerLabel\\\"],[[52,[30,0,[\\\"displayOnly\\\"]],\\\"\\\",\\\"Please tell us more\\\"],[28,[37,27],[[28,[37,22],[[28,[37,63],[[30,0,[\\\"clientRecord\\\"]],[30,31]],null],[28,[37,64],[[30,0,[\\\"question\\\",\\\"id\\\"]],\\\"MoreInfo\\\"],null]],null]],null],[30,0,[\\\"displayOnly\\\"]],[28,[37,30],[[30,0],\\\"changed\\\"],null],false]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"]],[31]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"              \\\"],[8,[39,65],null,[[\\\"@displayOnly\\\",\\\"@label\\\",\\\"@onChange\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@hideDetail\\\",\\\"@adminMode\\\",\\\"@summaryMode\\\",\\\"@helpText\\\",\\\"@checkboxProperty\\\",\\\"@multipleSelections\\\",\\\"@enableDeceased\\\",\\\"@enableOrganisations\\\",\\\"@disableDeceasedPeople\\\",\\\"@disableEditing\\\"],[[30,0,[\\\"displayOnly\\\"]],[28,[37,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[28,[37,30],[[30,0],\\\"changed\\\"],null],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],false,[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"summaryMode\\\"]],[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"question\\\",\\\"id\\\"]],[30,0,[\\\"question\\\",\\\"multipleSelections\\\"]],[30,0,[\\\"question\\\",\\\"enableDeceased\\\"]],[30,0,[\\\"question\\\",\\\"enableOrganisations\\\"]],[30,0,[\\\"question\\\",\\\"disableDeceasedPeople\\\"]],[30,0,[\\\"question\\\",\\\"disableEditing\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"                  \\\"],[8,[39,12],null,[[\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@model\\\",\\\"@displayOnly\\\"],[[30,34],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[28,[37,63],[[30,0,[\\\"clientRecord\\\"]],[30,33]],null],[30,0,[\\\"displayOnly\\\"]]]],null],[1,\\\"\\\\n\\\"]],[34]],null],[41,[30,0,[\\\"question\\\",\\\"askForMoreInfo\\\"]],[[[1,\\\"                  \\\"],[8,[39,31],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@onChange\\\",\\\"@headerLabel\\\"],[[52,[30,0,[\\\"displayOnly\\\"]],\\\"\\\",\\\"Please tell us more\\\"],[28,[37,27],[[28,[37,22],[[28,[37,63],[[30,0,[\\\"clientRecord\\\"]],[30,33]],null],[28,[37,64],[[30,0,[\\\"question\\\",\\\"id\\\"]],\\\"MoreInfo\\\"],null]],null]],null],[30,0,[\\\"displayOnly\\\"]],[28,[37,30],[[30,0],\\\"changed\\\"],null],false]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"]],[33]]]]],[1,\\\"\\\\n\\\"]],[]]]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"immutableList\\\"],null],[[[1,\\\"            \\\"],[8,[39,26],null,[[\\\"@sourceList\\\",\\\"@displayOnly\\\",\\\"@label\\\",\\\"@model\\\",\\\"@itemName\\\",\\\"@class\\\",\\\"@onChange\\\",\\\"@clientRecord\\\",\\\"@adminMode\\\",\\\"@context\\\",\\\"@level\\\",\\\"@helpText\\\"],[[28,[37,19],[[30,0,[\\\"question\\\",\\\"sourceListIDs\\\"]],[30,0,[\\\"clientRecord\\\",\\\"knownEntities\\\"]]],null],[30,0,[\\\"displayOnly\\\"]],[28,[37,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"model\\\"]],[28,[37,19],[[30,0,[\\\"question\\\",\\\"itemName\\\"]],\\\"item\\\"],null],[30,0,[\\\"stylingClasses\\\"]],[28,[37,30],[[30,0],\\\"changed\\\"],null],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"context\\\"]],[28,[37,19],[[30,0,[\\\"level\\\"]],0],null],[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"                \\\"],[8,[39,12],null,[[\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@model\\\",\\\"@level\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\",\\\"@highlightRequiredFields\\\"],[[30,37],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[30,35],[28,[37,24],[[30,0,[\\\"level\\\"]],1],null],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"highlightRequiredFields\\\"]]]],null],[1,\\\"\\\\n\\\"]],[37]],null],[1,\\\"            \\\"]],[35,36]]]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,19],[[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"selectorcreate\\\"],null],[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"selectorcreatemulti\\\"],null],[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"selectorcreatesingle\\\"],null]],null],[[[41,[28,[37,19],[[28,[37,2],[[30,0,[\\\"clientRecord\\\",\\\"practiceArea\\\"]],\\\"Probate\\\"],null],[28,[37,33],[[28,[37,2],[[30,0,[\\\"clientRecord\\\",\\\"practiceArea\\\"]],\\\"Forms\\\"],null],[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"selectorcreate\\\"],null]],null]],null],[[[1,\\\"              \\\"],[8,[39,66],null,[[\\\"@label\\\",\\\"@sourceList\\\",\\\"@outputList\\\",\\\"@addNewText\\\",\\\"@itemLabelFormat\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@editExistingItems\\\",\\\"@required\\\",\\\"@itemName\\\",\\\"@headerLabel\\\",\\\"@multipleSelections\\\",\\\"@hideSelectSuggest\\\",\\\"@useFamilyTree\\\",\\\"@filterType\\\",\\\"@filterList\\\",\\\"@allowPeople\\\",\\\"@allowCorporations\\\",\\\"@editMode\\\",\\\"@setAsPrimaryContact\\\",\\\"@allowDeceased\\\",\\\"@helpText\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@onChange\\\"],[[28,[37,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\",\\\"knownEntitiesAndFamilyMembers\\\"]],[30,0,[\\\"clientRecord\\\",\\\"knownEntities\\\"]],[28,[37,19],[[30,0,[\\\"question\\\",\\\"addNewText\\\"]],\\\"Someone else\\\"],null],[28,[37,19],[[30,0,[\\\"question\\\",\\\"itemLabelFormat\\\"]],\\\"firstName surname name\\\"],null],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"displayOnly\\\"]],true,[30,0,[\\\"question\\\",\\\"required\\\"]],[28,[37,19],[[30,0,[\\\"question\\\",\\\"itemName\\\"]],\\\"item\\\"],null],[30,0,[\\\"headerLabelComputed\\\"]],[30,0,[\\\"question\\\",\\\"multipleSelections\\\"]],[30,0,[\\\"question\\\",\\\"hideSelect\\\"]],[30,0,[\\\"question\\\",\\\"useFamilyTree\\\"]],[30,0,[\\\"filterType\\\"]],[30,0,[\\\"filterList\\\"]],[30,0,[\\\"question\\\",\\\"allowPeople\\\"]],[30,0,[\\\"question\\\",\\\"allowCorporations\\\"]],[30,0,[\\\"editMode\\\"]],[30,0,[\\\"question\\\",\\\"setAsPrimaryContact\\\"]],[30,0,[\\\"question\\\",\\\"allowDeceased\\\"]],[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[28,[37,30],[[30,0],\\\"changed\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"question\\\",\\\"customContentFirst\\\"]]],[[[1,\\\"                  \\\"],[8,[39,67],null,[[\\\"@item\\\",\\\"@editingExistingItem\\\",\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\",\\\"@filterList\\\",\\\"@filterType\\\"],[[30,38],[30,39],[30,0,[\\\"question\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"highlightRequiredFields\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"filterList\\\"]],[30,0,[\\\"filterType\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"                  \\\"],[8,[39,12],null,[[\\\"@question\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@model\\\",\\\"@filterListOverride\\\",\\\"@filterTypeOverride\\\",\\\"@adminMode\\\",\\\"@highlightRequiredFields\\\"],[[30,40],[30,0,[\\\"displayOnly\\\"]],[28,[37,68],[[30,0,[\\\"context\\\"]]],[[\\\"editingExistingItem\\\"],[[30,39]]]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[30,38],[30,40,[\\\"filterList\\\"]],[30,40,[\\\"filterType\\\"]],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"highlightRequiredFields\\\"]]]],null],[1,\\\"\\\\n\\\"]],[40]],null],[41,[30,0,[\\\"question\\\",\\\"customContentFirst\\\"]],[[[1,\\\"                  \\\"],[8,[39,67],null,[[\\\"@item\\\",\\\"@editingExistingItem\\\",\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\",\\\"@filterList\\\",\\\"@filterType\\\"],[[30,38],[30,39],[30,0,[\\\"question\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"highlightRequiredFields\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"filterList\\\"]],[30,0,[\\\"filterType\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"]],[38,39]]]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,19],[[28,[37,2],[[30,0,[\\\"clientRecord\\\",\\\"practiceArea\\\"]],\\\"Estates\\\"],null],[28,[37,2],[[30,0,[\\\"clientRecord\\\",\\\"practiceArea\\\"]],\\\"Family\\\"],null],[28,[37,2],[[30,0,[\\\"clientRecord\\\",\\\"practiceArea\\\"]],\\\"Wills\\\"],null]],null],[[[41,[30,0,[\\\"question\\\",\\\"multipleSelections\\\"]],[[[1,\\\"                \\\"],[8,[39,69],null,[[\\\"@label\\\",\\\"@sourceList\\\",\\\"@outputList\\\",\\\"@addNewText\\\",\\\"@itemLabelFormat\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@editExistingItems\\\",\\\"@required\\\",\\\"@itemName\\\",\\\"@itemNamePluralNoun\\\",\\\"@headerLabel\\\",\\\"@hideSelectSuggest\\\",\\\"@filterType\\\",\\\"@filterList\\\",\\\"@notSureOption\\\",\\\"@notSureOptionText\\\",\\\"@notSureModel\\\",\\\"@client\\\",\\\"@allowPeople\\\",\\\"@allowCorporations\\\",\\\"@editMode\\\",\\\"@setAsPrimaryContact\\\",\\\"@allowDeceased\\\",\\\"@context\\\",\\\"@questionID\\\",\\\"@helpText\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@onChange\\\"],[[28,[37,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\",\\\"knownEntities\\\"]],[30,0,[\\\"clientRecord\\\",\\\"knownEntities\\\"]],[28,[37,19],[[30,0,[\\\"question\\\",\\\"addNewText\\\"]],\\\"Someone else\\\"],null],[28,[37,19],[[30,0,[\\\"question\\\",\\\"itemLabelFormat\\\"]],\\\"firstName surname name\\\"],null],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"displayOnly\\\"]],true,[30,0,[\\\"questionIsRequired\\\"]],[28,[37,19],[[30,0,[\\\"question\\\",\\\"itemName\\\"]],\\\"item\\\"],null],[30,0,[\\\"question\\\",\\\"itemNamePluralNoun\\\"]],[30,0,[\\\"headerLabelComputed\\\"]],[30,0,[\\\"question\\\",\\\"hideSelect\\\"]],[30,0,[\\\"filterType\\\"]],[30,0,[\\\"filterList\\\"]],[30,0,[\\\"question\\\",\\\"notSureOption\\\"]],[30,0,[\\\"question\\\",\\\"notSureOptionText\\\"]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[28,[37,24],[[30,0,[\\\"variableStorageName\\\"]],\\\"-notsure\\\"],null]],null]],null],[30,0,[\\\"model\\\"]],[30,0,[\\\"question\\\",\\\"allowPeople\\\"]],[30,0,[\\\"question\\\",\\\"allowCorporations\\\"]],[30,0,[\\\"editMode\\\"]],[30,0,[\\\"question\\\",\\\"setAsPrimaryContact\\\"]],[30,0,[\\\"question\\\",\\\"allowDeceased\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]],[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[28,[37,30],[[30,0],\\\"changed\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"question\\\",\\\"customContentFirst\\\"]]],[[[1,\\\"                    \\\"],[8,[39,67],null,[[\\\"@item\\\",\\\"@editingExistingItem\\\",\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\",\\\"@filterList\\\",\\\"@filterType\\\"],[[30,41],[30,42],[30,0,[\\\"question\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"highlightRequiredFields\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"filterList\\\"]],[30,0,[\\\"filterType\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"                    \\\"],[8,[39,12],null,[[\\\"@question\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@model\\\",\\\"@filterListOverride\\\",\\\"@filterTypeOverride\\\",\\\"@adminMode\\\",\\\"@highlightRequiredFields\\\"],[[30,43],[30,0,[\\\"displayOnly\\\"]],[28,[37,68],[[30,0,[\\\"context\\\"]]],[[\\\"editingExistingItem\\\"],[[30,42]]]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[30,41],[30,43,[\\\"filterList\\\"]],[30,43,[\\\"filterType\\\"]],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"highlightRequiredFields\\\"]]]],null],[1,\\\"\\\\n\\\"]],[43]],null],[41,[30,0,[\\\"question\\\",\\\"customContentFirst\\\"]],[[[1,\\\"                    \\\"],[8,[39,67],null,[[\\\"@item\\\",\\\"@editingExistingItem\\\",\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\",\\\"@filterList\\\",\\\"@filterType\\\"],[[30,41],[30,42],[30,0,[\\\"question\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"highlightRequiredFields\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"filterList\\\"]],[30,0,[\\\"filterType\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                \\\"]],[41,42]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                \\\"],[8,[39,57],null,[[\\\"@label\\\",\\\"@sourceList\\\",\\\"@outputList\\\",\\\"@addNewText\\\",\\\"@itemLabelFormat\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@editExistingItems\\\",\\\"@required\\\",\\\"@itemName\\\",\\\"@itemNamePluralNoun\\\",\\\"@headerLabel\\\",\\\"@hideSelectSuggest\\\",\\\"@filterType\\\",\\\"@filterList\\\",\\\"@notSureOption\\\",\\\"@notSureOptionText\\\",\\\"@notSureModel\\\",\\\"@client\\\",\\\"@allowPeople\\\",\\\"@allowCorporations\\\",\\\"@editMode\\\",\\\"@setAsPrimaryContact\\\",\\\"@allowDeceased\\\",\\\"@context\\\",\\\"@questionID\\\",\\\"@helpText\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@onChange\\\"],[[28,[37,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\",\\\"knownEntities\\\"]],[30,0,[\\\"clientRecord\\\",\\\"knownEntities\\\"]],[28,[37,19],[[30,0,[\\\"question\\\",\\\"addNewText\\\"]],\\\"Someone else\\\"],null],[28,[37,19],[[30,0,[\\\"question\\\",\\\"itemLabelFormat\\\"]],\\\"firstName surname name\\\"],null],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"displayOnly\\\"]],true,[30,0,[\\\"questionIsRequired\\\"]],[28,[37,19],[[30,0,[\\\"question\\\",\\\"itemName\\\"]],\\\"item\\\"],null],[30,0,[\\\"question\\\",\\\"itemNamePluralNoun\\\"]],[30,0,[\\\"headerLabelComputed\\\"]],[30,0,[\\\"question\\\",\\\"hideSelect\\\"]],[30,0,[\\\"filterType\\\"]],[30,0,[\\\"filterList\\\"]],[30,0,[\\\"question\\\",\\\"notSureOption\\\"]],[30,0,[\\\"question\\\",\\\"notSureOptionText\\\"]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[28,[37,24],[[30,0,[\\\"variableStorageName\\\"]],\\\"-notsure\\\"],null]],null]],null],[30,0,[\\\"model\\\"]],[30,0,[\\\"question\\\",\\\"allowPeople\\\"]],[30,0,[\\\"question\\\",\\\"allowCorporations\\\"]],[30,0,[\\\"editMode\\\"]],[30,0,[\\\"question\\\",\\\"setAsPrimaryContact\\\"]],[30,0,[\\\"question\\\",\\\"allowDeceased\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]],[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[28,[37,30],[[30,0],\\\"changed\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"question\\\",\\\"customContentFirst\\\"]]],[[[1,\\\"                    \\\"],[8,[39,67],null,[[\\\"@item\\\",\\\"@editingExistingItem\\\",\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\",\\\"@filterList\\\",\\\"@filterType\\\"],[[30,44],[30,45],[30,0,[\\\"question\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"highlightRequiredFields\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"filterList\\\"]],[30,0,[\\\"filterType\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"                    \\\"],[8,[39,12],null,[[\\\"@question\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@model\\\",\\\"@filterListOverride\\\",\\\"@filterTypeOverride\\\",\\\"@adminMode\\\",\\\"@highlightRequiredFields\\\"],[[30,46],[30,0,[\\\"displayOnly\\\"]],[28,[37,68],[[30,0,[\\\"context\\\"]]],[[\\\"editingExistingItem\\\"],[[30,45]]]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[30,44],[30,46,[\\\"filterList\\\"]],[30,46,[\\\"filterType\\\"]],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"highlightRequiredFields\\\"]]]],null],[1,\\\"\\\\n\\\"]],[46]],null],[41,[30,0,[\\\"question\\\",\\\"customContentFirst\\\"]],[[[1,\\\"                    \\\"],[8,[39,67],null,[[\\\"@item\\\",\\\"@editingExistingItem\\\",\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\",\\\"@filterList\\\",\\\"@filterType\\\"],[[30,44],[30,45],[30,0,[\\\"question\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"highlightRequiredFields\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"filterList\\\"]],[30,0,[\\\"filterType\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                \\\"]],[44,45]]]]],[1,\\\"\\\\n\\\"]],[]]]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"selectorcreatemulti\\\"],null],[[[1,\\\"              \\\"],[8,[39,69],null,[[\\\"@label\\\",\\\"@sourceList\\\",\\\"@outputList\\\",\\\"@addNewText\\\",\\\"@itemLabelFormat\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@editExistingItems\\\",\\\"@required\\\",\\\"@itemName\\\",\\\"@itemNamePluralNoun\\\",\\\"@headerLabel\\\",\\\"@hideSelectSuggest\\\",\\\"@filterType\\\",\\\"@filterList\\\",\\\"@notSureOption\\\",\\\"@notSureOptionText\\\",\\\"@notSureModel\\\",\\\"@client\\\",\\\"@allowPeople\\\",\\\"@allowCorporations\\\",\\\"@editMode\\\",\\\"@setAsPrimaryContact\\\",\\\"@allowDeceased\\\",\\\"@context\\\",\\\"@questionID\\\",\\\"@helpText\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@onChange\\\"],[[28,[37,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\",\\\"knownEntities\\\"]],[30,0,[\\\"clientRecord\\\",\\\"knownEntities\\\"]],[28,[37,19],[[30,0,[\\\"question\\\",\\\"addNewText\\\"]],\\\"Someone else\\\"],null],[28,[37,19],[[30,0,[\\\"question\\\",\\\"itemLabelFormat\\\"]],\\\"firstName surname name\\\"],null],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"displayOnly\\\"]],true,[30,0,[\\\"questionIsRequired\\\"]],[28,[37,19],[[30,0,[\\\"question\\\",\\\"itemName\\\"]],\\\"item\\\"],null],[30,0,[\\\"question\\\",\\\"itemNamePluralNoun\\\"]],[30,0,[\\\"headerLabelComputed\\\"]],[30,0,[\\\"question\\\",\\\"hideSelect\\\"]],[30,0,[\\\"filterType\\\"]],[30,0,[\\\"filterList\\\"]],[30,0,[\\\"question\\\",\\\"notSureOption\\\"]],[30,0,[\\\"question\\\",\\\"notSureOptionText\\\"]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[28,[37,24],[[30,0,[\\\"variableStorageName\\\"]],\\\"-notsure\\\"],null]],null]],null],[30,0,[\\\"model\\\"]],[30,0,[\\\"question\\\",\\\"allowPeople\\\"]],[30,0,[\\\"question\\\",\\\"allowCorporations\\\"]],[30,0,[\\\"editMode\\\"]],[30,0,[\\\"question\\\",\\\"setAsPrimaryContact\\\"]],[30,0,[\\\"question\\\",\\\"allowDeceased\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]],[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[28,[37,30],[[30,0],\\\"changed\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"question\\\",\\\"customContentFirst\\\"]]],[[[1,\\\"                  \\\"],[8,[39,67],null,[[\\\"@item\\\",\\\"@editingExistingItem\\\",\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\",\\\"@filterList\\\",\\\"@filterType\\\"],[[30,47],[30,48],[30,0,[\\\"question\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"highlightRequiredFields\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"filterList\\\"]],[30,0,[\\\"filterType\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"                  \\\"],[8,[39,12],null,[[\\\"@question\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@model\\\",\\\"@filterListOverride\\\",\\\"@filterTypeOverride\\\",\\\"@adminMode\\\",\\\"@highlightRequiredFields\\\"],[[30,49],[30,0,[\\\"displayOnly\\\"]],[28,[37,68],[[30,0,[\\\"context\\\"]]],[[\\\"editingExistingItem\\\"],[[30,48]]]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[30,47],[30,49,[\\\"filterList\\\"]],[30,49,[\\\"filterType\\\"]],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"highlightRequiredFields\\\"]]]],null],[1,\\\"\\\\n\\\"]],[49]],null],[41,[30,0,[\\\"question\\\",\\\"customContentFirst\\\"]],[[[1,\\\"                  \\\"],[8,[39,67],null,[[\\\"@item\\\",\\\"@editingExistingItem\\\",\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\",\\\"@filterList\\\",\\\"@filterType\\\"],[[30,47],[30,48],[30,0,[\\\"question\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"highlightRequiredFields\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"filterList\\\"]],[30,0,[\\\"filterType\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"]],[47,48]]]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"selectorcreatesingle\\\"],null],[[[1,\\\"              \\\"],[8,[39,57],null,[[\\\"@label\\\",\\\"@sourceList\\\",\\\"@outputList\\\",\\\"@addNewText\\\",\\\"@itemLabelFormat\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@editExistingItems\\\",\\\"@required\\\",\\\"@itemName\\\",\\\"@itemNamePluralNoun\\\",\\\"@headerLabel\\\",\\\"@hideSelectSuggest\\\",\\\"@filterType\\\",\\\"@filterList\\\",\\\"@notSureOption\\\",\\\"@notSureOptionText\\\",\\\"@notSureModel\\\",\\\"@client\\\",\\\"@allowPeople\\\",\\\"@allowCorporations\\\",\\\"@editMode\\\",\\\"@setAsPrimaryContact\\\",\\\"@allowDeceased\\\",\\\"@context\\\",\\\"@questionID\\\",\\\"@helpText\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@onChange\\\"],[[28,[37,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\",\\\"knownEntities\\\"]],[30,0,[\\\"clientRecord\\\",\\\"knownEntities\\\"]],[28,[37,19],[[30,0,[\\\"question\\\",\\\"addNewText\\\"]],\\\"Someone else\\\"],null],[28,[37,19],[[30,0,[\\\"question\\\",\\\"itemLabelFormat\\\"]],\\\"firstName surname name\\\"],null],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"displayOnly\\\"]],true,[30,0,[\\\"questionIsRequired\\\"]],[28,[37,19],[[30,0,[\\\"question\\\",\\\"itemName\\\"]],\\\"item\\\"],null],[30,0,[\\\"question\\\",\\\"itemNamePluralNoun\\\"]],[30,0,[\\\"headerLabelComputed\\\"]],[30,0,[\\\"question\\\",\\\"hideSelect\\\"]],[30,0,[\\\"filterType\\\"]],[30,0,[\\\"filterList\\\"]],[30,0,[\\\"question\\\",\\\"notSureOption\\\"]],[30,0,[\\\"question\\\",\\\"notSureOptionText\\\"]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[28,[37,24],[[30,0,[\\\"variableStorageName\\\"]],\\\"-notsure\\\"],null]],null]],null],[30,0,[\\\"model\\\"]],[30,0,[\\\"question\\\",\\\"allowPeople\\\"]],[30,0,[\\\"question\\\",\\\"allowCorporations\\\"]],[30,0,[\\\"editMode\\\"]],[30,0,[\\\"question\\\",\\\"setAsPrimaryContact\\\"]],[30,0,[\\\"question\\\",\\\"allowDeceased\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]],[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[28,[37,30],[[30,0],\\\"changed\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"question\\\",\\\"customContentFirst\\\"]]],[[[1,\\\"                  \\\"],[8,[39,67],null,[[\\\"@item\\\",\\\"@editingExistingItem\\\",\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\",\\\"@filterList\\\",\\\"@filterType\\\"],[[30,50],[30,51],[30,0,[\\\"question\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"highlightRequiredFields\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"filterList\\\"]],[30,0,[\\\"filterType\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"                  \\\"],[8,[39,12],null,[[\\\"@question\\\",\\\"@displayOnly\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@model\\\",\\\"@filterListOverride\\\",\\\"@filterTypeOverride\\\",\\\"@adminMode\\\",\\\"@highlightRequiredFields\\\"],[[30,52],[30,0,[\\\"displayOnly\\\"]],[28,[37,68],[[30,0,[\\\"context\\\"]]],[[\\\"editingExistingItem\\\"],[[30,51]]]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[30,50],[30,52,[\\\"filterList\\\"]],[30,52,[\\\"filterType\\\"]],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"highlightRequiredFields\\\"]]]],null],[1,\\\"\\\\n\\\"]],[52]],null],[41,[30,0,[\\\"question\\\",\\\"customContentFirst\\\"]],[[[1,\\\"                  \\\"],[8,[39,67],null,[[\\\"@item\\\",\\\"@editingExistingItem\\\",\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@highlightRequiredFields\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\",\\\"@filterList\\\",\\\"@filterType\\\"],[[30,50],[30,51],[30,0,[\\\"question\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"highlightRequiredFields\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"filterList\\\"]],[30,0,[\\\"filterType\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"]],[50,51]]]]],[1,\\\"\\\\n            \\\"]],[]],null]],[]]]],[]]]],[]]]],[]],[[[41,[28,[37,19],[[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"select\\\"],null],[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"title\\\"],null]],null],[[[1,\\\"            \\\"],[8,[39,53],null,[[\\\"@model\\\",\\\"@onChange\\\"],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],[28,[37,30],[[30,0],\\\"changed\\\",[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null]]],null],[1,\\\"\\\\n            \\\"],[8,[39,70],null,[[\\\"@model\\\",\\\"@displayOnly\\\",\\\"@content\\\",\\\"@labelPath\\\",\\\"@valuePath\\\",\\\"@label\\\",\\\"@headerLabel\\\",\\\"@helpText\\\",\\\"@clientRecord\\\",\\\"@prompt\\\",\\\"@required\\\",\\\"@highlightRequiredFields\\\",\\\"@context\\\"],[[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"displayOnly\\\"]],[52,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"title\\\"],null],[30,0,[\\\"titleSelectOptions\\\"]],[30,0,[\\\"selectOptions\\\"]]],[28,[37,19],[[30,0,[\\\"question\\\",\\\"labelPath\\\"]],\\\"title\\\"],null],[28,[37,19],[[30,0,[\\\"question\\\",\\\"valuePath\\\"]],\\\"id\\\"],null],[28,[37,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"headerLabelComputed\\\"]],[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\"]],[28,[37,19],[[28,[37,8],[[30,0,[\\\"question\\\",\\\"prompt\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],\\\"--select--\\\"],null],[30,0,[\\\"questionIsRequired\\\"]],[30,0,[\\\"highlightRequiredFields\\\"]],[30,0,[\\\"context\\\"]]]],null],[1,\\\"\\\\n\\\"],[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"options\\\"]]],null]],null],null,[[[1,\\\"              \\\"],[8,[39,13],null,[[\\\"@documents\\\",\\\"@showDocument\\\",\\\"@model\\\",\\\"@notSureButton\\\",\\\"@displayOnly\\\",\\\"@displayInline\\\",\\\"@objectID\\\",\\\"@context\\\",\\\"@clientID\\\",\\\"@questionID\\\",\\\"@client\\\",\\\"@adminMode\\\"],[[30,53,[\\\"documentsRequired\\\"]],[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],[30,53,[\\\"id\\\"]]],null],[30,0,[\\\"model\\\"]],[30,0,[\\\"notSureButton\\\"]],[30,0,[\\\"displayOnly\\\"]],true,[30,0,[\\\"model\\\",\\\"id\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"clientID\\\"]],[30,0,[\\\"variableStorageName\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"displayOnly\\\"]]],[[[1,\\\"                \\\"],[8,[39,28],null,[[\\\"@predicate\\\"],[[28,[37,33],[[30,53,[\\\"feedback\\\"]],[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],[30,53,[\\\"id\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  \\\"],[10,2],[14,0,\\\"feedback-paragraph\\\"],[12],[1,\\\"\\\\n                    \\\"],[1,[28,[35,8],[[30,53,[\\\"feedback\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[8,[39,28],null,[[\\\"@predicate\\\"],[[28,[37,33],[[30,0,[\\\"adminMode\\\"]],[30,53,[\\\"feedbackToLawyer\\\"]],[28,[37,2],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null],[30,53,[\\\"id\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,2],[14,0,\\\"lawyer-feedback-paragraph\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-lightbulb-on tight\\\"],[12],[13],[1,\\\"\\\\n                  \\\"],[1,[28,[35,8],[[30,53,[\\\"feedbackToLawyer\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[53]],null]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"grid\\\"],null],[[[1,\\\"            \\\"],[8,[39,20],null,[[\\\"@model\\\",\\\"@sourceList\\\",\\\"@displayOnly\\\",\\\"@columns\\\",\\\"@showColumnHeaders\\\",\\\"@startingRows\\\",\\\"@hideAddRowButton\\\",\\\"@itemName\\\",\\\"@context\\\",\\\"@helpText\\\",\\\"@label\\\",\\\"@clientRecord\\\",\\\"@onChange\\\",\\\"@stylingClasses\\\"],[[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"question\\\",\\\"sourceListIDs\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"question\\\",\\\"columns\\\"]],[30,0,[\\\"question\\\",\\\"showColumnHeaders\\\"]],[30,0,[\\\"question\\\",\\\"startingRows\\\"]],[30,0,[\\\"question\\\",\\\"hideAddRowButton\\\"]],[30,0,[\\\"question\\\",\\\"itemName\\\"]],[30,0,[\\\"context\\\"]],[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[28,[37,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\"]],[28,[37,30],[[30,0],\\\"changed\\\"],null],[30,0,[\\\"stylingClasses\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"checkboxlist\\\"],null],[[[1,\\\"            \\\"],[8,[39,25],null,[[\\\"@sourceList\\\",\\\"@displayOnly\\\",\\\"@content\\\",\\\"@checkboxProperty\\\",\\\"@required\\\",\\\"@context\\\",\\\"@itemLabelFormat\\\",\\\"@helpText\\\",\\\"@label\\\",\\\"@clientRecord\\\",\\\"@onChange\\\"],[[28,[37,19],[[30,0,[\\\"question\\\",\\\"sourceListIDs\\\"]],[30,0,[\\\"clientRecord\\\",\\\"knownEntities\\\"]]],null],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"question\\\",\\\"content\\\"]],[30,0,[\\\"question\\\",\\\"id\\\"]],[30,0,[\\\"questionIsRequired\\\"]],[30,0,[\\\"context\\\"]],[28,[37,19],[[30,0,[\\\"question\\\",\\\"itemLabelFormat\\\"]],\\\"firstName surname name\\\"],null],[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[28,[37,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"clientRecord\\\"]],[28,[37,30],[[30,0],\\\"changed\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"block\\\"],null],[[[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"question\\\",\\\"content\\\"]]],null]],null],null,[[[1,\\\"              \\\"],[8,[39,12],null,[[\\\"@question\\\",\\\"@context\\\",\\\"@clientRecord\\\",\\\"@practiceAreaSettings\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\",\\\"@highlightRequiredFields\\\"],[[30,54],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"practiceAreaSettings\\\"]],[30,0,[\\\"model\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"highlightRequiredFields\\\"]]]],null],[1,\\\"\\\\n\\\"]],[54]],null]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"docupload\\\"],null],[[],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"hiddenCalculatedField\\\"],null],[[[1,\\\"            \\\"],[8,[39,71],null,[[\\\"@content\\\",\\\"@clientRecord\\\",\\\"@localAnswers\\\",\\\"@model\\\",\\\"@context\\\",\\\"@touch\\\",\\\"@onChange\\\"],[[30,0,[\\\"question\\\",\\\"content\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"model\\\"]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[28,[37,30],[[30,0],\\\"changed\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"guessclient\\\"],null],[[[1,\\\"            \\\"],[8,[39,72],null,[[\\\"@highlightRequiredFields\\\",\\\"@content\\\",\\\"@clientRecord\\\",\\\"@model\\\",\\\"@context\\\",\\\"@displayOnly\\\"],[[30,0,[\\\"highlightRequiredFields\\\"]],[30,0,[\\\"question\\\",\\\"content\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"model\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"displayOnly\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"summaryTable\\\"],null],[[[1,\\\"            \\\"],[8,[39,73],null,[[\\\"@question\\\",\\\"@clientRecord\\\",\\\"@context\\\",\\\"@label\\\",\\\"@helpText\\\"],[[30,0,[\\\"question\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[28,[37,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"documentsRequiredList\\\"],null],[[[1,\\\"            \\\"],[8,[39,74],null,[[\\\"@client\\\",\\\"@class\\\",\\\"@label\\\",\\\"@induction\\\",\\\"@displayOnly\\\",\\\"@adminMode\\\",\\\"@helpText\\\",\\\"@filterList\\\",\\\"@filterType\\\"],[[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"stylingClasses\\\"]],[30,0,[\\\"labelToDisplay\\\"]],[30,0,[\\\"context\\\",\\\"induction\\\"]],true,[30,0,[\\\"adminMode\\\"]],[28,[37,8],[[30,0,[\\\"question\\\",\\\"helpText\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[30,0,[\\\"question\\\",\\\"filterList\\\"]],[30,0,[\\\"question\\\",\\\"filterType\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"divider\\\"],null],[[[1,\\\"            \\\"],[10,\\\"hr\\\"],[15,0,[29,[\\\"input-divider \\\",[52,[30,0,[\\\"question\\\",\\\"whitespace\\\"]],\\\"whitespace\\\"],[52,[30,0,[\\\"question\\\",\\\"border\\\"]],\\\"border\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,0,[\\\"question\\\",\\\"type\\\"]],\\\"unitsPer\\\"],null],[[[1,\\\"            \\\"],[8,[39,76],null,[[\\\"@label\\\",\\\"@unitsPer\\\",\\\"@timePeriod\\\",\\\"@displayOnly\\\",\\\"@onChange\\\",\\\"@unitType\\\",\\\"@timePeriodOptions\\\"],[[28,[37,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[28,[37,24],[[30,0,[\\\"variableStorageName\\\"]],\\\"unitsPer\\\"],null]],null]],null],[28,[37,27],[[28,[37,22],[[30,0,[\\\"model\\\"]],[28,[37,24],[[30,0,[\\\"variableStorageName\\\"]],\\\"timePeriod\\\"],null]],null]],null],[30,0,[\\\"displayOnly\\\"]],[28,[37,30],[[30,0],\\\"changed\\\"],null],[30,0,[\\\"question\\\",\\\"unitType\\\"]],[30,0,[\\\"question\\\",\\\"timePeriodOptions\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"            \\\"],[1,[28,[35,8],[[30,0,[\\\"labelToDisplay\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n            \\\"],[10,\\\"small\\\"],[12],[10,\\\"code\\\"],[12],[1,\\\"(a \\\"],[1,[30,0,[\\\"question\\\",\\\"type\\\"]]],[1,\\\" input)\\\"],[13],[13],[1,\\\"\\\\n          \\\"]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]],[1,\\\"          \\\"],[18,55,null],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"question\\\",\\\"documentsRequired\\\"]],[[[1,\\\"            \\\"],[8,[39,13],null,[[\\\"@documents\\\",\\\"@questionType\\\",\\\"@showDocument\\\",\\\"@model\\\",\\\"@displayOnly\\\",\\\"@notSureButton\\\",\\\"@objectID\\\",\\\"@context\\\",\\\"@clientID\\\",\\\"@questionID\\\",\\\"@client\\\",\\\"@displayInline\\\",\\\"@labelToDisplay\\\",\\\"@adminMode\\\"],[[30,0,[\\\"question\\\",\\\"documentsRequired\\\"]],[30,0,[\\\"question\\\",\\\"type\\\"]],true,[30,0,[\\\"model\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"notSureButton\\\"]],[30,0,[\\\"model\\\",\\\"id\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"clientID\\\"]],[30,0,[\\\"variableStorageName\\\"]],[30,0,[\\\"clientRecord\\\"]],true,[30,0,[\\\"labelToDisplay\\\"]],[30,0,[\\\"adminMode\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,33],[[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"question\\\",\\\"feedbackToLawyer\\\"]],[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null],[[[1,\\\"            \\\"],[10,2],[14,0,\\\"lawyer-feedback-paragraph\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-lightbulb-on tight\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[1,[28,[35,8],[[30,0,[\\\"question\\\",\\\"feedbackToLawyer\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,33],[[30,0,[\\\"adminMode\\\"]],[30,0,[\\\"question\\\",\\\"feedbackToLawyerIfNotProvided\\\"]],[28,[37,34],[[28,[37,22],[[30,0,[\\\"model\\\"]],[30,0,[\\\"variableStorageName\\\"]]],null]],null]],null],[[[1,\\\"            \\\"],[10,2],[14,0,\\\"lawyer-feedback-paragraph\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-lightbulb-on tight\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[1,[28,[35,8],[[30,0,[\\\"question\\\",\\\"feedbackToLawyerIfNotProvided\\\"]]],[[\\\"model\\\",\\\"touch\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]],null]],[]]],[41,[30,0,[\\\"showAnswerToggles\\\"]],[[[1,\\\"            \\\"],[8,[39,80],null,[[\\\"@question\\\",\\\"@context\\\",\\\"@toggleAnswer\\\",\\\"@toggleSummaryEditor\\\"],[[30,0,[\\\"question\\\"]],[30,0,[\\\"context\\\"]],[28,[37,30],[[30,0],\\\"toggleAnswer\\\"],null],[28,[37,30],[[30,0],\\\"toggleSummaryEditor\\\"],null]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,81],null,[[\\\"@question\\\",\\\"@showAnswerToggles\\\",\\\"@removeTitle\\\",\\\"@toggleIconType\\\"],[[30,0,[\\\"question\\\"]],[30,0,[\\\"showAnswerToggles\\\"]],[28,[37,30],[[30,0],\\\"removeTitle\\\"],null],[28,[37,30],[[30,0],\\\"toggleIconType\\\"],null]]],null],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]]],[]]]],[\\\"c\\\",\\\"option\\\",\\\"value\\\",\\\"key\\\",\\\"item\\\",\\\"item\\\",\\\"option\\\",\\\"option\\\",\\\"personID\\\",\\\"content\\\",\\\"content\\\",\\\"item\\\",\\\"content\\\",\\\"item\\\",\\\"index\\\",\\\"c\\\",\\\"content\\\",\\\"office\\\",\\\"option\\\",\\\"option\\\",\\\"option\\\",\\\"item\\\",\\\"editingExistingItem\\\",\\\"option\\\",\\\"option\\\",\\\"item\\\",\\\"c\\\",\\\"item\\\",\\\"index\\\",\\\"c\\\",\\\"item\\\",\\\"c\\\",\\\"item\\\",\\\"c\\\",\\\"item\\\",\\\"index\\\",\\\"c\\\",\\\"item\\\",\\\"editingExistingItem\\\",\\\"c\\\",\\\"item\\\",\\\"editingExistingItem\\\",\\\"c\\\",\\\"item\\\",\\\"editingExistingItem\\\",\\\"c\\\",\\\"item\\\",\\\"editingExistingItem\\\",\\\"c\\\",\\\"item\\\",\\\"editingExistingItem\\\",\\\"c\\\",\\\"option\\\",\\\"c\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"eq\\\",\\\"defined\\\",\\\"span\\\",\\\"i\\\",\\\"p\\\",\\\"b\\\",\\\"parse-text\\\",\\\"h2\\\",\\\"each\\\",\\\"-track-array\\\",\\\"settify-input-switcher\\\",\\\"documents-required-feedback\\\",\\\"ul\\\",\\\"unless\\\",\\\"li\\\",\\\"-each-in\\\",\\\"sentence-case\\\",\\\"or\\\",\\\"settify-grid-input\\\",\\\"should-display\\\",\\\"get\\\",\\\"get-answers-from\\\",\\\"sum\\\",\\\"check-box-list\\\",\\\"settify-immutable-list\\\",\\\"mut\\\",\\\"liquid-if\\\",\\\"settify-textline\\\",\\\"action\\\",\\\"settify-textarea\\\",\\\"gt\\\",\\\"and\\\",\\\"not\\\",\\\"help-text-icon\\\",\\\"radio-buttons\\\",\\\"address-string\\\",\\\"postal-address-select\\\",\\\"settify-name-input\\\",\\\"settify-date-input\\\",\\\"settify-number\\\",\\\"confidence-slider\\\",\\\"settify-phonenumber\\\",\\\"settify-email-input\\\",\\\"settify-input-button\\\",\\\"chapter-animation\\\",\\\"line-icon\\\",\\\"de-fingerprint\\\",\\\"a\\\",\\\"settify-input-slider\\\",\\\"multi-radio-buttons\\\",\\\"required-field\\\",\\\"monitor-changes\\\",\\\"br\\\",\\\"no-information\\\",\\\"yesnomaybe-icon\\\",\\\"select-or-create-singular\\\",\\\"check-box\\\",\\\"possible-colon\\\",\\\"tabbed-list\\\",\\\"free-list\\\",\\\"family-tree-probate\\\",\\\"get-known-entity\\\",\\\"concat\\\",\\\"family-tree\\\",\\\"select-or-create-legacy\\\",\\\"select-or-create-switcher-presets\\\",\\\"augment-hash\\\",\\\"select-or-create-multiple\\\",\\\"settify-select\\\",\\\"settify-hidden-calculated-field\\\",\\\"settify-guess-client-input\\\",\\\"settify-summary-table\\\",\\\"documents-required-list\\\",\\\"hr\\\",\\\"units-per\\\",\\\"small\\\",\\\"code\\\",\\\"yield\\\",\\\"admin/summary-editor-buttons\\\",\\\"admin/summary-editor\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/settify-input-switcher.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/settify-name-input\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.displayOnly}}\n    {{this.label}}{{yield}}\n    <div class=\"readonly-textarea settify-sensitive\">\n      {{#if this.name}}\n        {{#if this.practiceAreaSettings.settings.induction.allowGender}}\n          {{#if this.allowGenderPronouns}}\n            <div class=\"letterCircle smallCircle\" title={{this.genderType}}>{{this.genderLetter}}</div>\n          {{else}}\n            <img class=\"gendered-icon-summary\" src={{this.genderIconUrl}} alt=\"{{this.gender}} icon\" />\n          {{/if}}\n        {{/if}}\n        {{this.name}}\n        {{#if this.pronouns}}\n          ({{this.pronouns}})\n        {{/if}}\n      {{else if (and this.displayPlaceholderInSummary this.placeholder)}}\n        {{this.placeholder}}\n      {{else}}\n        <NoInformation />\n        {{#if this.required}}\n          <RequiredField />\n        {{/if}}\n      {{/if}}\n      <br />\n    </div>\n  {{else}}\n    <table class=\"gendered-name-input\" data-test-name-input>\n      <tbody>\n        <tr>\n          <td>\n            <SettifyTextline\n              @label={{this.label}}\n              @model={{this.name}}\n              @placeholder={{this.placeholder}}\n              @required={{this.required}}\n              @headerLabel={{this.headerLabel}}\n              @helpText={{this.helpText}}\n              @class=\"settify-sensitive\"\n              @onChange={{this.onChange}}\n              @autoComplete={{this.autoComplete}}\n            >{{yield}}</SettifyTextline>\n          </td>\n          {{#if this.practiceAreaSettings.settings.induction.allowGender}}\n            <td>\n              {{#if this.allowGenderPronouns}}\n                <div class=\"letterCircle clickable\" {{action \"toggleGender\"}} title=\"{{this.genderType}} (click to change)\">{{this.genderLetter}}</div>\n              {{else}}\n                {{#if this.gender}}\n                  <img class=\"clickable\" src={{this.genderIconUrl}} {{action \"toggleGender\"}} alt=\"Click to change\" />\n                {{else if (and this.name (not this.justUpdated) this.practiceAreaSettings.settings.induction.allowGenderGuess)}}\n                  <img class=\"fade-in-out-repeat\" title=\"Loading...\" src=\"/assets/images/bullet-point-icon.png\" alt=\"Loading animation\" />\n                {{/if}}\n              {{/if}}\n            </td>\n          {{/if}}\n        </tr>\n      </tbody>\n    </table>\n  \n    <LiquidIf @predicate={{this.showGenderAndPronounText}}>\n      {{#if\n        (or\n          (eq this.gender \"unsure\")\n          (and (not this.gender) this.name this.practiceAreaSettings.settings.induction.allowGender (not this.practiceAreaSettings.settings.induction.allowGenderGuess))\n        )\n      }}\n        <small data-test-gender-query>\n          Is {{this.name}}\n          <a class=\"clickable\" {{action \"setGender\" \"male\"}}>male</a>,\n          <a class=\"clickable\" {{action \"setGender\" \"female\"}}>female</a>, or\n          <a class=\"clickable\" {{action \"removeGender\"}}>{{if this.allowGenderPronouns \"non-binary\" \"unspecified\"}}</a>?\n        </small>\n      {{else if this.justUpdated}}\n        <small class=\"gender-guess\" data-test-gender-query>\n          We guessed that <span class=\"settify-sensitive\">{{this.name}}</span> is {{this.gender}}. (Change to\n          {{#if (eq this.gender \"male\")}}\n            <a class=\"clickable\" {{action \"setGender\" \"female\"}}>female</a>,\n          {{else}}\n            <a class=\"clickable\" {{action \"setGender\" \"male\"}}>male</a>,\n          {{/if}}\n          <a class=\"clickable\" {{action \"removeGender\"}}>unspecified</a>)\n        </small>\n      {{/if}}\n  \n      <LiquidIf @predicate={{and this.name this.allowGenderPronouns}}>\n        {{#if this.practiceAreaSettings.settings.induction.allowGender}}\n          <a class=\"clickable small\" {{action \"togglePronounSelect\"}}>\n            Click here to {{if this.showPronounOptions \"remove\" \"add\"}} pronouns\n          </a>\n        {{else}}\n          <small>\n            What pronouns does {{this.name}} use?\n          </small>\n        {{/if}}\n        <LiquidIf @predicate={{and this.showPronounOptions this.name}}>\n          <div class=\"small\">\n            <RadioButtons @text=\"he/him\" @value=\"he/him\" @model={{this.selectedPronoun}} />\n            <RadioButtons @text=\"she/her\" @value=\"she/her\" @model={{this.selectedPronoun}} />\n            <RadioButtons @text=\"they/them\" @value=\"they/them\" @model={{this.selectedPronoun}} />\n            <RadioButtons @text=\"another\" @value=\"another\" @model={{this.selectedPronoun}} />\n            <LiquidIf @predicate={{eq this.selectedPronoun \"another\"}}>\n              <SettifyTextline @model={{this.pronouns}} @placeholder=\"xe/xem\" />\n            </LiquidIf>\n          </div>\n        </LiquidIf>\n      </LiquidIf>\n    </LiquidIf>\n  {{/if}}\n  */\n  {\n    \"id\": \"1oayAC3V\",\n    \"block\": \"[[[41,[30,0,[\\\"displayOnly\\\"]],[[[1,\\\"  \\\"],[1,[30,0,[\\\"label\\\"]]],[18,1,null],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"readonly-textarea settify-sensitive\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"name\\\"]],[[[41,[30,0,[\\\"practiceAreaSettings\\\",\\\"settings\\\",\\\"induction\\\",\\\"allowGender\\\"]],[[[41,[30,0,[\\\"allowGenderPronouns\\\"]],[[[1,\\\"          \\\"],[10,0],[14,0,\\\"letterCircle smallCircle\\\"],[15,\\\"title\\\",[30,0,[\\\"genderType\\\"]]],[12],[1,[30,0,[\\\"genderLetter\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[10,\\\"img\\\"],[14,0,\\\"gendered-icon-summary\\\"],[15,\\\"src\\\",[30,0,[\\\"genderIconUrl\\\"]]],[15,\\\"alt\\\",[29,[[30,0,[\\\"gender\\\"]],\\\" icon\\\"]]],[12],[13],[1,\\\"\\\\n\\\"]],[]]]],[]],null],[1,\\\"      \\\"],[1,[30,0,[\\\"name\\\"]]],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"pronouns\\\"]],[[[1,\\\"        (\\\"],[1,[30,0,[\\\"pronouns\\\"]]],[1,\\\")\\\\n\\\"]],[]],null]],[]],[[[41,[28,[37,4],[[30,0,[\\\"displayPlaceholderInSummary\\\"]],[30,0,[\\\"placeholder\\\"]]],null],[[[1,\\\"      \\\"],[1,[30,0,[\\\"placeholder\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[39,5],null,null,null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"required\\\"]],[[[1,\\\"        \\\"],[8,[39,6],null,null,null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"]],[]]]],[]]],[1,\\\"    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"  \\\"],[10,\\\"table\\\"],[14,0,\\\"gendered-name-input\\\"],[14,\\\"data-test-name-input\\\",\\\"\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,12],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@placeholder\\\",\\\"@required\\\",\\\"@headerLabel\\\",\\\"@helpText\\\",\\\"@class\\\",\\\"@onChange\\\",\\\"@autoComplete\\\"],[[30,0,[\\\"label\\\"]],[30,0,[\\\"name\\\"]],[30,0,[\\\"placeholder\\\"]],[30,0,[\\\"required\\\"]],[30,0,[\\\"headerLabel\\\"]],[30,0,[\\\"helpText\\\"]],\\\"settify-sensitive\\\",[30,0,[\\\"onChange\\\"]],[30,0,[\\\"autoComplete\\\"]]]],[[\\\"default\\\"],[[[[18,1,null]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"practiceAreaSettings\\\",\\\"settings\\\",\\\"induction\\\",\\\"allowGender\\\"]],[[[1,\\\"          \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"allowGenderPronouns\\\"]],[[[1,\\\"              \\\"],[11,0],[24,0,\\\"letterCircle clickable\\\"],[16,\\\"title\\\",[29,[[30,0,[\\\"genderType\\\"]],\\\" (click to change)\\\"]]],[4,[38,13],[[30,0],\\\"toggleGender\\\"],null],[12],[1,[30,0,[\\\"genderLetter\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"gender\\\"]],[[[1,\\\"                \\\"],[11,\\\"img\\\"],[24,0,\\\"clickable\\\"],[16,\\\"src\\\",[30,0,[\\\"genderIconUrl\\\"]]],[24,\\\"alt\\\",\\\"Click to change\\\"],[4,[38,13],[[30,0],\\\"toggleGender\\\"],null],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,4],[[30,0,[\\\"name\\\"]],[28,[37,14],[[30,0,[\\\"justUpdated\\\"]]],null],[30,0,[\\\"practiceAreaSettings\\\",\\\"settings\\\",\\\"induction\\\",\\\"allowGenderGuess\\\"]]],null],[[[1,\\\"                \\\"],[10,\\\"img\\\"],[14,0,\\\"fade-in-out-repeat\\\"],[14,\\\"title\\\",\\\"Loading...\\\"],[14,\\\"src\\\",\\\"/assets/images/bullet-point-icon.png\\\"],[14,\\\"alt\\\",\\\"Loading animation\\\"],[12],[13],[1,\\\"\\\\n              \\\"]],[]],null]],[]]]],[]]],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[8,[39,15],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showGenderAndPronounText\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[28,[37,16],[[28,[37,17],[[30,0,[\\\"gender\\\"]],\\\"unsure\\\"],null],[28,[37,4],[[28,[37,14],[[30,0,[\\\"gender\\\"]]],null],[30,0,[\\\"name\\\"]],[30,0,[\\\"practiceAreaSettings\\\",\\\"settings\\\",\\\"induction\\\",\\\"allowGender\\\"]],[28,[37,14],[[30,0,[\\\"practiceAreaSettings\\\",\\\"settings\\\",\\\"induction\\\",\\\"allowGenderGuess\\\"]]],null]],null]],null],[[[1,\\\"      \\\"],[10,\\\"small\\\"],[14,\\\"data-test-gender-query\\\",\\\"\\\"],[12],[1,\\\"\\\\n        Is \\\"],[1,[30,0,[\\\"name\\\"]]],[1,\\\"\\\\n        \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,13],[[30,0],\\\"setGender\\\",\\\"male\\\"],null],[12],[1,\\\"male\\\"],[13],[1,\\\",\\\\n        \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,13],[[30,0],\\\"setGender\\\",\\\"female\\\"],null],[12],[1,\\\"female\\\"],[13],[1,\\\", or\\\\n        \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,13],[[30,0],\\\"removeGender\\\"],null],[12],[1,[52,[30,0,[\\\"allowGenderPronouns\\\"]],\\\"non-binary\\\",\\\"unspecified\\\"]],[13],[1,\\\"?\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"justUpdated\\\"]],[[[1,\\\"      \\\"],[10,\\\"small\\\"],[14,0,\\\"gender-guess\\\"],[14,\\\"data-test-gender-query\\\",\\\"\\\"],[12],[1,\\\"\\\\n        We guessed that \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"name\\\"]]],[13],[1,\\\" is \\\"],[1,[30,0,[\\\"gender\\\"]]],[1,\\\". (Change to\\\\n\\\"],[41,[28,[37,17],[[30,0,[\\\"gender\\\"]],\\\"male\\\"],null],[[[1,\\\"          \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,13],[[30,0],\\\"setGender\\\",\\\"female\\\"],null],[12],[1,\\\"female\\\"],[13],[1,\\\",\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,13],[[30,0],\\\"setGender\\\",\\\"male\\\"],null],[12],[1,\\\"male\\\"],[13],[1,\\\",\\\\n\\\"]],[]]],[1,\\\"        \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,13],[[30,0],\\\"removeGender\\\"],null],[12],[1,\\\"unspecified\\\"],[13],[1,\\\")\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]],null]],[]]],[1,\\\"\\\\n    \\\"],[8,[39,15],null,[[\\\"@predicate\\\"],[[28,[37,4],[[30,0,[\\\"name\\\"]],[30,0,[\\\"allowGenderPronouns\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"practiceAreaSettings\\\",\\\"settings\\\",\\\"induction\\\",\\\"allowGender\\\"]],[[[1,\\\"        \\\"],[11,3],[24,0,\\\"clickable small\\\"],[4,[38,13],[[30,0],\\\"togglePronounSelect\\\"],null],[12],[1,\\\"\\\\n          Click here to \\\"],[1,[52,[30,0,[\\\"showPronounOptions\\\"]],\\\"remove\\\",\\\"add\\\"]],[1,\\\" pronouns\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n          What pronouns does \\\"],[1,[30,0,[\\\"name\\\"]]],[1,\\\" use?\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"      \\\"],[8,[39,15],null,[[\\\"@predicate\\\"],[[28,[37,4],[[30,0,[\\\"showPronounOptions\\\"]],[30,0,[\\\"name\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"small\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,21],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\"],[\\\"he/him\\\",\\\"he/him\\\",[30,0,[\\\"selectedPronoun\\\"]]]],null],[1,\\\"\\\\n          \\\"],[8,[39,21],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\"],[\\\"she/her\\\",\\\"she/her\\\",[30,0,[\\\"selectedPronoun\\\"]]]],null],[1,\\\"\\\\n          \\\"],[8,[39,21],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\"],[\\\"they/them\\\",\\\"they/them\\\",[30,0,[\\\"selectedPronoun\\\"]]]],null],[1,\\\"\\\\n          \\\"],[8,[39,21],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\"],[\\\"another\\\",\\\"another\\\",[30,0,[\\\"selectedPronoun\\\"]]]],null],[1,\\\"\\\\n          \\\"],[8,[39,15],null,[[\\\"@predicate\\\"],[[28,[37,17],[[30,0,[\\\"selectedPronoun\\\"]],\\\"another\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,12],null,[[\\\"@model\\\",\\\"@placeholder\\\"],[[30,0,[\\\"pronouns\\\"]],\\\"xe/xem\\\"]],null],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]],[\\\"&default\\\"],false,[\\\"if\\\",\\\"yield\\\",\\\"div\\\",\\\"img\\\",\\\"and\\\",\\\"no-information\\\",\\\"required-field\\\",\\\"br\\\",\\\"table\\\",\\\"tbody\\\",\\\"tr\\\",\\\"td\\\",\\\"settify-textline\\\",\\\"action\\\",\\\"not\\\",\\\"liquid-if\\\",\\\"or\\\",\\\"eq\\\",\\\"small\\\",\\\"a\\\",\\\"span\\\",\\\"radio-buttons\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/settify-name-input.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/settify-number\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.displayOnly}}\n    {{this.label}}{{yield}}\n    <div class=\"readonly-textarea\">\n      {{#if (defined this.model)}}\n        {{#if this.nocommas}}\n          {{this.model}}\n        {{else}}\n          {{format-number this.model money=this.money}}\n        {{/if}}\n      {{else}}\n        <NoInformation />\n        {{#if this.required}}\n          <RequiredField />\n        {{/if}}\n      {{/if}}\n    </div>\n  {{else}}\n    {{#if this.headerLabel}}\n      {{! headerLabel will place either label or yield on top of input rather than within}}\n      {{#if (non-empty-string this.label)}}\n        {{this.label}}\n      {{else if (has-block)}}\n        {{yield}}\n      {{/if}}\n      {{#if this.required}}\n        <span class=\"required-field-marker {{if this.inputEntered 'required-field-provided'}}\"></span>\n      {{/if}}\n      <HelpTextIcon @helpText={{this.helpText}} @displayOnly={{this.displayOnly}} @lawyerName={{this.clientRecord.helpTextIconLawyerName}} />\n    {{/if}}\n    <LiquidIf @predicate={{or (not this.notSureModel) this.notSureOptionDoesNotHideComponent}}>\n      <div class=\"settify-input settify-sensitive\">\n        {{#if this.nocommas}}\n          <Input\n            @value={{this.model}}\n            name={{or this.name this.label this.placeholder}}\n            placeholder=\"\"\n            @type=\"number\"\n            disabled={{this.disabled}}\n            readonly={{this.readonly}}\n            class=\"form-control {{if (or (not this.required) this.model) 'not_highlighted'}}\"\n            maxlength={{256}}\n            min={{this.min}}\n            max={{this.max}}\n            autocomplete={{this.autoCompleteValue}}\n            {{on \"change\" (action \"valueChanged\")}}\n          />\n        {{else}}\n          <FormattedNumber\n            @realValue={{this.model}}\n            @placeholder=\"\"\n            @class={{sum \"form-control \" this.class}}\n            @money={{this.money}}\n            @min={{this.min}}\n            @max={{this.max}}\n            @maxlength={{20}}\n            @parentObject={{this.parentObject}}\n            @displayWarning={{this.displayWarning}}\n            @rangeWarningSuggestion={{this.rangeWarningSuggestion}}\n            @suggestedMillionsThreshold={{this.suggestedMillionsThreshold}}\n            @suggestedThousandsThreshold={{this.suggestedThousandsThreshold}}\n            @tabindex={{this.tabindex}}\n          />\n        {{/if}}\n        <label class=\"settify-input-label {{if this.inputEntered 'valid'}} \">\n          {{#if (and this.label (not this.headerLabel))}}\n            {{this.label}}\n          {{else if (and (has-block) (not this.headerLabel))}}\n            {{yield}}\n          {{else if this.placeholder}}\n            <span class={{if (and this.inputEntered (not this.required) (not this.preventFading)) \"fade\"}}>{{this.placeholder}}</span>\n          {{/if}}\n  \n          {{#if (and this.required (not this.headerLabel))}}\n            <span class=\"required-field-marker {{if this.inputEntered 'required-field-provided'}}\"></span>\n          {{/if}}\n  \n          {{#if (and this.placeholder (or this.label (has-block)) (not this.headerLabel))}}\n            <span class=\"placeholder {{if this.inputEntered 'fade'}}\">{{this.placeholder}}</span>\n          {{/if}}\n        </label>\n        <span class=\"settify-input-line\"></span>\n      </div>\n      {{#if this.displayWarning}}\n        <small class=\"negative\">That doesn't look like a number</small>\n      {{/if}}\n      {{#if this.rangeWarningSuggestion}}\n        <p class=\"negative\">\n          Are you sure you meant\n          {{format-number this.model money=this.money}}? If you meant\n          {{format-number this.rangeWarningSuggestion money=this.money}}, just add the extra zeros or\n          <a class=\"clickable\" {{action \"chooseRangeWarningSuggestion\"}}>click here and we'll add them for you</a>.\n        </p>\n      {{/if}}\n    </LiquidIf>\n    <LiquidIf @predicate={{and this.notSureOption (not (defined this.model))}}>\n      <CheckBox @text={{or this.notSureOptionText \"I'm not sure\"}} @model={{this.notSureModel}} @onChange={{this.onChange}} />\n    </LiquidIf>\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"8YvA2sbz\",\n    \"block\": \"[[[41,[30,0,[\\\"displayOnly\\\"]],[[[1,\\\"  \\\"],[1,[30,0,[\\\"label\\\"]]],[18,1,null],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"readonly-textarea\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,3],[[30,0,[\\\"model\\\"]]],null],[[[41,[30,0,[\\\"nocommas\\\"]],[[[1,\\\"        \\\"],[1,[30,0,[\\\"model\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[1,[28,[35,4],[[30,0,[\\\"model\\\"]]],[[\\\"money\\\"],[[30,0,[\\\"money\\\"]]]]]],[1,\\\"\\\\n\\\"]],[]]]],[]],[[[1,\\\"      \\\"],[8,[39,5],null,null,null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"required\\\"]],[[[1,\\\"        \\\"],[8,[39,6],null,null,null],[1,\\\"\\\\n\\\"]],[]],null]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"headerLabel\\\"]],[[[41,[28,[37,7],[[30,0,[\\\"label\\\"]]],null],[[[1,\\\"      \\\"],[1,[30,0,[\\\"label\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[48,[30,1]],[[[1,\\\"      \\\"],[18,1,null],[1,\\\"\\\\n    \\\"]],[]],null]],[]]],[41,[30,0,[\\\"required\\\"]],[[[1,\\\"      \\\"],[10,1],[15,0,[29,[\\\"required-field-marker \\\",[52,[30,0,[\\\"inputEntered\\\"]],\\\"required-field-provided\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[8,[39,10],null,[[\\\"@helpText\\\",\\\"@displayOnly\\\",\\\"@lawyerName\\\"],[[30,0,[\\\"helpText\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"clientRecord\\\",\\\"helpTextIconLawyerName\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[8,[39,11],null,[[\\\"@predicate\\\"],[[28,[37,12],[[28,[37,13],[[30,0,[\\\"notSureModel\\\"]]],null],[30,0,[\\\"notSureOptionDoesNotHideComponent\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-input settify-sensitive\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"nocommas\\\"]],[[[1,\\\"        \\\"],[8,[39,14],[[16,3,[28,[37,12],[[30,0,[\\\"name\\\"]],[30,0,[\\\"label\\\"]],[30,0,[\\\"placeholder\\\"]]],null]],[24,\\\"placeholder\\\",\\\"\\\"],[16,\\\"disabled\\\",[30,0,[\\\"disabled\\\"]]],[16,\\\"readonly\\\",[30,0,[\\\"readonly\\\"]]],[16,0,[29,[\\\"form-control \\\",[52,[28,[37,12],[[28,[37,13],[[30,0,[\\\"required\\\"]]],null],[30,0,[\\\"model\\\"]]],null],\\\"not_highlighted\\\"]]]],[16,\\\"maxlength\\\",256],[16,\\\"min\\\",[30,0,[\\\"min\\\"]]],[16,\\\"max\\\",[30,0,[\\\"max\\\"]]],[16,\\\"autocomplete\\\",[30,0,[\\\"autoCompleteValue\\\"]]],[4,[38,15],[\\\"change\\\",[28,[37,16],[[30,0],\\\"valueChanged\\\"],null]],null]],[[\\\"@value\\\",\\\"@type\\\"],[[30,0,[\\\"model\\\"]],\\\"number\\\"]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[8,[39,17],null,[[\\\"@realValue\\\",\\\"@placeholder\\\",\\\"@class\\\",\\\"@money\\\",\\\"@min\\\",\\\"@max\\\",\\\"@maxlength\\\",\\\"@parentObject\\\",\\\"@displayWarning\\\",\\\"@rangeWarningSuggestion\\\",\\\"@suggestedMillionsThreshold\\\",\\\"@suggestedThousandsThreshold\\\",\\\"@tabindex\\\"],[[30,0,[\\\"model\\\"]],\\\"\\\",[28,[37,18],[\\\"form-control \\\",[30,0,[\\\"class\\\"]]],null],[30,0,[\\\"money\\\"]],[30,0,[\\\"min\\\"]],[30,0,[\\\"max\\\"]],20,[30,0,[\\\"parentObject\\\"]],[30,0,[\\\"displayWarning\\\"]],[30,0,[\\\"rangeWarningSuggestion\\\"]],[30,0,[\\\"suggestedMillionsThreshold\\\"]],[30,0,[\\\"suggestedThousandsThreshold\\\"]],[30,0,[\\\"tabindex\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"      \\\"],[10,\\\"label\\\"],[15,0,[29,[\\\"settify-input-label \\\",[52,[30,0,[\\\"inputEntered\\\"]],\\\"valid\\\"],\\\" \\\"]]],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,20],[[30,0,[\\\"label\\\"]],[28,[37,13],[[30,0,[\\\"headerLabel\\\"]]],null]],null],[[[1,\\\"          \\\"],[1,[30,0,[\\\"label\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,20],[[48,[30,1]],[28,[37,13],[[30,0,[\\\"headerLabel\\\"]]],null]],null],[[[1,\\\"          \\\"],[18,1,null],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"placeholder\\\"]],[[[1,\\\"          \\\"],[10,1],[15,0,[52,[28,[37,20],[[30,0,[\\\"inputEntered\\\"]],[28,[37,13],[[30,0,[\\\"required\\\"]]],null],[28,[37,13],[[30,0,[\\\"preventFading\\\"]]],null]],null],\\\"fade\\\"]],[12],[1,[30,0,[\\\"placeholder\\\"]]],[13],[1,\\\"\\\\n        \\\"]],[]],null]],[]]]],[]]],[1,\\\"\\\\n\\\"],[41,[28,[37,20],[[30,0,[\\\"required\\\"]],[28,[37,13],[[30,0,[\\\"headerLabel\\\"]]],null]],null],[[[1,\\\"          \\\"],[10,1],[15,0,[29,[\\\"required-field-marker \\\",[52,[30,0,[\\\"inputEntered\\\"]],\\\"required-field-provided\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,20],[[30,0,[\\\"placeholder\\\"]],[28,[37,12],[[30,0,[\\\"label\\\"]],[48,[30,1]]],null],[28,[37,13],[[30,0,[\\\"headerLabel\\\"]]],null]],null],[[[1,\\\"          \\\"],[10,1],[15,0,[29,[\\\"placeholder \\\",[52,[30,0,[\\\"inputEntered\\\"]],\\\"fade\\\"]]]],[12],[1,[30,0,[\\\"placeholder\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"settify-input-line\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"displayWarning\\\"]],[[[1,\\\"      \\\"],[10,\\\"small\\\"],[14,0,\\\"negative\\\"],[12],[1,\\\"That doesn't look like a number\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"rangeWarningSuggestion\\\"]],[[[1,\\\"      \\\"],[10,2],[14,0,\\\"negative\\\"],[12],[1,\\\"\\\\n        Are you sure you meant\\\\n        \\\"],[1,[28,[35,4],[[30,0,[\\\"model\\\"]]],[[\\\"money\\\"],[[30,0,[\\\"money\\\"]]]]]],[1,\\\"? If you meant\\\\n        \\\"],[1,[28,[35,4],[[30,0,[\\\"rangeWarningSuggestion\\\"]]],[[\\\"money\\\"],[[30,0,[\\\"money\\\"]]]]]],[1,\\\", just add the extra zeros or\\\\n        \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,16],[[30,0],\\\"chooseRangeWarningSuggestion\\\"],null],[12],[1,\\\"click here and we'll add them for you\\\"],[13],[1,\\\".\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[39,11],null,[[\\\"@predicate\\\"],[[28,[37,20],[[30,0,[\\\"notSureOption\\\"]],[28,[37,13],[[28,[37,3],[[30,0,[\\\"model\\\"]]],null]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[39,24],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@onChange\\\"],[[28,[37,12],[[30,0,[\\\"notSureOptionText\\\"]],\\\"I'm not sure\\\"],null],[30,0,[\\\"notSureModel\\\"]],[30,0,[\\\"onChange\\\"]]]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]],[\\\"&default\\\"],false,[\\\"if\\\",\\\"yield\\\",\\\"div\\\",\\\"defined\\\",\\\"format-number\\\",\\\"no-information\\\",\\\"required-field\\\",\\\"non-empty-string\\\",\\\"has-block\\\",\\\"span\\\",\\\"help-text-icon\\\",\\\"liquid-if\\\",\\\"or\\\",\\\"not\\\",\\\"input\\\",\\\"on\\\",\\\"action\\\",\\\"formatted-number\\\",\\\"sum\\\",\\\"label\\\",\\\"and\\\",\\\"small\\\",\\\"p\\\",\\\"a\\\",\\\"check-box\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/settify-number.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/settify-phonenumber\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.displayOnly}}\n    <div class=\"readonly-textarea settify-sensitive\">\n      {{this.label}}{{yield}}\n      {{#if this.model}}\n        {{this.model}}\n      {{else if this.notSureModel}}\n        Not sure\n      {{else}}\n        <NoInformation />\n        {{#if this.required}}\n          <RequiredField />\n        {{/if}}\n      {{/if}}\n      <br />\n    </div>\n  {{else}}\n    {{#if this.headerLabel}}\n      {{! headerLabel will place either label or yield on top of input rather than within}}\n      {{#if (non-empty-string this.label)}}\n        {{this.label}}\n      {{else if (has-block)}}\n        {{yield}}\n      {{/if}}\n      {{#if this.required}}\n        <span class=\"required-field-marker {{if (and this.model this.validPhoneNumber) 'required-field-provided'}}\"></span>\n      {{/if}}\n      <HelpTextIcon @helpText={{this.helpText}} @displayOnly={{this.displayOnly}} @lawyerName={{this.clientRecord.helpTextIconLawyerName}} />\n    {{/if}}\n    <LiquidIf @predicate={{or (not this.notSureModel) this.notSureOptionDoesNotHideComponent}}>\n      <span class=\"settify-sensitive\">\n        <div class=\"settify-input\">\n          <Input\n            @value={{this.model}}\n            name=\"phonenumber\"\n            placeholder=\"\"\n            disabled={{this.disabled}}\n            readonly={{this.readonly}}\n            class={{sum \"form-control settify-sensitive\" this.class \" \" (if (and this.required (not this.model)) \"can-highlight\")}}\n            maxlength={{256}}\n            @type=\"tel\"\n            autocomplete={{this.autoCompleteValue}}\n          />\n          <label class=\"settify-input-label {{if this.inputEntered 'valid'}}\">\n            {{#if (and this.label (not this.headerLabel))}}\n              {{this.label}}\n            {{else if (and (has-block) (not this.headerLabel))}}\n              {{yield}}\n            {{else if this.placeholder}}\n              <span class={{if (and this.inputEntered (not this.required)) \"fade\"}}>{{this.placeholder}}</span>\n            {{/if}}\n  \n            {{#if (and this.required (not this.headerLabel))}}\n              <span class=\"required-field-marker {{if (and this.model this.validPhoneNumber) 'required-field-provided'}}\"></span>\n            {{/if}}\n  \n            {{#if (and this.placeholder (or this.label (has-block)) (not this.headerLabel))}}\n              <span class=\"placeholder {{if this.inputEntered 'fade'}}\">{{this.placeholder}}</span>\n            {{/if}}\n          </label>\n          <span class=\"settify-input-line\"></span>\n        </div>\n      </span>\n      <LiquidIf @predicate={{this.showInvalidMessage}}>\n        <p>\n          <small>\n            <span class=\"negative\">That doesn't look like a standard phone number to us.</span>\n            We're happy to use international lines, but please check to make sure there are no typos.\n          </small>\n        </p>\n      </LiquidIf>\n    </LiquidIf>\n    <LiquidIf @predicate={{and this.notSureOption (not this.model)}}>\n      <CheckBox @text={{or this.notSureOptionText \"I'm not sure\"}} @model={{this.notSureModel}} @onChange={{this.onChange}} />\n    </LiquidIf>\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"SfUoU79A\",\n    \"block\": \"[[[41,[30,0,[\\\"displayOnly\\\"]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"readonly-textarea settify-sensitive\\\"],[12],[1,\\\"\\\\n    \\\"],[1,[30,0,[\\\"label\\\"]]],[18,1,null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\"]],[[[1,\\\"      \\\"],[1,[30,0,[\\\"model\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"notSureModel\\\"]],[[[1,\\\"      Not sure\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[39,3],null,null,null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"required\\\"]],[[[1,\\\"        \\\"],[8,[39,4],null,null,null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"]],[]]]],[]]],[1,\\\"    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"headerLabel\\\"]],[[[41,[28,[37,6],[[30,0,[\\\"label\\\"]]],null],[[[1,\\\"      \\\"],[1,[30,0,[\\\"label\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[48,[30,1]],[[[1,\\\"      \\\"],[18,1,null],[1,\\\"\\\\n    \\\"]],[]],null]],[]]],[41,[30,0,[\\\"required\\\"]],[[[1,\\\"      \\\"],[10,1],[15,0,[29,[\\\"required-field-marker \\\",[52,[28,[37,9],[[30,0,[\\\"model\\\"]],[30,0,[\\\"validPhoneNumber\\\"]]],null],\\\"required-field-provided\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[8,[39,10],null,[[\\\"@helpText\\\",\\\"@displayOnly\\\",\\\"@lawyerName\\\"],[[30,0,[\\\"helpText\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"clientRecord\\\",\\\"helpTextIconLawyerName\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[8,[39,11],null,[[\\\"@predicate\\\"],[[28,[37,12],[[28,[37,13],[[30,0,[\\\"notSureModel\\\"]]],null],[30,0,[\\\"notSureOptionDoesNotHideComponent\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"settify-input\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,14],[[24,3,\\\"phonenumber\\\"],[24,\\\"placeholder\\\",\\\"\\\"],[16,\\\"disabled\\\",[30,0,[\\\"disabled\\\"]]],[16,\\\"readonly\\\",[30,0,[\\\"readonly\\\"]]],[16,0,[28,[37,15],[\\\"form-control settify-sensitive\\\",[30,0,[\\\"class\\\"]],\\\" \\\",[52,[28,[37,9],[[30,0,[\\\"required\\\"]],[28,[37,13],[[30,0,[\\\"model\\\"]]],null]],null],\\\"can-highlight\\\"]],null]],[16,\\\"maxlength\\\",256],[16,\\\"autocomplete\\\",[30,0,[\\\"autoCompleteValue\\\"]]]],[[\\\"@value\\\",\\\"@type\\\"],[[30,0,[\\\"model\\\"]],\\\"tel\\\"]],null],[1,\\\"\\\\n        \\\"],[10,\\\"label\\\"],[15,0,[29,[\\\"settify-input-label \\\",[52,[30,0,[\\\"inputEntered\\\"]],\\\"valid\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,9],[[30,0,[\\\"label\\\"]],[28,[37,13],[[30,0,[\\\"headerLabel\\\"]]],null]],null],[[[1,\\\"            \\\"],[1,[30,0,[\\\"label\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,9],[[48,[30,1]],[28,[37,13],[[30,0,[\\\"headerLabel\\\"]]],null]],null],[[[1,\\\"            \\\"],[18,1,null],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"placeholder\\\"]],[[[1,\\\"            \\\"],[10,1],[15,0,[52,[28,[37,9],[[30,0,[\\\"inputEntered\\\"]],[28,[37,13],[[30,0,[\\\"required\\\"]]],null]],null],\\\"fade\\\"]],[12],[1,[30,0,[\\\"placeholder\\\"]]],[13],[1,\\\"\\\\n          \\\"]],[]],null]],[]]]],[]]],[1,\\\"\\\\n\\\"],[41,[28,[37,9],[[30,0,[\\\"required\\\"]],[28,[37,13],[[30,0,[\\\"headerLabel\\\"]]],null]],null],[[[1,\\\"            \\\"],[10,1],[15,0,[29,[\\\"required-field-marker \\\",[52,[28,[37,9],[[30,0,[\\\"model\\\"]],[30,0,[\\\"validPhoneNumber\\\"]]],null],\\\"required-field-provided\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,9],[[30,0,[\\\"placeholder\\\"]],[28,[37,12],[[30,0,[\\\"label\\\"]],[48,[30,1]]],null],[28,[37,13],[[30,0,[\\\"headerLabel\\\"]]],null]],null],[[[1,\\\"            \\\"],[10,1],[15,0,[29,[\\\"placeholder \\\",[52,[30,0,[\\\"inputEntered\\\"]],\\\"fade\\\"]]]],[12],[1,[30,0,[\\\"placeholder\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"settify-input-line\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,11],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showInvalidMessage\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"negative\\\"],[12],[1,\\\"That doesn't look like a standard phone number to us.\\\"],[13],[1,\\\"\\\\n          We're happy to use international lines, but please check to make sure there are no typos.\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[8,[39,11],null,[[\\\"@predicate\\\"],[[28,[37,9],[[30,0,[\\\"notSureOption\\\"]],[28,[37,13],[[30,0,[\\\"model\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[8,[39,19],null,[[\\\"@text\\\",\\\"@model\\\",\\\"@onChange\\\"],[[28,[37,12],[[30,0,[\\\"notSureOptionText\\\"]],\\\"I'm not sure\\\"],null],[30,0,[\\\"notSureModel\\\"]],[30,0,[\\\"onChange\\\"]]]],null],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]],[\\\"&default\\\"],false,[\\\"if\\\",\\\"div\\\",\\\"yield\\\",\\\"no-information\\\",\\\"required-field\\\",\\\"br\\\",\\\"non-empty-string\\\",\\\"has-block\\\",\\\"span\\\",\\\"and\\\",\\\"help-text-icon\\\",\\\"liquid-if\\\",\\\"or\\\",\\\"not\\\",\\\"input\\\",\\\"sum\\\",\\\"label\\\",\\\"p\\\",\\\"small\\\",\\\"check-box\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/settify-phonenumber.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/settify-region-overlay\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"region-overlay\">\n    <div class=\"region-active\">\n      <i class=\"fal {{get this.iconMap this.activeRegion.id}} globe\"></i>\n      <span>\n        Region:\n        <br />\n        {{this.activeRegion.name}}\n      </span>\n    </div>\n    <small class=\"clickable\" {{action \"openRegions\"}}>\n      Other regions\n      <i class=\"fal fa-chevron-down\" style=\"margin: 0;\"></i>\n    </small>\n    <LiquidIf @predicate={{this.showRegions}}>\n      <div class=\"regions\">\n        {{#each this.regionsList as |region|}}\n          {{#if (or (not-eq region.name this.activeRegion.name) region.subRegions.length)}}\n            <a class=\"clickable\" title={{region.name}} href={{region.URL}}>{{region.name}}</a>\n          {{/if}}\n        {{/each}}\n      </div>\n    </LiquidIf>\n  </div>\n  */\n  {\n    \"id\": \"IpKid3W7\",\n    \"block\": \"[[[10,0],[14,0,\\\"region-overlay\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"region-active\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal \\\",[28,[37,2],[[30,0,[\\\"iconMap\\\"]],[30,0,[\\\"activeRegion\\\",\\\"id\\\"]]],null],\\\" globe\\\"]]],[12],[13],[1,\\\"\\\\n    \\\"],[10,1],[12],[1,\\\"\\\\n      Region:\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[1,[30,0,[\\\"activeRegion\\\",\\\"name\\\"]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[11,\\\"small\\\"],[24,0,\\\"clickable\\\"],[4,[38,6],[[30,0],\\\"openRegions\\\"],null],[12],[1,\\\"\\\\n    Other regions\\\\n    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-chevron-down\\\"],[14,5,\\\"margin: 0;\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,7],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showRegions\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"regions\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,9],[[28,[37,9],[[30,0,[\\\"regionsList\\\"]]],null]],null],null,[[[41,[28,[37,11],[[28,[37,12],[[30,1,[\\\"name\\\"]],[30,0,[\\\"activeRegion\\\",\\\"name\\\"]]],null],[30,1,[\\\"subRegions\\\",\\\"length\\\"]]],null],[[[1,\\\"          \\\"],[10,3],[14,0,\\\"clickable\\\"],[15,\\\"title\\\",[30,1,[\\\"name\\\"]]],[15,6,[30,1,[\\\"URL\\\"]]],[12],[1,[30,1,[\\\"name\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null]],[1]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[13]],[\\\"region\\\"],false,[\\\"div\\\",\\\"i\\\",\\\"get\\\",\\\"span\\\",\\\"br\\\",\\\"small\\\",\\\"action\\\",\\\"liquid-if\\\",\\\"each\\\",\\\"-track-array\\\",\\\"if\\\",\\\"or\\\",\\\"not-eq\\\",\\\"a\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/settify-region-overlay.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/settify-select\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (or this.disabled this.displayOnly)}}\n    {{#if (non-empty-string this.label)}}\n      {{this.label}}\n    {{else if (has-block)}}\n      {{yield}}\n    {{else if (and (not this.modelForDisplay this.prompt))}}\n      {{this.prompt}}\n    {{/if}}\n    <div class=\"readonly-textarea\">\n      {{#if this.modelForDisplay}}\n        {{parse-text this.modelForDisplay model=this.model clientRecord=this.clientRecord context=this.context}}\n      {{else}}\n        <NoInformation />\n        {{#if (and this.required this.displayOnly)}}\n          <RequiredField />\n        {{/if}}\n      {{/if}}\n      <br />\n    </div>\n  {{else}}\n    {{#if this.headerLabel}}\n      {{! headerLabel will place either label or yield on top of input rather than within}}\n      {{#if (non-empty-string this.label)}}\n        {{this.label}}\n      {{else if (has-block)}}\n        {{yield}}\n      {{/if}}\n      {{#if this.required}}\n        <span class=\"required-field-marker {{if this.model 'required-field-provided'}}\"></span>\n      {{/if}}\n      <HelpTextIcon @helpText={{this.helpText}} @displayOnly={{this.displayOnly}} @lawyerName={{this.clientRecord.helpTextIconLawyerName}} />\n    {{/if}}\n    <label name={{this.name}} class=\"settify-select {{if this.isOpen 'focused'}}\" data-value={{this.model}}>\n      <div class=\"select-container {{if (or this.model (not this.required)) 'not_highlighted' 'can-highlight'}}\" onkeydown={{action \"handleKeyPress\"}} tabindex=\"0\">\n        <span class=\"select-label {{if this.minimiseLabel 'minimise'}}\">\n          {{#if (and this.label (not this.headerLabel))}}\n            {{this.label}}\n          {{else if (and (has-block) (not this.headerLabel))}}\n            {{yield}}\n          {{else}}\n            <span class={{if this.minimiseLabel \"fade\"}}>{{this.prompt}}</span>\n          {{/if}}\n          {{#if (and this.required (not this.headerLabel))}}\n            <span class=\"required-field-marker {{if this.model 'required-field-provided'}} {{if (and (not this.label) (not (has-block)) this.minimiseLabel) 'fade'}}\"></span>\n          {{/if}}\n        </span>\n        <span class=\"selected {{if this.fadeSelected 'fade-selected'}}\">{{parse-text this.valueSelected model=this.model clientRecord=this.clientRecord context=this.context}}</span>\n        <span class=\"settify-input-line\"></span>\n      </div>\n      {{! TODO: Refactor settify-select to use css hide/show (for accessibility) and make the component work like a drop down (not slide down) }}\n      {{#if this.isOpen}}\n        <ul class=\"settify-select-list options {{if this.isOpen 'visible' 'hidden'}}\" style={{this.dropdownHeight}}>\n          {{#each this.content as |item index|}}\n            <li\n              id=\"option-{{index}}\"\n              class=\"option {{if (eq index this.currentHoverIndex) 'hover'}}\"\n              data-value={{get item this.valuePath}}\n              onmousedown={{action \"clickedOption\"}}\n              onmouseup={{action \"releasedOption\"}}\n              {{action \"selectItem\" item index}}\n              {{!-- onkeypress={{action 'handleKeyPress' item}} onfocus={{action 'handleOptionFocus'}} onblur={{action 'handleOptionBlur'}} --}}\n              title={{or item.description \"\"}}\n            >\n              {{parse-text (get item this.labelPath) model=item clientRecord=this.clientRecord context=this.context}}\n            </li>\n          {{/each}}\n        </ul>\n      {{/if}}\n    </label>\n  {{/if}}\n  */\n  {\n    \"id\": \"6ysoDqwJ\",\n    \"block\": \"[[[41,[28,[37,1],[[30,0,[\\\"disabled\\\"]],[30,0,[\\\"displayOnly\\\"]]],null],[[[41,[28,[37,2],[[30,0,[\\\"label\\\"]]],null],[[[1,\\\"    \\\"],[1,[30,0,[\\\"label\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[48,[30,3]],[[[1,\\\"    \\\"],[18,3,null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,5],[[28,[37,6],[[30,0,[\\\"modelForDisplay\\\"]],[30,0,[\\\"prompt\\\"]]],null]],null],[[[1,\\\"    \\\"],[1,[30,0,[\\\"prompt\\\"]]],[1,\\\"\\\\n  \\\"]],[]],null]],[]]]],[]]],[1,\\\"  \\\"],[10,0],[14,0,\\\"readonly-textarea\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"modelForDisplay\\\"]],[[[1,\\\"      \\\"],[1,[28,[35,8],[[30,0,[\\\"modelForDisplay\\\"]]],[[\\\"model\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[8,[39,9],null,null,null],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[30,0,[\\\"required\\\"]],[30,0,[\\\"displayOnly\\\"]]],null],[[[1,\\\"        \\\"],[8,[39,10],null,null,null],[1,\\\"\\\\n\\\"]],[]],null]],[]]],[1,\\\"    \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"headerLabel\\\"]],[[[41,[28,[37,2],[[30,0,[\\\"label\\\"]]],null],[[[1,\\\"      \\\"],[1,[30,0,[\\\"label\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[48,[30,3]],[[[1,\\\"      \\\"],[18,3,null],[1,\\\"\\\\n    \\\"]],[]],null]],[]]],[41,[30,0,[\\\"required\\\"]],[[[1,\\\"      \\\"],[10,1],[15,0,[29,[\\\"required-field-marker \\\",[52,[30,0,[\\\"model\\\"]],\\\"required-field-provided\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[8,[39,13],null,[[\\\"@helpText\\\",\\\"@displayOnly\\\",\\\"@lawyerName\\\"],[[30,0,[\\\"helpText\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"clientRecord\\\",\\\"helpTextIconLawyerName\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[10,\\\"label\\\"],[15,3,[30,0,[\\\"name\\\"]]],[15,0,[29,[\\\"settify-select \\\",[52,[30,0,[\\\"isOpen\\\"]],\\\"focused\\\"]]]],[15,\\\"data-value\\\",[30,0,[\\\"model\\\"]]],[12],[1,\\\"\\\\n    \\\"],[10,0],[15,0,[29,[\\\"select-container \\\",[52,[28,[37,1],[[30,0,[\\\"model\\\"]],[28,[37,6],[[30,0,[\\\"required\\\"]]],null]],null],\\\"not_highlighted\\\",\\\"can-highlight\\\"]]]],[15,\\\"onkeydown\\\",[28,[37,15],[[30,0],\\\"handleKeyPress\\\"],null]],[14,\\\"tabindex\\\",\\\"0\\\"],[12],[1,\\\"\\\\n      \\\"],[10,1],[15,0,[29,[\\\"select-label \\\",[52,[30,0,[\\\"minimiseLabel\\\"]],\\\"minimise\\\"]]]],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[30,0,[\\\"label\\\"]],[28,[37,6],[[30,0,[\\\"headerLabel\\\"]]],null]],null],[[[1,\\\"          \\\"],[1,[30,0,[\\\"label\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,5],[[48,[30,3]],[28,[37,6],[[30,0,[\\\"headerLabel\\\"]]],null]],null],[[[1,\\\"          \\\"],[18,3,null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[10,1],[15,0,[52,[30,0,[\\\"minimiseLabel\\\"]],\\\"fade\\\"]],[12],[1,[30,0,[\\\"prompt\\\"]]],[13],[1,\\\"\\\\n        \\\"]],[]]]],[]]],[41,[28,[37,5],[[30,0,[\\\"required\\\"]],[28,[37,6],[[30,0,[\\\"headerLabel\\\"]]],null]],null],[[[1,\\\"          \\\"],[10,1],[15,0,[29,[\\\"required-field-marker \\\",[52,[30,0,[\\\"model\\\"]],\\\"required-field-provided\\\"],\\\" \\\",[52,[28,[37,5],[[28,[37,6],[[30,0,[\\\"label\\\"]]],null],[28,[37,6],[[48,[30,3]]],null],[30,0,[\\\"minimiseLabel\\\"]]],null],\\\"fade\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,1],[15,0,[29,[\\\"selected \\\",[52,[30,0,[\\\"fadeSelected\\\"]],\\\"fade-selected\\\"]]]],[12],[1,[28,[35,8],[[30,0,[\\\"valueSelected\\\"]]],[[\\\"model\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[13],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"settify-input-line\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"isOpen\\\"]],[[[1,\\\"      \\\"],[10,\\\"ul\\\"],[15,0,[29,[\\\"settify-select-list options \\\",[52,[30,0,[\\\"isOpen\\\"]],\\\"visible\\\",\\\"hidden\\\"]]]],[15,5,[30,0,[\\\"dropdownHeight\\\"]]],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,18],[[28,[37,18],[[30,0,[\\\"content\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[11,\\\"li\\\"],[16,1,[29,[\\\"option-\\\",[30,2]]]],[16,0,[29,[\\\"option \\\",[52,[28,[37,20],[[30,2],[30,0,[\\\"currentHoverIndex\\\"]]],null],\\\"hover\\\"]]]],[16,\\\"data-value\\\",[28,[37,21],[[30,1],[30,0,[\\\"valuePath\\\"]]],null]],[16,\\\"onmousedown\\\",[28,[37,15],[[30,0],\\\"clickedOption\\\"],null]],[16,\\\"onmouseup\\\",[28,[37,15],[[30,0],\\\"releasedOption\\\"],null]],[16,\\\"title\\\",[28,[37,1],[[30,1,[\\\"description\\\"]],\\\"\\\"],null]],[4,[38,15],[[30,0],\\\"selectItem\\\",[30,1],[30,2]],null],[12],[1,\\\"\\\\n            \\\"],[1,[28,[35,8],[[28,[37,21],[[30,1],[30,0,[\\\"labelPath\\\"]]],null]],[[\\\"model\\\",\\\"clientRecord\\\",\\\"context\\\"],[[30,1],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[1,2]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[\\\"item\\\",\\\"index\\\",\\\"&default\\\"],false,[\\\"if\\\",\\\"or\\\",\\\"non-empty-string\\\",\\\"has-block\\\",\\\"yield\\\",\\\"and\\\",\\\"not\\\",\\\"div\\\",\\\"parse-text\\\",\\\"no-information\\\",\\\"required-field\\\",\\\"br\\\",\\\"span\\\",\\\"help-text-icon\\\",\\\"label\\\",\\\"action\\\",\\\"ul\\\",\\\"each\\\",\\\"-track-array\\\",\\\"li\\\",\\\"eq\\\",\\\"get\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/settify-select.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/settify-summary-table\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <table class=\"settify-summary\">\n    {{#if (non-empty-string this.label)}}\n      <caption>\n        {{this.label}}\n        <HelpTextIcon @helpText={{this.helpText}} @displayOnly={{this.displayOnly}} @lawyerName={{this.clientRecord.helpTextIconLawyerName}} />\n      </caption>\n    {{/if}}\n    <colgroup>\n      {{#each this.colGroup as |column|}}\n        {{#if (should-display question=column clientRecord=this.clientRecord context=this.context touch=this.clientRecord.touch)}}\n          <col style={{html-safe (concat \"width: \" column.width \"%;\")}} />\n        {{/if}}\n      {{/each}}\n    </colgroup>\n    <tbody>\n      {{!\n        We use a <tbody> even though this can have `<th>` and `<td>` due to the definition of a table\n        Ideally, we would update the table definition to have table heads and table data values so we don't have to go over all rows to figure out what is what\n       }}\n      {{#each this.table as |row|}}\n        <tr class={{row.styles}}>\n          {{#each row.columns as |entry|}}\n            {{#if (should-display question=entry clientRecord=this.clientRecord context=this.context touch=this.clientRecord.touch model=row)}}\n              {{! entry.value has always come from parse-text, so it's safe outputting in without escaping it }}\n              {{#if (eq entry.rowID \"headings\")}}\n                <th style={{entry.stylesLine}} colspan={{entry.colSpan}}>\n                  <span class=\"settify-sensitive\">{{html-safe entry.value}}</span>\n                </th>\n              {{else}}\n                <td style={{entry.stylesLine}} colspan={{entry.colSpan}}>\n                  <span class=\"settify-sensitive\">{{html-safe entry.value}}</span>\n                </td>\n              {{/if}}\n            {{/if}}\n          {{/each}}\n        </tr>\n      {{/each}}\n    </tbody>\n  </table>\n  */\n  {\n    \"id\": \"FDhRrztS\",\n    \"block\": \"[[[10,\\\"table\\\"],[14,0,\\\"settify-summary\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,2],[[30,0,[\\\"label\\\"]]],null],[[[1,\\\"    \\\"],[10,\\\"caption\\\"],[12],[1,\\\"\\\\n      \\\"],[1,[30,0,[\\\"label\\\"]]],[1,\\\"\\\\n      \\\"],[8,[39,4],null,[[\\\"@helpText\\\",\\\"@displayOnly\\\",\\\"@lawyerName\\\"],[[30,0,[\\\"helpText\\\"]],[30,0,[\\\"displayOnly\\\"]],[30,0,[\\\"clientRecord\\\",\\\"helpTextIconLawyerName\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[10,\\\"colgroup\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,7],[[28,[37,7],[[30,0,[\\\"colGroup\\\"]]],null]],null],null,[[[41,[28,[37,8],null,[[\\\"question\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"touch\\\"],[[30,1],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]]]]],[[[1,\\\"        \\\"],[10,\\\"col\\\"],[15,5,[28,[37,10],[[28,[37,11],[\\\"width: \\\",[30,1,[\\\"width\\\"]],\\\"%;\\\"],null]],null]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null]],[1]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,7],[[28,[37,7],[[30,0,[\\\"table\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[10,\\\"tr\\\"],[15,0,[30,2,[\\\"styles\\\"]]],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,7],[[28,[37,7],[[30,2,[\\\"columns\\\"]]],null]],null],null,[[[41,[28,[37,8],null,[[\\\"question\\\",\\\"clientRecord\\\",\\\"context\\\",\\\"touch\\\",\\\"model\\\"],[[30,3],[30,0,[\\\"clientRecord\\\"]],[30,0,[\\\"context\\\"]],[30,0,[\\\"clientRecord\\\",\\\"touch\\\"]],[30,2]]]],[[[41,[28,[37,14],[[30,3,[\\\"rowID\\\"]],\\\"headings\\\"],null],[[[1,\\\"              \\\"],[10,\\\"th\\\"],[15,5,[30,3,[\\\"stylesLine\\\"]]],[15,\\\"colspan\\\",[30,3,[\\\"colSpan\\\"]]],[12],[1,\\\"\\\\n                \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[28,[35,10],[[30,3,[\\\"value\\\"]]],null]],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"              \\\"],[10,\\\"td\\\"],[15,5,[30,3,[\\\"stylesLine\\\"]]],[15,\\\"colspan\\\",[30,3,[\\\"colSpan\\\"]]],[12],[1,\\\"\\\\n                \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[28,[35,10],[[30,3,[\\\"value\\\"]]],null]],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[]],null]],[3]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"column\\\",\\\"row\\\",\\\"entry\\\"],false,[\\\"table\\\",\\\"if\\\",\\\"non-empty-string\\\",\\\"caption\\\",\\\"help-text-icon\\\",\\\"colgroup\\\",\\\"each\\\",\\\"-track-array\\\",\\\"should-display\\\",\\\"col\\\",\\\"html-safe\\\",\\\"concat\\\",\\\"tbody\\\",\\\"tr\\\",\\\"eq\\\",\\\"th\\\",\\\"span\\\",\\\"td\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/settify-summary-table.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/simple-parse\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{parse-text (concat \"{\" this.text \"}\") clientRecord=this.model touch=this.model.touch context=(hash \n    induction=(or (get this.model.inductions \"0.formID\") (get this.model.inductions \"0.id\"))\n    repeat=(get this.model.inductions \"0.repeatToken\")\n  )}}\n  */\n  {\n    \"id\": \"DjFwtyiJ\",\n    \"block\": \"[[[1,[28,[35,0],[[28,[37,1],[\\\"{\\\",[30,0,[\\\"text\\\"]],\\\"}\\\"],null]],[[\\\"clientRecord\\\",\\\"touch\\\",\\\"context\\\"],[[30,0,[\\\"model\\\"]],[30,0,[\\\"model\\\",\\\"touch\\\"]],[28,[37,2],null,[[\\\"induction\\\",\\\"repeat\\\"],[[28,[37,3],[[28,[37,4],[[30,0,[\\\"model\\\",\\\"inductions\\\"]],\\\"0.formID\\\"],null],[28,[37,4],[[30,0,[\\\"model\\\",\\\"inductions\\\"]],\\\"0.id\\\"],null]],null],[28,[37,4],[[30,0,[\\\"model\\\",\\\"inductions\\\"]],\\\"0.repeatToken\\\"],null]]]]]]]]],[],false,[\\\"parse-text\\\",\\\"concat\\\",\\\"hash\\\",\\\"or\\\",\\\"get\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/simple-parse.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/stop-think-warning\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div style=\"display: flex; flex-direction:column; align-items:center; justify-content: center;\">\n      <i class=\"fal fa-radiation fa-spin fa-4x negative\"></i>\n      <h3 class=\"negative\">Stop. Think.</h3>\n      <h4>\n          {{#if (has-block)}}\n              {{yield}}\n          {{else}}\n              Providing client records to anyone is fraught with danger. Take time to think about what's going on, and be sure\n              that you are providing the right information to the right person. Maybe make a cup of <i class=\"fal fa-mug-hot tight\"/>.\n          {{/if}}\n      </h4>\n  </div>\n  */\n  {\n    \"id\": \"XiX7vKaG\",\n    \"block\": \"[[[10,0],[14,5,\\\"display: flex; flex-direction:column; align-items:center; justify-content: center;\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-radiation fa-spin fa-4x negative\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[10,\\\"h3\\\"],[14,0,\\\"negative\\\"],[12],[1,\\\"Stop. Think.\\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"h4\\\"],[12],[1,\\\"\\\\n\\\"],[41,[48,[30,1]],[[[1,\\\"            \\\"],[18,1,null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"            Providing client records to anyone is fraught with danger. Take time to think about what's going on, and be sure\\\\n            that you are providing the right information to the right person. Maybe make a cup of \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-mug-hot tight\\\"],[12],[13],[1,\\\".\\\\n\\\"]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"&default\\\"],false,[\\\"div\\\",\\\"i\\\",\\\"h3\\\",\\\"h4\\\",\\\"if\\\",\\\"has-block\\\",\\\"yield\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/stop-think-warning.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/summary-header\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div id=\"summary-top\">\n  </div>\n  \n  {{#if (and @showDownloadStatus (not (or @downloadInProgress @buildingAppendices)))}}\n    <div class=\"summary-downloading-status\">\n      Building file...\n    </div>\n  {{/if}}\n  <LiquidIf @predicate={{@showLoadingSpinner}}>\n    <div class=\"summary-downloading-status\">\n      {{#if (eq @showLoadingSpinner \"email\")}}\n        Sending email...\n      {{else if (eq @showLoadingSpinner \"download\")}}\n        Preparing download...\n      {{/if}}\n    </div>\n    <LoadingSpinner />\n  </LiquidIf>\n  <LiquidIf @predicate={{@sentEmailSuccessfully}}>\n    <div class=\"summary-downloading-status\">\n      Email was sent successfully\n    </div>\n  </LiquidIf>\n  \n  {{#unless @downloadInProgress}}\n    <div class=\"floatleft\">\n      {{#if @condensedOutputMode}}\n        <small><LinkTo @route=\"index\"><i class=\"fal fa-home-lg-alt\" />Home</LinkTo></small>\n      {{else}}\n        {{#if (and @session.isAuthenticated @session.data.authenticated.adminUser)}}\n          <small>\n            <LinkTo @route=\"admin.clients\" @model={{@model.client.clientID}}>\n              <i class=\"fal fa-arrow-circle-left\" />Back\n            </LinkTo>\n          </small>\n        {{else}}\n          <small><LinkTo @route=\"summary\"><i class=\"fal fa-arrow-circle-left\" />Back</LinkTo></small>\n        {{/if}}\n      {{/if}}\n  \n    </div>\n  \n    <div class=\"rightalign\">\n      <small>\n        {{#if (and @session.isAuthenticated @session.data.authenticated.adminUser)}}\n          {{#if @condensedOutputMode}}\n            <button type=\"button\" {{on \"click\" @toggleDownloadAllOption}}>\n              <span class=\"align-middle {{if @showDownloadAllOptions 'clickable settify-tab-top settify-tab-selected' 'clickable'}}\"><i class=\"fal fa-file-alt\" />Settify Documents</span>\n            </button>\n          {{/if}}\n          <button type=\"button\" {{on \"click\" @toggleKeepMeNotified}}>\n            <span class={{if @showKeepMeNotified \"clickable settify-tab-top settify-tab-selected\" \"clickable\"}}><i class=\"fal fa-envelope\" />Notify me of changes</span>\n          </button>\n  \n          {{! COMPARE NOT YET WORKING ON FORMS }}\n          {{!-- <LinkTo @route=\"admin.compare\" @model={{@model.client.clientID}}><i class=\"fal fa-search\" />Compare changes</LinkTo> --}}\n          {{! COMPARE NOT YET WORKING ON FORMS }}\n        {{else if @condensedOutputMode}}\n          <button type=\"button\" {{on \"click\" @downloadPDF}}>\n            <span class=\"clickable\"><img src=\"/assets/images/pdf.png\" alt=\"PDF Icon\" class=\"icon-small\" />Download a PDF of this document</span>\n            ``` is\n          </button>\n        {{/if}}\n        {{#unless @condensedOutputMode}}\n          <button type=\"button\" {{on \"click\" @toggleHowToReadSummary}}>\n            <span class={{if @showHowToReadSummary \"clickable settify-tab-top settify-tab-selected\" \"clickable\"}}><i class=\"fal fa-info-circle\" />Help</span>\n          </button>\n        {{/unless}}\n      </small>\n    </div>\n  {{/unless}}\n  \n  {{#unless @downloadInProgress}}\n    <LiquidIf @predicate={{@showDownloadAllOptions}}>\n      <div class=\"settify-tab-pane\">\n        <p>Select which documents you would like</p>\n        <small class=\"document-download-select\">\n          <CheckBox @class=\"toggle-box-select\" @model={{@documentsSelected.PDF}}>\n            {{!-- <i class=\"fal fal-{{if documentsSelected.PDF 'check' 'unchecked'}}\" /> --}}\n            <img src=\"/assets/images/fileicons/pdf.png\" alt=\"Check to select PDF\" class=\"icon-small\" />PDF\n          </CheckBox>\n          {{#if @model.practiceAreaSettings.settings.admin.allowWordDownload}}\n            <CheckBox @class=\"toggle-box-select\" @model={{@documentsSelected.Word}}>\n              {{!-- <i class=\"fal fal-{{if documentsSelected.Word 'check' 'unchecked'}}\" /> --}}\n              <img src=\"/assets/images/fileicons/docx.png\" alt=\"Check to select Word\" class=\"icon-small\" />Word\n            </CheckBox>\n          {{/if}}\n          {{#if @uploadedDocExtensions}}\n            <CheckBox @class=\"toggle-box-select\" @model={{get @documentsSelected \"Uploaded Documents\"}}>\n              {{#each @uploadedDocExtensions as |ext index|}}\n                {{#unless (gte index 3)}}\n                  <img src=\"/assets/images/fileicons/{{ext}}.png\" alt=\"Upload Documents\" class=\"icon-small {{if index 'marginleft-m18'}}\" />\n                {{/unless}}\n              {{/each}}\n              Uploaded Documents ({{if (lt (decimal @uploadedDocFileSize 2) 1) \"< 1\" (decimal @uploadedDocFileSize 1)}}mb)\n            </CheckBox>\n          {{/if}}\n          {{!-- {{#if @model.practiceAreaSettings.settings.admin.allowExcelDownload}}\n            {{#check-box class=\"toggle-box-select\" @model=documentsSelected.Excel}}\n              <img src=\"/assets/images/filicons/xlsx.png\" style=\"width: 24px; height:24px; margin-right: 5px;\" />Excel\n            {{/check-box}}\n          {{/if}} --}}\n          {{!-- {{#if @model.practiceAreaSettings.settings.admin.allowCSVDownload}}\n            {{#check-box class=\"toggle-box-select\" @model=documentsSelected.CSV}}\n              <img src=\"/assets/images/fileicons/csv.png\" style=\"width: 24px; height:24px; margin-right: 5px;\" />CSV\n            {{/check-box}}\n          {{/if}} --}}\n          {{#if @model.practiceAreaSettings.settings.admin.allowXMLDownload}}\n            <CheckBox @class=\"toggle-box-select\" @model={{@documentsSelected.XML}}>\n              <img src=\"/assets/images/fileicons/xml.png\" alt=\"Check to select XML\" class=\"icon-small\" />XML\n            </CheckBox>\n          {{/if}}\n          {{#if @model.practiceAreaSettings.settings.admin.allowJSONDownload}}\n            <CheckBox @class=\"toggle-box-select\" @model={{@documentsSelected.JSON}}>\n              <img src=\"/assets/images/fileicons/json.png\" alt=\"Check to select JSON\" class=\"icon-small\" />JSON\n            </CheckBox>\n          {{/if}}\n          {{#if @model.practiceAreaSettings.settings.admin.enableDocxTemplates}}\n            {{#each @automationTemplates as |t|}}\n              <CheckBox @class=\"toggle-box-select\" @model={{get @documentsSelected t.document}}>\n                <img src=\"/assets/images/fileicons/docx.png\" class=\"icon-small\" title=\"Automation\" alt=\"Automation\" />\n                <i class=\"fal fa-bolt margin-0\" />\n                {{t.document}}\n              </CheckBox>\n            {{/each}}\n          {{/if}}\n        </small>\n        <DownloadResource\n          @recipients={{@recipients}}\n          @fileType=\"documents\"\n          @emailMessage={{@emailMessage}}\n          @fileTypeExplanation={{@fileTypeExplanation}}\n          @isAllowedToBeRemoved={{@allowRemovalOfLawyerRecipients}}\n          @addRecipient={{@addAdditionalRecipient}}\n          @localDownload={{@downloadSelectedFiles}}\n          @emailFile={{fn @emailSelectedFiles @recipients @emailMessage}}\n          @updateRecipientsCallback={{@updateRecipients}}\n          @removeLawyerCallback={{@removeLawyer}}\n          @downloadNamesRequired={{@downloadNamesRequired}}\n          @documentsSelected={{@documentsSelected}}\n          @invalidEmailMessage={{@invalidEmailMessage}}\n          @allowMobileDownload={{true}}\n          @noDocumentSelected={{@noDocumentSelected}}\n        />\n        {{#if @documentsSelected.FilePro}}\n          <p>\n            <small>\n              <CheckBox @model={{@showFileProExampleImage}} @class=\"toggle-box\">\n                {{#if @showFileProExampleImage}}\n                  Click here to hide the step-by-step how-to\n                {{else}}\n                  Click here for a FilePro step-by-step how-to\n                {{/if}}\n              </CheckBox>\n            </small>\n          </p>\n          <LiquidIf @predicate={{@showFileProExampleImage}}>\n            <ol>\n              <li>\n                Download the FilePro document to your computer using the link below\n              </li>\n              <li>\n                Open the Settify Contact Import window in FilePro\n              </li>\n              <li>\n                Follow the instructions on that screen, making sure to select the FilePro document you just downloaded. Here's what that screen looks like:<br /><br />\n                <img src=\"/assets/images/filepro-example.png\" alt=\"FilePro mockup screen\" />\n              </li>\n            </ol>\n          </LiquidIf>\n        {{/if}}\n      </div>\n    </LiquidIf>\n  \n    <LiquidIf @predicate={{@showKeepMeNotified}}>\n      <div class=\"settify-tab-pane\">\n        <p>\n          The email addresses below will receive notifications whenever\n          <span class=\"settify-sensitive\">{{@model.client.firstName}}</span>\n          updates their information.\n        </p>\n        <EmailList @model={{@model.client.notifyUpdates}} @placeholder={{@firm.contactEmail}} @addtext=\"Add another email address\" />\n        <br />\n        <button type=\"button\" {{on \"click\" (fn @toggleKeepMeNotified \"savechanges\")}}>\n          <i class=\"clickable fal fa-save font-18\" title=\"Save changes\" />\n        </button>\n        <button type=\"button\" {{on \"click\" (fn @toggleKeepMeNotified \"discardchanges\")}}>\n          <i class=\"clickable fal fa-times-circle negative font-18\" title=\"Close without saving\"></i>\n        </button>\n      </div>\n    </LiquidIf>\n  \n    <LiquidIf @predicate={{@showHowToReadSummary}}>\n      <div class=\"settify-tab-pane\">\n        <p>\n          Click on a plus sign (<i class=\"fal fa-plus-circle\"></i>) to expand a section, and the minus sign (<i class=\"fal fa-minus-circle\"></i>) to contract it again.\n        </p>\n        <p>\n          Click on the pencil (<i class=\"fal fa-pencil\"></i>) to edit the information in the relevant section - it will then change into a save icon (<i\n            class=\"fal fa-cloud-upload-alt\"\n          ></i>) for you to save your changes. If you don't want to save your changes, click the cancel icon (<i class=\"fal fa-times-circle negative\"></i>) instead.\n        </p>\n        {{#if @session.isAuthenticated}}\n          {{#if @session.data.authenticated.adminUser}}\n            <p>\n              <strong>Note:</strong>\n              any changes you make here are potentially visible to the client.\n            </p>\n          {{/if}}\n        {{/if}}\n  \n        <CheckBox @model={{@showHowToReadSummary}} @class=\"toggle-box\">\n          <p><small>Okay, got it</small></p>\n        </CheckBox>\n      </div>\n    </LiquidIf>\n  \n    {{#if @session.isAuthenticated}}\n      {{#if @session.data.authenticated.adminUser}}\n        <div class=\"rightalign\">\n          <small>\n            {{#if @condensedOutputMode}}\n  \n              <i class=\"fal fa-calendar-star {{if (or @model.client.hasReceivedAppointmentEmail @model.client.firmAppointmentDate) 'opacity-0.3'}}\" />\n              {{#if @model.client.invitedByLawFirm}}\n                Invited client\n                <button type=\"button\" {{on \"click\" @toggleInvitationEmailHistory}}>\n                  <i class=\"clickable fal fa-info-circle marginleft-0\" />\n                </button>\n              {{else if (or @model.client.hasReceivedAppointmentEmail @model.client.firmAppointmentDate)}}\n                <i class=\"fal fa-check-circle margin-0\" />\n                Follow-up Email Sent\n                <button type=\"button\" {{on \"click\" @toggleInvitationEmailHistory}}>\n                  <i class=\"clickable fal fa-info-circle marginleft-0\" />\n                </button>\n              {{else}}\n                <LinkTo @route=\"admin.invite\" @query={{hash clientID=@model.client.clientID}}>\n                  Send Follow-up Email\n                </LinkTo>\n              {{/if}}\n  \n              {{!-- {{#link-to 'admin.editablesummary' @model.client.clientID}}\n                <i class=\"fal fa-pencil\" />View editable summary\n              {{/link-to}} --}}\n  \n              <LiquidIf @predicate={{@model.client.lockedByLawFirm}}>\n                <span class=\"negative\"><i class=\"fal fa-lock tight negative\" /> Record Locked</span>\n                <button type=\"button\" {{on \"click\" @toggleRecordLock}}>\n                  <a class=\"clickable\">\n                    (allow further changes)\n                  </a>\n                </button>\n              </LiquidIf>\n              <LiquidIf @predicate={{not @model.client.lockedByLawFirm}}>\n                <button type=\"button\" {{on \"click\" @toggleRecordLock}}>\n                  <a class=\"clickable\" title=\"Prevent this client from making any further changes to their Settify information\">\n                    <i class=\"fal fa-unlock\" />Prevent further changes\n                  </a>\n                </button>\n              </LiquidIf>\n  \n              <SendToPms @model={{@model.client}} @pmsMetadata={{@model.pmsMetadata}} @pmsDefaults={{@model.pmsDefaults}} @sendClientRecordToPMSCallback={{@sendClientRecordToPMS}} />\n            {{else}}\n              <LinkTo @route=\"admin.clients\" @model={{@model.client.clientID}}>\n                <i class=\"fal fa-list-ul\" />View condensed summary\n              </LinkTo>\n            {{/if}}\n          </small>\n        </div>\n      {{/if}}\n    {{/if}}\n  {{/unless}}\n  <br>\n  \n  <LiquidIf @predicate={{@showInvitationEmailHistory}}>\n    <div class=\"invitation-email-history-wrapper\">\n      {{#if @model.client.invitedByLawFirm}}\n        <p>Invitation email history:</p>\n      {{else}}\n        <p>Follow-up email history:</p>\n      {{/if}}\n      <InvitationEmailHistory @model={{@model.client}} @metadata={{@model.metadata}} @showReminderEmails={{false}} />\n    </div>\n  </LiquidIf>\n  \n  */\n  {\n    \"id\": \"RrS5na/e\",\n    \"block\": \"[[[10,0],[14,1,\\\"summary-top\\\"],[12],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,2],[[30,1],[28,[37,3],[[28,[37,4],[[30,2],[30,3]],null]],null]],null],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"summary-downloading-status\\\"],[12],[1,\\\"\\\\n    Building file...\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[8,[39,5],null,[[\\\"@predicate\\\"],[[30,4]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"summary-downloading-status\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,6],[[30,4],\\\"email\\\"],null],[[[1,\\\"      Sending email...\\\\n\\\"]],[]],[[[41,[28,[37,6],[[30,4],\\\"download\\\"],null],[[[1,\\\"      Preparing download...\\\\n    \\\"]],[]],null]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,7],null,null,null],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"],[8,[39,5],null,[[\\\"@predicate\\\"],[[30,5]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"summary-downloading-status\\\"],[12],[1,\\\"\\\\n    Email was sent successfully\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[51,[30,2]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"floatleft\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,6],[[[1,\\\"      \\\"],[10,\\\"small\\\"],[12],[8,[39,10],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-home-lg-alt\\\"],[12],[13],[1,\\\"Home\\\"]],[]]]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,2],[[30,7,[\\\"isAuthenticated\\\"]],[30,7,[\\\"data\\\",\\\"authenticated\\\",\\\"adminUser\\\"]]],null],[[[1,\\\"        \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,10],null,[[\\\"@route\\\",\\\"@model\\\"],[\\\"admin.clients\\\",[30,8,[\\\"client\\\",\\\"clientID\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,\\\"small\\\"],[12],[8,[39,10],null,[[\\\"@route\\\"],[\\\"summary\\\"]],[[\\\"default\\\"],[[[[10,\\\"i\\\"],[14,0,\\\"fal fa-arrow-circle-left\\\"],[12],[13],[1,\\\"Back\\\"]],[]]]]],[13],[1,\\\"\\\\n\\\"]],[]]]],[]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"rightalign\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,2],[[30,7,[\\\"isAuthenticated\\\"]],[30,7,[\\\"data\\\",\\\"authenticated\\\",\\\"adminUser\\\"]]],null],[[[41,[30,6],[[[1,\\\"          \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,13],[\\\"click\\\",[30,9]],null],[12],[1,\\\"\\\\n            \\\"],[10,1],[15,0,[29,[\\\"align-middle \\\",[52,[30,10],\\\"clickable settify-tab-top settify-tab-selected\\\",\\\"clickable\\\"]]]],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-file-alt\\\"],[12],[13],[1,\\\"Settify Documents\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,13],[\\\"click\\\",[30,11]],null],[12],[1,\\\"\\\\n          \\\"],[10,1],[15,0,[52,[30,12],\\\"clickable settify-tab-top settify-tab-selected\\\",\\\"clickable\\\"]],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-envelope\\\"],[12],[13],[1,\\\"Notify me of changes\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n\\\"]],[]],[[[41,[30,6],[[[1,\\\"        \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,13],[\\\"click\\\",[30,13]],null],[12],[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"clickable\\\"],[12],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"/assets/images/pdf.png\\\"],[14,\\\"alt\\\",\\\"PDF Icon\\\"],[14,0,\\\"icon-small\\\"],[12],[13],[1,\\\"Download a PDF of this document\\\"],[13],[1,\\\"\\\\n          ``` is\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]],null]],[]]],[41,[51,[30,6]],[[[1,\\\"        \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,13],[\\\"click\\\",[30,14]],null],[12],[1,\\\"\\\\n          \\\"],[10,1],[15,0,[52,[30,15],\\\"clickable settify-tab-top settify-tab-selected\\\",\\\"clickable\\\"]],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-info-circle\\\"],[12],[13],[1,\\\"Help\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[51,[30,2]],[[[1,\\\"  \\\"],[8,[39,5],null,[[\\\"@predicate\\\"],[[30,10]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-tab-pane\\\"],[12],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"Select which documents you would like\\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"small\\\"],[14,0,\\\"document-download-select\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,17],null,[[\\\"@class\\\",\\\"@model\\\"],[\\\"toggle-box-select\\\",[30,16,[\\\"PDF\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[1,\\\"          \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"/assets/images/fileicons/pdf.png\\\"],[14,\\\"alt\\\",\\\"Check to select PDF\\\"],[14,0,\\\"icon-small\\\"],[12],[13],[1,\\\"PDF\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[41,[30,8,[\\\"practiceAreaSettings\\\",\\\"settings\\\",\\\"admin\\\",\\\"allowWordDownload\\\"]],[[[1,\\\"          \\\"],[8,[39,17],null,[[\\\"@class\\\",\\\"@model\\\"],[\\\"toggle-box-select\\\",[30,16,[\\\"Word\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[1,\\\"            \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"/assets/images/fileicons/docx.png\\\"],[14,\\\"alt\\\",\\\"Check to select Word\\\"],[14,0,\\\"icon-small\\\"],[12],[13],[1,\\\"Word\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,17],[[[1,\\\"          \\\"],[8,[39,17],null,[[\\\"@class\\\",\\\"@model\\\"],[\\\"toggle-box-select\\\",[28,[37,18],[[30,16],\\\"Uploaded Documents\\\"],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[42,[28,[37,20],[[28,[37,20],[[30,17]],null]],null],null,[[[41,[51,[28,[37,21],[[30,19],3],null]],[[[1,\\\"                \\\"],[10,\\\"img\\\"],[15,\\\"src\\\",[29,[\\\"/assets/images/fileicons/\\\",[30,18],\\\".png\\\"]]],[14,\\\"alt\\\",\\\"Upload Documents\\\"],[15,0,[29,[\\\"icon-small \\\",[52,[30,19],\\\"marginleft-m18\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null]],[18,19]],null],[1,\\\"            Uploaded Documents (\\\"],[1,[52,[28,[37,22],[[28,[37,23],[[30,20],2],null],1],null],\\\"< 1\\\",[28,[37,23],[[30,20],1],null]]],[1,\\\"mb)\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,8,[\\\"practiceAreaSettings\\\",\\\"settings\\\",\\\"admin\\\",\\\"allowXMLDownload\\\"]],[[[1,\\\"          \\\"],[8,[39,17],null,[[\\\"@class\\\",\\\"@model\\\"],[\\\"toggle-box-select\\\",[30,16,[\\\"XML\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"/assets/images/fileicons/xml.png\\\"],[14,\\\"alt\\\",\\\"Check to select XML\\\"],[14,0,\\\"icon-small\\\"],[12],[13],[1,\\\"XML\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,8,[\\\"practiceAreaSettings\\\",\\\"settings\\\",\\\"admin\\\",\\\"allowJSONDownload\\\"]],[[[1,\\\"          \\\"],[8,[39,17],null,[[\\\"@class\\\",\\\"@model\\\"],[\\\"toggle-box-select\\\",[30,16,[\\\"JSON\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"/assets/images/fileicons/json.png\\\"],[14,\\\"alt\\\",\\\"Check to select JSON\\\"],[14,0,\\\"icon-small\\\"],[12],[13],[1,\\\"JSON\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,8,[\\\"practiceAreaSettings\\\",\\\"settings\\\",\\\"admin\\\",\\\"enableDocxTemplates\\\"]],[[[42,[28,[37,20],[[28,[37,20],[[30,21]],null]],null],null,[[[1,\\\"            \\\"],[8,[39,17],null,[[\\\"@class\\\",\\\"@model\\\"],[\\\"toggle-box-select\\\",[28,[37,18],[[30,16],[30,22,[\\\"document\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"/assets/images/fileicons/docx.png\\\"],[14,0,\\\"icon-small\\\"],[14,\\\"title\\\",\\\"Automation\\\"],[14,\\\"alt\\\",\\\"Automation\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-bolt margin-0\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[1,[30,22,[\\\"document\\\"]]],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[22]],null]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,24],null,[[\\\"@recipients\\\",\\\"@fileType\\\",\\\"@emailMessage\\\",\\\"@fileTypeExplanation\\\",\\\"@isAllowedToBeRemoved\\\",\\\"@addRecipient\\\",\\\"@localDownload\\\",\\\"@emailFile\\\",\\\"@updateRecipientsCallback\\\",\\\"@removeLawyerCallback\\\",\\\"@downloadNamesRequired\\\",\\\"@documentsSelected\\\",\\\"@invalidEmailMessage\\\",\\\"@allowMobileDownload\\\",\\\"@noDocumentSelected\\\"],[[30,23],\\\"documents\\\",[30,24],[30,25],[30,26],[30,27],[30,28],[28,[37,25],[[30,29],[30,23],[30,24]],null],[30,30],[30,31],[30,32],[30,16],[30,33],true,[30,34]]],null],[1,\\\"\\\\n\\\"],[41,[30,16,[\\\"FilePro\\\"]],[[[1,\\\"        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,17],null,[[\\\"@model\\\",\\\"@class\\\"],[[30,35],\\\"toggle-box\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,35],[[[1,\\\"                Click here to hide the step-by-step how-to\\\\n\\\"]],[]],[[[1,\\\"                Click here for a FilePro step-by-step how-to\\\\n\\\"]],[]]],[1,\\\"            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,5],null,[[\\\"@predicate\\\"],[[30,35]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,\\\"ol\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n              Download the FilePro document to your computer using the link below\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n              Open the Settify Contact Import window in FilePro\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n              Follow the instructions on that screen, making sure to select the FilePro document you just downloaded. Here's what that screen looks like:\\\"],[10,\\\"br\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"/assets/images/filepro-example.png\\\"],[14,\\\"alt\\\",\\\"FilePro mockup screen\\\"],[12],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\\n  \\\"],[8,[39,5],null,[[\\\"@predicate\\\"],[[30,12]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-tab-pane\\\"],[12],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        The email addresses below will receive notifications whenever\\\\n        \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,8,[\\\"client\\\",\\\"firstName\\\"]]],[13],[1,\\\"\\\\n        updates their information.\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,29],null,[[\\\"@model\\\",\\\"@placeholder\\\",\\\"@addtext\\\"],[[30,8,[\\\"client\\\",\\\"notifyUpdates\\\"]],[30,36,[\\\"contactEmail\\\"]],\\\"Add another email address\\\"]],null],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,13],[\\\"click\\\",[28,[37,25],[[30,11],\\\"savechanges\\\"],null]],null],[12],[1,\\\"\\\\n        \\\"],[10,\\\"i\\\"],[14,0,\\\"clickable fal fa-save font-18\\\"],[14,\\\"title\\\",\\\"Save changes\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,13],[\\\"click\\\",[28,[37,25],[[30,11],\\\"discardchanges\\\"],null]],null],[12],[1,\\\"\\\\n        \\\"],[10,\\\"i\\\"],[14,0,\\\"clickable fal fa-times-circle negative font-18\\\"],[14,\\\"title\\\",\\\"Close without saving\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\\n  \\\"],[8,[39,5],null,[[\\\"@predicate\\\"],[[30,15]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-tab-pane\\\"],[12],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        Click on a plus sign (\\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-plus-circle\\\"],[12],[13],[1,\\\") to expand a section, and the minus sign (\\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-minus-circle\\\"],[12],[13],[1,\\\") to contract it again.\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        Click on the pencil (\\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-pencil\\\"],[12],[13],[1,\\\") to edit the information in the relevant section - it will then change into a save icon (\\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-cloud-upload-alt\\\"],[12],[13],[1,\\\") for you to save your changes. If you don't want to save your changes, click the cancel icon (\\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-times-circle negative\\\"],[12],[13],[1,\\\") instead.\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,7,[\\\"isAuthenticated\\\"]],[[[41,[30,7,[\\\"data\\\",\\\"authenticated\\\",\\\"adminUser\\\"]],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[10,\\\"strong\\\"],[12],[1,\\\"Note:\\\"],[13],[1,\\\"\\\\n            any changes you make here are potentially visible to the client.\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"\\\\n      \\\"],[8,[39,17],null,[[\\\"@model\\\",\\\"@class\\\"],[[30,15],\\\"toggle-box\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,2],[12],[10,\\\"small\\\"],[12],[1,\\\"Okay, got it\\\"],[13],[13],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[30,7,[\\\"isAuthenticated\\\"]],[[[41,[30,7,[\\\"data\\\",\\\"authenticated\\\",\\\"adminUser\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"rightalign\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,6],[[[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[15,0,[29,[\\\"fal fa-calendar-star \\\",[52,[28,[37,4],[[30,8,[\\\"client\\\",\\\"hasReceivedAppointmentEmail\\\"]],[30,8,[\\\"client\\\",\\\"firmAppointmentDate\\\"]]],null],\\\"opacity-0.3\\\"]]]],[12],[13],[1,\\\"\\\\n\\\"],[41,[30,8,[\\\"client\\\",\\\"invitedByLawFirm\\\"]],[[[1,\\\"              Invited client\\\\n              \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,13],[\\\"click\\\",[30,37]],null],[12],[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"clickable fal fa-info-circle marginleft-0\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,4],[[30,8,[\\\"client\\\",\\\"hasReceivedAppointmentEmail\\\"]],[30,8,[\\\"client\\\",\\\"firmAppointmentDate\\\"]]],null],[[[1,\\\"              \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle margin-0\\\"],[12],[13],[1,\\\"\\\\n              Follow-up Email Sent\\\\n              \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,13],[\\\"click\\\",[30,37]],null],[12],[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"clickable fal fa-info-circle marginleft-0\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"              \\\"],[8,[39,10],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"admin.invite\\\",[28,[37,31],null,[[\\\"clientID\\\"],[[30,8,[\\\"client\\\",\\\"clientID\\\"]]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                Send Follow-up Email\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n            \\\"]],[]]]],[]]],[1,\\\"\\\\n\\\"],[1,\\\"\\\\n            \\\"],[8,[39,5],null,[[\\\"@predicate\\\"],[[30,8,[\\\"client\\\",\\\"lockedByLawFirm\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"negative\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-lock tight negative\\\"],[12],[13],[1,\\\" Record Locked\\\"],[13],[1,\\\"\\\\n              \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,13],[\\\"click\\\",[30,38]],null],[12],[1,\\\"\\\\n                \\\"],[10,3],[14,0,\\\"clickable\\\"],[12],[1,\\\"\\\\n                  (allow further changes)\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[8,[39,5],null,[[\\\"@predicate\\\"],[[28,[37,3],[[30,8,[\\\"client\\\",\\\"lockedByLawFirm\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[11,\\\"button\\\"],[24,4,\\\"button\\\"],[4,[38,13],[\\\"click\\\",[30,38]],null],[12],[1,\\\"\\\\n                \\\"],[10,3],[14,0,\\\"clickable\\\"],[14,\\\"title\\\",\\\"Prevent this client from making any further changes to their Settify information\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-unlock\\\"],[12],[13],[1,\\\"Prevent further changes\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\\n            \\\"],[8,[39,33],null,[[\\\"@model\\\",\\\"@pmsMetadata\\\",\\\"@pmsDefaults\\\",\\\"@sendClientRecordToPMSCallback\\\"],[[30,8,[\\\"client\\\"]],[30,8,[\\\"pmsMetadata\\\"]],[30,8,[\\\"pmsDefaults\\\"]],[30,39]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"            \\\"],[8,[39,10],null,[[\\\"@route\\\",\\\"@model\\\"],[\\\"admin.clients\\\",[30,8,[\\\"client\\\",\\\"clientID\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-list-ul\\\"],[12],[13],[1,\\\"View condensed summary\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null]],[]],null],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,5],null,[[\\\"@predicate\\\"],[[30,40]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"invitation-email-history-wrapper\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,8,[\\\"client\\\",\\\"invitedByLawFirm\\\"]],[[[1,\\\"      \\\"],[10,2],[12],[1,\\\"Invitation email history:\\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[10,2],[12],[1,\\\"Follow-up email history:\\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"],[8,[39,34],null,[[\\\"@model\\\",\\\"@metadata\\\",\\\"@showReminderEmails\\\"],[[30,8,[\\\"client\\\"]],[30,8,[\\\"metadata\\\"]],false]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[\\\"@showDownloadStatus\\\",\\\"@downloadInProgress\\\",\\\"@buildingAppendices\\\",\\\"@showLoadingSpinner\\\",\\\"@sentEmailSuccessfully\\\",\\\"@condensedOutputMode\\\",\\\"@session\\\",\\\"@model\\\",\\\"@toggleDownloadAllOption\\\",\\\"@showDownloadAllOptions\\\",\\\"@toggleKeepMeNotified\\\",\\\"@showKeepMeNotified\\\",\\\"@downloadPDF\\\",\\\"@toggleHowToReadSummary\\\",\\\"@showHowToReadSummary\\\",\\\"@documentsSelected\\\",\\\"@uploadedDocExtensions\\\",\\\"ext\\\",\\\"index\\\",\\\"@uploadedDocFileSize\\\",\\\"@automationTemplates\\\",\\\"t\\\",\\\"@recipients\\\",\\\"@emailMessage\\\",\\\"@fileTypeExplanation\\\",\\\"@allowRemovalOfLawyerRecipients\\\",\\\"@addAdditionalRecipient\\\",\\\"@downloadSelectedFiles\\\",\\\"@emailSelectedFiles\\\",\\\"@updateRecipients\\\",\\\"@removeLawyer\\\",\\\"@downloadNamesRequired\\\",\\\"@invalidEmailMessage\\\",\\\"@noDocumentSelected\\\",\\\"@showFileProExampleImage\\\",\\\"@firm\\\",\\\"@toggleInvitationEmailHistory\\\",\\\"@toggleRecordLock\\\",\\\"@sendClientRecordToPMS\\\",\\\"@showInvitationEmailHistory\\\"],false,[\\\"div\\\",\\\"if\\\",\\\"and\\\",\\\"not\\\",\\\"or\\\",\\\"liquid-if\\\",\\\"eq\\\",\\\"loading-spinner\\\",\\\"unless\\\",\\\"small\\\",\\\"link-to\\\",\\\"i\\\",\\\"button\\\",\\\"on\\\",\\\"span\\\",\\\"img\\\",\\\"p\\\",\\\"check-box\\\",\\\"get\\\",\\\"each\\\",\\\"-track-array\\\",\\\"gte\\\",\\\"lt\\\",\\\"decimal\\\",\\\"download-resource\\\",\\\"fn\\\",\\\"ol\\\",\\\"li\\\",\\\"br\\\",\\\"email-list\\\",\\\"strong\\\",\\\"hash\\\",\\\"a\\\",\\\"send-to-pms\\\",\\\"invitation-email-history\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/summary-header.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/components/wills-cta\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if this.showWillsCTA}}\n    <LiquidIf @predicate={{or (not this.model.willsConnection) this.creatingWillsAccount}}>\n      {{!-- don't display CTA if they've already made a wills connection --}}\n  \n  \n      {{!-- TODO: add connections to other firms, not just your own --}}\n  \n      {{#if this.firm.otherSettifyURLs.Wills}}\n        {{#if this.model.wantsBFA}}\n          <h2>Did you know?</h2>\n          <p>\n            Just as it's important to establish appropriate financial protections and expectations when \n            entering a new relationship, it's also important to make sure your estate planning is up to date.\n          </p>\n          <p>\n            One area that people often overlook is their Wills, which set out what will happen to your\n            assets and liabilities if one of you were to pass away. At {{this.firm.name}}, we are experienced in\n            drafting and updating Wills alongside BFAs, and will ensure that your wishes are documented and respected.\n          </p>\n          <LiquidIf @predicate={{this.creatingWillsAccount}}>\n            <LoadingSpinner />\n          </LiquidIf>\n          <LiquidIf @predicate={{not this.creatingWillsAccount}}>\n              <p style=\"text-align: center;\">\n                <button class=\"next-button hvr-float-shadow hvr-grow no-align\" type=\"button\" {{action 'startWill'}}>\n                  Begin\n                </button>\n                <br/>\n                <a class=\"clickable\" {{action 'remindWill'}}>Remind me later</a>\n                <br/><br/>\n                <a class=\"clickable\" {{action 'setNoThanks'}}>No thanks</a>\n              </p>\n          </LiquidIf>\n        {{else}}\n          <h2>Your estate planning</h2>\n          <p>\n            We take a holistic approach to assisting our clients, and ensuring that your legal interests are protected. \n            Let’s consider whether your estate planning requires review.\n          </p>\n          <p>\n            <b>If you pass away, do you want <span class=\"settify-sensitive\">{{this.model.otherPersonName}}</span> to inherit your assets?</b> <br/>\n            <RadioButtons @text=\"Yes\" @value=\"yes\" @model={{this.wantsInheritance}} />\n            <RadioButtons @text=\"No\" @value=\"no\" @model={{this.wantsInheritance}} />\n            <RadioButtons @text=\"I'm not sure\" @value=\"unsure\" @model={{this.wantsInheritance}} />\n          </p>\n          <LiquidIf @predicate={{this.wantsInheritance}}>\n            <p>\n              <b>If you were to become incapacitated, would you want <span class=\"settify-sensitive\">{{this.model.otherPersonName}}</span> to make decisions about your medical treatment and financial affairs?</b> <br/>\n              <RadioButtons @text=\"Yes\" @value=\"yes\" @model={{this.wantsMedicalDecisions}} />\n              <RadioButtons @text=\"No\" @value=\"no\" @model={{this.wantsMedicalDecisions}} />\n              <RadioButtons @text=\"I'm not sure\" @value=\"unsure\" @model={{this.wantsMedicalDecisions}} />\n            </p>\n          </LiquidIf>\n  \n          <LiquidIf @predicate={{and this.wantsInheritance this.wantsMedicalDecisions}}>\n            {{#if (and (eq this.wantsInheritance 'yes') (eq this.wantsMedicalDecisions 'yes'))}}\n              <p>\n                Major life changes should be factored into your estate planning. \n              </p>\n              <p>\n                If you like, our leading Wills and Estate lawyers can help you ensure that your current wishes are reflected by reviewing your existing Will, and updating it if necessary. \n              </p>\n              {{#unless this.model.helpWantedSimple}}\n                <p>\n                  You have already provided much of the information that is required for us to consider your Will. This system can now help you to complete that process.\n                </p>\n              {{/unless}}\n            {{else}}\n              <p>\n                During a separation, it is crucial to ensure that your estate planning matches your current intentions. \n              </p>\n              <p>\n                If you have a Will that benefits <span class=\"settify-sensitive\">{{this.model.otherPersonName}}</span>, then they would still stand to inherit your assets. \n                If your current Will names <span class=\"settify-sensitive\">{{this.model.otherPersonName}}</span> as your Executor, they will have control over your estate, \n                and be able to decide how your assets are managed. \n              </p>\n              <p>\n                If you don't have a Will, then <span class=\"settify-sensitive\">{{this.model.otherPersonName}}</span> will likely receive the bulk of your estate under the ‘Rules of Intestacy’.\n              </p>\n              <p>\n                Additionally, if you become incapacitated, <span class=\"settify-sensitive\">{{this.model.otherPersonName}}</span> may be able to make major decisions on your \n                behalf about things like your medical treatment and financial affairs.\n              </p>\n              <p>\n                Our leading Wills and Estates lawyers can help you ensure that your current wishes are reflected, by reviewing your existing Will or creating a new one for you. \n              </p>\n              {{#unless this.model.helpWantedSimple}}\n                <p>\n                  You have already provided a lot of the information we would need in order to consider your Will. This system can now help you to complete that process.\n                </p>\n              {{/unless}}\n            {{/if}}\n            \n            <LiquidIf @predicate={{this.creatingWillsAccount}}>\n              <LoadingSpinner />\n            </LiquidIf>\n  \n            <LiquidIf @predicate={{not this.creatingWillsAccount}}>\n              <p style=\"text-align: center;\">\n                <button class=\"next-button hvr-float-shadow hvr-grow no-align\" type=\"button\" {{action 'startWill'}}>\n                  Begin\n                </button>\n                <br/>\n                <a class=\"clickable\" {{action 'remindWill'}}>Remind me later</a>\n                <br/>\n                <a class=\"clickable\" {{action 'setNoThanks'}}>No thanks</a>\n              </p>\n            </LiquidIf>\n            \n          </LiquidIf>\n        {{/if}}\n      {{/if}}\n    </LiquidIf>\n  \n    <LiquidIf @predicate={{this.createdWillsReminder}}>\n      {{!-- We have just created a wills account, but user wants to be reminded about it later --}}\n      <p>\n        <i class=\"fal fa-check-circle\" /> We've sent you a link to get started on your estate planning, \n        and will send you a reminder in a few days.\n      </p>\n    </LiquidIf>\n  \n    <LiquidIf @predicate={{this.model.willsNoThanks}}>\n      <p>\n        <i class=\"fal fa-check-circle\" /> Okay, got it. We may double check this with you at a later date, once\n        we have a better idea of your circumstances.\n      </p>\n    </LiquidIf>\n  {{/if}}\n  \n  */\n  {\n    \"id\": \"qPZwGvVa\",\n    \"block\": \"[[[41,[30,0,[\\\"showWillsCTA\\\"]],[[[1,\\\"  \\\"],[8,[39,1],null,[[\\\"@predicate\\\"],[[28,[37,2],[[28,[37,3],[[30,0,[\\\"model\\\",\\\"willsConnection\\\"]]],null],[30,0,[\\\"creatingWillsAccount\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"firm\\\",\\\"otherSettifyURLs\\\",\\\"Wills\\\"]],[[[41,[30,0,[\\\"model\\\",\\\"wantsBFA\\\"]],[[[1,\\\"        \\\"],[10,\\\"h2\\\"],[12],[1,\\\"Did you know?\\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          Just as it's important to establish appropriate financial protections and expectations when \\\\n          entering a new relationship, it's also important to make sure your estate planning is up to date.\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          One area that people often overlook is their Wills, which set out what will happen to your\\\\n          assets and liabilities if one of you were to pass away. At \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\", we are experienced in\\\\n          drafting and updating Wills alongside BFAs, and will ensure that your wishes are documented and respected.\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,1],null,[[\\\"@predicate\\\"],[[30,0,[\\\"creatingWillsAccount\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[8,[39,6],null,null,null],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[8,[39,1],null,[[\\\"@predicate\\\"],[[28,[37,3],[[30,0,[\\\"creatingWillsAccount\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,2],[14,5,\\\"text-align: center;\\\"],[12],[1,\\\"\\\\n              \\\"],[11,\\\"button\\\"],[24,0,\\\"next-button hvr-float-shadow hvr-grow no-align\\\"],[24,4,\\\"button\\\"],[4,[38,8],[[30,0],\\\"startWill\\\"],null],[12],[1,\\\"\\\\n                Begin\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,8],[[30,0],\\\"remindWill\\\"],null],[12],[1,\\\"Remind me later\\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"br\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,8],[[30,0],\\\"setNoThanks\\\"],null],[12],[1,\\\"No thanks\\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,\\\"h2\\\"],[12],[1,\\\"Your estate planning\\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          We take a holistic approach to assisting our clients, and ensuring that your legal interests are protected. \\\\n          Let’s consider whether your estate planning requires review.\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[10,\\\"b\\\"],[12],[1,\\\"If you pass away, do you want \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"otherPersonName\\\"]]],[13],[1,\\\" to inherit your assets?\\\"],[13],[1,\\\" \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[8,[39,13],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\"],[\\\"Yes\\\",\\\"yes\\\",[30,0,[\\\"wantsInheritance\\\"]]]],null],[1,\\\"\\\\n          \\\"],[8,[39,13],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\"],[\\\"No\\\",\\\"no\\\",[30,0,[\\\"wantsInheritance\\\"]]]],null],[1,\\\"\\\\n          \\\"],[8,[39,13],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\"],[\\\"I'm not sure\\\",\\\"unsure\\\",[30,0,[\\\"wantsInheritance\\\"]]]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,1],null,[[\\\"@predicate\\\"],[[30,0,[\\\"wantsInheritance\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[10,\\\"b\\\"],[12],[1,\\\"If you were to become incapacitated, would you want \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"otherPersonName\\\"]]],[13],[1,\\\" to make decisions about your medical treatment and financial affairs?\\\"],[13],[1,\\\" \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n            \\\"],[8,[39,13],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\"],[\\\"Yes\\\",\\\"yes\\\",[30,0,[\\\"wantsMedicalDecisions\\\"]]]],null],[1,\\\"\\\\n            \\\"],[8,[39,13],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\"],[\\\"No\\\",\\\"no\\\",[30,0,[\\\"wantsMedicalDecisions\\\"]]]],null],[1,\\\"\\\\n            \\\"],[8,[39,13],null,[[\\\"@text\\\",\\\"@value\\\",\\\"@model\\\"],[\\\"I'm not sure\\\",\\\"unsure\\\",[30,0,[\\\"wantsMedicalDecisions\\\"]]]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,1],null,[[\\\"@predicate\\\"],[[28,[37,14],[[30,0,[\\\"wantsInheritance\\\"]],[30,0,[\\\"wantsMedicalDecisions\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[28,[37,14],[[28,[37,15],[[30,0,[\\\"wantsInheritance\\\"]],\\\"yes\\\"],null],[28,[37,15],[[30,0,[\\\"wantsMedicalDecisions\\\"]],\\\"yes\\\"],null]],null],[[[1,\\\"            \\\"],[10,2],[12],[1,\\\"\\\\n              Major life changes should be factored into your estate planning. \\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              If you like, our leading Wills and Estate lawyers can help you ensure that your current wishes are reflected by reviewing your existing Will, and updating it if necessary. \\\\n            \\\"],[13],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"model\\\",\\\"helpWantedSimple\\\"]]],[[[1,\\\"              \\\"],[10,2],[12],[1,\\\"\\\\n                You have already provided much of the information that is required for us to consider your Will. This system can now help you to complete that process.\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],[[[1,\\\"            \\\"],[10,2],[12],[1,\\\"\\\\n              During a separation, it is crucial to ensure that your estate planning matches your current intentions. \\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              If you have a Will that benefits \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"otherPersonName\\\"]]],[13],[1,\\\", then they would still stand to inherit your assets. \\\\n              If your current Will names \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"otherPersonName\\\"]]],[13],[1,\\\" as your Executor, they will have control over your estate, \\\\n              and be able to decide how your assets are managed. \\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              If you don't have a Will, then \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"otherPersonName\\\"]]],[13],[1,\\\" will likely receive the bulk of your estate under the ‘Rules of Intestacy’.\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              Additionally, if you become incapacitated, \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"otherPersonName\\\"]]],[13],[1,\\\" may be able to make major decisions on your \\\\n              behalf about things like your medical treatment and financial affairs.\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              Our leading Wills and Estates lawyers can help you ensure that your current wishes are reflected, by reviewing your existing Will or creating a new one for you. \\\\n            \\\"],[13],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"model\\\",\\\"helpWantedSimple\\\"]]],[[[1,\\\"              \\\"],[10,2],[12],[1,\\\"\\\\n                You have already provided a lot of the information we would need in order to consider your Will. This system can now help you to complete that process.\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]],[1,\\\"          \\\\n          \\\"],[8,[39,1],null,[[\\\"@predicate\\\"],[[30,0,[\\\"creatingWillsAccount\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,6],null,null,null],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\\n          \\\"],[8,[39,1],null,[[\\\"@predicate\\\"],[[28,[37,3],[[30,0,[\\\"creatingWillsAccount\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,2],[14,5,\\\"text-align: center;\\\"],[12],[1,\\\"\\\\n              \\\"],[11,\\\"button\\\"],[24,0,\\\"next-button hvr-float-shadow hvr-grow no-align\\\"],[24,4,\\\"button\\\"],[4,[38,8],[[30,0],\\\"startWill\\\"],null],[12],[1,\\\"\\\\n                Begin\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,8],[[30,0],\\\"remindWill\\\"],null],[12],[1,\\\"Remind me later\\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[11,3],[24,0,\\\"clickable\\\"],[4,[38,8],[[30,0],\\\"setNoThanks\\\"],null],[12],[1,\\\"No thanks\\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n          \\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]],[]],null],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n\\\\n  \\\"],[8,[39,1],null,[[\\\"@predicate\\\"],[[30,0,[\\\"createdWillsReminder\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[1,\\\"    \\\"],[10,2],[12],[1,\\\"\\\\n      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\" We've sent you a link to get started on your estate planning, \\\\n      and will send you a reminder in a few days.\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\\n  \\\"],[8,[39,1],null,[[\\\"@predicate\\\"],[[30,0,[\\\"model\\\",\\\"willsNoThanks\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,2],[12],[1,\\\"\\\\n      \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\" Okay, got it. We may double check this with you at a later date, once\\\\n      we have a better idea of your circumstances.\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[],false,[\\\"if\\\",\\\"liquid-if\\\",\\\"or\\\",\\\"not\\\",\\\"h2\\\",\\\"p\\\",\\\"loading-spinner\\\",\\\"button\\\",\\\"action\\\",\\\"br\\\",\\\"a\\\",\\\"b\\\",\\\"span\\\",\\\"radio-buttons\\\",\\\"and\\\",\\\"eq\\\",\\\"unless\\\",\\\"i\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/components/wills-cta.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/config-error\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{outlet}}\n  \n  <div class=\"settify-contentcolumn disabled-page-wrapper\">\n    <img src=\"https://cdn.settify.com.au/logos/999999999-SETTIFY.png\" width=\"100px\" alt=\"Powered by Settify\" />\n    <h1 class=\"centertext\">Configuration file error</h1>\n    <p class=\"centertext\">\n      Error while downloading configuration firm file from the server. Check your internet connection or contact Settify Support at\n      <a href=\"mailto:support@settify.com\">support@settify.com</a>\n    </p>\n    <p class=\"centertext\">\n      <button type=\"button\" class=\"next-button\" onClick=\"window.location.reload()\">Retry</button>\n    </p>\n  </div>\n  */\n  {\n    \"id\": \"2kHE1Fi8\",\n    \"block\": \"[[[46,[28,[37,1],null,null],null,null,null],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"settify-contentcolumn disabled-page-wrapper\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"https://cdn.settify.com.au/logos/999999999-SETTIFY.png\\\"],[14,\\\"width\\\",\\\"100px\\\"],[14,\\\"alt\\\",\\\"Powered by Settify\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[10,\\\"h1\\\"],[14,0,\\\"centertext\\\"],[12],[1,\\\"Configuration file error\\\"],[13],[1,\\\"\\\\n  \\\"],[10,2],[14,0,\\\"centertext\\\"],[12],[1,\\\"\\\\n    Error while downloading configuration firm file from the server. Check your internet connection or contact Settify Support at\\\\n    \\\"],[10,3],[14,6,\\\"mailto:support@settify.com\\\"],[12],[1,\\\"support@settify.com\\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,2],[14,0,\\\"centertext\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"button\\\"],[14,0,\\\"next-button\\\"],[14,\\\"onClick\\\",\\\"window.location.reload()\\\"],[14,4,\\\"button\\\"],[12],[1,\\\"Retry\\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[],false,[\\\"component\\\",\\\"-outlet\\\",\\\"div\\\",\\\"img\\\",\\\"h1\\\",\\\"p\\\",\\\"a\\\",\\\"button\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/config-error.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/documents\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Documents\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <div class=\"loggedin-icon\">\n          <img src=\"/assets/images/document-pile.png\" alt=\"Documents Icon\">\n        </div>\n        {{outlet}}\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  \n  */\n  {\n    \"id\": \"NH/WzQTb\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Documents\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"loggedin-icon\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"/assets/images/document-pile.png\\\"],[14,\\\"alt\\\",\\\"Documents Icon\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[46,[28,[37,4],null,null],null,null,null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,5],null,null,null],[1,\\\"\\\\n\\\"]],[],false,[\\\"animated-header\\\",\\\"div\\\",\\\"img\\\",\\\"component\\\",\\\"-outlet\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/documents.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/error\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{outlet}}\n  \n  <AnimatedHeader>\n    Error\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <br><br>\n        <p>\n          An internal error occurred.\n        </p>\n        <p>\n          <LinkTo @route=\"index\">Click here to return to the home page</LinkTo> and keep going from there.\n        </p>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  \n  */\n  {\n    \"id\": \"vpCMyxS/\",\n    \"block\": \"[[[46,[28,[37,1],null,null],null,null,null],[1,\\\"\\\\n\\\\n\\\"],[8,[39,2],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Error\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        An internal error occurred.\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        \\\"],[8,[39,6],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[1,\\\"Click here to return to the home page\\\"]],[]]]]],[1,\\\" and keep going from there.\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,7],null,null,null],[1,\\\"\\\\n\\\"]],[],false,[\\\"component\\\",\\\"-outlet\\\",\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"p\\\",\\\"link-to\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/error.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/firstlogin\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Welcome\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <br /><br />\n        <p>\n          To make sure your account is secure, you now need to change your password.\n        </p>\n        <div class=\"form-group\">\n          <form {{action (if this.canProgress \"changePassword\" \"nullAction\") on=\"submit\"}}>\n            <ChoosePassword @password={{this.newPassword}} @passwordValid={{this.passwordValid}} />\n  \n            <LiquidIf @predicate={{this.loading}}>\n              <LoadingSpinner />\n            </LiquidIf>\n  \n            <LiquidIf @predicate={{this.errorMessage}}>\n              <p>\n                <b>There was an error processing your password change request.</b>\n                <CheckInternet />\n              </p>\n            </LiquidIf>\n  \n            <LiquidIf @predicate={{this.success}}>\n              <p>\n                <i class=\"fal fa-check-circle\" />\n                Your password has been changed.\n              </p>\n            </LiquidIf>\n  \n            <LiquidIf @predicate={{not this.success}}>\n              <div class=\"induction-navigation rightalign\">\n                <button type=\"submit\" class=\"floatnone next-button hvr-float-shadow hvr-grow {{unless this.canProgress 'disabled-button'}}\">\n                  {{#if this.errorMessage}}\n                    Try again\n                  {{else}}\n                    Change\n                  {{/if}}\n                </button>\n              </div>\n            </LiquidIf>\n  \n          </form>\n        </div>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"6lPQJdSi\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Welcome\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        To make sure your account is secure, you now need to change your password.\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"form-group\\\"],[12],[1,\\\"\\\\n        \\\"],[11,\\\"form\\\"],[4,[38,5],[[30,0],[52,[30,0,[\\\"canProgress\\\"]],\\\"changePassword\\\",\\\"nullAction\\\"]],[[\\\"on\\\"],[\\\"submit\\\"]]],[12],[1,\\\"\\\\n          \\\"],[8,[39,7],null,[[\\\"@password\\\",\\\"@passwordValid\\\"],[[30,0,[\\\"newPassword\\\"]],[30,0,[\\\"passwordValid\\\"]]]],null],[1,\\\"\\\\n\\\\n          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"loading\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,9],null,null,null],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\\n          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"errorMessage\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              \\\"],[10,\\\"b\\\"],[12],[1,\\\"There was an error processing your password change request.\\\"],[13],[1,\\\"\\\\n              \\\"],[8,[39,11],null,null,null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\\n          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"success\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"\\\\n              Your password has been changed.\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\\n          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,13],[[30,0,[\\\"success\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"induction-navigation rightalign\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"button\\\"],[15,0,[29,[\\\"floatnone next-button hvr-float-shadow hvr-grow \\\",[52,[51,[30,0,[\\\"canProgress\\\"]]],\\\"disabled-button\\\"]]]],[14,4,\\\"submit\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"errorMessage\\\"]],[[[1,\\\"                  Try again\\\\n\\\"]],[]],[[[1,\\\"                  Change\\\\n\\\"]],[]]],[1,\\\"              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,16],null,null,null]],[],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"p\\\",\\\"form\\\",\\\"action\\\",\\\"if\\\",\\\"choose-password\\\",\\\"liquid-if\\\",\\\"loading-spinner\\\",\\\"b\\\",\\\"check-internet\\\",\\\"i\\\",\\\"not\\\",\\\"button\\\",\\\"unless\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/firstlogin.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/help/frozenrecord\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{outlet}}\n  \n  <AnimatedHeader>\n    Frozen Record\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <StopThinkWarning />\n        <p>\n          The information you were looking for hasn't been accessed for a while, so for safety and privacy we have put a 'freeze' on it.\n        </p>\n  \n        <LoadingDisplay @loading={{this.unfreezeInProgress}} @success={{this.unfreezeSuccess}} @error={{this.unfreezeFailed}} @showError={{true}}>\n          The record has been unfrozen.\n          <LinkTo @route=\"admin.clients\" @model={{this.clientID}}>\n            Click here to view the record.\n          </LinkTo>\n        </LoadingDisplay>\n        <div id=\"settify-summary-content\" class=\"condensed-summary\">\n          <table class=\"header-left subtle-delineation three-columns unfreeze-info-table\">\n            <tbody>\n              <tr>\n                <th>\n  \n                </th>\n                <th>\n                  <b>Client</b>\n                </th>\n                <th>\n                  <b>Other side</b>\n                </th>\n              </tr>\n              <tr>\n                <td>\n                  First name\n                </td>\n                <td>\n                  {{this.model.client.title}}\n                  <span class=\"settify-sensitive\">{{this.model.client.firstName}}</span>\n  \n                </td>\n                <td>\n                  {{this.model.client.partnerTitle}}\n                  <span class=\"settify-sensitive\">{{this.model.client.partnerFirstName}}</span>\n                </td>\n              </tr>\n              <tr>\n                <td>\n                  Middle name(s)\n                </td>\n                <td>\n                  <span class=\"settify-sensitive\">{{this.model.client.middleName}}</span>\n  \n                </td>\n                <td>\n                  <span class=\"settify-sensitive\">{{this.model.client.partnerMiddleName}}</span>\n                </td>\n              </tr>\n              <tr>\n                <td>\n                  Surname(s)\n                </td>\n                <td>\n                  <span class=\"settify-sensitive\">{{this.model.client.surname}}</span>\n                </td>\n                <td>\n                  <span class=\"settify-sensitive\">{{this.model.client.partnerSurname}}</span>\n                </td>\n              </tr>\n              <tr>\n                <td>\n                  Age\n                </td>\n                <td>\n                  {{#if this.model.client.dateOfBirth}}\n                    (born\n                    <span class=\"settify-sensitive\">{{this.model.client.dateOfBirth}}</span>)\n                  {{else}}\n                    &mdash;\n                  {{/if}}\n                </td>\n                <td>\n                  {{#if this.model.client.partnerDateOfBirth}}\n                    (born\n                    <span class=\"settify-sensitive\">{{this.model.client.partnerDateOfBirth}}</span>)\n                  {{else}}\n                    &mdash;\n                  {{/if}}\n                </td>\n              </tr>\n              <tr>\n                <td>\n                  Email\n                </td>\n                <td>\n                  {{#if this.model.client.email}}\n                    <span class=\"settify-sensitive\">{{this.model.client.email}}</span>\n                  {{else}}\n                    &mdash;\n                  {{/if}}\n                </td>\n                <td>\n                  {{#if this.model.spouse.email}}\n                    <span class=\"settify-sensitive\">{{this.model.spouse.email}}</span>\n                  {{else}}\n                    &mdash;\n                  {{/if}}\n                </td>\n              </tr>\n              <tr>\n                <td>\n                  Phone\n                </td>\n                <td>\n                  {{#if this.model.client.phone}}\n                    <span class=\"settify-sensitive\">{{this.model.client.phone}}</span>\n                    {{#if this.model.client.doNotPhone}}\n                      <br /><b>Do not phone without prior permission</b>\n                    {{/if}}\n                  {{else}}\n                    &mdash;\n                  {{/if}}\n                </td>\n                <td>\n                  {{#if this.model.spouse.phone}}\n                    <span class=\"settify-sensitive\">{{this.model.spouse.phone}}</span>\n                  {{else}}\n                    &mdash;\n                  {{/if}}\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n  \n        <br />\n  \n        <p>\n          In order to 'unfreeze' a record, you must enter the unfreezing password below:\n          <SettifyTextline\n            @id=\"unfreeze-password-input\"\n            @maxlength=\"64\"\n            @placeholder=\"Enter the unfreeze password here\"\n            @type=\"password\"\n            @model={{this.password}}\n            @class=\"settify-sensitive\"\n          />\n        </p>\n  \n        <p>\n          And also please type below '{{this.unfreezeHeading}}':\n          <SettifyTextline @id=\"unfreeze-sentence-input\" @placeholder={{this.unfreezeHeading}} @type=\"text\" @model={{this.unfreezeText}} />\n          <LiquidIf @predicate={{this.incorrectText}}>\n            <span>The text does not match</span>\n          </LiquidIf>\n        </p>\n  \n        <p>\n          <b>Please note!</b>\n          If the request to unfreeze came from a client, we should first verify their identity, and that they want the record to be unfrozen.\n        </p>\n  \n      </div>\n    </div>\n  </div>\n  <SettifyFooter />\n  */\n  {\n    \"id\": \"YK9ufqIa\",\n    \"block\": \"[[[46,[28,[37,1],null,null],null,null,null],[1,\\\"\\\\n\\\\n\\\"],[8,[39,2],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Frozen Record\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,4],null,null,null],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        The information you were looking for hasn't been accessed for a while, so for safety and privacy we have put a 'freeze' on it.\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[8,[39,6],null,[[\\\"@loading\\\",\\\"@success\\\",\\\"@error\\\",\\\"@showError\\\"],[[30,0,[\\\"unfreezeInProgress\\\"]],[30,0,[\\\"unfreezeSuccess\\\"]],[30,0,[\\\"unfreezeFailed\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        The record has been unfrozen.\\\\n        \\\"],[8,[39,7],null,[[\\\"@route\\\",\\\"@model\\\"],[\\\"admin.clients\\\",[30,0,[\\\"clientID\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          Click here to view the record.\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[10,0],[14,1,\\\"settify-summary-content\\\"],[14,0,\\\"condensed-summary\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"table\\\"],[14,0,\\\"header-left subtle-delineation three-columns unfreeze-info-table\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"tbody\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"th\\\"],[12],[1,\\\"\\\\n\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"th\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"b\\\"],[12],[1,\\\"Client\\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"th\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"b\\\"],[12],[1,\\\"Other side\\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                First name\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"title\\\"]]],[1,\\\"\\\\n                \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"firstName\\\"]]],[13],[1,\\\"\\\\n\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"partnerTitle\\\"]]],[1,\\\"\\\\n                \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"partnerFirstName\\\"]]],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                Middle name(s)\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"middleName\\\"]]],[13],[1,\\\"\\\\n\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"partnerMiddleName\\\"]]],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                Surname(s)\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"surname\\\"]]],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"partnerSurname\\\"]]],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                Age\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"dateOfBirth\\\"]],[[[1,\\\"                  (born\\\\n                  \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"dateOfBirth\\\"]]],[13],[1,\\\")\\\\n\\\"]],[]],[[[1,\\\"                  —\\\\n\\\"]],[]]],[1,\\\"              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"partnerDateOfBirth\\\"]],[[[1,\\\"                  (born\\\\n                  \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"partnerDateOfBirth\\\"]]],[13],[1,\\\")\\\\n\\\"]],[]],[[[1,\\\"                  —\\\\n\\\"]],[]]],[1,\\\"              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                Email\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"email\\\"]],[[[1,\\\"                  \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"email\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                  —\\\\n\\\"]],[]]],[1,\\\"              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"spouse\\\",\\\"email\\\"]],[[[1,\\\"                  \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"spouse\\\",\\\"email\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                  —\\\\n\\\"]],[]]],[1,\\\"              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n                Phone\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"phone\\\"]],[[[1,\\\"                  \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"phone\\\"]]],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"doNotPhone\\\"]],[[[1,\\\"                    \\\"],[10,\\\"br\\\"],[12],[13],[10,\\\"b\\\"],[12],[1,\\\"Do not phone without prior permission\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],[[[1,\\\"                  —\\\\n\\\"]],[]]],[1,\\\"              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"spouse\\\",\\\"phone\\\"]],[[[1,\\\"                  \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"spouse\\\",\\\"phone\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                  —\\\\n\\\"]],[]]],[1,\\\"              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        In order to 'unfreeze' a record, you must enter the unfreezing password below:\\\\n        \\\"],[8,[39,17],null,[[\\\"@id\\\",\\\"@maxlength\\\",\\\"@placeholder\\\",\\\"@type\\\",\\\"@model\\\",\\\"@class\\\"],[\\\"unfreeze-password-input\\\",\\\"64\\\",\\\"Enter the unfreeze password here\\\",\\\"password\\\",[30,0,[\\\"password\\\"]],\\\"settify-sensitive\\\"]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        And also please type below '\\\"],[1,[30,0,[\\\"unfreezeHeading\\\"]]],[1,\\\"':\\\\n        \\\"],[8,[39,17],null,[[\\\"@id\\\",\\\"@placeholder\\\",\\\"@type\\\",\\\"@model\\\"],[\\\"unfreeze-sentence-input\\\",[30,0,[\\\"unfreezeHeading\\\"]],\\\"text\\\",[30,0,[\\\"unfreezeText\\\"]]]],null],[1,\\\"\\\\n        \\\"],[8,[39,18],null,[[\\\"@predicate\\\"],[[30,0,[\\\"incorrectText\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          \\\"],[10,1],[12],[1,\\\"The text does not match\\\"],[13],[1,\\\"\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        \\\"],[10,\\\"b\\\"],[12],[1,\\\"Please note!\\\"],[13],[1,\\\"\\\\n        If the request to unfreeze came from a client, we should first verify their identity, and that they want the record to be unfrozen.\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"],[8,[39,19],null,null,null]],[],false,[\\\"component\\\",\\\"-outlet\\\",\\\"animated-header\\\",\\\"div\\\",\\\"stop-think-warning\\\",\\\"p\\\",\\\"loading-display\\\",\\\"link-to\\\",\\\"table\\\",\\\"tbody\\\",\\\"tr\\\",\\\"th\\\",\\\"b\\\",\\\"td\\\",\\\"span\\\",\\\"if\\\",\\\"br\\\",\\\"settify-textline\\\",\\\"liquid-if\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/help/frozenrecord.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/help/gone\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Gone\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <br><br>\n        This record has been removed after two years of inactivity.\n      </div>\n    </div>\n  </div>\n  <SettifyFooter />\n  */\n  {\n    \"id\": \"mk4XAsYI\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Gone\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      This record has been removed after two years of inactivity.\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"],[8,[39,3],null,null,null]],[],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/help/gone.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/help/legacyrecord\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Incorrect system detected\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <br />\n        <p>The requested record is available only in a previous version of our system.</p>\n        {{#if this.legacyRecordUrl}}\n          <p>To view the record, please click the button below.</p>\n        {{/if}}\n        <p>\n          For further assistance, please\n          <a href=\"https://settify.freshdesk.com\" target=\"_blank\" rel=\"noopener noreferrer\">contact our support team</a>.\n        </p>\n        {{#if this.legacyRecordUrl}}\n          <p class=\"rightalign\">\n            <a href=\"{{this.legacyRecordUrl}}\" rel=\"noopener noreferrer\" class=\"next-button clickable\">\n              View record\n            </a>\n          </p>\n        {{/if}}\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"K1POZT07\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Incorrect system detected\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"The requested record is available only in a previous version of our system.\\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"legacyRecordUrl\\\"]],[[[1,\\\"        \\\"],[10,2],[12],[1,\\\"To view the record, please click the button below.\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[10,2],[12],[1,\\\"\\\\n        For further assistance, please\\\\n        \\\"],[10,3],[14,6,\\\"https://settify.freshdesk.com\\\"],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"contact our support team\\\"],[13],[1,\\\".\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"legacyRecordUrl\\\"]],[[[1,\\\"        \\\"],[10,2],[14,0,\\\"rightalign\\\"],[12],[1,\\\"\\\\n          \\\"],[10,3],[15,6,[29,[[30,0,[\\\"legacyRecordUrl\\\"]]]]],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[14,0,\\\"next-button clickable\\\"],[12],[1,\\\"\\\\n            View record\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,6],null,null,null]],[],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"p\\\",\\\"if\\\",\\\"a\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/help/legacyrecord.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/induction\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        {{!induction-questionnaire client=model}}\n        <LiquidOutlet />\n      </div>\n    </div>\n    {{! /row }}\n  </div>\n  {{! /container }}\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"gqYj3yHy\",\n    \"block\": \"[[[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"      \\\"],[8,[39,1],null,null,null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"],[1,\\\"\\\\n\\\"],[8,[39,2],null,null,null]],[],false,[\\\"div\\\",\\\"liquid-outlet\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/induction.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/lockedrecord\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    <img class=\"firm-header-logo\" src={{this.firm.logoURL}} alt=\"{{@firm.name}}\">\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <h2 class=\"centertext\">\n          Welcome Back\n        </h2>\n        <br>\n        <p>\n          Thank you for providing your information - We've got everything we need for now.\n        </p>\n        <p>\n          For any future communcation please contact us directly via phone on <a href=\"tel:{{this.firm.phoneURL}}\">{{this.firm.phone}}</a> \n          or email at <a href=\"mailto:{{this.firm.contactEmail}}\">{{this.firm.contactEmail}}</a>\n        </p>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  \n  */\n  {\n    \"id\": \"ReQtPo2k\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,\\\"img\\\"],[14,0,\\\"firm-header-logo\\\"],[15,\\\"src\\\",[30,0,[\\\"firm\\\",\\\"logoURL\\\"]]],[15,\\\"alt\\\",[29,[[30,1,[\\\"name\\\"]]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"h2\\\"],[14,0,\\\"centertext\\\"],[12],[1,\\\"\\\\n        Welcome Back\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        Thank you for providing your information - We've got everything we need for now.\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        For any future communcation please contact us directly via phone on \\\"],[10,3],[15,6,[29,[\\\"tel:\\\",[30,0,[\\\"firm\\\",\\\"phoneURL\\\"]]]]],[12],[1,[30,0,[\\\"firm\\\",\\\"phone\\\"]]],[13],[1,\\\" \\\\n        or email at \\\"],[10,3],[15,6,[29,[\\\"mailto:\\\",[30,0,[\\\"firm\\\",\\\"contactEmail\\\"]]]]],[12],[1,[30,0,[\\\"firm\\\",\\\"contactEmail\\\"]]],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,7],null,null,null],[1,\\\"\\\\n\\\"]],[\\\"@firm\\\"],false,[\\\"animated-header\\\",\\\"img\\\",\\\"div\\\",\\\"h2\\\",\\\"br\\\",\\\"p\\\",\\\"a\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/lockedrecord.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/login\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    {{#if this.session.isAuthenticated}}\n      Log out\n    {{else}}\n      {{#if this.loggedOut}}\n        Logged out\n      {{else}}\n        Log In\n      {{/if}}\n    {{/if}}\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <br><br>\n        {{#if this.loggedOut}}\n          <p>\n            <i class=\"fal fa-check-circle\" />You have been logged out.\n          </p>\n        {{else if this.session.isAuthenticated}}\n          <p>\n            Are you sure you want to log out?\n          </p>\n          <div class=\"induction-navigation centertext\">\n            <button type=\"button\" {{action \"invalidateSession\"}} class=\"floatnone next-button hvr-float-shadow hvr-grow clickable\">Yes, log me out</button>\n          </div>\n          <p class=\"centertext\">\n            <small>\n              <LinkTo @route=\"index\">No thanks, take me back to the home page</LinkTo>\n            </small>\n          </p>\n        {{else}}\n          {{#if this.session.attemptedTransition}}\n            <p>\n              You need to be logged in to access that page. Please enter your email address and password below.\n            </p>\n          {{/if}}\n  \n          {{#if this.model.fromValidationLink}}\n            <p>\n              <i class=\"fal fa-check-circle\" />Your account has been verified. Enter your password below to pick up where you left off.\n            </p>\n          {{/if}}\n  \n          {{#if this.model.addingRecordToAccount}}\n            <p>\n              <i class=\"fal fa-layer-plus\" />To add this record to an existing account, simply log in below.\n            </p>\n          {{/if}}\n  \n          {{#if (eq \"password-changed\" this.status)}}\n            <p>\n              <i class=\"fal fa-check-circle\" />Your password has been updated, please log in to continue.\n            </p>\n          {{/if}}\n  \n          <div class=\"form-group\">\n            <form {{action \"authenticate\" on=\"submit\"}}>\n              <p>\n                <SettifyEmailInput @id=\"identification-login\" @model={{this.model.email}} @headerLabel={{true}}>\n                  <b>Email address</b>\n                </SettifyEmailInput>\n              </p>\n  \n              <p>\n                <SettifyTextline @id=\"password-login\" @model={{this.password}} @headerLabel={{true}} @isPassword={{true}} @allowShowPassword={{true}}>\n                  <b>Password</b>\n                </SettifyTextline>\n              </p>\n  \n              <LiquidIf @predicate={{this.showPasswordLengthWarning}}>\n                <p>\n                  We noticed you are logging in with a new account. Please ensure you have entered the password exactly as shown in the email, as it should be 9 characters long.\n                </p>\n              </LiquidIf>\n  \n              <LiquidIf @predicate={{and this.loading (not this.totpRequired)}}>\n                <LoadingSpinner />\n              </LiquidIf>\n  \n              <LiquidIf @predicate={{this.totpIncorrect}}>\n                <p>\n                  Your temporary one-time password (OTP) was incorrect. Press Login to try again.\n                </p>\n              </LiquidIf>\n  \n              <LiquidIf @predicate={{not this.totpRequired}}>\n                <div class=\"induction-navigation rightalign\">\n                  <button type=\"submit\" class=\"login-button floatnone next-button hvr-float-shadow hvr-grow\">Login{{if this.model.addingRecordToAccount \" and add record\"}}</button>\n                </div>\n              </LiquidIf>\n            </form>\n  \n            <LiquidIf @predicate={{this.totpRequired}}>\n              <p class=\"centertext\">\n                <LineIcon @src=\"/assets/images/icons/mfa.png\" />\n              </p>\n              <p>\n                Please enter your temporary one-time password (TOTP) from your mobile MFA app (eg, Google Authenticator, Authy, OTP Auth).\n              </p>\n              <p>\n                <SettifyTextline @name=\"totp_input\" @max={{6}} @placeholder=\"######\" @model={{this.totp}} @autocomplete=\"off\" />\n              </p>\n              <LiquidIf @predicate={{this.canVerifyTOTP}}>\n                <div class=\"induction-navigation rightalign\">\n                  <button type=\"button\" {{action \"verifyTOTP\"}} class=\"login-button floatnone next-button hvr-float-shadow hvr-grow\">Login{{if\n                      this.model.addingRecordToAccount\n                      \" and add record\"\n                    }}</button>\n                </div>\n              </LiquidIf>\n            </LiquidIf>\n  \n            <LiquidIf @predicate={{this.errorMessage}}>\n              <p><b>Error:</b> Incorrect username or password</p>\n              <p>That username or password was incorrect.</p>\n              <p>\n                <b>Are you from one of our existing Settify firms?</b> If so, you'll need to log in at your\n                firm's customised Settify site. You can usually find this by going to your firm's website,\n                and clicking the links or animating buttons marked 'Get Started Online'. (This wording may be\n                slightly different depending on the customisations your firm has made.)\n              </p>\n              <p>\n                You'll know you're in the right place when the login page has your firm's colours \n                and branding along the top.\n              </p>\n            </LiquidIf>\n  \n            <LiquidIf @predicate={{or this.showExpiredMessage this.errorResending}}>\n              <p>\n                <b>Error:</b>\n                You did not log in within the required time period,\n                {{#if this.errorResending}}\n                  please send an email to\n                  <a href=\"mailto:support@settify.com\">support@settify.com</a>\n                  to request a new one\n                {{else}}\n                  so we have sent you a new temporary password by email. Please follow the instructions in that email to log in, and if you encounters any problems, contact\n                  <a href=\"mailto:support@settify.com\">support@settify.com</a>\n                {{/if}}\n              </p>\n            </LiquidIf>\n  \n            <LiquidIf @predicate={{this.wrongsite}}>\n              <p>\n                <strong>Uh oh!</strong>\n                It looks like this account is from a different law firm. In order to move your information over to\n                {{this.firm.name}}, please send an email to\n                <a href=\"mailto:support@settify.com.au\">support@settify.com.au</a>\n              </p>\n            </LiquidIf>\n  \n            {{#unless this.application.downtimeStatus}}\n              <p>\n                <small><LinkTo @route=\"resetpassword\" @query={{hash email=\"\" validationCode=\"\"}}>Forgot your password?</LinkTo></small>\n                <br />\n  \n                {{#if this.model.addingRecordToAccount}}\n                  <small><LinkTo @route=\"index\">Cancel</LinkTo></small>\n                {{else}}\n                  <small><a class=\"clickable\" {{action \"cancelLogin\"}}>Cancel login and return to the home page</a></small>\n                {{/if}}\n              </p>\n            {{/unless}}\n          </div>\n        {{/if}}\n      </div>\n    </div>\n  </div>\n  \n  {{#unless this.application.downtimeStatus}}\n    <SettifyFooter />\n  {{/unless}}\n  */\n  {\n    \"id\": \"BwtQtVQL\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"session\\\",\\\"isAuthenticated\\\"]],[[[1,\\\"    Log out\\\\n\\\"]],[]],[[[41,[30,0,[\\\"loggedOut\\\"]],[[[1,\\\"      Logged out\\\\n\\\"]],[]],[[[1,\\\"      Log In\\\\n\\\"]],[]]]],[]]]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"loggedOut\\\"]],[[[1,\\\"        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"You have been logged out.\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"session\\\",\\\"isAuthenticated\\\"]],[[[1,\\\"        \\\"],[10,2],[12],[1,\\\"\\\\n          Are you sure you want to log out?\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"induction-navigation centertext\\\"],[12],[1,\\\"\\\\n          \\\"],[11,\\\"button\\\"],[24,0,\\\"floatnone next-button hvr-float-shadow hvr-grow clickable\\\"],[24,4,\\\"button\\\"],[4,[38,7],[[30,0],\\\"invalidateSession\\\"],null],[12],[1,\\\"Yes, log me out\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"centertext\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"small\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,9],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[1,\\\"No thanks, take me back to the home page\\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"session\\\",\\\"attemptedTransition\\\"]],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            You need to be logged in to access that page. Please enter your email address and password below.\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"fromValidationLink\\\"]],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"Your account has been verified. Enter your password below to pick up where you left off.\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"addingRecordToAccount\\\"]],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-layer-plus\\\"],[12],[13],[1,\\\"To add this record to an existing account, simply log in below.\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,10],[\\\"password-changed\\\",[30,0,[\\\"status\\\"]]],null],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"Your password has been updated, please log in to continue.\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"form-group\\\"],[12],[1,\\\"\\\\n          \\\"],[11,\\\"form\\\"],[4,[38,7],[[30,0],\\\"authenticate\\\"],[[\\\"on\\\"],[\\\"submit\\\"]]],[12],[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              \\\"],[8,[39,12],null,[[\\\"@id\\\",\\\"@model\\\",\\\"@headerLabel\\\"],[\\\"identification-login\\\",[30,0,[\\\"model\\\",\\\"email\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"b\\\"],[12],[1,\\\"Email address\\\"],[13],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              \\\"],[8,[39,14],null,[[\\\"@id\\\",\\\"@model\\\",\\\"@headerLabel\\\",\\\"@isPassword\\\",\\\"@allowShowPassword\\\"],[\\\"password-login\\\",[30,0,[\\\"password\\\"]],true,true,true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"b\\\"],[12],[1,\\\"Password\\\"],[13],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\\n            \\\"],[8,[39,15],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showPasswordLengthWarning\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,2],[12],[1,\\\"\\\\n                We noticed you are logging in with a new account. Please ensure you have entered the password exactly as shown in the email, as it should be 9 characters long.\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\\n            \\\"],[8,[39,15],null,[[\\\"@predicate\\\"],[[28,[37,16],[[30,0,[\\\"loading\\\"]],[28,[37,17],[[30,0,[\\\"totpRequired\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[39,18],null,null,null],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\\n            \\\"],[8,[39,15],null,[[\\\"@predicate\\\"],[[30,0,[\\\"totpIncorrect\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,2],[12],[1,\\\"\\\\n                Your temporary one-time password (OTP) was incorrect. Press Login to try again.\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\\n            \\\"],[8,[39,15],null,[[\\\"@predicate\\\"],[[28,[37,17],[[30,0,[\\\"totpRequired\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"induction-navigation rightalign\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"button\\\"],[14,0,\\\"login-button floatnone next-button hvr-float-shadow hvr-grow\\\"],[14,4,\\\"submit\\\"],[12],[1,\\\"Login\\\"],[1,[52,[30,0,[\\\"model\\\",\\\"addingRecordToAccount\\\"]],\\\" and add record\\\"]],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\\n          \\\"],[8,[39,15],null,[[\\\"@predicate\\\"],[[30,0,[\\\"totpRequired\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,2],[14,0,\\\"centertext\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,19],null,[[\\\"@src\\\"],[\\\"/assets/images/icons/mfa.png\\\"]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              Please enter your temporary one-time password (TOTP) from your mobile MFA app (eg, Google Authenticator, Authy, OTP Auth).\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              \\\"],[8,[39,14],null,[[\\\"@name\\\",\\\"@max\\\",\\\"@placeholder\\\",\\\"@model\\\",\\\"@autocomplete\\\"],[\\\"totp_input\\\",6,\\\"######\\\",[30,0,[\\\"totp\\\"]],\\\"off\\\"]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[8,[39,15],null,[[\\\"@predicate\\\"],[[30,0,[\\\"canVerifyTOTP\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"induction-navigation rightalign\\\"],[12],[1,\\\"\\\\n                \\\"],[11,\\\"button\\\"],[24,0,\\\"login-button floatnone next-button hvr-float-shadow hvr-grow\\\"],[24,4,\\\"button\\\"],[4,[38,7],[[30,0],\\\"verifyTOTP\\\"],null],[12],[1,\\\"Login\\\"],[1,[52,[30,0,[\\\"model\\\",\\\"addingRecordToAccount\\\"]],\\\" and add record\\\"]],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\\n          \\\"],[8,[39,15],null,[[\\\"@predicate\\\"],[[30,0,[\\\"errorMessage\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,2],[12],[10,\\\"b\\\"],[12],[1,\\\"Error:\\\"],[13],[1,\\\" Incorrect username or password\\\"],[13],[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"That username or password was incorrect.\\\"],[13],[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              \\\"],[10,\\\"b\\\"],[12],[1,\\\"Are you from one of our existing Settify firms?\\\"],[13],[1,\\\" If so, you'll need to log in at your\\\\n              firm's customised Settify site. You can usually find this by going to your firm's website,\\\\n              and clicking the links or animating buttons marked 'Get Started Online'. (This wording may be\\\\n              slightly different depending on the customisations your firm has made.)\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              You'll know you're in the right place when the login page has your firm's colours \\\\n              and branding along the top.\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\\n          \\\"],[8,[39,15],null,[[\\\"@predicate\\\"],[[28,[37,20],[[30,0,[\\\"showExpiredMessage\\\"]],[30,0,[\\\"errorResending\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              \\\"],[10,\\\"b\\\"],[12],[1,\\\"Error:\\\"],[13],[1,\\\"\\\\n              You did not log in within the required time period,\\\\n\\\"],[41,[30,0,[\\\"errorResending\\\"]],[[[1,\\\"                please send an email to\\\\n                \\\"],[10,3],[14,6,\\\"mailto:support@settify.com\\\"],[12],[1,\\\"support@settify.com\\\"],[13],[1,\\\"\\\\n                to request a new one\\\\n\\\"]],[]],[[[1,\\\"                so we have sent you a new temporary password by email. Please follow the instructions in that email to log in, and if you encounters any problems, contact\\\\n                \\\"],[10,3],[14,6,\\\"mailto:support@settify.com\\\"],[12],[1,\\\"support@settify.com\\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\\n          \\\"],[8,[39,15],null,[[\\\"@predicate\\\"],[[30,0,[\\\"wrongsite\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              \\\"],[10,\\\"strong\\\"],[12],[1,\\\"Uh oh!\\\"],[13],[1,\\\"\\\\n              It looks like this account is from a different law firm. In order to move your information over to\\\\n              \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\", please send an email to\\\\n              \\\"],[10,3],[14,6,\\\"mailto:support@settify.com.au\\\"],[12],[1,\\\"support@settify.com.au\\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[41,[51,[30,0,[\\\"application\\\",\\\"downtimeStatus\\\"]]],[[[1,\\\"            \\\"],[10,2],[12],[1,\\\"\\\\n              \\\"],[10,\\\"small\\\"],[12],[8,[39,9],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"resetpassword\\\",[28,[37,24],null,[[\\\"email\\\",\\\"validationCode\\\"],[\\\"\\\",\\\"\\\"]]]]],[[\\\"default\\\"],[[[[1,\\\"Forgot your password?\\\"]],[]]]]],[13],[1,\\\"\\\\n              \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"addingRecordToAccount\\\"]],[[[1,\\\"                \\\"],[10,\\\"small\\\"],[12],[8,[39,9],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[1,\\\"Cancel\\\"]],[]]]]],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                \\\"],[10,\\\"small\\\"],[12],[11,3],[24,0,\\\"clickable\\\"],[4,[38,7],[[30,0],\\\"cancelLogin\\\"],null],[12],[1,\\\"Cancel login and return to the home page\\\"],[13],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]]]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[51,[30,0,[\\\"application\\\",\\\"downtimeStatus\\\"]]],[[[1,\\\"  \\\"],[8,[39,25],null,null,null],[1,\\\"\\\\n\\\"]],[]],null]],[],false,[\\\"animated-header\\\",\\\"if\\\",\\\"div\\\",\\\"br\\\",\\\"p\\\",\\\"i\\\",\\\"button\\\",\\\"action\\\",\\\"small\\\",\\\"link-to\\\",\\\"eq\\\",\\\"form\\\",\\\"settify-email-input\\\",\\\"b\\\",\\\"settify-textline\\\",\\\"liquid-if\\\",\\\"and\\\",\\\"not\\\",\\\"loading-spinner\\\",\\\"line-icon\\\",\\\"or\\\",\\\"a\\\",\\\"strong\\\",\\\"unless\\\",\\\"hash\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/login.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/mfa\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    MFA\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <br /><br />\n        <p class=\"centertext\">\n          <LineIcon @src=\"/assets/images/icons/mfa.png\" />\n        </p>\n  \n        <h2>What is Multi-Factor Authentication?</h2>\n        <p>\n          Multi-Factor Authentication (MFA) is an enhanced security protection for your account. With MFA enabled, your mobile phone will act as an additional layer of security.\n        </p>\n        <p>\n          In order to log in, you will need your email address, your password, and your mobile phone. This means that only someone who knows your password,\n          <i>and</i>\n          has access to your phone,\n          <i>and</i>\n          can unlock your phone, will be able to access your account.\n        </p>\n  \n        {{#if (or this.session.data.authenticated.mfaEnabled this.session.totpCreated)}}\n          <p>\n            <i class=\"fal fa-check-circle\" />\n            Multi-Factor Authentication is enabled for this account.\n          </p>\n          <p>\n            <LinkTo @route=\"index\">Return to the home page.</LinkTo>\n          </p>\n        {{/if}}\n  \n        {{#if (not (or this.session.data.authenticated.mfaEnabled this.session.totpCreated))}}\n          <h2>Activating Multi-Factor Authentication</h2>\n          {{#if this.firm.settings.requireMFA}}\n            <p>\n              Your firm requires you to configure MFA before using this online system. Don't worry, it's a simple process!\n            </p>\n          {{/if}}\n          <ol>\n            <li>\n              <p>\n                First thing's first - you're going to need an MFA app installed on your phone.\n              </p>\n              <p>\n                You may have heard of Google Authenticator (<a href=\"https://itunes.apple.com/au/app/google-authenticator/id388497605?mt=8\">iOS</a>\n                and\n                <a href=\"https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2\" target=\"blank\">Android</a>). This is just one of the many apps that can\n                be used to provide MFA. Other apps include Authy (<a href=\"https://authy.com/\" target=\"_blank\" rel=\"noopener noreferrer\">iOS and Android</a>) and OTP Auth (<a\n                  href=\"https://cooperrs.de/otpauth.html\"\n                  target=\"_blank\"\n                  rel=\"noopener noreferrer\"\n                >iOS only</a>).\n              </p>\n            </li>\n            <li>\n              <p>\n                Once you've installed your MFA app, use it to scan the following QR code:\n              </p>\n              <div id=\"qrcode\"></div>\n              <p class=\"textgrey\">\n                <small>If the QR code isn't working, you can use the following code to configure your MFA app instead: {{html-safe this.secretCode}}</small>\n              </p>\n            </li>\n            <li>\n              <p>\n                Enter the 6-digit password from your MFA app below and press \"Submit\"\n              </p>\n              <p>\n                <SettifyTextline @model={{this.mfaSetupResponse}} @placeholder=\"######\" @autocomplete=\"off\" />\n              </p>\n              <LiquidIf @predicate={{this.mfaError}}>\n                <p>\n                  The code didn't seem to match. Please ensure that your mobile device is correctly synced to the real time, and that you are entering the 6-digit code during the\n                  30-second window of validity.\n                </p>\n              </LiquidIf>\n              <LiquidIf @predicate={{and this.canProgress (not this.success)}}>\n                <button type=\"button\" class=\"next-button hvr-float-shadow hvr-grow\" {{action \"completeMFASetup\"}}>\n                  Submit\n                </button>\n              </LiquidIf>\n  \n              <LiquidIf @predicate={{this.success}}>\n                <p>\n                  <i class=\"fal fa-check-circle\" />\n                  MFA has been configured.\n                  <LinkTo @route=\"index\">Click here to return to the home page.</LinkTo>\n                </p>\n              </LiquidIf>\n            </li>\n          </ol>\n        {{/if}}\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"WSf6XMqC\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  MFA\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,2],[14,0,\\\"centertext\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,4],null,[[\\\"@src\\\"],[\\\"/assets/images/icons/mfa.png\\\"]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,\\\"h2\\\"],[12],[1,\\\"What is Multi-Factor Authentication?\\\"],[13],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        Multi-Factor Authentication (MFA) is an enhanced security protection for your account. With MFA enabled, your mobile phone will act as an additional layer of security.\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        In order to log in, you will need your email address, your password, and your mobile phone. This means that only someone who knows your password,\\\\n        \\\"],[10,\\\"i\\\"],[12],[1,\\\"and\\\"],[13],[1,\\\"\\\\n        has access to your phone,\\\\n        \\\"],[10,\\\"i\\\"],[12],[1,\\\"and\\\"],[13],[1,\\\"\\\\n        can unlock your phone, will be able to access your account.\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,8],[[30,0,[\\\"session\\\",\\\"data\\\",\\\"authenticated\\\",\\\"mfaEnabled\\\"]],[30,0,[\\\"session\\\",\\\"totpCreated\\\"]]],null],[[[1,\\\"        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"\\\\n          Multi-Factor Authentication is enabled for this account.\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          \\\"],[8,[39,9],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[1,\\\"Return to the home page.\\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,10],[[28,[37,8],[[30,0,[\\\"session\\\",\\\"data\\\",\\\"authenticated\\\",\\\"mfaEnabled\\\"]],[30,0,[\\\"session\\\",\\\"totpCreated\\\"]]],null]],null],[[[1,\\\"        \\\"],[10,\\\"h2\\\"],[12],[1,\\\"Activating Multi-Factor Authentication\\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"firm\\\",\\\"settings\\\",\\\"requireMFA\\\"]],[[[1,\\\"          \\\"],[10,2],[12],[1,\\\"\\\\n            Your firm requires you to configure MFA before using this online system. Don't worry, it's a simple process!\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[10,\\\"ol\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              First thing's first - you're going to need an MFA app installed on your phone.\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              You may have heard of Google Authenticator (\\\"],[10,3],[14,6,\\\"https://itunes.apple.com/au/app/google-authenticator/id388497605?mt=8\\\"],[12],[1,\\\"iOS\\\"],[13],[1,\\\"\\\\n              and\\\\n              \\\"],[10,3],[14,6,\\\"https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2\\\"],[14,\\\"target\\\",\\\"blank\\\"],[12],[1,\\\"Android\\\"],[13],[1,\\\"). This is just one of the many apps that can\\\\n              be used to provide MFA. Other apps include Authy (\\\"],[10,3],[14,6,\\\"https://authy.com/\\\"],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"iOS and Android\\\"],[13],[1,\\\") and OTP Auth (\\\"],[10,3],[14,6,\\\"https://cooperrs.de/otpauth.html\\\"],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"iOS only\\\"],[13],[1,\\\").\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              Once you've installed your MFA app, use it to scan the following QR code:\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,0],[14,1,\\\"qrcode\\\"],[12],[13],[1,\\\"\\\\n            \\\"],[10,2],[14,0,\\\"textgrey\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"small\\\"],[12],[1,\\\"If the QR code isn't working, you can use the following code to configure your MFA app instead: \\\"],[1,[28,[35,15],[[30,0,[\\\"secretCode\\\"]]],null]],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              Enter the 6-digit password from your MFA app below and press \\\\\\\"Submit\\\\\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              \\\"],[8,[39,16],null,[[\\\"@model\\\",\\\"@placeholder\\\",\\\"@autocomplete\\\"],[[30,0,[\\\"mfaSetupResponse\\\"]],\\\"######\\\",\\\"off\\\"]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[8,[39,17],null,[[\\\"@predicate\\\"],[[30,0,[\\\"mfaError\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,2],[12],[1,\\\"\\\\n                The code didn't seem to match. Please ensure that your mobile device is correctly synced to the real time, and that you are entering the 6-digit code during the\\\\n                30-second window of validity.\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[8,[39,17],null,[[\\\"@predicate\\\"],[[28,[37,18],[[30,0,[\\\"canProgress\\\"]],[28,[37,10],[[30,0,[\\\"success\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[11,\\\"button\\\"],[24,0,\\\"next-button hvr-float-shadow hvr-grow\\\"],[24,4,\\\"button\\\"],[4,[38,20],[[30,0],\\\"completeMFASetup\\\"],null],[12],[1,\\\"\\\\n                Submit\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\\n            \\\"],[8,[39,17],null,[[\\\"@predicate\\\"],[[30,0,[\\\"success\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,2],[12],[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"\\\\n                MFA has been configured.\\\\n                \\\"],[8,[39,9],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[1,\\\"Click here to return to the home page.\\\"]],[]]]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,21],null,null,null]],[],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"p\\\",\\\"line-icon\\\",\\\"h2\\\",\\\"i\\\",\\\"if\\\",\\\"or\\\",\\\"link-to\\\",\\\"not\\\",\\\"ol\\\",\\\"li\\\",\\\"a\\\",\\\"small\\\",\\\"html-safe\\\",\\\"settify-textline\\\",\\\"liquid-if\\\",\\\"and\\\",\\\"button\\\",\\\"action\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/mfa.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/notfound\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{outlet}}\n  \n  \n  <AnimatedHeader>\n    Not Found\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <br><br>\n  \n  \n        <p>\n          We couldn't find the page you were after.\n        </p>\n        <p>\n          Please check the URL for typos. If you've copied and pasted a link from an email, please check\n          that you've copied the entire thing (sometimes links get split over multiple lines).\n        </p>\n        <p>\n          Alternatively, <LinkTo @route=\"index\">return to the home page</LinkTo> and keep going from there.\n        </p>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  \n  */\n  {\n    \"id\": \"frMFaF3u\",\n    \"block\": \"[[[46,[28,[37,1],null,null],null,null,null],[1,\\\"\\\\n\\\\n\\\\n\\\"],[8,[39,2],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Not Found\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\\n\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        We couldn't find the page you were after.\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        Please check the URL for typos. If you've copied and pasted a link from an email, please check\\\\n        that you've copied the entire thing (sometimes links get split over multiple lines).\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        Alternatively, \\\"],[8,[39,6],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[1,\\\"return to the home page\\\"]],[]]]]],[1,\\\" and keep going from there.\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,7],null,null,null],[1,\\\"\\\\n\\\"]],[],false,[\\\"component\\\",\\\"-outlet\\\",\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"p\\\",\\\"link-to\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/notfound.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/privacy\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{outlet}}\n  \n  <AnimatedHeader>\n    Your Privacy\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <br><br>\n        <div class=\"fine-print\">\n          <p>For the latest version of our Privacy Policy please visit <a href=\"https://settify.com/privacy\" target=\"_blank\" rel=\"noopener noreferrer\">https://settify.com/privacy</a></p>\n          <p>For the latest version of our GDPR Data Processing Agreement please visit <a href=\"https://settify.com/gdpr\" target=\"_blank\" rel=\"noopener noreferrer\">https://settify.com/gdpr</a></p>\n          <p>For general enquiries or questions please contact Settify Support at <a href=\"mailto:support@settify.com\" target=\"_blank\" rel=\"noopener noreferrer\">support@settify.com</a></p>\n          <p>For further information about our privacy policy please contact our Privacy Officer at <a href=\"mailto:privacy@settify.com\" target=\"_blank\" rel=\"noopener noreferrer\">privacy@settify.com</a></p>\n        </div>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  \n  */\n  {\n    \"id\": \"K6/8sUIm\",\n    \"block\": \"[[[46,[28,[37,1],null,null],null,null,null],[1,\\\"\\\\n\\\\n\\\"],[8,[39,2],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Your Privacy\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"fine-print\\\"],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"For the latest version of our Privacy Policy please visit \\\"],[10,3],[14,6,\\\"https://settify.com/privacy\\\"],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"https://settify.com/privacy\\\"],[13],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"For the latest version of our GDPR Data Processing Agreement please visit \\\"],[10,3],[14,6,\\\"https://settify.com/gdpr\\\"],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"https://settify.com/gdpr\\\"],[13],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"For general enquiries or questions please contact Settify Support at \\\"],[10,3],[14,6,\\\"mailto:support@settify.com\\\"],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"support@settify.com\\\"],[13],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"For further information about our privacy policy please contact our Privacy Officer at \\\"],[10,3],[14,6,\\\"mailto:privacy@settify.com\\\"],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"privacy@settify.com\\\"],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,7],null,null,null],[1,\\\"\\\\n\\\"]],[],false,[\\\"component\\\",\\\"-outlet\\\",\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"p\\\",\\\"a\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/privacy.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/resetpassword\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <AnimatedHeader>\n    Reset Password\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <br><br>\n  \n        {{#if this.validationCode}}\n          <div class=\"form-group\">\n            <form {{action (if this.passwordValid \"changePassword\" \"nullAction\") on=\"submit\"}} aria-label=\"new password form\">\n              <p>\n                Enter your new password below\n                <ChoosePassword @password={{this.newPassword}} @passwordValid={{this.passwordValid}} />\n              </p>\n  \n              <LiquidIf @predicate={{this.loading}}>\n                <LoadingSpinner />\n              </LiquidIf>\n  \n              <LiquidIf @predicate={{this.errorMessage}}>\n                <p>\n                  We could not reset your password. Please confirm that you are connected to the internet, and that you are using the link from the most recent email we have sent\n                  you.\n                </p>\n              </LiquidIf>\n  \n              <LiquidIf @predicate={{this.success}}>\n                <p>\n                  <i class=\"fal fa-check-circle\" />\n                  Your password has been reset.\n                  <LinkTo @route=\"login\" @query={{hash email=\"\" clientID=\"\"}}>Log in now</LinkTo>.\n                </p>\n              </LiquidIf>\n  \n              <LiquidIf @predicate={{and (not this.loading) (not this.errorMessage) (not this.success)}}>\n                <div class=\"induction-navigation rightalign\">\n                  <button type=\"submit\" class=\"floatnone next-button hvr-float-shadow hvr-grow {{unless this.passwordValid 'disabled-button'}}\">\n                    Change\n                  </button>\n                </div>\n              </LiquidIf>\n            </form>\n          </div>\n        {{else}}\n          <p>\n            Enter your email address below, and we'll send you a link you can use to reset your password.\n          </p>\n  \n          <div class=\"form-group\">\n            <form {{action \"sendResetEmail\" on=\"submit\"}} aria-label=\"reset password form\">\n              <p>\n                <SettifyEmailInput @id=\"identification-reset\" @model={{this.emailAddress}} @headerLabel={{true}}>\n                  <b>Email address</b>\n                </SettifyEmailInput>\n              </p>\n  \n              <LiquidIf @predicate={{this.loading}}>\n                <LoadingSpinner />\n              </LiquidIf>\n  \n              <div class=\"induction-navigation rightalign\">\n                <button type=\"submit\" class=\"floatnone next-button hvr-float-shadow hvr-grow\">Reset Password</button>\n              </div>\n            </form>\n  \n            <LiquidIf @predicate={{this.errorMessage}}>\n              <p>We could not reset your password. Please check that you are connected to the internet.</p>\n            </LiquidIf>\n  \n            <LiquidIf @predicate={{this.emailSent}}>\n              <p>\n                <i class=\"fal fa-check-circle\" />\n                If you have an existing account you will receive an email that will include instructions on how to reset your password. Please check your spam or junk mail folder if\n                it doesn't arrive within a few minutes.\n              </p>\n              <p>\n                If you do not have an existing account, no email will be sent.\n              </p>\n              <p>\n                If you are a\n                {{this.firm.name}}\n                team member and need access, please contact\n                <a href=\"https://settify-firm.freshdesk.com\" target=\"_blank\" rel=\"noopener noreferrer\">Settify Support</a>.\n              </p>\n              <p>\n                If you are a client or prospective client of\n                {{this.firm.name}}\n                and have not yet created an account, please check your inbox for your personal link to resume the process.\n              </p>\n            </LiquidIf>\n  \n            <LiquidIf @predicate={{and (not this.emailSent) (not this.loading)}}>\n              <p>\n                <small><LinkTo @route=\"index\">Cancel password reset and return to the home page</LinkTo></small>\n              </p>\n            </LiquidIf>\n          </div>\n        {{/if}}\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  */\n  {\n    \"id\": \"a/eMuYaG\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Reset Password\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"validationCode\\\"]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"form-group\\\"],[12],[1,\\\"\\\\n          \\\"],[11,\\\"form\\\"],[24,\\\"aria-label\\\",\\\"new password form\\\"],[4,[38,5],[[30,0],[52,[30,0,[\\\"passwordValid\\\"]],\\\"changePassword\\\",\\\"nullAction\\\"]],[[\\\"on\\\"],[\\\"submit\\\"]]],[12],[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              Enter your new password below\\\\n              \\\"],[8,[39,7],null,[[\\\"@password\\\",\\\"@passwordValid\\\"],[[30,0,[\\\"newPassword\\\"]],[30,0,[\\\"passwordValid\\\"]]]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\\n            \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"loading\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[39,9],null,null,null],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\\n            \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"errorMessage\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,2],[12],[1,\\\"\\\\n                We could not reset your password. Please confirm that you are connected to the internet, and that you are using the link from the most recent email we have sent\\\\n                you.\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\\n            \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"success\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,2],[12],[1,\\\"\\\\n                \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"\\\\n                Your password has been reset.\\\\n                \\\"],[8,[39,11],null,[[\\\"@route\\\",\\\"@query\\\"],[\\\"login\\\",[28,[37,12],null,[[\\\"email\\\",\\\"clientID\\\"],[\\\"\\\",\\\"\\\"]]]]],[[\\\"default\\\"],[[[[1,\\\"Log in now\\\"]],[]]]]],[1,\\\".\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\\n            \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,13],[[28,[37,14],[[30,0,[\\\"loading\\\"]]],null],[28,[37,14],[[30,0,[\\\"errorMessage\\\"]]],null],[28,[37,14],[[30,0,[\\\"success\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"induction-navigation rightalign\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"button\\\"],[15,0,[29,[\\\"floatnone next-button hvr-float-shadow hvr-grow \\\",[52,[51,[30,0,[\\\"passwordValid\\\"]]],\\\"disabled-button\\\"]]]],[14,4,\\\"submit\\\"],[12],[1,\\\"\\\\n                  Change\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,2],[12],[1,\\\"\\\\n          Enter your email address below, and we'll send you a link you can use to reset your password.\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[10,0],[14,0,\\\"form-group\\\"],[12],[1,\\\"\\\\n          \\\"],[11,\\\"form\\\"],[24,\\\"aria-label\\\",\\\"reset password form\\\"],[4,[38,5],[[30,0],\\\"sendResetEmail\\\"],[[\\\"on\\\"],[\\\"submit\\\"]]],[12],[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              \\\"],[8,[39,17],null,[[\\\"@id\\\",\\\"@model\\\",\\\"@headerLabel\\\"],[\\\"identification-reset\\\",[30,0,[\\\"emailAddress\\\"]],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,\\\"b\\\"],[12],[1,\\\"Email address\\\"],[13],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\\n            \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"loading\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[39,9],null,null,null],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\\n            \\\"],[10,0],[14,0,\\\"induction-navigation rightalign\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"button\\\"],[14,0,\\\"floatnone next-button hvr-float-shadow hvr-grow\\\"],[14,4,\\\"submit\\\"],[12],[1,\\\"Reset Password\\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\\n          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"errorMessage\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"We could not reset your password. Please check that you are connected to the internet.\\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\\n          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[30,0,[\\\"emailSent\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"\\\\n              If you have an existing account you will receive an email that will include instructions on how to reset your password. Please check your spam or junk mail folder if\\\\n              it doesn't arrive within a few minutes.\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              If you do not have an existing account, no email will be sent.\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              If you are a\\\\n              \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\"\\\\n              team member and need access, please contact\\\\n              \\\"],[10,3],[14,6,\\\"https://settify-firm.freshdesk.com\\\"],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"Settify Support\\\"],[13],[1,\\\".\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              If you are a client or prospective client of\\\\n              \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\"\\\\n              and have not yet created an account, please check your inbox for your personal link to resume the process.\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\\n          \\\"],[8,[39,8],null,[[\\\"@predicate\\\"],[[28,[37,13],[[28,[37,14],[[30,0,[\\\"emailSent\\\"]]],null],[28,[37,14],[[30,0,[\\\"loading\\\"]]],null]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"\\\\n              \\\"],[10,\\\"small\\\"],[12],[8,[39,11],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[1,\\\"Cancel password reset and return to the home page\\\"]],[]]]]],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,21],null,null,null]],[],false,[\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"if\\\",\\\"form\\\",\\\"action\\\",\\\"p\\\",\\\"choose-password\\\",\\\"liquid-if\\\",\\\"loading-spinner\\\",\\\"i\\\",\\\"link-to\\\",\\\"hash\\\",\\\"and\\\",\\\"not\\\",\\\"button\\\",\\\"unless\\\",\\\"settify-email-input\\\",\\\"b\\\",\\\"a\\\",\\\"small\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/resetpassword.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/summaryloadingspinner\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#if (and this.showDownloadStatus (not (or this.downloadInProgress this.buildingAppendices)))}}\n    <div class=\"summary-downloading-status\">\n      Building file...\n    </div>\n  {{/if}}\n  <LiquidIf @predicate={{this.showLoadingSpinner}}>\n    <div class=\"summary-downloading-status\">\n      {{#if (eq this.showLoadingSpinner 'email')}}\n        Sending email...\n      {{else if (eq this.showLoadingSpinner \"download\")}}\n        Preparing download...\n      {{else if (eq this.showLoadingSpinner \"pms\")}}\n        Sending data to INSERT PRACTICE MANAGEMENT SYSTEM\n      {{/if}}\n    </div>\n    <LoadingSpinner />\n  </LiquidIf>\n  <LiquidIf @predicate={{this.sentEmailSuccessfully}}>\n    <div class=\"summary-downloading-status\">\n      Email was sent successfully\n    </div>\n  </LiquidIf>\n  \n  */\n  {\n    \"id\": \"zS+U2iMC\",\n    \"block\": \"[[[41,[28,[37,1],[[30,0,[\\\"showDownloadStatus\\\"]],[28,[37,2],[[28,[37,3],[[30,0,[\\\"downloadInProgress\\\"]],[30,0,[\\\"buildingAppendices\\\"]]],null]],null]],null],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"summary-downloading-status\\\"],[12],[1,\\\"\\\\n    Building file...\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[8,[39,5],null,[[\\\"@predicate\\\"],[[30,0,[\\\"showLoadingSpinner\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"summary-downloading-status\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,6],[[30,0,[\\\"showLoadingSpinner\\\"]],\\\"email\\\"],null],[[[1,\\\"      Sending email...\\\\n\\\"]],[]],[[[41,[28,[37,6],[[30,0,[\\\"showLoadingSpinner\\\"]],\\\"download\\\"],null],[[[1,\\\"      Preparing download...\\\\n\\\"]],[]],[[[41,[28,[37,6],[[30,0,[\\\"showLoadingSpinner\\\"]],\\\"pms\\\"],null],[[[1,\\\"      Sending data to INSERT PRACTICE MANAGEMENT SYSTEM\\\\n    \\\"]],[]],null]],[]]]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,7],null,null,null],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"],[8,[39,5],null,[[\\\"@predicate\\\"],[[30,0,[\\\"sentEmailSuccessfully\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"summary-downloading-status\\\"],[12],[1,\\\"\\\\n    Email was sent successfully\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[],false,[\\\"if\\\",\\\"and\\\",\\\"not\\\",\\\"or\\\",\\\"div\\\",\\\"liquid-if\\\",\\\"eq\\\",\\\"loading-spinner\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/summaryloadingspinner.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/terms\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{outlet}}\n  \n  <AnimatedHeader>\n    Terms and Conditions\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <br><br>\n        <div class=\"fine-print\">\n          {{#if this.session.isAuthenticated}}\n            {{#if this.session.data.authenticated.adminUser}}\n              <p>\n                Your use of Settify is governed by our service contract (a copy of which is available on request).\n              </p>\n            {{/if}}\n          {{/if}}\n          <p>For the latest version of our Terms and Conditions please visit <a href=\"https://settify.com/terms\" target=\"_blank\" rel=\"noopener noreferrer\">https://settify.com/terms</a></p>\n          <p>For general enquiries or questions please contact Settify Support at <a href=\"mailto:support@settify.com\" target=\"_blank\" rel=\"noopener noreferrer\">support@settify.com</a></p>\n        </div>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  \n  */\n  {\n    \"id\": \"kq1xke54\",\n    \"block\": \"[[[46,[28,[37,1],null,null],null,null,null],[1,\\\"\\\\n\\\\n\\\"],[8,[39,2],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Terms and Conditions\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"fine-print\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"session\\\",\\\"isAuthenticated\\\"]],[[[41,[30,0,[\\\"session\\\",\\\"data\\\",\\\"authenticated\\\",\\\"adminUser\\\"]],[[[1,\\\"            \\\"],[10,2],[12],[1,\\\"\\\\n              Your use of Settify is governed by our service contract (a copy of which is available on request).\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"        \\\"],[10,2],[12],[1,\\\"For the latest version of our Terms and Conditions please visit \\\"],[10,3],[14,6,\\\"https://settify.com/terms\\\"],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"https://settify.com/terms\\\"],[13],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"For general enquiries or questions please contact Settify Support at \\\"],[10,3],[14,6,\\\"mailto:support@settify.com\\\"],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"support@settify.com\\\"],[13],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,8],null,null,null],[1,\\\"\\\\n\\\"]],[],false,[\\\"component\\\",\\\"-outlet\\\",\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"if\\\",\\\"p\\\",\\\"a\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/terms.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/unauthorised\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{outlet}}\n  \n  \n  <AnimatedHeader>\n    Unauthorised\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <br><br>\n  \n        <p>\n          <strong>Uh oh! You are not authorised to access that data.</strong>\n        </p>\n        {{#if this.session.data.authenticated.adminUser}}\n          <p>\n            It is possible that you have been denied access due to a conflict situation (have you already flagged that you are conflicted from representing this client?), or perhaps just due to a typo.\n          </p>\n          <p>\n            Let us know if you think you should be able to access this client's information, and we'll look into it for you.\n          </p>\n        {{/if}}\n        <p>\n          <LinkTo @route=\"index\">Return to the home page</LinkTo>\n        </p>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  \n  */\n  {\n    \"id\": \"GTFNEzvg\",\n    \"block\": \"[[[46,[28,[37,1],null,null],null,null,null],[1,\\\"\\\\n\\\\n\\\\n\\\"],[8,[39,2],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Unauthorised\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        \\\"],[10,\\\"strong\\\"],[12],[1,\\\"Uh oh! You are not authorised to access that data.\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"session\\\",\\\"data\\\",\\\"authenticated\\\",\\\"adminUser\\\"]],[[[1,\\\"        \\\"],[10,2],[12],[1,\\\"\\\\n          It is possible that you have been denied access due to a conflict situation (have you already flagged that you are conflicted from representing this client?), or perhaps just due to a typo.\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          Let us know if you think you should be able to access this client's information, and we'll look into it for you.\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[10,2],[12],[1,\\\"\\\\n        \\\"],[8,[39,8],null,[[\\\"@route\\\"],[\\\"index\\\"]],[[\\\"default\\\"],[[[[1,\\\"Return to the home page\\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,9],null,null,null],[1,\\\"\\\\n\\\"]],[],false,[\\\"component\\\",\\\"-outlet\\\",\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"p\\\",\\\"strong\\\",\\\"if\\\",\\\"link-to\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/unauthorised.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/billing-loading\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    \n  <div class=\"px-4 sm:px-6 lg:px-8\">\n    <div class=\"mt-2 md:flex md:items-center md:justify-between border-b border-gray-200 pb-3 mb-4\">\n      <div class=\"min-w-0 flex-1\">\n        <h2 class=\"text-2xl font-bold leading-7 sm:truncate sm:text-3xl sm:tracking-tight\">Billing</h2>\n      </div>\n    </div>\n  \n    {{!-- Callout for Stripe --}}\n    <div class=\"bg-white shadow sm:rounded-lg mb-4\">\n      <div class=\"px-4 py-5 sm:p-6\">\n        <h3 class=\"text-base font-semibold leading-6 \">Manage Stripe</h3>\n        <div class=\"mt-2 sm:flex sm:items-start sm:justify-between\">\n          <div class=\"max-w-xl text-sm text-gray-500\">\n            <p>Invoices and payments are handled securely by Stripe, a trusted online payment processor we've partnered with.</p>\n          </div>\n          <div class=\"mt-5 sm:ml-6 sm:mt-0 sm:flex sm:flex-shrink-0 sm:items-center\">\n            <button disabled type=\"button\" class=\"inline-flex items-center rounded-md bg-settify-green px-3 py-2 text-sm font-semibold text-white shadow-sm opacity-50\">View Stripe details</button>\n          </div>\n        </div>\n      </div>\n    </div>\n  \n    {{!-- Invoice Table --}}\n    <div class=\"py-8\">\n      <h2 class=\"text-base font-semibold leading-6 \">Billing history</h2>\n      <table class=\"min-w-full table-fixed divide-y divide-gray-300\">\n        <thead>\n          <tr class=\"text-sm text-left\">\n            <th scope=\"col\" class=\"p-3 font-semibold\">Invoice</th>\n            <th scope=\"col\" class=\"p-3 font-semibold\">Date</th>\n            <th scope=\"col\" class=\"hidden sm:table-cell p-3 font-semibold\">Status</th>\n            <th scope=\"col\" class=\"relative p-3\"></th>\n          </tr>\n        </thead>\n        <tbody class=\"divide-y divide-gray-200 bg-white\" role=\"status\">\n          {{#each (array 1 2 3 4 5) as | loop |}}\n            <tr class=\"border-b border-gray-100 animate-pulse p-2 mb-2\">\n              <td class=\"px-3 py-3.5\">\n                <div class=\"inline-block h-2.5 bg-gray-300 rounded-full w-16\">\n                  <span class=\"sr-only\">Loading...</span>\n                </div>\n              </td>\n              <td class=\"px-3 py-3.5\">\n                <div class=\"inline-block h-2.5 bg-gray-300 rounded-full w-12\"></div>\n              </td>\n              <td class=\"hidden sm:table-cell px-3 py-3.5\">\n                <div class=\"inline-block h-2.5 bg-gray-300 rounded-full w-12\"></div>\n              </td>\n              <td class=\"px-3 py-3.5 text-right\">\n                <div class=\"inline-block h-2.5 w-12\">\n                  <button disabled type=\"button\" class=\"inline-flex items-center p-2 text-sm font-medium text-center rounded-lg hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-settify-green focus:ring-offset-2 focus:ring-offset-gray-100\">\n                    <span class=\"sr-only\">Open options</span>\n                    <svg class=\"h-5 w-5\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n                      <path d=\"M10 3a1.5 1.5 0 110 3 1.5 1.5 0 010-3zM10 8.5a1.5 1.5 0 110 3 1.5 1.5 0 010-3zM11.5 15.5a1.5 1.5 0 10-3 0 1.5 1.5 0 003 0z\" />\n                    </svg>\n                  </button>\n                </div>\n              </td>\n            </tr>\n          {{/each}}\n        </tbody>\n      </table>\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"Lo8YlkU9\",\n    \"block\": \"[[[1,\\\"\\\\n\\\"],[10,0],[14,0,\\\"px-4 sm:px-6 lg:px-8\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"mt-2 md:flex md:items-center md:justify-between border-b border-gray-200 pb-3 mb-4\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"min-w-0 flex-1\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"h2\\\"],[14,0,\\\"text-2xl font-bold leading-7 sm:truncate sm:text-3xl sm:tracking-tight\\\"],[12],[1,\\\"Billing\\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"  \\\"],[10,0],[14,0,\\\"bg-white shadow sm:rounded-lg mb-4\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"px-4 py-5 sm:p-6\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"h3\\\"],[14,0,\\\"text-base font-semibold leading-6 \\\"],[12],[1,\\\"Manage Stripe\\\"],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"mt-2 sm:flex sm:items-start sm:justify-between\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"max-w-xl text-sm text-gray-500\\\"],[12],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"Invoices and payments are handled securely by Stripe, a trusted online payment processor we've partnered with.\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"mt-5 sm:ml-6 sm:mt-0 sm:flex sm:flex-shrink-0 sm:items-center\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"button\\\"],[14,\\\"disabled\\\",\\\"\\\"],[14,0,\\\"inline-flex items-center rounded-md bg-settify-green px-3 py-2 text-sm font-semibold text-white shadow-sm opacity-50\\\"],[14,4,\\\"button\\\"],[12],[1,\\\"View Stripe details\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"  \\\"],[10,0],[14,0,\\\"py-8\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"h2\\\"],[14,0,\\\"text-base font-semibold leading-6 \\\"],[12],[1,\\\"Billing history\\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"table\\\"],[14,0,\\\"min-w-full table-fixed divide-y divide-gray-300\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"tr\\\"],[14,0,\\\"text-sm text-left\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"p-3 font-semibold\\\"],[12],[1,\\\"Invoice\\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"p-3 font-semibold\\\"],[12],[1,\\\"Date\\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"hidden sm:table-cell p-3 font-semibold\\\"],[12],[1,\\\"Status\\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"relative p-3\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"tbody\\\"],[14,0,\\\"divide-y divide-gray-200 bg-white\\\"],[14,\\\"role\\\",\\\"status\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,11],[[28,[37,11],[[28,[37,12],[1,2,3,4,5],null]],null]],null],null,[[[1,\\\"          \\\"],[10,\\\"tr\\\"],[14,0,\\\"border-b border-gray-100 animate-pulse p-2 mb-2\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[14,0,\\\"px-3 py-3.5\\\"],[12],[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"inline-block h-2.5 bg-gray-300 rounded-full w-16\\\"],[12],[1,\\\"\\\\n                \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Loading...\\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[14,0,\\\"px-3 py-3.5\\\"],[12],[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"inline-block h-2.5 bg-gray-300 rounded-full w-12\\\"],[12],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[14,0,\\\"hidden sm:table-cell px-3 py-3.5\\\"],[12],[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"inline-block h-2.5 bg-gray-300 rounded-full w-12\\\"],[12],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[14,0,\\\"px-3 py-3.5 text-right\\\"],[12],[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"inline-block h-2.5 w-12\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"button\\\"],[14,\\\"disabled\\\",\\\"\\\"],[14,0,\\\"inline-flex items-center p-2 text-sm font-medium text-center rounded-lg hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-settify-green focus:ring-offset-2 focus:ring-offset-gray-100\\\"],[14,4,\\\"button\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Open options\\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"svg\\\"],[14,0,\\\"h-5 w-5\\\"],[14,\\\"viewBox\\\",\\\"0 0 20 20\\\"],[14,\\\"fill\\\",\\\"currentColor\\\"],[14,\\\"aria-hidden\\\",\\\"true\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"path\\\"],[14,\\\"d\\\",\\\"M10 3a1.5 1.5 0 110 3 1.5 1.5 0 010-3zM10 8.5a1.5 1.5 0 110 3 1.5 1.5 0 010-3zM11.5 15.5a1.5 1.5 0 10-3 0 1.5 1.5 0 003 0z\\\"],[12],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"loop\\\"],false,[\\\"div\\\",\\\"h2\\\",\\\"h3\\\",\\\"p\\\",\\\"button\\\",\\\"table\\\",\\\"thead\\\",\\\"tr\\\",\\\"th\\\",\\\"tbody\\\",\\\"each\\\",\\\"-track-array\\\",\\\"array\\\",\\\"td\\\",\\\"span\\\",\\\"svg\\\",\\\"path\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/billing-loading.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/billing/index-loading\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage @heading=\"Billing\">\n    {{! Callout for Stripe }}\n    <div class=\"mb-4 bg-white shadow sm:rounded-lg\">\n      <div class=\"px-4 py-5 sm:p-6\">\n        <h3 class=\"text-base font-semibold leading-6\">Manage Stripe</h3>\n        <div class=\"mt-2 sm:flex sm:items-start sm:justify-between\">\n          <div class=\"max-w-xl text-sm text-gray-500\">\n            <p>Invoices and payments are handled securely by Stripe, a trusted online payment processor we've partnered with.</p>\n          </div>\n          <div class=\"mt-5 sm:ml-6 sm:mt-0 sm:flex sm:flex-shrink-0 sm:items-center\">\n            <V2::Button @variant=\"solid\" disabled>\n              View Stripe details\n            </V2::Button>\n          </div>\n        </div>\n      </div>\n    </div>\n  \n    {{! Invoice Table }}\n    <div class=\"py-8\">\n      <h2 class=\"text-base font-semibold leading-6\">Billing history</h2>\n      <table class=\"min-w-full table-fixed divide-y divide-gray-300\">\n        <thead>\n          <tr class=\"text-left text-sm\">\n            <th scope=\"col\" class=\"p-3 font-semibold\">Invoice</th>\n            <th scope=\"col\" class=\"p-3 font-semibold\">Date</th>\n            <th scope=\"col\" class=\"hidden p-3 font-semibold sm:table-cell\">Status</th>\n            <th scope=\"col\" class=\"relative p-3\"></th>\n          </tr>\n        </thead>\n        <tbody class=\"divide-y divide-gray-200 bg-white\" role=\"status\">\n          {{#each (array 1 2 3 4 5) as |loop|}}\n            <tr class=\"mb-2 animate-pulse border-b border-gray-100 p-2\">\n              <td class=\"px-3 py-3.5\">\n                <div class=\"inline-block h-2.5 w-16 rounded-full bg-gray-300\">\n                  <span class=\"sr-only\">Loading...</span>\n                </div>\n              </td>\n              <td class=\"px-3 py-3.5\">\n                <div class=\"inline-block h-2.5 w-12 rounded-full bg-gray-300\"></div>\n              </td>\n              <td class=\"hidden px-3 py-3.5 sm:table-cell\">\n                <div class=\"inline-block h-2.5 w-12 rounded-full bg-gray-300\"></div>\n              </td>\n              <td class=\"px-3 py-3.5 text-right\">\n                <div class=\"inline-block h-2.5 w-12\">\n                  <button\n                    disabled\n                    type=\"button\"\n                    class=\"inline-flex items-center rounded-lg p-2 text-center text-sm font-medium hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-brand-primary-color-rgb focus:ring-offset-2 focus:ring-offset-gray-100\"\n                  >\n                    <span class=\"sr-only\">Open options</span>\n                    <V2::SvgIcon @icon=\"dots-vertical\" class=\"size-5\" />\n                  </button>\n                </div>\n              </td>\n            </tr>\n          {{/each}}\n        </tbody>\n      </table>\n    </div>\n  </V2::AdminPage>\n  */\n  {\n    \"id\": \"Xf9DdmTW\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@heading\\\"],[\\\"Billing\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[1,\\\"  \\\"],[10,0],[14,0,\\\"mb-4 bg-white shadow sm:rounded-lg\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"px-4 py-5 sm:p-6\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"h3\\\"],[14,0,\\\"text-base font-semibold leading-6\\\"],[12],[1,\\\"Manage Stripe\\\"],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"mt-2 sm:flex sm:items-start sm:justify-between\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"max-w-xl text-sm text-gray-500\\\"],[12],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"Invoices and payments are handled securely by Stripe, a trusted online payment processor we've partnered with.\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"mt-5 sm:ml-6 sm:mt-0 sm:flex sm:flex-shrink-0 sm:items-center\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,4],[[24,\\\"disabled\\\",\\\"\\\"]],[[\\\"@variant\\\"],[\\\"solid\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            View Stripe details\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"  \\\"],[10,0],[14,0,\\\"py-8\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"h2\\\"],[14,0,\\\"text-base font-semibold leading-6\\\"],[12],[1,\\\"Billing history\\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"table\\\"],[14,0,\\\"min-w-full table-fixed divide-y divide-gray-300\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"tr\\\"],[14,0,\\\"text-left text-sm\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"p-3 font-semibold\\\"],[12],[1,\\\"Invoice\\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"p-3 font-semibold\\\"],[12],[1,\\\"Date\\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"hidden p-3 font-semibold sm:table-cell\\\"],[12],[1,\\\"Status\\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"relative p-3\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"tbody\\\"],[14,0,\\\"divide-y divide-gray-200 bg-white\\\"],[14,\\\"role\\\",\\\"status\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,12],[[28,[37,12],[[28,[37,13],[1,2,3,4,5],null]],null]],null],null,[[[1,\\\"          \\\"],[10,\\\"tr\\\"],[14,0,\\\"mb-2 animate-pulse border-b border-gray-100 p-2\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[14,0,\\\"px-3 py-3.5\\\"],[12],[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"inline-block h-2.5 w-16 rounded-full bg-gray-300\\\"],[12],[1,\\\"\\\\n                \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Loading...\\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[14,0,\\\"px-3 py-3.5\\\"],[12],[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"inline-block h-2.5 w-12 rounded-full bg-gray-300\\\"],[12],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[14,0,\\\"hidden px-3 py-3.5 sm:table-cell\\\"],[12],[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"inline-block h-2.5 w-12 rounded-full bg-gray-300\\\"],[12],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[14,0,\\\"px-3 py-3.5 text-right\\\"],[12],[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"inline-block h-2.5 w-12\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"button\\\"],[14,\\\"disabled\\\",\\\"\\\"],[14,0,\\\"inline-flex items-center rounded-lg p-2 text-center text-sm font-medium hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-brand-primary-color-rgb focus:ring-offset-2 focus:ring-offset-gray-100\\\"],[14,4,\\\"button\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Open options\\\"],[13],[1,\\\"\\\\n                  \\\"],[8,[39,17],[[24,0,\\\"size-5\\\"]],[[\\\"@icon\\\"],[\\\"dots-vertical\\\"]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"loop\\\"],false,[\\\"v2/admin-page\\\",\\\"div\\\",\\\"h3\\\",\\\"p\\\",\\\"v2/button\\\",\\\"h2\\\",\\\"table\\\",\\\"thead\\\",\\\"tr\\\",\\\"th\\\",\\\"tbody\\\",\\\"each\\\",\\\"-track-array\\\",\\\"array\\\",\\\"td\\\",\\\"span\\\",\\\"button\\\",\\\"v2/svg-icon\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/billing/index-loading.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/billing/index\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage @heading=\"Billing\">\n    {{! Callout for Stripe }}\n    <div class=\"mb-4 bg-white shadow sm:rounded-lg\">\n      <div class=\"px-4 py-5 sm:p-6\">\n        <h3 class=\"text-base font-semibold leading-6\">Manage Stripe</h3>\n        <div class=\"mt-2 sm:flex sm:items-start sm:justify-between\">\n          <div class=\"max-w-xl text-sm text-gray-500\">\n            <p>Invoices and payments are handled securely by Stripe, a trusted online payment processor we've partnered with.</p>\n          </div>\n          <div class=\"mt-5 sm:ml-6 sm:mt-0 sm:flex sm:flex-shrink-0 sm:items-center\">\n            <V2::Button @variant=\"solid\" {{on \"click\" this.goToStripePortal}}>\n              {{#if this.loadingStripeUrl}}\n                <V2::SvgIcon @icon=\"spinner-third\" class=\"size-4 animate-spin\" role=\"status\" />\n                Loading...\n              {{else}}\n                View Stripe details\n              {{/if}}\n            </V2::Button>\n          </div>\n        </div>\n      </div>\n    </div>\n  \n    {{! Invoice Table }}\n    <div class=\"py-8\">\n      <h2 class=\"text-base font-semibold leading-6\">Billing history</h2>\n      <table class=\"min-w-full table-fixed divide-y divide-gray-300\">\n        <thead>\n          <tr class=\"text-left text-sm\">\n            {{! TODO: Convert th.span to a button once sorting is implemented }}\n            <th scope=\"col\" class=\"p-3 font-semibold\">\n              <span class=\"group inline-flex\">\n                Invoice\n              </span>\n            </th>\n            <th scope=\"col\" class=\"p-3 font-semibold\">\n              <span class=\"group inline-flex\">\n                Date\n              </span>\n            </th>\n            <th scope=\"col\" class=\"hidden p-3 font-semibold sm:table-cell\">\n              <span class=\"group inline-flex\">\n                Status\n              </span>\n            </th>\n            <th scope=\"col\" class=\"relative p-3\">\n              <span class=\"sr-only\">Download</span>\n            </th>\n          </tr>\n        </thead>\n        <tbody class=\"divide-y divide-gray-200 bg-white\">\n          {{#each this.model.invoiceRequests as |invoiceRequest index|}}\n            <tr data-index={{index}} data-invoice-id={{invoiceRequest.invoiceNumber}} class=\"border-b border-gray-100\">\n              <td class=\"px-3 py-3.5 text-sm\">\n                {{#if (eq invoiceRequest.status \"pending\")}}\n                  <LinkTo\n                    @route=\"v2.admin.billing.review\"\n                    @query={{hash startDate=invoiceRequest.startDate endDate=invoiceRequest.endDate historical=false}}\n                    class=\"font-medium leading-6 text-brand-primary-color-rgb hover:text-brand-primary-color-rgb/90\"\n                  >\n                    Pending invoice\n                  </LinkTo>\n                {{else}}\n                  <LinkTo\n                    @route=\"v2.admin.billing.invoice\"\n                    @model={{invoiceRequest.id}}\n                    @query={{hash startDate=(unless invoiceRequest.invoiceUUID invoiceRequest.startDate) endDate=(unless invoiceRequest.invoiceUUID invoiceRequest.endDate)}}\n                    class=\"font-medium leading-6 text-brand-primary-color-rgb hover:text-brand-primary-color-rgb/90\"\n                  >\n                    <span class=\"sr-only\">View invoice:</span>\n                    {{invoiceRequest.invoiceNumber}}\n                  </LinkTo>\n                {{/if}}\n              </td>\n              <td class=\"px-3 py-3.5 text-sm text-gray-600\">\n                {{pretty-date invoiceRequest.endDate customFormat=\"MMMM YY\"}}\n              </td>\n              <td class=\"hidden px-3 py-3.5 text-sm sm:table-cell\">\n                {{! TODO: Convert to a pill/badge component }}\n                {{#if invoiceRequest.status}}\n                  <div\n                    class=\"inline-flex rounded-md px-2 py-1 text-xs font-medium ring-1 ring-inset\n                      {{if (eq invoiceRequest.status 'overdue') 'bg-red-50 text-red-700 ring-red-600/10' 'bg-green-50 text-green-700 ring-green-600/10'}}\"\n                  >\n                    {{sentence-case invoiceRequest.status}}\n                  </div>\n                {{/if}}\n              </td>\n              <td class=\"px-3 py-3.5 text-right text-sm text-gray-600\">\n                <div class=\"relative inline-block text-left\">\n                  <V2::Dropdown\n                    @id=\"billing-row-menu-{{index}}\"\n                    @toggleDropdown={{this.toggleInvoiceDropdown}}\n                    @parameters={{index}}\n                    @clickedOutside={{fn this.onClickedOutside index}}\n                    as |dropdown|\n                  >\n                    <dropdown.header>\n                      <button\n                        type=\"button\"\n                        class=\"inline-flex items-center rounded-lg p-2 text-center text-sm font-medium hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-brand-primary-color-rgb focus:ring-offset-2 focus:ring-offset-gray-100\"\n                        aria-expanded={{eq this.showInvoiceDropdown invoiceRequest}}\n                        aria-haspopup=\"true\"\n                        aria-controls=\"downloads-menu-{{index}}\"\n                      >\n                        <span class=\"sr-only\">Open options</span>\n                        <V2::SvgIcon @icon=\"dots-vertical\" class=\"size-5\" id=\"invoice-dropdown-{{index}}\" />\n                      </button>\n                    </dropdown.header>\n                    <dropdown.content @isOpen={{eq this.showInvoiceDropdown invoiceRequest}}>\n                      <div\n                        id=\"downloads-menu-{{index}}\"\n                        class=\"absolute right-0 z-10 w-32 rounded-sm bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none\"\n                        role=\"menu\"\n                        aria-orientation=\"vertical\"\n                        aria-labelledby=\"invoice-dropdown-{{index}}\"\n                      >\n                        <ul class=\"py-1\">\n                          {{#if (eq invoiceRequest.status \"pending\")}}\n                            <li>\n                              <LinkTo\n                                @route=\"v2.admin.billing.review\"\n                                @query={{hash startDate=invoiceRequest.startDate endDate=invoiceRequest.endDate historical=false}}\n                                class=\"block px-4 py-2 text-sm hover:bg-gray-100\"\n                              >\n                                Review\n                                <span class=\"sr-only\">upcoming invoice</span>\n                              </LinkTo>\n                            </li>\n                          {{else}}\n                            <li>\n                              <LinkTo\n                                @route=\"v2.admin.billing.invoice\"\n                                @model={{invoiceRequest.id}}\n                                @query={{hash\n                                  startDate=(unless invoiceRequest.invoiceUUID invoiceRequest.startDate)\n                                  endDate=(unless invoiceRequest.invoiceUUID invoiceRequest.endDate)\n                                }}\n                                class=\"block px-4 py-2 text-sm hover:bg-gray-100\"\n                              >\n                                Review\n                                <span class=\"sr-only\">invoice {{invoiceRequest.invoiceNumber}}</span>\n                              </LinkTo>\n                            </li>\n                          {{/if}}\n                          {{#if invoiceRequest.invoicePdfUrl}}\n                            <li>\n                              <a href={{invoiceRequest.invoicePdfUrl}} class=\"block px-4 py-2 text-sm hover:bg-gray-100\">\n                                Download<span class=\"sr-only\">, invoice {{invoiceRequest.invoiceNumber}}</span>\n                              </a>\n                            </li>\n                          {{/if}}\n                          {{#if (and (not-eq invoiceRequest.status \"paid\") (not-eq invoiceRequest.status \"pending\") invoiceRequest.paymentUrl)}}\n                            <li>\n                              <a href={{invoiceRequest.paymentUrl}} target=\"_blank\" rel=\"noopener noreferrer\" class=\"block px-4 py-2 text-sm hover:bg-gray-100\">\n                                Make payment<span class=\"sr-only\">, invoice {{invoiceRequest.invoiceNumber}}</span>\n                              </a>\n                            </li>\n                          {{/if}}\n                        </ul>\n                      </div>\n                    </dropdown.content>\n                  </V2::Dropdown>\n                </div>\n              </td>\n            </tr>\n          {{/each}}\n        </tbody>\n      </table>\n    </div>\n  </V2::AdminPage>\n  */\n  {\n    \"id\": \"IbgAYqZl\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@heading\\\"],[\\\"Billing\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[1,\\\"  \\\"],[10,0],[14,0,\\\"mb-4 bg-white shadow sm:rounded-lg\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"px-4 py-5 sm:p-6\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"h3\\\"],[14,0,\\\"text-base font-semibold leading-6\\\"],[12],[1,\\\"Manage Stripe\\\"],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"mt-2 sm:flex sm:items-start sm:justify-between\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"max-w-xl text-sm text-gray-500\\\"],[12],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"Invoices and payments are handled securely by Stripe, a trusted online payment processor we've partnered with.\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"mt-5 sm:ml-6 sm:mt-0 sm:flex sm:flex-shrink-0 sm:items-center\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,4],[[4,[38,5],[\\\"click\\\",[30,0,[\\\"goToStripePortal\\\"]]],null]],[[\\\"@variant\\\"],[\\\"solid\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"loadingStripeUrl\\\"]],[[[1,\\\"              \\\"],[8,[39,7],[[24,0,\\\"size-4 animate-spin\\\"],[24,\\\"role\\\",\\\"status\\\"]],[[\\\"@icon\\\"],[\\\"spinner-third\\\"]],null],[1,\\\"\\\\n              Loading...\\\\n\\\"]],[]],[[[1,\\\"              View Stripe details\\\\n\\\"]],[]]],[1,\\\"          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"  \\\"],[10,0],[14,0,\\\"py-8\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"h2\\\"],[14,0,\\\"text-base font-semibold leading-6\\\"],[12],[1,\\\"Billing history\\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"table\\\"],[14,0,\\\"min-w-full table-fixed divide-y divide-gray-300\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"tr\\\"],[14,0,\\\"text-left text-sm\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"          \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"p-3 font-semibold\\\"],[12],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"group inline-flex\\\"],[12],[1,\\\"\\\\n              Invoice\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"p-3 font-semibold\\\"],[12],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"group inline-flex\\\"],[12],[1,\\\"\\\\n              Date\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"hidden p-3 font-semibold sm:table-cell\\\"],[12],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"group inline-flex\\\"],[12],[1,\\\"\\\\n              Status\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"relative p-3\\\"],[12],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Download\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"tbody\\\"],[14,0,\\\"divide-y divide-gray-200 bg-white\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,16],[[28,[37,16],[[30,0,[\\\"model\\\",\\\"invoiceRequests\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[10,\\\"tr\\\"],[15,\\\"data-index\\\",[30,2]],[15,\\\"data-invoice-id\\\",[30,1,[\\\"invoiceNumber\\\"]]],[14,0,\\\"border-b border-gray-100\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[14,0,\\\"px-3 py-3.5 text-sm\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,18],[[30,1,[\\\"status\\\"]],\\\"pending\\\"],null],[[[1,\\\"                \\\"],[8,[39,19],[[24,0,\\\"font-medium leading-6 text-brand-primary-color-rgb hover:text-brand-primary-color-rgb/90\\\"]],[[\\\"@route\\\",\\\"@query\\\"],[\\\"v2.admin.billing.review\\\",[28,[37,20],null,[[\\\"startDate\\\",\\\"endDate\\\",\\\"historical\\\"],[[30,1,[\\\"startDate\\\"]],[30,1,[\\\"endDate\\\"]],false]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  Pending invoice\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                \\\"],[8,[39,19],[[24,0,\\\"font-medium leading-6 text-brand-primary-color-rgb hover:text-brand-primary-color-rgb/90\\\"]],[[\\\"@route\\\",\\\"@model\\\",\\\"@query\\\"],[\\\"v2.admin.billing.invoice\\\",[30,1,[\\\"id\\\"]],[28,[37,20],null,[[\\\"startDate\\\",\\\"endDate\\\"],[[52,[51,[30,1,[\\\"invoiceUUID\\\"]]],[30,1,[\\\"startDate\\\"]]],[52,[51,[30,1,[\\\"invoiceUUID\\\"]]],[30,1,[\\\"endDate\\\"]]]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"View invoice:\\\"],[13],[1,\\\"\\\\n                  \\\"],[1,[30,1,[\\\"invoiceNumber\\\"]]],[1,\\\"\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[14,0,\\\"px-3 py-3.5 text-sm text-gray-600\\\"],[12],[1,\\\"\\\\n              \\\"],[1,[28,[35,22],[[30,1,[\\\"endDate\\\"]]],[[\\\"customFormat\\\"],[\\\"MMMM YY\\\"]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[14,0,\\\"hidden px-3 py-3.5 text-sm sm:table-cell\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"status\\\"]],[[[1,\\\"                \\\"],[10,0],[15,0,[29,[\\\"inline-flex rounded-md px-2 py-1 text-xs font-medium ring-1 ring-inset\\\\n                    \\\",[52,[28,[37,18],[[30,1,[\\\"status\\\"]],\\\"overdue\\\"],null],\\\"bg-red-50 text-red-700 ring-red-600/10\\\",\\\"bg-green-50 text-green-700 ring-green-600/10\\\"]]]],[12],[1,\\\"\\\\n                  \\\"],[1,[28,[35,23],[[30,1,[\\\"status\\\"]]],null]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"td\\\"],[14,0,\\\"px-3 py-3.5 text-right text-sm text-gray-600\\\"],[12],[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"relative inline-block text-left\\\"],[12],[1,\\\"\\\\n                \\\"],[8,[39,24],null,[[\\\"@id\\\",\\\"@toggleDropdown\\\",\\\"@parameters\\\",\\\"@clickedOutside\\\"],[[29,[\\\"billing-row-menu-\\\",[30,2]]],[30,0,[\\\"toggleInvoiceDropdown\\\"]],[30,2],[28,[37,25],[[30,0,[\\\"onClickedOutside\\\"]],[30,2]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  \\\"],[8,[30,3,[\\\"header\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                    \\\"],[10,\\\"button\\\"],[14,0,\\\"inline-flex items-center rounded-lg p-2 text-center text-sm font-medium hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-brand-primary-color-rgb focus:ring-offset-2 focus:ring-offset-gray-100\\\"],[15,\\\"aria-expanded\\\",[28,[37,18],[[30,0,[\\\"showInvoiceDropdown\\\"]],[30,1]],null]],[14,\\\"aria-haspopup\\\",\\\"true\\\"],[15,\\\"aria-controls\\\",[29,[\\\"downloads-menu-\\\",[30,2]]]],[14,4,\\\"button\\\"],[12],[1,\\\"\\\\n                      \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Open options\\\"],[13],[1,\\\"\\\\n                      \\\"],[8,[39,7],[[24,0,\\\"size-5\\\"],[16,1,[29,[\\\"invoice-dropdown-\\\",[30,2]]]]],[[\\\"@icon\\\"],[\\\"dots-vertical\\\"]],null],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[8,[30,3,[\\\"content\\\"]],null,[[\\\"@isOpen\\\"],[[28,[37,18],[[30,0,[\\\"showInvoiceDropdown\\\"]],[30,1]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    \\\"],[10,0],[15,1,[29,[\\\"downloads-menu-\\\",[30,2]]]],[14,0,\\\"absolute right-0 z-10 w-32 rounded-sm bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none\\\"],[14,\\\"role\\\",\\\"menu\\\"],[14,\\\"aria-orientation\\\",\\\"vertical\\\"],[15,\\\"aria-labelledby\\\",[29,[\\\"invoice-dropdown-\\\",[30,2]]]],[12],[1,\\\"\\\\n                      \\\"],[10,\\\"ul\\\"],[14,0,\\\"py-1\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,18],[[30,1,[\\\"status\\\"]],\\\"pending\\\"],null],[[[1,\\\"                          \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n                            \\\"],[8,[39,19],[[24,0,\\\"block px-4 py-2 text-sm hover:bg-gray-100\\\"]],[[\\\"@route\\\",\\\"@query\\\"],[\\\"v2.admin.billing.review\\\",[28,[37,20],null,[[\\\"startDate\\\",\\\"endDate\\\",\\\"historical\\\"],[[30,1,[\\\"startDate\\\"]],[30,1,[\\\"endDate\\\"]],false]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                              Review\\\\n                              \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"upcoming invoice\\\"],[13],[1,\\\"\\\\n                            \\\"]],[]]]]],[1,\\\"\\\\n                          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                          \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n                            \\\"],[8,[39,19],[[24,0,\\\"block px-4 py-2 text-sm hover:bg-gray-100\\\"]],[[\\\"@route\\\",\\\"@model\\\",\\\"@query\\\"],[\\\"v2.admin.billing.invoice\\\",[30,1,[\\\"id\\\"]],[28,[37,20],null,[[\\\"startDate\\\",\\\"endDate\\\"],[[52,[51,[30,1,[\\\"invoiceUUID\\\"]]],[30,1,[\\\"startDate\\\"]]],[52,[51,[30,1,[\\\"invoiceUUID\\\"]]],[30,1,[\\\"endDate\\\"]]]]]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                              Review\\\\n                              \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"invoice \\\"],[1,[30,1,[\\\"invoiceNumber\\\"]]],[13],[1,\\\"\\\\n                            \\\"]],[]]]]],[1,\\\"\\\\n                          \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[41,[30,1,[\\\"invoicePdfUrl\\\"]],[[[1,\\\"                          \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n                            \\\"],[10,3],[15,6,[30,1,[\\\"invoicePdfUrl\\\"]]],[14,0,\\\"block px-4 py-2 text-sm hover:bg-gray-100\\\"],[12],[1,\\\"\\\\n                              Download\\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\", invoice \\\"],[1,[30,1,[\\\"invoiceNumber\\\"]]],[13],[1,\\\"\\\\n                            \\\"],[13],[1,\\\"\\\\n                          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[28,[37,30],[[28,[37,31],[[30,1,[\\\"status\\\"]],\\\"paid\\\"],null],[28,[37,31],[[30,1,[\\\"status\\\"]],\\\"pending\\\"],null],[30,1,[\\\"paymentUrl\\\"]]],null],[[[1,\\\"                          \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n                            \\\"],[10,3],[15,6,[30,1,[\\\"paymentUrl\\\"]]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[14,0,\\\"block px-4 py-2 text-sm hover:bg-gray-100\\\"],[12],[1,\\\"\\\\n                              Make payment\\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\", invoice \\\"],[1,[30,1,[\\\"invoiceNumber\\\"]]],[13],[1,\\\"\\\\n                            \\\"],[13],[1,\\\"\\\\n                          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                      \\\"],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"]],[3]]]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[1,2]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"invoiceRequest\\\",\\\"index\\\",\\\"dropdown\\\"],false,[\\\"v2/admin-page\\\",\\\"div\\\",\\\"h3\\\",\\\"p\\\",\\\"v2/button\\\",\\\"on\\\",\\\"if\\\",\\\"v2/svg-icon\\\",\\\"h2\\\",\\\"table\\\",\\\"thead\\\",\\\"tr\\\",\\\"th\\\",\\\"span\\\",\\\"tbody\\\",\\\"each\\\",\\\"-track-array\\\",\\\"td\\\",\\\"eq\\\",\\\"link-to\\\",\\\"hash\\\",\\\"unless\\\",\\\"pretty-date\\\",\\\"sentence-case\\\",\\\"v2/dropdown\\\",\\\"fn\\\",\\\"button\\\",\\\"ul\\\",\\\"li\\\",\\\"a\\\",\\\"and\\\",\\\"not-eq\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/billing/index.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/billing/invoice-loading\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage @heading=\"Invoice review\" class=\"bg-slate-50\">\n    <div class=\"mx-auto flex w-full max-w-7xl flex-col items-start gap-x-6 xl:flex-row\">\n      <section class=\"min-h-[35rem] w-full border bg-white p-8 xl:min-h-[45rem] xl:flex-1\">\n        <div class=\"grid animate-pulse grid-cols-1 text-sm leading-6 sm:grid-cols-2\">\n          <div class=\"mb-3 h-2 max-w-[300px] content-center rounded-full bg-gray-200 leading-6\"></div>\n          <img src=\"https://cdn.settify.com.au/Settify+Logo.png\" alt=\"Settify\" class=\"ml-auto h-20\" />\n        </div>\n        <table class=\"divide-grey-300 mt-8 min-w-full table-fixed animate-pulse divide-y text-left\">\n          <thead>\n            <tr class=\"text-sm leading-6 text-gray-900\">\n              <th scope=\"colgroup\" colspan=\"2\" class=\"relative isolate py-2 font-semibold\">Lead</th>\n              <th scope=\"colgroup\" class=\"relative isolate py-2 font-semibold\">Practice area</th>\n            </tr>\n          </thead>\n          <tbody class=\"divide-y divide-gray-200\">\n            {{#each (array 1 2 3 4 5) as |loop|}}\n              <tr class=\"\">\n                <td class=\"relative whitespace-nowrap py-3 text-sm font-medium text-brand-primary-color-rgb\">\n                  <div class=\"inline-block h-2.5 w-20 rounded-full bg-gray-300\">\n                    <span class=\"sr-only\">Loading...</span>\n                  </div>\n                </td>\n                <td class=\"relative py-3 text-sm\">\n                  <div class=\"inline-block h-2.5 w-20 rounded-full bg-gray-300\"></div>\n                </td>\n                <td class=\"leading-6 text-gray-900\">\n                  <div class=\"inline-block h-2.5 w-20 rounded-full bg-gray-300\"></div>\n                </td>\n              </tr>\n            {{/each}}\n          </tbody>\n        </table>\n      </section>\n  \n      <aside class=\"top-0 order-first mb-6 block w-full xl:sticky xl:order-none xl:mb-0 xl:w-96\">\n        <div class=\"border bg-white\">\n          <div class=\"animate-pulse px-6 py-6 text-right\">\n            <div class=\"mb-3 h-5 max-w-[200px] content-end rounded-full bg-gray-200 leading-6\"></div>\n            <div class=\"mb-3 h-3 max-w-[200px] content-end rounded-full bg-gray-200 leading-6\"></div>\n            <div class=\"mb-3 h-3 max-w-[200px] content-end rounded-full bg-gray-200 leading-6\"></div>\n          </div>\n          <div class=\"mt-6 animate-pulse border-t border-gray-900/5 px-6 py-6 text-right\">\n            <div class=\"mb-3 h-2 max-w-[200px] content-end rounded-full bg-gray-200 leading-6\"></div>\n            <div class=\"mb-3 h-2 max-w-[200px] content-end rounded-full bg-gray-200 leading-6\"></div>\n          </div>\n        </div>\n      </aside>\n    </div>\n  </V2::AdminPage>\n  */\n  {\n    \"id\": \"pqTcWNgj\",\n    \"block\": \"[[[8,[39,0],[[24,0,\\\"bg-slate-50\\\"]],[[\\\"@heading\\\"],[\\\"Invoice review\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"mx-auto flex w-full max-w-7xl flex-col items-start gap-x-6 xl:flex-row\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"section\\\"],[14,0,\\\"min-h-[35rem] w-full border bg-white p-8 xl:min-h-[45rem] xl:flex-1\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"grid animate-pulse grid-cols-1 text-sm leading-6 sm:grid-cols-2\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"mb-3 h-2 max-w-[300px] content-center rounded-full bg-gray-200 leading-6\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"https://cdn.settify.com.au/Settify+Logo.png\\\"],[14,\\\"alt\\\",\\\"Settify\\\"],[14,0,\\\"ml-auto h-20\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"table\\\"],[14,0,\\\"divide-grey-300 mt-8 min-w-full table-fixed animate-pulse divide-y text-left\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"tr\\\"],[14,0,\\\"text-sm leading-6 text-gray-900\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"colgroup\\\"],[14,\\\"colspan\\\",\\\"2\\\"],[14,0,\\\"relative isolate py-2 font-semibold\\\"],[12],[1,\\\"Lead\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"colgroup\\\"],[14,0,\\\"relative isolate py-2 font-semibold\\\"],[12],[1,\\\"Practice area\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"tbody\\\"],[14,0,\\\"divide-y divide-gray-200\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,10],[[28,[37,10],[[28,[37,11],[1,2,3,4,5],null]],null]],null],null,[[[1,\\\"            \\\"],[10,\\\"tr\\\"],[14,0,\\\"\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[14,0,\\\"relative whitespace-nowrap py-3 text-sm font-medium text-brand-primary-color-rgb\\\"],[12],[1,\\\"\\\\n                \\\"],[10,0],[14,0,\\\"inline-block h-2.5 w-20 rounded-full bg-gray-300\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Loading...\\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[14,0,\\\"relative py-3 text-sm\\\"],[12],[1,\\\"\\\\n                \\\"],[10,0],[14,0,\\\"inline-block h-2.5 w-20 rounded-full bg-gray-300\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[14,0,\\\"leading-6 text-gray-900\\\"],[12],[1,\\\"\\\\n                \\\"],[10,0],[14,0,\\\"inline-block h-2.5 w-20 rounded-full bg-gray-300\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,\\\"aside\\\"],[14,0,\\\"top-0 order-first mb-6 block w-full xl:sticky xl:order-none xl:mb-0 xl:w-96\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"border bg-white\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"animate-pulse px-6 py-6 text-right\\\"],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"mb-3 h-5 max-w-[200px] content-end rounded-full bg-gray-200 leading-6\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"mb-3 h-3 max-w-[200px] content-end rounded-full bg-gray-200 leading-6\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"mb-3 h-3 max-w-[200px] content-end rounded-full bg-gray-200 leading-6\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"mt-6 animate-pulse border-t border-gray-900/5 px-6 py-6 text-right\\\"],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"mb-3 h-2 max-w-[200px] content-end rounded-full bg-gray-200 leading-6\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"mb-3 h-2 max-w-[200px] content-end rounded-full bg-gray-200 leading-6\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"loop\\\"],false,[\\\"v2/admin-page\\\",\\\"div\\\",\\\"section\\\",\\\"img\\\",\\\"table\\\",\\\"thead\\\",\\\"tr\\\",\\\"th\\\",\\\"tbody\\\",\\\"each\\\",\\\"-track-array\\\",\\\"array\\\",\\\"td\\\",\\\"span\\\",\\\"aside\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/billing/invoice-loading.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/billing/invoice\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage @heading=\"Invoice review\" class=\"bg-slate-50\">\n    <div class=\"mx-auto flex w-full max-w-7xl flex-col items-start gap-x-6 xl:flex-row\">\n      <section class=\"min-h-[35rem] w-full border bg-white p-8 xl:min-h-[45rem] xl:flex-1\">\n        <div class=\"grid grid-cols-1 text-sm leading-6 sm:grid-cols-2\">\n          <h2 class=\"order-last content-center text-base font-semibold leading-6 text-gray-900 sm:order-none\">Clients for invoice #{{this.invoiceIDForDisplay}}</h2>\n          <img src=\"https://cdn.settify.com.au/Settify+Logo.png\" alt=\"Settify\" class=\"h-20 sm:ml-auto\" />\n        </div>\n        {{#if this.model.billedLeads.length}}\n          <table class=\"divide-grey-300 mt-8 min-w-full table-fixed divide-y text-left\">\n            <thead>\n              <tr class=\"text-sm leading-6 text-gray-900\">\n                <th scope=\"colgroup\" colspan=\"2\" class=\"relative isolate px-2 py-3 font-semibold\">Lead (Qty: {{this.model.billedLeads.length}})</th>\n                <th scope=\"colgroup\" class=\"relative isolate px-2 py-3 font-semibold\">Practice area</th>\n              </tr>\n            </thead>\n            <tbody class=\"divide-y divide-gray-200\">\n              {{#each this.model.billedLeads as |lead|}}\n                <tr>\n                  <td class=\"relative px-2 py-3 text-sm font-medium text-brand-primary-color-rgb\">\n                    <LinkTo @route=\"v2.admin.clients\" @model={{lead.clientID}}>\n                      {{lead.name}}\n                    </LinkTo>\n                  </td>\n                  <td class=\"relative px-2 py-3 text-sm\">\n                    {{#if (eq lead.source \"sweep\")}}\n                      <div class=\"text-grey-900 leading-6\">\n                        Historical lead\n                      </div>\n                    {{/if}}\n                    <div class=\"leading-6 text-gray-900\">\n                      {{#if (eq lead.referral \"invitation\")}}\n                        Invited and completed on\n                        {{lead.formattedReferralDate}}<br />\n                      {{else}}\n                        Website referral on\n                        {{lead.formattedReferralDate}}<br />\n                      {{/if}}\n                    </div>\n                    <div class=\"mt-1 text-xs leading-5 text-gray-500\">\n                      {{#if (eq lead.referral \"invitation\")}}\n                        {{lead.timeSinceReferralDate}}\n                      {{else}}\n                        {{lead.timeSinceReferralDate}}\n                      {{/if}}\n                    </div>\n                  </td>\n                  <td class=\"relative px-2 py-3 text-sm\">\n                    {{lead.practiceArea}}\n                  </td>\n                </tr>\n              {{/each}}\n            </tbody>\n          </table>\n        {{else}}\n          <div class=\"mt-4 block w-full rounded-lg border-2 border-dashed border-gray-300 p-6\">\n            <div class=\"text-gray-600\">\n              There where no clients charged as part of invoice #{{this.invoiceIDForDisplay}}.\n            </div>\n            <div class=\"flex w-full flex-row items-center justify-between pt-4\">\n              <LinkTo class=\"mr-2 rounded-md bg-white px-3.5 py-2.5 text-sm font-semibold ring-1 ring-inset ring-gray-300 hover:bg-gray-100\" @route=\"v2.admin.billing\">\n                Back\n              </LinkTo>\n            </div>\n          </div>\n        {{/if}}\n      </section>\n  \n      <aside class=\"top-4 order-first mb-6 block w-full xl:sticky xl:order-none xl:mb-0 xl:w-96\">\n        <h2 class=\"sr-only\">Summary</h2>\n        <div class=\"border bg-white p-6\">\n          <dl class=\"flex flex-wrap\">\n            <div class=\"flex w-full gap-x-4\">\n              <dt class=\"items-top flex flex-1\">\n                <V2::SvgIcon @icon=\"envelope-check\" class=\"mr-2 size-5 text-gray-400\" />\n                <span class=\"text-sm text-gray-400\">Sent<span class=\"sr-only\"> to</span>:</span>\n              </dt>\n              <dd class=\"text-right text-sm font-medium leading-6 text-gray-700\">\n                {{this.firm.name}}<br />\n                {{this.firm.contactEmail}}\n              </dd>\n            </div>\n            <div class=\"mt-4 flex w-full gap-x-4\">\n              <dt class=\"flex flex-1 items-center\">\n                <V2::SvgIcon @icon=\"calendar-clock\" class=\"mr-2 size-5 text-gray-400\" />\n                <span class=\"text-sm text-gray-400\">Issued<span class=\"sr-only\"> on</span>:</span>\n              </dt>\n              <dd class=\"text-right text-sm font-medium leading-6 text-gray-700\">\n                <time datetime={{this.invoiceRequestSentDate}}>{{this.invoiceRequestSentDate}}</time>\n              </dd>\n            </div>\n            {{#if (eq this.model.invoiceRequest.status \"paid\")}}\n              <div class=\"mt-4 flex w-full gap-x-4\">\n                <dt class=\"flex flex-1 items-center\">\n                  <span class=\"sr-only\">Status:</span>\n                </dt>\n                <dd class=\"text-right text-sm font-medium leading-6 text-gray-700\">\n                  <div class=\"inline-flex rounded-md bg-green-100 px-2 py-1 text-xs font-medium text-green-700 ring-1 ring-inset ring-green-600/10\">\n                    Paid\n                  </div>\n                </dd>\n              </div>\n            {{else}}\n              <div class=\"mt-4 flex w-full gap-x-4\">\n                <dt class=\"flex flex-1 items-center\">\n                  <V2::SvgIcon @icon=\"calendar-exclamation\" class=\"mr-2 size-5 text-gray-400\" />\n                  <span class=\"text-sm text-gray-400\">Due<span class=\"sr-only\"> date</span>:</span>\n                </dt>\n                <dd class=\"text-right text-sm font-medium leading-6 text-gray-700\">\n                  <time datetime={{this.invoiceRequestDueDate}}>{{this.invoiceRequestDueDate}}</time>\n                </dd>\n              </div>\n              {{#if (eq this.model.invoiceRequest.status \"overdue\")}}\n                <div class=\"mt-4 flex w-full gap-x-4\">\n                  <dt class=\"flex flex-1 items-center\">\n                    <span class=\"sr-only\">Status:</span>\n                  </dt>\n                  <dd class=\"text-right text-sm font-medium leading-6 text-gray-700\">\n                    <div class=\"inline-flex rounded-md bg-red-100 px-2 py-1 text-xs font-medium text-red-700 ring-1 ring-inset ring-red-600/10\">\n                      Overdue\n                    </div>\n                  </dd>\n                </div>\n              {{/if}}\n            {{/if}}\n          </dl>\n          <div class=\"mt-6 flex flex-col items-end border-t border-gray-900/5 pt-6\">\n            {{#if this.showPaymentLink}}\n              <a\n                href={{this.model.invoiceRequest.paymentUrl}}\n                target=\"_blank\"\n                rel=\"noopener noreferrer\"\n                class=\"rounded-md bg-brand-primary-color-rgb px-3 py-2 text-center text-sm font-semibold text-white shadow-sm hover:bg-brand-primary-color-rgb/90\"\n              >\n                Pay with Stripe\n              </a>\n            {{/if}}\n            {{#if this.showDisbursementReport}}\n              <button type=\"button\" {{on \"click\" this.downloadDisbursementReport}} class=\"mt-3 text-right text-sm font-semibold leading-6 text-gray-900\">\n                Download disbursement report\n                <span aria-hidden=\"true\">&rarr;</span>\n              </button>\n            {{/if}}\n            {{#if this.hasLeadsConversionTypeClients}}\n              <a\n                href=\"https://settify.com/wp-content/uploads/2023/07/Fair-Billing-Policy-FAQs-3.pdf\"\n                target=\"_blank\"\n                rel=\"noopener noreferrer\"\n                class=\"mt-3 text-right text-sm font-semibold leading-6 text-gray-900\"\n              >\n                Learn more about our Fair Billing Policy\n                <span aria-hidden=\"true\">&rarr;</span>\n              </a>\n            {{/if}}\n          </div>\n        </div>\n      </aside>\n    </div>\n  </V2::AdminPage>\n  */\n  {\n    \"id\": \"UeezFD5K\",\n    \"block\": \"[[[8,[39,0],[[24,0,\\\"bg-slate-50\\\"]],[[\\\"@heading\\\"],[\\\"Invoice review\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"mx-auto flex w-full max-w-7xl flex-col items-start gap-x-6 xl:flex-row\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"section\\\"],[14,0,\\\"min-h-[35rem] w-full border bg-white p-8 xl:min-h-[45rem] xl:flex-1\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"grid grid-cols-1 text-sm leading-6 sm:grid-cols-2\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"h2\\\"],[14,0,\\\"order-last content-center text-base font-semibold leading-6 text-gray-900 sm:order-none\\\"],[12],[1,\\\"Clients for invoice #\\\"],[1,[30,0,[\\\"invoiceIDForDisplay\\\"]]],[13],[1,\\\"\\\\n        \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"https://cdn.settify.com.au/Settify+Logo.png\\\"],[14,\\\"alt\\\",\\\"Settify\\\"],[14,0,\\\"h-20 sm:ml-auto\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"billedLeads\\\",\\\"length\\\"]],[[[1,\\\"        \\\"],[10,\\\"table\\\"],[14,0,\\\"divide-grey-300 mt-8 min-w-full table-fixed divide-y text-left\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"tr\\\"],[14,0,\\\"text-sm leading-6 text-gray-900\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"colgroup\\\"],[14,\\\"colspan\\\",\\\"2\\\"],[14,0,\\\"relative isolate px-2 py-3 font-semibold\\\"],[12],[1,\\\"Lead (Qty: \\\"],[1,[30,0,[\\\"model\\\",\\\"billedLeads\\\",\\\"length\\\"]]],[1,\\\")\\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"colgroup\\\"],[14,0,\\\"relative isolate px-2 py-3 font-semibold\\\"],[12],[1,\\\"Practice area\\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"tbody\\\"],[14,0,\\\"divide-y divide-gray-200\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,12],[[28,[37,12],[[30,0,[\\\"model\\\",\\\"billedLeads\\\"]]],null]],null],null,[[[1,\\\"              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[14,0,\\\"relative px-2 py-3 text-sm font-medium text-brand-primary-color-rgb\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,14],null,[[\\\"@route\\\",\\\"@model\\\"],[\\\"v2.admin.clients\\\",[30,1,[\\\"clientID\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                    \\\"],[1,[30,1,[\\\"name\\\"]]],[1,\\\"\\\\n                  \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[14,0,\\\"relative px-2 py-3 text-sm\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,15],[[30,1,[\\\"source\\\"]],\\\"sweep\\\"],null],[[[1,\\\"                    \\\"],[10,0],[14,0,\\\"text-grey-900 leading-6\\\"],[12],[1,\\\"\\\\n                      Historical lead\\\\n                    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                  \\\"],[10,0],[14,0,\\\"leading-6 text-gray-900\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,15],[[30,1,[\\\"referral\\\"]],\\\"invitation\\\"],null],[[[1,\\\"                      Invited and completed on\\\\n                      \\\"],[1,[30,1,[\\\"formattedReferralDate\\\"]]],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                      Website referral on\\\\n                      \\\"],[1,[30,1,[\\\"formattedReferralDate\\\"]]],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,0],[14,0,\\\"mt-1 text-xs leading-5 text-gray-500\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,15],[[30,1,[\\\"referral\\\"]],\\\"invitation\\\"],null],[[[1,\\\"                      \\\"],[1,[30,1,[\\\"timeSinceReferralDate\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                      \\\"],[1,[30,1,[\\\"timeSinceReferralDate\\\"]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"td\\\"],[14,0,\\\"relative px-2 py-3 text-sm\\\"],[12],[1,\\\"\\\\n                  \\\"],[1,[30,1,[\\\"practiceArea\\\"]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"mt-4 block w-full rounded-lg border-2 border-dashed border-gray-300 p-6\\\"],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"text-gray-600\\\"],[12],[1,\\\"\\\\n            There where no clients charged as part of invoice #\\\"],[1,[30,0,[\\\"invoiceIDForDisplay\\\"]]],[1,\\\".\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"flex w-full flex-row items-center justify-between pt-4\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,14],[[24,0,\\\"mr-2 rounded-md bg-white px-3.5 py-2.5 text-sm font-semibold ring-1 ring-inset ring-gray-300 hover:bg-gray-100\\\"]],[[\\\"@route\\\"],[\\\"v2.admin.billing\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              Back\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,\\\"aside\\\"],[14,0,\\\"top-4 order-first mb-6 block w-full xl:sticky xl:order-none xl:mb-0 xl:w-96\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"h2\\\"],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Summary\\\"],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"border bg-white p-6\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"dl\\\"],[14,0,\\\"flex flex-wrap\\\"],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"flex w-full gap-x-4\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"dt\\\"],[14,0,\\\"items-top flex flex-1\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,20],[[24,0,\\\"mr-2 size-5 text-gray-400\\\"]],[[\\\"@icon\\\"],[\\\"envelope-check\\\"]],null],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"text-sm text-gray-400\\\"],[12],[1,\\\"Sent\\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\" to\\\"],[13],[1,\\\":\\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"dd\\\"],[14,0,\\\"text-right text-sm font-medium leading-6 text-gray-700\\\"],[12],[1,\\\"\\\\n              \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[1,[30,0,[\\\"firm\\\",\\\"contactEmail\\\"]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"mt-4 flex w-full gap-x-4\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"dt\\\"],[14,0,\\\"flex flex-1 items-center\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,20],[[24,0,\\\"mr-2 size-5 text-gray-400\\\"]],[[\\\"@icon\\\"],[\\\"calendar-clock\\\"]],null],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"text-sm text-gray-400\\\"],[12],[1,\\\"Issued\\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\" on\\\"],[13],[1,\\\":\\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"dd\\\"],[14,0,\\\"text-right text-sm font-medium leading-6 text-gray-700\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"time\\\"],[15,\\\"datetime\\\",[30,0,[\\\"invoiceRequestSentDate\\\"]]],[12],[1,[30,0,[\\\"invoiceRequestSentDate\\\"]]],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,15],[[30,0,[\\\"model\\\",\\\"invoiceRequest\\\",\\\"status\\\"]],\\\"paid\\\"],null],[[[1,\\\"            \\\"],[10,0],[14,0,\\\"mt-4 flex w-full gap-x-4\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"dt\\\"],[14,0,\\\"flex flex-1 items-center\\\"],[12],[1,\\\"\\\\n                \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Status:\\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"dd\\\"],[14,0,\\\"text-right text-sm font-medium leading-6 text-gray-700\\\"],[12],[1,\\\"\\\\n                \\\"],[10,0],[14,0,\\\"inline-flex rounded-md bg-green-100 px-2 py-1 text-xs font-medium text-green-700 ring-1 ring-inset ring-green-600/10\\\"],[12],[1,\\\"\\\\n                  Paid\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"            \\\"],[10,0],[14,0,\\\"mt-4 flex w-full gap-x-4\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"dt\\\"],[14,0,\\\"flex flex-1 items-center\\\"],[12],[1,\\\"\\\\n                \\\"],[8,[39,20],[[24,0,\\\"mr-2 size-5 text-gray-400\\\"]],[[\\\"@icon\\\"],[\\\"calendar-exclamation\\\"]],null],[1,\\\"\\\\n                \\\"],[10,1],[14,0,\\\"text-sm text-gray-400\\\"],[12],[1,\\\"Due\\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\" date\\\"],[13],[1,\\\":\\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"dd\\\"],[14,0,\\\"text-right text-sm font-medium leading-6 text-gray-700\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"time\\\"],[15,\\\"datetime\\\",[30,0,[\\\"invoiceRequestDueDate\\\"]]],[12],[1,[30,0,[\\\"invoiceRequestDueDate\\\"]]],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,15],[[30,0,[\\\"model\\\",\\\"invoiceRequest\\\",\\\"status\\\"]],\\\"overdue\\\"],null],[[[1,\\\"              \\\"],[10,0],[14,0,\\\"mt-4 flex w-full gap-x-4\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"dt\\\"],[14,0,\\\"flex flex-1 items-center\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Status:\\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"dd\\\"],[14,0,\\\"text-right text-sm font-medium leading-6 text-gray-700\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,0],[14,0,\\\"inline-flex rounded-md bg-red-100 px-2 py-1 text-xs font-medium text-red-700 ring-1 ring-inset ring-red-600/10\\\"],[12],[1,\\\"\\\\n                    Overdue\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]],[1,\\\"        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"mt-6 flex flex-col items-end border-t border-gray-900/5 pt-6\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showPaymentLink\\\"]],[[[1,\\\"            \\\"],[10,3],[15,6,[30,0,[\\\"model\\\",\\\"invoiceRequest\\\",\\\"paymentUrl\\\"]]],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[14,0,\\\"rounded-md bg-brand-primary-color-rgb px-3 py-2 text-center text-sm font-semibold text-white shadow-sm hover:bg-brand-primary-color-rgb/90\\\"],[12],[1,\\\"\\\\n              Pay with Stripe\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"showDisbursementReport\\\"]],[[[1,\\\"            \\\"],[11,\\\"button\\\"],[24,0,\\\"mt-3 text-right text-sm font-semibold leading-6 text-gray-900\\\"],[24,4,\\\"button\\\"],[4,[38,26],[\\\"click\\\",[30,0,[\\\"downloadDisbursementReport\\\"]]],null],[12],[1,\\\"\\\\n              Download disbursement report\\\\n              \\\"],[10,1],[14,\\\"aria-hidden\\\",\\\"true\\\"],[12],[1,\\\"→\\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"hasLeadsConversionTypeClients\\\"]],[[[1,\\\"            \\\"],[10,3],[14,6,\\\"https://settify.com/wp-content/uploads/2023/07/Fair-Billing-Policy-FAQs-3.pdf\\\"],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[14,0,\\\"mt-3 text-right text-sm font-semibold leading-6 text-gray-900\\\"],[12],[1,\\\"\\\\n              Learn more about our Fair Billing Policy\\\\n              \\\"],[10,1],[14,\\\"aria-hidden\\\",\\\"true\\\"],[12],[1,\\\"→\\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"lead\\\"],false,[\\\"v2/admin-page\\\",\\\"div\\\",\\\"section\\\",\\\"h2\\\",\\\"img\\\",\\\"if\\\",\\\"table\\\",\\\"thead\\\",\\\"tr\\\",\\\"th\\\",\\\"tbody\\\",\\\"each\\\",\\\"-track-array\\\",\\\"td\\\",\\\"link-to\\\",\\\"eq\\\",\\\"br\\\",\\\"aside\\\",\\\"dl\\\",\\\"dt\\\",\\\"v2/svg-icon\\\",\\\"span\\\",\\\"dd\\\",\\\"time\\\",\\\"a\\\",\\\"button\\\",\\\"on\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/billing/invoice.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/billing/review-loading\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage>\n    <div class=\"mx-auto flex w-full max-w-[52rem] flex-col gap-x-8 xl:flex-row\">\n      <section class=\"min-h-[35rem] w-full border p-8 xl:min-h-[45rem] xl:flex-1\">\n        <div class=\"grid grid-cols-1 gap-4 text-sm leading-6 md:grid-cols-2\">\n          <h2 class=\"order-last content-center text-base font-semibold leading-6 text-gray-900 sm:order-none\">Review clients for current month</h2>\n          <img src=\"https://cdn.settify.com.au/Settify+Logo.png\" alt=\"Settify\" class=\"h-20 sm:ml-auto\" />\n        </div>\n        <table class=\"divide-grey-300 mt-8 w-full divide-y text-left\">\n          <thead>\n            <tr class=\"text-sm leading-6 text-gray-900\">\n              <th scope=\"colgroup\" colspan=\"2\" class=\"relative isolate px-2 py-3 font-semibold\">Lead</th>\n              <th scope=\"colgroup\" class=\"relative isolate px-2 py-3 font-semibold\">Practice area</th>\n              <th scope=\"colgroup\" class=\"relative isolate px-2 py-3 font-semibold\">Status</th>\n            </tr>\n          </thead>\n          <tbody class=\"divide-y divide-gray-200\">\n            {{#each (array 1 2 3 4 5) as |loop|}}\n              <tr class=\"\">\n                <td class=\"relative whitespace-nowrap px-2 py-3 text-sm font-medium text-brand-primary-color-rgb sm:px-3\">\n                  <div class=\"inline-block h-2.5 w-16 rounded-full bg-gray-300 sm:w-20\">\n                    <span class=\"sr-only\">Loading...</span>\n                  </div>\n                </td>\n                <td class=\"relative px-2 py-3 text-sm sm:px-3\">\n                  <div class=\"inline-block h-2.5 w-10 rounded-full bg-gray-300 sm:w-20\"></div>\n                </td>\n                <td class=\"px-2 leading-6 text-gray-900 sm:px-3\">\n                  <div class=\"inline-block h-2.5 w-14 rounded-full bg-gray-300 sm:w-20\"></div>\n                </td>\n                <td class=\"px-2 leading-6 text-gray-900 sm:px-3\">\n                  <div class=\"inline-block h-2.5 w-16 rounded-full bg-gray-300 sm:w-20\"></div>\n                </td>\n              </tr>\n            {{/each}}\n          </tbody>\n        </table>\n      </section>\n    </div>\n  </V2::AdminPage>\n  */\n  {\n    \"id\": \"lcYZn7FU\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"mx-auto flex w-full max-w-[52rem] flex-col gap-x-8 xl:flex-row\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"section\\\"],[14,0,\\\"min-h-[35rem] w-full border p-8 xl:min-h-[45rem] xl:flex-1\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"grid grid-cols-1 gap-4 text-sm leading-6 md:grid-cols-2\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"h2\\\"],[14,0,\\\"order-last content-center text-base font-semibold leading-6 text-gray-900 sm:order-none\\\"],[12],[1,\\\"Review clients for current month\\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"https://cdn.settify.com.au/Settify+Logo.png\\\"],[14,\\\"alt\\\",\\\"Settify\\\"],[14,0,\\\"h-20 sm:ml-auto\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"table\\\"],[14,0,\\\"divide-grey-300 mt-8 w-full divide-y text-left\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"tr\\\"],[14,0,\\\"text-sm leading-6 text-gray-900\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"colgroup\\\"],[14,\\\"colspan\\\",\\\"2\\\"],[14,0,\\\"relative isolate px-2 py-3 font-semibold\\\"],[12],[1,\\\"Lead\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"colgroup\\\"],[14,0,\\\"relative isolate px-2 py-3 font-semibold\\\"],[12],[1,\\\"Practice area\\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"colgroup\\\"],[14,0,\\\"relative isolate px-2 py-3 font-semibold\\\"],[12],[1,\\\"Status\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"tbody\\\"],[14,0,\\\"divide-y divide-gray-200\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,11],[[28,[37,11],[[28,[37,12],[1,2,3,4,5],null]],null]],null],null,[[[1,\\\"            \\\"],[10,\\\"tr\\\"],[14,0,\\\"\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[14,0,\\\"relative whitespace-nowrap px-2 py-3 text-sm font-medium text-brand-primary-color-rgb sm:px-3\\\"],[12],[1,\\\"\\\\n                \\\"],[10,0],[14,0,\\\"inline-block h-2.5 w-16 rounded-full bg-gray-300 sm:w-20\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Loading...\\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[14,0,\\\"relative px-2 py-3 text-sm sm:px-3\\\"],[12],[1,\\\"\\\\n                \\\"],[10,0],[14,0,\\\"inline-block h-2.5 w-10 rounded-full bg-gray-300 sm:w-20\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[14,0,\\\"px-2 leading-6 text-gray-900 sm:px-3\\\"],[12],[1,\\\"\\\\n                \\\"],[10,0],[14,0,\\\"inline-block h-2.5 w-14 rounded-full bg-gray-300 sm:w-20\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"td\\\"],[14,0,\\\"px-2 leading-6 text-gray-900 sm:px-3\\\"],[12],[1,\\\"\\\\n                \\\"],[10,0],[14,0,\\\"inline-block h-2.5 w-16 rounded-full bg-gray-300 sm:w-20\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"loop\\\"],false,[\\\"v2/admin-page\\\",\\\"div\\\",\\\"section\\\",\\\"h2\\\",\\\"img\\\",\\\"table\\\",\\\"thead\\\",\\\"tr\\\",\\\"th\\\",\\\"tbody\\\",\\\"each\\\",\\\"-track-array\\\",\\\"array\\\",\\\"td\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/billing/review-loading.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/billing/review\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage>\n    <div class=\"mx-auto flex w-full max-w-[52rem] flex-col gap-x-8 xl:flex-row\">\n      <section class=\"min-h-[35rem] w-full border p-8 xl:min-h-[45rem] xl:flex-1\">\n        <div class=\"grid grid-cols-1 gap-4 text-sm leading-6 md:grid-cols-2\">\n          <h2 class=\"order-last content-center text-base font-semibold leading-6 text-gray-900 sm:order-none\">Review clients for current month</h2>\n          <img src=\"https://cdn.settify.com.au/Settify+Logo.png\" alt=\"Settify\" class=\"h-20 sm:ml-auto\" />\n        </div>\n        {{#if this.model.error}}\n          <div class=\"mt-4 block w-full rounded-lg border-2 border-dashed border-gray-300 p-6\">\n            <div class=\"max-w-4xl text-gray-600\">\n              {{this.model.message}}\n            </div>\n            <div class=\"flex w-full flex-row flex-col pt-4 md:flex-row\">\n              <LinkTo class=\"mb-3 mr-2 rounded-md bg-white px-3.5 py-2.5 text-sm font-semibold ring-1 ring-inset ring-gray-300 hover:bg-gray-100\" @route=\"v2.admin.index\">Back home</LinkTo>\n              <LinkTo\n                class=\"mb-3 mr-2 rounded-md bg-white px-3.5 py-2.5 text-sm font-semibold ring-1 ring-inset ring-gray-300 hover:bg-gray-100\"\n                @route=\"v2.admin.billing.review\"\n                @query={{hash historical=\"true\"}}\n              >Review historical leads (if any)</LinkTo>\n              <a\n                href=\"https://settify-firm.freshdesk.com\"\n                target=\"_blank\"\n                rel=\"noopener noreferrer\"\n                class=\"mb-3 mr-2 rounded-md bg-white px-3.5 py-2.5 text-sm font-semibold ring-1 ring-inset ring-gray-300 hover:bg-gray-100\"\n              >\n                Contact support\n              </a>\n            </div>\n          </div>\n        {{else if this.model}}\n          {{#if this.model.sweep}}\n            <div class=\"mt-4 rounded-lg border-2 border-dashed border-gray-300 p-6\">\n              <h2 class=\"text-md font-semibold leading-7\">Historical leads</h2>\n              {{#if (or this.allCompleted (not this.model.leads))}}\n                <p class=\"mt-2 text-sm text-gray-600\">\n                  All historical leads have been successfully marked. Nothing more to do!\n                </p>\n              {{else if this.model.informationRequiredForInvoice}}\n                <p class=\"mt-2 text-sm text-gray-600\">\n                  Every few months, we check in with you about past Settify leads who were marked as 'did not convert', to see whether they have since engaged your firm.\n                </p>\n              {{/if}}\n            </div>\n          {{/if}}\n          <div class=\"relative overflow-x-auto\">\n            {{#if this.model.leads.length}}\n              <table class=\"divide-grey-300 mt-8 w-full divide-y text-left\">\n                <thead>\n                  <tr class=\"text-sm leading-6 text-gray-900\">\n                    <th scope=\"colgroup\" colspan=\"2\" class=\"relative isolate px-2 py-3 font-semibold\">Lead (Qty: {{this.model.leads.length}})</th>\n                    <th scope=\"colgroup\" class=\"relative isolate px-2 py-3 font-semibold\">Practice area</th>\n                    <th scope=\"colgroup\" class=\"relative isolate px-2 py-3 font-semibold\">Status</th>\n                  </tr>\n                </thead>\n                <tbody class=\"divide-y divide-gray-200\">\n                  {{#each this.model.leads as |lead|}}\n                    <tr class=\"hover:bg-gray-50\">\n                      <td class=\"xl:min-w-68 relative min-w-52 px-2 py-3 text-sm font-medium text-brand-primary-color-rgb\">\n                        <LinkTo @route=\"v2.admin.clients\" @model={{lead.clientID}} class=\"whitespace-nowrap\">\n                          {{lead.name}}\n                          {{#if (not lead.conflictCheckCompleted)}}\n                            <span title=\"No conflict check has been completed for this lead\">\n                              <V2::SvgIcon @icon=\"circle-info\" class=\"inline-flex size-3.5 text-red-500\" />\n                            </span>\n                          {{else if lead.hasConflict}}\n                            <span title=\"Previously marked as conflicted\">\n                              <V2::SvgIcon @icon=\"circle-info\" class=\"inline-flex size-3.5 text-red-500\" />\n                            </span>\n                            <i class=\"fa-sharp fa-light fa-circle-info\" title=\"Previously marked as conflicted\"></i>\n                          {{/if}}\n                        </LinkTo>\n                      </td>\n                      <td class=\"relative min-w-56 px-2 py-3 text-sm\">\n                        <div class=\"leading-6 text-gray-900\">\n                          {{#if (eq lead.referral \"invitation\")}}\n                            Invited and completed on\n                            {{lead.formattedReferralDate}}\n                          {{else}}\n                            Website referral on\n                            {{lead.formattedReferralDate}}\n                          {{/if}}\n                        </div>\n                        <div class=\"mt-1 text-xs leading-5 text-gray-500\">\n                          {{lead.timeSinceReferralDate}}\n                        </div>\n                      </td>\n                      <td class=\"relative min-w-28 px-2 py-3 text-sm\">\n                        {{lead.practiceArea}}\n                      </td>\n                      <td class=\"relative min-w-52 px-2 py-3 text-sm\">\n                        <V2::BillingStatus @lead={{lead}} @conversionTypes={{this.model.conversionTypes}} @firm={{this.model.firm}} @sweep={{this.model.sweep}} />\n                      </td>\n                    </tr>\n                  {{/each}}\n                </tbody>\n              </table>\n            {{/if}}\n          </div>\n        {{/if}}\n      </section>\n    </div>\n  </V2::AdminPage>\n  */\n  {\n    \"id\": \"9sLnA/QX\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"mx-auto flex w-full max-w-[52rem] flex-col gap-x-8 xl:flex-row\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"section\\\"],[14,0,\\\"min-h-[35rem] w-full border p-8 xl:min-h-[45rem] xl:flex-1\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"grid grid-cols-1 gap-4 text-sm leading-6 md:grid-cols-2\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"h2\\\"],[14,0,\\\"order-last content-center text-base font-semibold leading-6 text-gray-900 sm:order-none\\\"],[12],[1,\\\"Review clients for current month\\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"https://cdn.settify.com.au/Settify+Logo.png\\\"],[14,\\\"alt\\\",\\\"Settify\\\"],[14,0,\\\"h-20 sm:ml-auto\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"error\\\"]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"mt-4 block w-full rounded-lg border-2 border-dashed border-gray-300 p-6\\\"],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"max-w-4xl text-gray-600\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[30,0,[\\\"model\\\",\\\"message\\\"]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"flex w-full flex-row flex-col pt-4 md:flex-row\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,6],[[24,0,\\\"mb-3 mr-2 rounded-md bg-white px-3.5 py-2.5 text-sm font-semibold ring-1 ring-inset ring-gray-300 hover:bg-gray-100\\\"]],[[\\\"@route\\\"],[\\\"v2.admin.index\\\"]],[[\\\"default\\\"],[[[[1,\\\"Back home\\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[8,[39,6],[[24,0,\\\"mb-3 mr-2 rounded-md bg-white px-3.5 py-2.5 text-sm font-semibold ring-1 ring-inset ring-gray-300 hover:bg-gray-100\\\"]],[[\\\"@route\\\",\\\"@query\\\"],[\\\"v2.admin.billing.review\\\",[28,[37,7],null,[[\\\"historical\\\"],[\\\"true\\\"]]]]],[[\\\"default\\\"],[[[[1,\\\"Review historical leads (if any)\\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[10,3],[14,6,\\\"https://settify-firm.freshdesk.com\\\"],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[14,0,\\\"mb-3 mr-2 rounded-md bg-white px-3.5 py-2.5 text-sm font-semibold ring-1 ring-inset ring-gray-300 hover:bg-gray-100\\\"],[12],[1,\\\"\\\\n              Contact support\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"model\\\"]],[[[41,[30,0,[\\\"model\\\",\\\"sweep\\\"]],[[[1,\\\"          \\\"],[10,0],[14,0,\\\"mt-4 rounded-lg border-2 border-dashed border-gray-300 p-6\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"h2\\\"],[14,0,\\\"text-md font-semibold leading-7\\\"],[12],[1,\\\"Historical leads\\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,9],[[30,0,[\\\"allCompleted\\\"]],[28,[37,10],[[30,0,[\\\"model\\\",\\\"leads\\\"]]],null]],null],[[[1,\\\"              \\\"],[10,2],[14,0,\\\"mt-2 text-sm text-gray-600\\\"],[12],[1,\\\"\\\\n                All historical leads have been successfully marked. Nothing more to do!\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"model\\\",\\\"informationRequiredForInvoice\\\"]],[[[1,\\\"              \\\"],[10,2],[14,0,\\\"mt-2 text-sm text-gray-600\\\"],[12],[1,\\\"\\\\n                Every few months, we check in with you about past Settify leads who were marked as 'did not convert', to see whether they have since engaged your firm.\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]],null]],[]]],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[10,0],[14,0,\\\"relative overflow-x-auto\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"leads\\\",\\\"length\\\"]],[[[1,\\\"            \\\"],[10,\\\"table\\\"],[14,0,\\\"divide-grey-300 mt-8 w-full divide-y text-left\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"tr\\\"],[14,0,\\\"text-sm leading-6 text-gray-900\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"colgroup\\\"],[14,\\\"colspan\\\",\\\"2\\\"],[14,0,\\\"relative isolate px-2 py-3 font-semibold\\\"],[12],[1,\\\"Lead (Qty: \\\"],[1,[30,0,[\\\"model\\\",\\\"leads\\\",\\\"length\\\"]]],[1,\\\")\\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"colgroup\\\"],[14,0,\\\"relative isolate px-2 py-3 font-semibold\\\"],[12],[1,\\\"Practice area\\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"colgroup\\\"],[14,0,\\\"relative isolate px-2 py-3 font-semibold\\\"],[12],[1,\\\"Status\\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"tbody\\\"],[14,0,\\\"divide-y divide-gray-200\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,18],[[28,[37,18],[[30,0,[\\\"model\\\",\\\"leads\\\"]]],null]],null],null,[[[1,\\\"                  \\\"],[10,\\\"tr\\\"],[14,0,\\\"hover:bg-gray-50\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"td\\\"],[14,0,\\\"xl:min-w-68 relative min-w-52 px-2 py-3 text-sm font-medium text-brand-primary-color-rgb\\\"],[12],[1,\\\"\\\\n                      \\\"],[8,[39,6],[[24,0,\\\"whitespace-nowrap\\\"]],[[\\\"@route\\\",\\\"@model\\\"],[\\\"v2.admin.clients\\\",[30,1,[\\\"clientID\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                        \\\"],[1,[30,1,[\\\"name\\\"]]],[1,\\\"\\\\n\\\"],[41,[28,[37,10],[[30,1,[\\\"conflictCheckCompleted\\\"]]],null],[[[1,\\\"                          \\\"],[10,1],[14,\\\"title\\\",\\\"No conflict check has been completed for this lead\\\"],[12],[1,\\\"\\\\n                            \\\"],[8,[39,21],[[24,0,\\\"inline-flex size-3.5 text-red-500\\\"]],[[\\\"@icon\\\"],[\\\"circle-info\\\"]],null],[1,\\\"\\\\n                          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,1,[\\\"hasConflict\\\"]],[[[1,\\\"                          \\\"],[10,1],[14,\\\"title\\\",\\\"Previously marked as conflicted\\\"],[12],[1,\\\"\\\\n                            \\\"],[8,[39,21],[[24,0,\\\"inline-flex size-3.5 text-red-500\\\"]],[[\\\"@icon\\\"],[\\\"circle-info\\\"]],null],[1,\\\"\\\\n                          \\\"],[13],[1,\\\"\\\\n                          \\\"],[10,\\\"i\\\"],[14,0,\\\"fa-sharp fa-light fa-circle-info\\\"],[14,\\\"title\\\",\\\"Previously marked as conflicted\\\"],[12],[13],[1,\\\"\\\\n                        \\\"]],[]],null]],[]]],[1,\\\"                      \\\"]],[]]]]],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                    \\\"],[10,\\\"td\\\"],[14,0,\\\"relative min-w-56 px-2 py-3 text-sm\\\"],[12],[1,\\\"\\\\n                      \\\"],[10,0],[14,0,\\\"leading-6 text-gray-900\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,23],[[30,1,[\\\"referral\\\"]],\\\"invitation\\\"],null],[[[1,\\\"                          Invited and completed on\\\\n                          \\\"],[1,[30,1,[\\\"formattedReferralDate\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                          Website referral on\\\\n                          \\\"],[1,[30,1,[\\\"formattedReferralDate\\\"]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"                      \\\"],[13],[1,\\\"\\\\n                      \\\"],[10,0],[14,0,\\\"mt-1 text-xs leading-5 text-gray-500\\\"],[12],[1,\\\"\\\\n                        \\\"],[1,[30,1,[\\\"timeSinceReferralDate\\\"]]],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                    \\\"],[10,\\\"td\\\"],[14,0,\\\"relative min-w-28 px-2 py-3 text-sm\\\"],[12],[1,\\\"\\\\n                      \\\"],[1,[30,1,[\\\"practiceArea\\\"]]],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                    \\\"],[10,\\\"td\\\"],[14,0,\\\"relative min-w-52 px-2 py-3 text-sm\\\"],[12],[1,\\\"\\\\n                      \\\"],[8,[39,24],null,[[\\\"@lead\\\",\\\"@conversionTypes\\\",\\\"@firm\\\",\\\"@sweep\\\"],[[30,1],[30,0,[\\\"model\\\",\\\"conversionTypes\\\"]],[30,0,[\\\"model\\\",\\\"firm\\\"]],[30,0,[\\\"model\\\",\\\"sweep\\\"]]]],null],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"        \\\"],[13],[1,\\\"\\\\n      \\\"]],[]],null]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"lead\\\"],false,[\\\"v2/admin-page\\\",\\\"div\\\",\\\"section\\\",\\\"h2\\\",\\\"img\\\",\\\"if\\\",\\\"link-to\\\",\\\"hash\\\",\\\"a\\\",\\\"or\\\",\\\"not\\\",\\\"p\\\",\\\"table\\\",\\\"thead\\\",\\\"tr\\\",\\\"th\\\",\\\"tbody\\\",\\\"each\\\",\\\"-track-array\\\",\\\"td\\\",\\\"span\\\",\\\"v2/svg-icon\\\",\\\"i\\\",\\\"eq\\\",\\\"v2/billing-status\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/billing/review.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/clients-loading\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage class=\"bg-slate-50 pt-12 xl:pr-72\">\n    <div class=\"fixed left-0 right-0 top-14 z-20 border-b border-gray-200 bg-white px-6 lg:left-64 lg:top-0\">\n      {{! Brief menu loading }}\n      <div role=\"status\" class=\"flex min-h-12 animate-pulse items-center text-sm text-gray-700\">\n        <div class=\"mx-3 h-2.5 w-16 rounded-full bg-gray-300\"></div>\n        <div class=\"mx-3 h-2.5 w-16 rounded-full bg-gray-300\"></div>\n        <div class=\"mx-3 h-2.5 w-16 rounded-full bg-gray-300\"></div>\n        <div class=\"mx-3 h-2.5 w-16 rounded-full bg-gray-300\"></div>\n        <span class=\"sr-only\">Loading...</span>\n      </div>\n      \n      <div role=\"status\" class=\"bg-settify-green rounded-lg py-1 mt-4 mb-8 h-8 animate-pulse\">\n        <span class=\"sr-only\">Loading...</span>\n      </div>\n      \n      <div role=\"status\" class=\"animate-pulse my-6 flex items-center justify-center \">\n        <div class=\"w-12 h-12 bg-gray-200 rounded-full me-4\"></div>\n        <div class=\"w-24 h-2.5 bg-gray-200 rounded-full me-3\"></div>\n        <span class=\"sr-only\">Loading...</span>\n      </div>\n  \n      <div role=\"status\" class=\"p-4 divide-y divide-gray-200 animate-pulse\">\n        {{#each (array 1 2 3 4 5) as | loop |}}\n          <div class=\"flex items-center justify-between py-2\">\n            <div class=\"h-2.5 bg-gray-300 rounded-full w-12\"></div>\n            <div class=\"h-2.5 bg-gray-300 rounded-full w-24 mb-2.5\"></div>\n            <div class=\"h-2.5 bg-gray-300 rounded-full w-24 mb-2.5\"></div>\n          </div>\n        {{/each}}\n        <span class=\"sr-only\">Loading...</span>\n      </div>\n  \n    </div>\n    {{! Client brief loading }}\n    <div id=\"client-brief\" class=\"mx-auto min-h-screen max-w-[52rem] border bg-white p-8 shadow-sm\">\n      <div role=\"status\" class=\"mb-8 mt-4 h-8 animate-pulse rounded-lg bg-brand-primary-color-rgb py-1\">\n        <span class=\"sr-only\">Loading...</span>\n      </div>\n  \n      <div class=\"max-w-sm\">\n        <div class=\"mb-3 h-2 rounded-full bg-gray-200 leading-6\"></div>\n      </div>\n  \n      <div role=\"status\" class=\"my-6 flex animate-pulse items-center justify-start\">\n        <div class=\"me-4 h-6 w-6 rounded-full bg-gray-200\"></div>\n        <div class=\"me-3 h-2.5 w-24 rounded-full bg-gray-200\"></div>\n        <span class=\"sr-only\">Loading...</span>\n      </div>\n  \n      <div role=\"status\" class=\"animate-pulse divide-y divide-gray-200 p-4\">\n        {{#each (array 1 2 3 4 5) as |loop|}}\n          <div class=\"flex items-center justify-between py-2\">\n            <div class=\"h-2.5 w-12 rounded-full bg-gray-300\"></div>\n            <div class=\"mb-2.5 h-2.5 w-24 rounded-full bg-gray-300\"></div>\n            <div class=\"mb-2.5 h-2.5 w-24 rounded-full bg-gray-300\"></div>\n          </div>\n        {{/each}}\n        <span class=\"sr-only\">Loading...</span>\n      </div>\n    </div>\n    <aside class=\"fixed bottom-0 right-0 top-12 hidden w-72 overflow-hidden border-l border-gray-200 bg-white xl:block\">\n      <div class=\"flex h-full flex-col overflow-x-hidden overflow-y-scroll px-4\">\n        <div class=\"border-b border-gray-300 pb-4 pt-3 text-sm\">\n          <div class=\"mb-2 flex items-center gap-2 text-xl font-bold leading-6\">\n            <V2::SvgIcon @icon=\"id-card\" class=\"size-5\" />\n            <div class=\"mx-3 h-2.5 w-28 animate-pulse rounded-full bg-gray-300\"></div>\n          </div>\n          <div>\n            <div class=\"text-gray-500\">Email</div>\n            <div class=\"mb-2.5 h-2.5 w-28 animate-pulse rounded-full bg-gray-300\"></div>\n          </div>\n          <div>\n            <div class=\"text-gray-500\">Phone</div>\n            <div class=\"mb-2.5 h-2.5 w-20 animate-pulse rounded-full bg-gray-300\"></div>\n          </div>\n          <div>\n            <div class=\"text-gray-500\">Last modified</div>\n            <div class=\"mb-2.5 h-2.5 w-24 animate-pulse rounded-full bg-gray-300\"></div>\n          </div>\n        </div>\n      </div>\n    </aside>\n  </V2::AdminPage>\n  */\n  {\n    \"id\": \"VgFCjfFp\",\n    \"block\": \"[[[8,[39,0],[[24,0,\\\"bg-slate-50 pt-12 xl:pr-72\\\"]],null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"fixed left-0 right-0 top-14 z-20 border-b border-gray-200 bg-white px-6 lg:left-64 lg:top-0\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"    \\\"],[10,0],[14,\\\"role\\\",\\\"status\\\"],[14,0,\\\"flex min-h-12 animate-pulse items-center text-sm text-gray-700\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"mx-3 h-2.5 w-16 rounded-full bg-gray-300\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"mx-3 h-2.5 w-16 rounded-full bg-gray-300\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"mx-3 h-2.5 w-16 rounded-full bg-gray-300\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"mx-3 h-2.5 w-16 rounded-full bg-gray-300\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Loading...\\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\\n    \\\"],[10,0],[14,\\\"role\\\",\\\"status\\\"],[14,0,\\\"bg-settify-green rounded-lg py-1 mt-4 mb-8 h-8 animate-pulse\\\"],[12],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Loading...\\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\\n    \\\"],[10,0],[14,\\\"role\\\",\\\"status\\\"],[14,0,\\\"animate-pulse my-6 flex items-center justify-center \\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"w-12 h-12 bg-gray-200 rounded-full me-4\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"w-24 h-2.5 bg-gray-200 rounded-full me-3\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Loading...\\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,0],[14,\\\"role\\\",\\\"status\\\"],[14,0,\\\"p-4 divide-y divide-gray-200 animate-pulse\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,4],[[28,[37,4],[[28,[37,5],[1,2,3,4,5],null]],null]],null],null,[[[1,\\\"        \\\"],[10,0],[14,0,\\\"flex items-center justify-between py-2\\\"],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"h-2.5 bg-gray-300 rounded-full w-12\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"h-2.5 bg-gray-300 rounded-full w-24 mb-2.5\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"h-2.5 bg-gray-300 rounded-full w-24 mb-2.5\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"      \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Loading...\\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[1,\\\"  \\\"],[10,0],[14,1,\\\"client-brief\\\"],[14,0,\\\"mx-auto min-h-screen max-w-[52rem] border bg-white p-8 shadow-sm\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,\\\"role\\\",\\\"status\\\"],[14,0,\\\"mb-8 mt-4 h-8 animate-pulse rounded-lg bg-brand-primary-color-rgb py-1\\\"],[12],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Loading...\\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,0],[14,0,\\\"max-w-sm\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"mb-3 h-2 rounded-full bg-gray-200 leading-6\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,0],[14,\\\"role\\\",\\\"status\\\"],[14,0,\\\"my-6 flex animate-pulse items-center justify-start\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"me-4 h-6 w-6 rounded-full bg-gray-200\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"me-3 h-2.5 w-24 rounded-full bg-gray-200\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Loading...\\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,0],[14,\\\"role\\\",\\\"status\\\"],[14,0,\\\"animate-pulse divide-y divide-gray-200 p-4\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,4],[[28,[37,4],[[28,[37,5],[1,2,3,4,5],null]],null]],null],null,[[[1,\\\"        \\\"],[10,0],[14,0,\\\"flex items-center justify-between py-2\\\"],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"h-2.5 w-12 rounded-full bg-gray-300\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"mb-2.5 h-2.5 w-24 rounded-full bg-gray-300\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"mb-2.5 h-2.5 w-24 rounded-full bg-gray-300\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"      \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Loading...\\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,\\\"aside\\\"],[14,0,\\\"fixed bottom-0 right-0 top-12 hidden w-72 overflow-hidden border-l border-gray-200 bg-white xl:block\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"flex h-full flex-col overflow-x-hidden overflow-y-scroll px-4\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"border-b border-gray-300 pb-4 pt-3 text-sm\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"mb-2 flex items-center gap-2 text-xl font-bold leading-6\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,7],[[24,0,\\\"size-5\\\"]],[[\\\"@icon\\\"],[\\\"id-card\\\"]],null],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"mx-3 h-2.5 w-28 animate-pulse rounded-full bg-gray-300\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"text-gray-500\\\"],[12],[1,\\\"Email\\\"],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"mb-2.5 h-2.5 w-28 animate-pulse rounded-full bg-gray-300\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"text-gray-500\\\"],[12],[1,\\\"Phone\\\"],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"mb-2.5 h-2.5 w-20 animate-pulse rounded-full bg-gray-300\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"text-gray-500\\\"],[12],[1,\\\"Last modified\\\"],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"mb-2.5 h-2.5 w-24 animate-pulse rounded-full bg-gray-300\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"loop\\\",\\\"loop\\\"],false,[\\\"v2/admin-page\\\",\\\"div\\\",\\\"span\\\",\\\"each\\\",\\\"-track-array\\\",\\\"array\\\",\\\"aside\\\",\\\"v2/svg-icon\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/clients-loading.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/clients\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage class=\"bg-slate-50 {{if this.shouldDisplayNavAndSidebar 'pt-12 xl:pr-72'}}\">\n    {{#if this.shouldDisplayNavAndSidebar}}\n      <V2::BriefMenuBar @client={{this.model.client}} @metadata={{this.model.metadata}} @unsubscribe={{this.unsubscribe}} />\n    {{/if}}\n    {{! Client Brief }}\n    {{! TODO: Move this into a component of its own }}\n    <div id=\"client-brief\" class=\"mx-auto min-h-screen max-w-[52rem] border bg-white p-8 shadow-sm\">\n      <header class=\"pdf-include hidden w-full\">\n        <img src=\"https://cdn.settify.com.au/Settify+Logo.png\" alt=\"Settify\" class=\"ml-auto h-20\" />\n        <div class=\"mt-4 text-sm leading-6 text-gray-500\">\n          <p class=\"font-semibold leading-7\">Privileged and confidential</p>\n          <p>\n            Prepared for\n            {{this.firm.name}}\n          </p>\n          <p>\n            {{#if this.appointmentRequestedString}}\n              {{#if (eq this.model.metadata.referral \"invitation\")}}\n                Invitation completed:\n                {{this.appointmentRequestedString}}\n              {{else}}\n                Appointment requested:\n                {{this.appointmentRequestedString}}\n              {{/if}}\n            {{else}}\n              {{#if (eq this.model.metadata.referral \"invitation\")}}\n                Invitation not yet completed\n              {{else}}\n                Appointment not yet requested\n              {{/if}}\n            {{/if}}\n          </p>\n          <p>\n            Last modified:\n            {{this.lastModifiedString}}\n          </p>\n        </div>\n      </header>\n  \n      {{#if this.model.client.isFormsRecord}}\n        {{! If client is invited but detailed induction is not completed, only show excerpt of the client record }}\n        {{#if this.isInvitedAndDetailedInductionNotCompleted}}\n          <V2::InvitationNotCompletedExcerptData @clientRecord={{this.model.client}} @metadata={{this.model.metadata}} />\n        {{else}}\n          {{#each this.model.inductions as |induction|}}\n            {{#each induction.firmSummary.customDefinition as |element index|}}\n              <V2::SummaryElement @summaryElement={{element}} @clientRecord={{this.model.client}} @induction={{induction}} />\n            {{else}}\n              <V2::FirmFacingSummary @induction={{induction}} @clientRecord={{this.model.client}} @computeDisplayIf={{this.questionnaireLogic}} />\n            {{/each}}\n            <CustomFirmSummaryMoreInfoPrinter @induction={{induction}} @clientRecord={{this.model.client}} />\n          {{/each}}\n        {{/if}}\n      {{else}}\n        <V2::ClientSummaryForLegacyData @clientRecord={{this.model.client}} />\n      {{/if}}\n    </div>\n  \n    {{#if this.shouldDisplayNavAndSidebar}}\n      <aside aria-live=\"polite\" class=\"fixed bottom-0 right-0 top-12 hidden w-72 overflow-hidden border-l border-gray-200 bg-white xl:block\">\n        <div class=\"flex h-full flex-col overflow-x-hidden overflow-y-scroll px-4\">\n          <div class=\"border-b border-gray-300 pb-4 pt-3\">\n            <div class=\"mb-2 flex items-center gap-2 text-xl font-bold leading-6\">\n              <V2::SvgIcon @icon=\"id-card\" class=\"size-5\" />\n              <span>\n                {{this.model.client.firstName}}\n                {{this.model.client.surname}}\n              </span>\n            </div>\n            <div class=\"flex items-center gap-1\">\n              <span class=\"mb-2 inline-flex rounded-md bg-blue-50 px-2 py-1 text-xs font-medium text-blue-700 ring-1 ring-inset ring-blue-700/10\">\n                {{sentence-case this.model.client.practiceArea}}\n              </span>\n              {{#if this.model.client.invitedByLawFirm}}\n                <span class=\"mb-2 inline-flex rounded-md bg-yellow-50 px-2 py-1 text-xs font-medium text-yellow-800 ring-1 ring-inset ring-yellow-600/20\">\n                  Invited\n                </span>\n              {{/if}}\n            </div>\n            <dl class=\"text-sm\">\n              {{#if this.model.client.email}}\n                <div>\n                  <dt class=\"text-gray-500\">Email</dt>\n                  <dd class=\"truncate\">{{this.model.client.email}}</dd>\n                </div>\n              {{/if}}\n              {{#if this.model.client.phone}}\n                <div>\n                  <dt class=\"text-gray-500\">Phone</dt>\n                  <dd class=\"truncate\">{{this.model.client.phone}}</dd>\n                </div>\n              {{/if}}\n              <div>\n                <dt class=\"text-gray-500\">\n                  {{#if (eq this.model.metadata.referral \"invitation\")}}\n                    Invitation completed\n                  {{else}}\n                    Referred\n                  {{/if}}\n                </dt>\n                <dd class=\"truncate\">{{this.appointmentRequestedString}}</dd>\n              </div>\n              <div>\n                <dt class=\"text-gray-500\">\n                  Last modified\n                </dt>\n                <dd class=\"truncate\">{{this.lastModifiedString}}</dd>\n              </div>\n            </dl>\n          </div>\n          {{!--\n          TODO (INTEGRATION): Add the SendToPms component but improve the UI for clients already sent to a PMS\n          <div class=\"border-b border-gray-300 pb-4 pt-3\">\n            <V2::SendToPms @client={{this.model.client}} />\n          </div>\n          TODO (FIRM NOTES): We will need to fetch the `lead` model to get access to the firm notes\n          <div class=\"border-b border-gray-300 pb-4 pt-3\">\n            <div class=\"flex items-center text-base font-medium leading-5\">\n              <span class=\"hide-collapsed\">\n                Notes\n              </span>\n              <V2::Button @size=\"small\" class=\"ml-auto font-normal hover:bg-gray-100\">\n                Edit\n              </V2::Button>\n            </div>\n            <div>\n              <div class=\"hide-collapsed\">\n                <span class=\"text-sm italic text-gray-500\">\n                  Add a note about this lead.\n                </span>\n              </div>\n            </div>\n          </div>\n          --}}\n        </div>\n      </aside>\n    {{/if}}\n  </V2::AdminPage>\n  */\n  {\n    \"id\": \"1aZJ9FEa\",\n    \"block\": \"[[[8,[39,0],[[16,0,[29,[\\\"bg-slate-50 \\\",[52,[30,0,[\\\"shouldDisplayNavAndSidebar\\\"]],\\\"pt-12 xl:pr-72\\\"]]]]],null,[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"shouldDisplayNavAndSidebar\\\"]],[[[1,\\\"    \\\"],[8,[39,2],null,[[\\\"@client\\\",\\\"@metadata\\\",\\\"@unsubscribe\\\"],[[30,0,[\\\"model\\\",\\\"client\\\"]],[30,0,[\\\"model\\\",\\\"metadata\\\"]],[30,0,[\\\"unsubscribe\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"],[10,0],[14,1,\\\"client-brief\\\"],[14,0,\\\"mx-auto min-h-screen max-w-[52rem] border bg-white p-8 shadow-sm\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"header\\\"],[14,0,\\\"pdf-include hidden w-full\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"https://cdn.settify.com.au/Settify+Logo.png\\\"],[14,\\\"alt\\\",\\\"Settify\\\"],[14,0,\\\"ml-auto h-20\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"mt-4 text-sm leading-6 text-gray-500\\\"],[12],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"font-semibold leading-7\\\"],[12],[1,\\\"Privileged and confidential\\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          Prepared for\\\\n          \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"appointmentRequestedString\\\"]],[[[41,[28,[37,7],[[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"referral\\\"]],\\\"invitation\\\"],null],[[[1,\\\"              Invitation completed:\\\\n              \\\"],[1,[30,0,[\\\"appointmentRequestedString\\\"]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"              Appointment requested:\\\\n              \\\"],[1,[30,0,[\\\"appointmentRequestedString\\\"]]],[1,\\\"\\\\n\\\"]],[]]]],[]],[[[41,[28,[37,7],[[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"referral\\\"]],\\\"invitation\\\"],null],[[[1,\\\"              Invitation not yet completed\\\\n\\\"]],[]],[[[1,\\\"              Appointment not yet requested\\\\n\\\"]],[]]]],[]]],[1,\\\"        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          Last modified:\\\\n          \\\"],[1,[30,0,[\\\"lastModifiedString\\\"]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"isFormsRecord\\\"]],[[[41,[30,0,[\\\"isInvitedAndDetailedInductionNotCompleted\\\"]],[[[1,\\\"        \\\"],[8,[39,8],null,[[\\\"@clientRecord\\\",\\\"@metadata\\\"],[[30,0,[\\\"model\\\",\\\"client\\\"]],[30,0,[\\\"model\\\",\\\"metadata\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[42,[28,[37,10],[[28,[37,10],[[30,0,[\\\"model\\\",\\\"inductions\\\"]]],null]],null],null,[[[42,[28,[37,10],[[28,[37,10],[[30,1,[\\\"firmSummary\\\",\\\"customDefinition\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[8,[39,11],null,[[\\\"@summaryElement\\\",\\\"@clientRecord\\\",\\\"@induction\\\"],[[30,2],[30,0,[\\\"model\\\",\\\"client\\\"]],[30,1]]],null],[1,\\\"\\\\n\\\"]],[2,3]],[[[1,\\\"            \\\"],[8,[39,12],null,[[\\\"@induction\\\",\\\"@clientRecord\\\",\\\"@computeDisplayIf\\\"],[[30,1],[30,0,[\\\"model\\\",\\\"client\\\"]],[30,0,[\\\"questionnaireLogic\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"          \\\"],[8,[39,13],null,[[\\\"@induction\\\",\\\"@clientRecord\\\"],[[30,1],[30,0,[\\\"model\\\",\\\"client\\\"]]]],null],[1,\\\"\\\\n\\\"]],[1]],null]],[]]]],[]],[[[1,\\\"      \\\"],[8,[39,14],null,[[\\\"@clientRecord\\\"],[[30,0,[\\\"model\\\",\\\"client\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"shouldDisplayNavAndSidebar\\\"]],[[[1,\\\"    \\\"],[10,\\\"aside\\\"],[14,\\\"aria-live\\\",\\\"polite\\\"],[14,0,\\\"fixed bottom-0 right-0 top-12 hidden w-72 overflow-hidden border-l border-gray-200 bg-white xl:block\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"flex h-full flex-col overflow-x-hidden overflow-y-scroll px-4\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"border-b border-gray-300 pb-4 pt-3\\\"],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"mb-2 flex items-center gap-2 text-xl font-bold leading-6\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,16],[[24,0,\\\"size-5\\\"]],[[\\\"@icon\\\"],[\\\"id-card\\\"]],null],[1,\\\"\\\\n            \\\"],[10,1],[12],[1,\\\"\\\\n              \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"firstName\\\"]]],[1,\\\"\\\\n              \\\"],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"surname\\\"]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"flex items-center gap-1\\\"],[12],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"mb-2 inline-flex rounded-md bg-blue-50 px-2 py-1 text-xs font-medium text-blue-700 ring-1 ring-inset ring-blue-700/10\\\"],[12],[1,\\\"\\\\n              \\\"],[1,[28,[35,18],[[30,0,[\\\"model\\\",\\\"client\\\",\\\"practiceArea\\\"]]],null]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"invitedByLawFirm\\\"]],[[[1,\\\"              \\\"],[10,1],[14,0,\\\"mb-2 inline-flex rounded-md bg-yellow-50 px-2 py-1 text-xs font-medium text-yellow-800 ring-1 ring-inset ring-yellow-600/20\\\"],[12],[1,\\\"\\\\n                Invited\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"dl\\\"],[14,0,\\\"text-sm\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"email\\\"]],[[[1,\\\"              \\\"],[10,0],[12],[1,\\\"\\\\n                \\\"],[10,\\\"dt\\\"],[14,0,\\\"text-gray-500\\\"],[12],[1,\\\"Email\\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"dd\\\"],[14,0,\\\"truncate\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"email\\\"]]],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"model\\\",\\\"client\\\",\\\"phone\\\"]],[[[1,\\\"              \\\"],[10,0],[12],[1,\\\"\\\\n                \\\"],[10,\\\"dt\\\"],[14,0,\\\"text-gray-500\\\"],[12],[1,\\\"Phone\\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"dd\\\"],[14,0,\\\"truncate\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"client\\\",\\\"phone\\\"]]],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[10,0],[12],[1,\\\"\\\\n              \\\"],[10,\\\"dt\\\"],[14,0,\\\"text-gray-500\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,7],[[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"referral\\\"]],\\\"invitation\\\"],null],[[[1,\\\"                  Invitation completed\\\\n\\\"]],[]],[[[1,\\\"                  Referred\\\\n\\\"]],[]]],[1,\\\"              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"dd\\\"],[14,0,\\\"truncate\\\"],[12],[1,[30,0,[\\\"appointmentRequestedString\\\"]]],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,0],[12],[1,\\\"\\\\n              \\\"],[10,\\\"dt\\\"],[14,0,\\\"text-gray-500\\\"],[12],[1,\\\"\\\\n                Last modified\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,\\\"dd\\\"],[14,0,\\\"truncate\\\"],[12],[1,[30,0,[\\\"lastModifiedString\\\"]]],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]]]]]],[\\\"induction\\\",\\\"element\\\",\\\"index\\\"],false,[\\\"v2/admin-page\\\",\\\"if\\\",\\\"v2/brief-menu-bar\\\",\\\"div\\\",\\\"header\\\",\\\"img\\\",\\\"p\\\",\\\"eq\\\",\\\"v2/invitation-not-completed-excerpt-data\\\",\\\"each\\\",\\\"-track-array\\\",\\\"v2/summary-element\\\",\\\"v2/firm-facing-summary\\\",\\\"custom-firm-summary-more-info-printer\\\",\\\"v2/client-summary-for-legacy-data\\\",\\\"aside\\\",\\\"v2/svg-icon\\\",\\\"span\\\",\\\"sentence-case\\\",\\\"dl\\\",\\\"dt\\\",\\\"dd\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/clients.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/index-loading\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage @heading=\"Clients\">\n    <client-leads-list class=\"relative inline-block min-w-full py-2 align-middle\">\n      <div class=\"relative mb-2 h-14 animate-pulse rounded-md bg-gray-200 p-2\"></div>\n      <div class=\"relative mb-2 h-14 animate-pulse rounded-md bg-gray-200 p-2\"></div>\n      <div class=\"relative mb-2 h-14 animate-pulse rounded-md bg-gray-200 p-2\"></div>\n      <div class=\"relative mb-2 h-14 animate-pulse rounded-md bg-gray-200 p-2\"></div>\n    </client-leads-list>\n  </V2::AdminPage>\n  \n  */\n  {\n    \"id\": \"yF6YvNbV\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@heading\\\"],[\\\"Clients\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,\\\"client-leads-list\\\"],[14,0,\\\"relative inline-block min-w-full py-2 align-middle\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"relative mb-2 h-14 animate-pulse rounded-md bg-gray-200 p-2\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"relative mb-2 h-14 animate-pulse rounded-md bg-gray-200 p-2\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"relative mb-2 h-14 animate-pulse rounded-md bg-gray-200 p-2\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"relative mb-2 h-14 animate-pulse rounded-md bg-gray-200 p-2\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[],false,[\\\"v2/admin-page\\\",\\\"client-leads-list\\\",\\\"div\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/index-loading.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/index\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage @heading=\"Clients\" @ctaButtons={{this.ctaButtons}}>\n  \n    {{! TODO: Identify better way to handle when to use the slide out and when to open the record/conflict page }}\n    <ClientLeadsList\n      @conversionTypes={{this.model.conversionTypes}}\n      @leads={{this.model.leads}}\n      @selectedLead={{this.selectedClient}}\n      @toggleSelectedClient={{this.toggleSelectedClient}}\n    />\n  \n    <V2::SlideOver\n      @title={{this.selectedClient.settifySensitiveName}}\n      @open={{this.selectedClient}}\n      @overlay={{true}}\n      @onClose={{this.toggleSelectedClient}}\n      @onSave={{this.saveClientChanges}}\n    >\n      <div class=\"mb-4 flex flex-wrap space-y-3 sm:space-x-3 sm:space-y-0\">\n        {{#if this.selectedClient.conflictCheckCompleted}}\n          {{#if this.selectedClient.hasConflict}}\n            <div\n              class=\"inline-flex w-full flex-1 items-center justify-center rounded-md bg-white px-3 py-2 text-sm font-semibold text-red-500 shadow-sm ring-1 ring-inset ring-gray-300\"\n            >\n              Conflicted\n            </div>\n          {{else}}\n            <V2::Button @variant=\"solid\" @route=\"v2.admin.clients\" @model={{this.selectedClient.clientID}}>\n              View brief\n            </V2::Button>\n          {{/if}}\n          {{#if this.selectedClient.canResetConflict}}\n            <V2::Button @variant=\"outlined\" {{on \"click\" (fn this.toggleModal \"showResetConflictModal\")}}>\n              Reset conflict\n            </V2::Button>\n          {{/if}}\n        {{else}}\n          <V2::Button @variant=\"outlined\" @route=\"v2.admin.conflict\" @model={{this.selectedClient.clientID}} class=\"text-amber-500\">\n            Run conflict check\n          </V2::Button>\n        {{/if}}\n      </div>\n  \n      {{#if this.selectedClient.hasConflict}}\n        <div class=\"mb-4\">\n          <div class=\"text-sm\">\n            Conflict check completed:\n            {{pretty-date this.selectedClient.conflictCheckCompleted}}\n          </div>\n        </div>\n      {{/if}}\n  \n      <V2::Textarea @label=\"Firm Notes\" @value={{this.selectedClient.firmNotes}} @id=\"notes\" rows=\"3\" name=\"Firm notes\" class=\"mb-4\" />\n  \n      {{#if (and this.selectedClient.conflictCheckCompleted (not this.selectedClient.hasConflict))}}\n        <div class=\"mb-4\">\n          <p class=\"text-sm font-medium leading-6\">Billing status</p>\n          <ClientBilling @lead={{this.selectedClient}} @conversionTypes={{this.model.conversionTypes}} />\n        </div>\n      {{/if}}\n    </V2::SlideOver>\n  </V2::AdminPage>\n  \n  <V2::Modal\n    @isOpen={{this.showResetConflictModal}}\n    @title={{this.resetConflictModalQuestionTitle}}\n    @id=\"reset-conflict-modal\"\n    class=\"max-w-2xl\"\n    @onClose={{fn this.toggleModal \"showResetConflictModal\"}}\n    @onSubmit={{this.resetConflict}}\n  />\n  \n  */\n  {\n    \"id\": \"bhHTckgl\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@heading\\\",\\\"@ctaButtons\\\"],[\\\"Clients\\\",[30,0,[\\\"ctaButtons\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\\n\\\"],[1,\\\"  \\\"],[8,[39,1],null,[[\\\"@conversionTypes\\\",\\\"@leads\\\",\\\"@selectedLead\\\",\\\"@toggleSelectedClient\\\"],[[30,0,[\\\"model\\\",\\\"conversionTypes\\\"]],[30,0,[\\\"model\\\",\\\"leads\\\"]],[30,0,[\\\"selectedClient\\\"]],[30,0,[\\\"toggleSelectedClient\\\"]]]],null],[1,\\\"\\\\n\\\\n  \\\"],[8,[39,2],null,[[\\\"@title\\\",\\\"@open\\\",\\\"@overlay\\\",\\\"@onClose\\\",\\\"@onSave\\\"],[[30,0,[\\\"selectedClient\\\",\\\"settifySensitiveName\\\"]],[30,0,[\\\"selectedClient\\\"]],true,[30,0,[\\\"toggleSelectedClient\\\"]],[30,0,[\\\"saveClientChanges\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"mb-4 flex flex-wrap space-y-3 sm:space-x-3 sm:space-y-0\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"selectedClient\\\",\\\"conflictCheckCompleted\\\"]],[[[41,[30,0,[\\\"selectedClient\\\",\\\"hasConflict\\\"]],[[[1,\\\"          \\\"],[10,0],[14,0,\\\"inline-flex w-full flex-1 items-center justify-center rounded-md bg-white px-3 py-2 text-sm font-semibold text-red-500 shadow-sm ring-1 ring-inset ring-gray-300\\\"],[12],[1,\\\"\\\\n            Conflicted\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[8,[39,5],null,[[\\\"@variant\\\",\\\"@route\\\",\\\"@model\\\"],[\\\"solid\\\",\\\"v2.admin.clients\\\",[30,0,[\\\"selectedClient\\\",\\\"clientID\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            View brief\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[41,[30,0,[\\\"selectedClient\\\",\\\"canResetConflict\\\"]],[[[1,\\\"          \\\"],[8,[39,5],[[4,[38,6],[\\\"click\\\",[28,[37,7],[[30,0,[\\\"toggleModal\\\"]],\\\"showResetConflictModal\\\"],null]],null]],[[\\\"@variant\\\"],[\\\"outlined\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            Reset conflict\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null]],[]],[[[1,\\\"        \\\"],[8,[39,5],[[24,0,\\\"text-amber-500\\\"]],[[\\\"@variant\\\",\\\"@route\\\",\\\"@model\\\"],[\\\"outlined\\\",\\\"v2.admin.conflict\\\",[30,0,[\\\"selectedClient\\\",\\\"clientID\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          Run conflict check\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"selectedClient\\\",\\\"hasConflict\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"mb-4\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"text-sm\\\"],[12],[1,\\\"\\\\n          Conflict check completed:\\\\n          \\\"],[1,[28,[35,8],[[30,0,[\\\"selectedClient\\\",\\\"conflictCheckCompleted\\\"]]],null]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n    \\\"],[8,[39,9],[[24,\\\"rows\\\",\\\"3\\\"],[24,3,\\\"Firm notes\\\"],[24,0,\\\"mb-4\\\"]],[[\\\"@label\\\",\\\"@value\\\",\\\"@id\\\"],[\\\"Firm Notes\\\",[30,0,[\\\"selectedClient\\\",\\\"firmNotes\\\"]],\\\"notes\\\"]],null],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,10],[[30,0,[\\\"selectedClient\\\",\\\"conflictCheckCompleted\\\"]],[28,[37,11],[[30,0,[\\\"selectedClient\\\",\\\"hasConflict\\\"]]],null]],null],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"mb-4\\\"],[12],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"text-sm font-medium leading-6\\\"],[12],[1,\\\"Billing status\\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,13],null,[[\\\"@lead\\\",\\\"@conversionTypes\\\"],[[30,0,[\\\"selectedClient\\\"]],[30,0,[\\\"model\\\",\\\"conversionTypes\\\"]]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[8,[39,14],[[24,0,\\\"max-w-2xl\\\"]],[[\\\"@isOpen\\\",\\\"@title\\\",\\\"@id\\\",\\\"@onClose\\\",\\\"@onSubmit\\\"],[[30,0,[\\\"showResetConflictModal\\\"]],[30,0,[\\\"resetConflictModalQuestionTitle\\\"]],\\\"reset-conflict-modal\\\",[28,[37,7],[[30,0,[\\\"toggleModal\\\"]],\\\"showResetConflictModal\\\"],null],[30,0,[\\\"resetConflict\\\"]]]],null],[1,\\\"\\\\n\\\"]],[],false,[\\\"v2/admin-page\\\",\\\"client-leads-list\\\",\\\"v2/slide-over\\\",\\\"div\\\",\\\"if\\\",\\\"v2/button\\\",\\\"on\\\",\\\"fn\\\",\\\"pretty-date\\\",\\\"v2/textarea\\\",\\\"and\\\",\\\"not\\\",\\\"p\\\",\\\"client-billing\\\",\\\"v2/modal\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/index.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/integrations-loading\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage @heading=\"Integrations\">\n    {{outlet}}\n  </V2::AdminPage>\n  */\n  {\n    \"id\": \"7cIooDXP\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@heading\\\"],[\\\"Integrations\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[46,[28,[37,2],null,null],null,null,null],[1,\\\"\\\\n\\\"]],[]]]]]],[],false,[\\\"v2/admin-page\\\",\\\"component\\\",\\\"-outlet\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/integrations-loading.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/integrations\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{outlet}}\n  \n  */\n  {\n    \"id\": \"NO4z84HR\",\n    \"block\": \"[[[46,[28,[37,1],null,null],null,null,null],[1,\\\"\\\\n\\\"]],[],false,[\\\"component\\\",\\\"-outlet\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/integrations.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/integrations/index-loading\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage @heading=\"Integrations\">\n    <ul role=\"status\" class=\"grid grid-cols-1 gap-x-6 gap-y-8 md:grid-cols-2 lg:grid-cols-3 xl:gap-x-8\">\n      {{#each (array 0 1 2) as |rowIndex|}}\n        <li data-index={{rowIndex}} class=\"animate-pulse overflow-hidden rounded-xl border border-gray-200\">\n          <div class=\"border-b border-gray-900/5 bg-gray-50 p-6\">\n            <div class=\"mb-2 flex items-center gap-x-4\">\n              <div class=\"h-14 w-14 flex-none rounded-lg bg-white object-contain p-1 ring-1 ring-gray-900/10\"></div>\n              <div class=\"inline-block h-2.5 w-12 rounded-full bg-gray-300\"></div>\n            </div>\n          </div>\n          <div class=\"h-12 px-4 py-3\">\n            <span class=\"sr-only\">Loading...</span>\n          </div>\n        </li>\n      {{/each}}\n    </ul>\n  </V2::AdminPage>\n  */\n  {\n    \"id\": \"wLIGERrq\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@heading\\\"],[\\\"Integrations\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,\\\"ul\\\"],[14,\\\"role\\\",\\\"status\\\"],[14,0,\\\"grid grid-cols-1 gap-x-6 gap-y-8 md:grid-cols-2 lg:grid-cols-3 xl:gap-x-8\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,3],[[28,[37,3],[[28,[37,4],[0,1,2],null]],null]],null],null,[[[1,\\\"      \\\"],[10,\\\"li\\\"],[15,\\\"data-index\\\",[30,1]],[14,0,\\\"animate-pulse overflow-hidden rounded-xl border border-gray-200\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"border-b border-gray-900/5 bg-gray-50 p-6\\\"],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"mb-2 flex items-center gap-x-4\\\"],[12],[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"h-14 w-14 flex-none rounded-lg bg-white object-contain p-1 ring-1 ring-gray-900/10\\\"],[12],[13],[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"inline-block h-2.5 w-12 rounded-full bg-gray-300\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"h-12 px-4 py-3\\\"],[12],[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Loading...\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"rowIndex\\\"],false,[\\\"v2/admin-page\\\",\\\"ul\\\",\\\"each\\\",\\\"-track-array\\\",\\\"array\\\",\\\"li\\\",\\\"div\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/integrations/index-loading.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/integrations/index\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage @heading=\"Integrations\">\n    <ul role=\"list\" class=\"grid grid-cols-1 gap-x-6 gap-y-8 md:grid-cols-2 lg:grid-cols-3 xl:gap-x-8\">\n      {{#each this.model.availableIntegrations as |integration index|}}\n        <li data-index={{index}} id=\"integration-connect-{{integration.name}}\" class=\"flex flex-col justify-between overflow-hidden rounded-xl border border-gray-200\">\n          <div class=\"flex-grow bg-gray-50 p-6\">\n            <div class=\"mb-2 flex items-center gap-x-4\">\n              {{#if integration.logoUrl}}\n                <img src={{integration.logoUrl}} alt={{integration.name}} class=\"h-14 w-14 flex-none rounded-lg bg-white object-contain p-1 ring-1 ring-gray-900/10\" />\n              {{/if}}\n              <div class=\"text-sm font-medium leading-6\">{{integration.name}}</div>\n            </div>\n            <div class=\"text-sm text-gray-500\">{{integration.blurb}}</div>\n          </div>\n          <div class=\"border-t border-gray-900/5 px-4 py-3\">\n            <V2::Button @variant=\"outlined\" @size=\"small\" class=\"font-semibold\" {{on \"click\" (fn this.startAuthenticationProcess integration)}}>\n              {{if (eq this.model.integration.pmsID integration.id) \"Reconnect\" \"Connect\"}}\n            </V2::Button>\n          </div>\n        </li>\n      {{/each}}\n    </ul>\n  </V2::AdminPage>\n  */\n  {\n    \"id\": \"j4/gJlff\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@heading\\\"],[\\\"Integrations\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,\\\"ul\\\"],[14,\\\"role\\\",\\\"list\\\"],[14,0,\\\"grid grid-cols-1 gap-x-6 gap-y-8 md:grid-cols-2 lg:grid-cols-3 xl:gap-x-8\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,3],[[28,[37,3],[[30,0,[\\\"model\\\",\\\"availableIntegrations\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[10,\\\"li\\\"],[15,\\\"data-index\\\",[30,2]],[15,1,[29,[\\\"integration-connect-\\\",[30,1,[\\\"name\\\"]]]]],[14,0,\\\"flex flex-col justify-between overflow-hidden rounded-xl border border-gray-200\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"flex-grow bg-gray-50 p-6\\\"],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"mb-2 flex items-center gap-x-4\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"logoUrl\\\"]],[[[1,\\\"              \\\"],[10,\\\"img\\\"],[15,\\\"src\\\",[30,1,[\\\"logoUrl\\\"]]],[15,\\\"alt\\\",[30,1,[\\\"name\\\"]]],[14,0,\\\"h-14 w-14 flex-none rounded-lg bg-white object-contain p-1 ring-1 ring-gray-900/10\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[10,0],[14,0,\\\"text-sm font-medium leading-6\\\"],[12],[1,[30,1,[\\\"name\\\"]]],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"text-sm text-gray-500\\\"],[12],[1,[30,1,[\\\"blurb\\\"]]],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"border-t border-gray-900/5 px-4 py-3\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,8],[[24,0,\\\"font-semibold\\\"],[4,[38,9],[\\\"click\\\",[28,[37,10],[[30,0,[\\\"startAuthenticationProcess\\\"]],[30,1]],null]],null]],[[\\\"@variant\\\",\\\"@size\\\"],[\\\"outlined\\\",\\\"small\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[1,[52,[28,[37,11],[[30,0,[\\\"model\\\",\\\"integration\\\",\\\"pmsID\\\"]],[30,1,[\\\"id\\\"]]],null],\\\"Reconnect\\\",\\\"Connect\\\"]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[1,2]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"integration\\\",\\\"index\\\"],false,[\\\"v2/admin-page\\\",\\\"ul\\\",\\\"each\\\",\\\"-track-array\\\",\\\"li\\\",\\\"div\\\",\\\"if\\\",\\\"img\\\",\\\"v2/button\\\",\\\"on\\\",\\\"fn\\\",\\\"eq\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/integrations/index.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/integrations/integration-loading\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage @heading=\"Integrations\">\n    <div role=\"status\" class=\"mb-10 flex items-center gap-x-6\">\n      <div class=\"h-20 w-20 flex-none rounded-lg bg-white p-1 ring-1 ring-gray-900/10\"></div>\n      <div class=\"w-full animate-pulse\">\n        <div class=\"mb-3 h-3 max-w-24 rounded-full bg-gray-300 leading-6\"></div>\n        <div class=\"h-2 max-w-64 rounded-full bg-gray-200 leading-6\"></div>\n      </div>\n      <span class=\"sr-only\">Loading...</span>\n    </div>\n  \n    <div role=\"status\" class=\"animate-pulse\">\n      <div class=\"relative mb-2 h-14 rounded-md bg-gray-200 p-2\"></div>\n      <div class=\"relative mb-2 h-14 rounded-md bg-gray-200 p-2\"></div>\n      <span class=\"sr-only\">Loading...</span>\n    </div>\n  </V2::AdminPage>\n  */\n  {\n    \"id\": \"XRasjX/T\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@heading\\\"],[\\\"Integrations\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,\\\"role\\\",\\\"status\\\"],[14,0,\\\"mb-10 flex items-center gap-x-6\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"h-20 w-20 flex-none rounded-lg bg-white p-1 ring-1 ring-gray-900/10\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"w-full animate-pulse\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"mb-3 h-3 max-w-24 rounded-full bg-gray-300 leading-6\\\"],[12],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"h-2 max-w-64 rounded-full bg-gray-200 leading-6\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Loading...\\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,\\\"role\\\",\\\"status\\\"],[14,0,\\\"animate-pulse\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"relative mb-2 h-14 rounded-md bg-gray-200 p-2\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"relative mb-2 h-14 rounded-md bg-gray-200 p-2\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Loading...\\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[],false,[\\\"v2/admin-page\\\",\\\"div\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/integrations/integration-loading.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/integrations/integration\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage @heading=\"Integrations\" @ctaButtons={{this.ctaButtons}}>\n    <div class=\"mb-10 flex items-center gap-x-6\">\n      <img src={{@model.pmsMetadata.logoUrl}} alt={{@model.pmsMetadata.name}} class=\"h-20 w-20 flex-none rounded-lg bg-white object-contain p-1 ring-1 ring-gray-900/10\" />\n      <div>\n        <h3 class=\"text-base font-semibold leading-6\">{{@model.pmsMetadata.name}} Settings</h3>\n        {{#if (not (get @model.pmsMetadata.submitButtons \"0.shouldSubmitWithoutShowingOptions\"))}}\n          <p class=\"text-sm leading-6 text-gray-500\">\n            Default settings for each client (these can be changed on a client-by-client basis when using the integration).\n          </p>\n        {{/if}}\n      </div>\n    </div>\n  \n    <div class=\"mb-4\">\n      <V2::PmsSettingsInputsSelector\n        @pmsMetadata={{@model.pmsMetadata}}\n        @pmsSettings={{this.localPmsSettings}}\n        @matterInformation={{hash includeSpouseOptions=true}}\n        @updatePmsSetting={{this.updatePmsSetting}}\n      />\n    </div>\n  \n    <div class=\"flex justify-end\">\n      <V2::Button\n        @variant=\"outlined\"\n        class=\"inline-flex items-center justify-center gap-2 text-sm font-semibold text-red-500\"\n        disabled={{this.disconnecting}}\n        {{on \"click\" this.disconnectPms}}\n      >\n        {{#if this.disconnecting}}\n          <V2::SvgIcon @icon=\"spinner-third\" class=\"size-4 animate-spin\" role=\"status\" />\n          Disconnecting...\n        {{else}}\n          Disconnect\n        {{/if}}\n      </V2::Button>\n    </div>\n  </V2::AdminPage>\n  */\n  {\n    \"id\": \"EOt0HsHQ\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@heading\\\",\\\"@ctaButtons\\\"],[\\\"Integrations\\\",[30,0,[\\\"ctaButtons\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"mb-10 flex items-center gap-x-6\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"img\\\"],[15,\\\"src\\\",[30,1,[\\\"pmsMetadata\\\",\\\"logoUrl\\\"]]],[15,\\\"alt\\\",[30,1,[\\\"pmsMetadata\\\",\\\"name\\\"]]],[14,0,\\\"h-20 w-20 flex-none rounded-lg bg-white object-contain p-1 ring-1 ring-gray-900/10\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[10,0],[12],[1,\\\"\\\\n      \\\"],[10,\\\"h3\\\"],[14,0,\\\"text-base font-semibold leading-6\\\"],[12],[1,[30,1,[\\\"pmsMetadata\\\",\\\"name\\\"]]],[1,\\\" Settings\\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,5],[[28,[37,6],[[30,1,[\\\"pmsMetadata\\\",\\\"submitButtons\\\"]],\\\"0.shouldSubmitWithoutShowingOptions\\\"],null]],null],[[[1,\\\"        \\\"],[10,2],[14,0,\\\"text-sm leading-6 text-gray-500\\\"],[12],[1,\\\"\\\\n          Default settings for each client (these can be changed on a client-by-client basis when using the integration).\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"mb-4\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,8],null,[[\\\"@pmsMetadata\\\",\\\"@pmsSettings\\\",\\\"@matterInformation\\\",\\\"@updatePmsSetting\\\"],[[30,1,[\\\"pmsMetadata\\\"]],[30,0,[\\\"localPmsSettings\\\"]],[28,[37,9],null,[[\\\"includeSpouseOptions\\\"],[true]]],[30,0,[\\\"updatePmsSetting\\\"]]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"flex justify-end\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,10],[[24,0,\\\"inline-flex items-center justify-center gap-2 text-sm font-semibold text-red-500\\\"],[16,\\\"disabled\\\",[30,0,[\\\"disconnecting\\\"]]],[4,[38,11],[\\\"click\\\",[30,0,[\\\"disconnectPms\\\"]]],null]],[[\\\"@variant\\\"],[\\\"outlined\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"disconnecting\\\"]],[[[1,\\\"        \\\"],[8,[39,12],[[24,0,\\\"size-4 animate-spin\\\"],[24,\\\"role\\\",\\\"status\\\"]],[[\\\"@icon\\\"],[\\\"spinner-third\\\"]],null],[1,\\\"\\\\n        Disconnecting...\\\\n\\\"]],[]],[[[1,\\\"        Disconnect\\\\n\\\"]],[]]],[1,\\\"    \\\"]],[]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"@model\\\"],false,[\\\"v2/admin-page\\\",\\\"div\\\",\\\"img\\\",\\\"h3\\\",\\\"if\\\",\\\"not\\\",\\\"get\\\",\\\"p\\\",\\\"v2/pms-settings-inputs-selector\\\",\\\"hash\\\",\\\"v2/button\\\",\\\"on\\\",\\\"v2/svg-icon\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/integrations/integration.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/loading\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"w-full p-4\">\n    Loading...\n  </div>\n  {{outlet}}\n  \n  */\n  {\n    \"id\": \"L3ztMBbl\",\n    \"block\": \"[[[10,0],[14,0,\\\"w-full p-4\\\"],[12],[1,\\\"\\\\n  Loading...\\\\n\\\"],[13],[1,\\\"\\\\n\\\"],[46,[28,[37,2],null,null],null,null,null],[1,\\\"\\\\n\\\"]],[],false,[\\\"div\\\",\\\"component\\\",\\\"-outlet\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/loading.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/offices-loading\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage @heading=\"Offices\">\n    <div class=\"relative mb-2 h-14 animate-pulse rounded-md bg-gray-200 p-2\"></div>\n    <div class=\"relative mb-2 h-14 animate-pulse rounded-md bg-gray-200 p-2\"></div>\n    <div class=\"relative mb-2 h-14 animate-pulse rounded-md bg-gray-200 p-2\"></div>\n  </V2::AdminPage>\n  */\n  {\n    \"id\": \"Y4BKSV+O\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@heading\\\"],[\\\"Offices\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"relative mb-2 h-14 animate-pulse rounded-md bg-gray-200 p-2\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"relative mb-2 h-14 animate-pulse rounded-md bg-gray-200 p-2\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"relative mb-2 h-14 animate-pulse rounded-md bg-gray-200 p-2\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[],false,[\\\"v2/admin-page\\\",\\\"div\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/offices-loading.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/offices\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage @heading=\"Offices\" @ctaButtons={{this.ctaButtons}}>\n    <table class=\"min-w-full table-fixed divide-y divide-gray-300\">\n      <thead>\n        <tr class=\"text-left text-sm\">\n          <th scope=\"col\" class=\"p-3 font-semibold\">Address</th>\n          <th scope=\"col\" class=\"hidden p-3 font-semibold sm:table-cell\">Practice areas</th>\n          <th scope=\"col\" class=\"hidden p-3 font-semibold sm:table-cell\">Status</th>\n          <th scope=\"col\" class=\"relative p-3\">\n            <span class=\"sr-only\">Options</span>\n          </th>\n        </tr>\n      </thead>\n      <tbody class=\"divide-y divide-gray-200 bg-white\">\n        {{#each this.model.offices as |office index|}}\n          <tr data-index={{index}} data-office-id={{office.officeID}} class=\"border-b border-gray-100\">\n            <td class=\"px-3 py-3.5 text-sm\">\n              <AddressPrinter @address={{office}} />\n            </td>\n            <td class=\"hidden px-3 py-3.5 text-sm sm:table-cell\">\n              {{this.selectedPracticeAreasAsString office.practiceAreas}}\n            </td>\n            <td class=\"hidden px-3 py-3.5 text-sm sm:table-cell\">\n              {{#if office.primaryOffice}}\n                <span class=\"inline-flex rounded-md bg-green-50 px-2 py-1 text-xs font-medium text-green-700 ring-1 ring-inset ring-green-600/10\">\n                  Primary\n                </span>\n              {{/if}}\n              {{#if office.disabled}}\n                <span class=\"inline-flex rounded-md bg-orange-50 px-2 py-1 text-xs font-medium text-orange-700 ring-1 ring-inset ring-orange-600/10\">\n                  Disabled\n                </span>\n              {{/if}}\n            </td>\n            <td class=\"whitespace-nowrap py-4 pl-3 pr-4 text-right text-sm font-medium sm:pr-3\">\n              <V2::Button @variant=\"outlined\" @route=\"v2.admin.offices.edit\" @model={{office.officeID}} class=\"text-brand-primary-color-rgb\">\n                Edit<span class=\"sr-only\">, {{address-string office}}</span>\n              </V2::Button>\n            </td>\n          </tr>\n        {{/each}}\n      </tbody>\n    </table>\n  </V2::AdminPage>\n  \n  {{outlet}}\n  */\n  {\n    \"id\": \"PKM9I5hn\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@heading\\\",\\\"@ctaButtons\\\"],[\\\"Offices\\\",[30,0,[\\\"ctaButtons\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,\\\"table\\\"],[14,0,\\\"min-w-full table-fixed divide-y divide-gray-300\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"tr\\\"],[14,0,\\\"text-left text-sm\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"p-3 font-semibold\\\"],[12],[1,\\\"Address\\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"hidden p-3 font-semibold sm:table-cell\\\"],[12],[1,\\\"Practice areas\\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"hidden p-3 font-semibold sm:table-cell\\\"],[12],[1,\\\"Status\\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"relative p-3\\\"],[12],[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Options\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"tbody\\\"],[14,0,\\\"divide-y divide-gray-200 bg-white\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,8],[[28,[37,8],[[30,0,[\\\"model\\\",\\\"offices\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[10,\\\"tr\\\"],[15,\\\"data-index\\\",[30,2]],[15,\\\"data-office-id\\\",[30,1,[\\\"officeID\\\"]]],[14,0,\\\"border-b border-gray-100\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[14,0,\\\"px-3 py-3.5 text-sm\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,10],null,[[\\\"@address\\\"],[[30,1]]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[14,0,\\\"hidden px-3 py-3.5 text-sm sm:table-cell\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[28,[30,0,[\\\"selectedPracticeAreasAsString\\\"]],[[30,1,[\\\"practiceAreas\\\"]]],null]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[14,0,\\\"hidden px-3 py-3.5 text-sm sm:table-cell\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"primaryOffice\\\"]],[[[1,\\\"              \\\"],[10,1],[14,0,\\\"inline-flex rounded-md bg-green-50 px-2 py-1 text-xs font-medium text-green-700 ring-1 ring-inset ring-green-600/10\\\"],[12],[1,\\\"\\\\n                Primary\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,1,[\\\"disabled\\\"]],[[[1,\\\"              \\\"],[10,1],[14,0,\\\"inline-flex rounded-md bg-orange-50 px-2 py-1 text-xs font-medium text-orange-700 ring-1 ring-inset ring-orange-600/10\\\"],[12],[1,\\\"\\\\n                Disabled\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[14,0,\\\"whitespace-nowrap py-4 pl-3 pr-4 text-right text-sm font-medium sm:pr-3\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,12],[[24,0,\\\"text-brand-primary-color-rgb\\\"]],[[\\\"@variant\\\",\\\"@route\\\",\\\"@model\\\"],[\\\"outlined\\\",\\\"v2.admin.offices.edit\\\",[30,1,[\\\"officeID\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              Edit\\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\", \\\"],[1,[28,[35,13],[[30,1]],null]],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[1,2]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[46,[28,[37,15],null,null],null,null,null]],[\\\"office\\\",\\\"index\\\"],false,[\\\"v2/admin-page\\\",\\\"table\\\",\\\"thead\\\",\\\"tr\\\",\\\"th\\\",\\\"span\\\",\\\"tbody\\\",\\\"each\\\",\\\"-track-array\\\",\\\"td\\\",\\\"address-printer\\\",\\\"if\\\",\\\"v2/button\\\",\\\"address-string\\\",\\\"component\\\",\\\"-outlet\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/offices.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/offices/edit\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::SlideOver\n    @title={{if this.model.isNew \"New office\" (address-string this.model.office)}}\n    @open={{true}}\n    @onClose={{this.cancelChanges}}\n    @onSave={{this.saveChanges}}\n    @maxWidth=\"large\"\n  >\n    <div class=\"border-b border-gray-900/10 py-6\">\n      <p class=\"text-base font-semibold leading-7\">Address</p>\n      <div class=\"grid grid-cols-1 gap-x-6 gap-y-8 sm:grid-cols-6\">\n        <div class=\"sm:col-span-4\">\n          <V2::Textline @type=\"text\" @value={{this.model.office.lineOne}} @label=\"Address line 1\" @id=\"address-line-one\" name=\"address-line-one\" />\n        </div>\n  \n        <div class=\"sm:col-span-4\">\n          <V2::Textline @type=\"text\" @value={{this.model.office.lineTwo}} @label=\"Address line 2\" @id=\"address-line-two\" name=\"address-line-two\" />\n        </div>\n  \n        <div class=\"sm:col-span-2 sm:col-start-1\">\n          <V2::Textline @type=\"text\" @value={{this.model.office.suburb}} @label=\"Suburb\" @id=\"suburb\" name=\"suburb\" />\n        </div>\n  \n        <div class=\"sm:col-span-2\">\n          <V2::Textline @type=\"text\" @value={{this.model.office.state}} @label=\"State\" @id=\"state\" name=\"state\" />\n        </div>\n  \n        <div class=\"sm:col-span-2\">\n          <V2::Textline @type=\"text\" @value={{this.model.office.postcode}} @label=\"Postcode\" @id=\"postcode\" name=\"postcode\" />\n        </div>\n      </div>\n    </div>\n  \n    <div class=\"py-6\">\n      <p class=\"text-base font-semibold leading-7\">Configuration</p>\n      <div class=\"grid grid-cols-1 gap-x-6 gap-y-8 sm:grid-cols-6\">\n        <div class=\"sm:col-span-4\">\n          <V2::Textline\n            @type=\"text\"\n            @value={{this.model.office.mapURL}}\n            @label=\"Google Maps URL (or similar)\"\n            @id=\"office-map-url\"\n            name=\"office-map-url\"\n            placeholder=\"https://www.google.com.au/maps...\"\n          />\n        </div>\n        <div class=\"sm:col-span-4\">\n          <V2::Textline @type=\"text\" @value={{this.model.office.phone}} @label=\"Phone\" @id=\"office-phone\" name=\"office-phone\" />\n        </div>\n        {{#if (gt this.availablePracticeAreas.length 1)}}\n          <div class=\"col-span-full\">\n            <label class=\"block text-sm font-medium leading-6\">Practice areas at this office</label>\n            <div class=\"mt-2\">\n              {{#if this.model.office.practiceAreas}}\n                {{#each this.availablePracticeAreas as |practiceArea|}}\n                  <div>\n                    <V2::Checkbox @label={{practiceArea}} @value={{get this.model.office.practiceAreas practiceArea}} @id=\"{{practiceArea}}-practice-area-checkbox\" />\n                  </div>\n                {{/each}}\n                <button type=\"button\" class=\"mt-2 block text-sm text-brand-primary-color-rgb\" {{on \"click\" this.togglePracticeAreaOptions}}>Allow all practice areas</button>\n              {{else}}\n                <V2::Checkbox @label=\"All\" @model={{true}} @disabled={{true}} @id=\"all-practice-area-checkbox\" />\n                <button type=\"button\" class=\"mt-2 block text-sm text-brand-primary-color-rgb\" {{on \"click\" this.togglePracticeAreaOptions}}>Specify practice areas</button>\n              {{/if}}\n            </div>\n          </div>\n        {{/if}}\n        <div class=\"col-span-full\">\n          <label for=\"primary-office\" class=\"block text-sm font-medium leading-6\">Primary office</label>\n          <div class=\"mt-2\">\n            <V2::Toggle @model={{this.model.office.primaryOffice}} @id=\"primary-office\" />\n          </div>\n        </div>\n        {{#unless this.model.isNew}}\n          <div class=\"col-span-full\">\n            <label for=\"disable-office\" class=\"block text-sm font-medium leading-6\">Archive / disable this office</label>\n            <div class=\"mt-2\">\n              <V2::Toggle @model={{this.model.office.disabled}} @id=\"disable-office\" />\n            </div>\n          </div>\n          <div class=\"col-span-full\">\n            {{#if this.showDeleteOptions}}\n              <div class=\"sm:grid sm:grid-cols-3 sm:items-center sm:gap-4 sm:py-6\">\n                <p class=\"col-span-2 text-sm font-medium leading-6\">\n                  Are you sure you want to remove this office?\n                </p>\n                <div class=\"flex justify-end gap-2\">\n                  <V2::Button @variant=\"outlined\" class=\"text-sm font-semibold\" {{on \"click\" this.deleteOffice}}>\n                    Yes\n                  </V2::Button>\n                  <V2::Button @variant=\"outlined\" class=\"text-sm font-semibold\" {{on \"click\" this.toggleDelete}}>\n                    Cancel\n                  </V2::Button>\n                </div>\n              </div>\n            {{else}}\n              <V2::Button @variant=\"outlined\" class=\"ml-auto flex items-center justify-center gap-2 text-sm font-semibold text-red-500\" {{on \"click\" this.toggleDelete}}>\n                <V2::SvgIcon @icon=\"trash\" class=\"size-4\" />\n                Delete\n              </V2::Button>\n            {{/if}}\n          </div>\n        {{/unless}}\n      </div>\n    </div>\n  </V2::SlideOver>\n  */\n  {\n    \"id\": \"NdOQOSul\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@title\\\",\\\"@open\\\",\\\"@onClose\\\",\\\"@onSave\\\",\\\"@maxWidth\\\"],[[52,[30,0,[\\\"model\\\",\\\"isNew\\\"]],\\\"New office\\\",[28,[37,2],[[30,0,[\\\"model\\\",\\\"office\\\"]]],null]],true,[30,0,[\\\"cancelChanges\\\"]],[30,0,[\\\"saveChanges\\\"]],\\\"large\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"border-b border-gray-900/10 py-6\\\"],[12],[1,\\\"\\\\n    \\\"],[10,2],[14,0,\\\"text-base font-semibold leading-7\\\"],[12],[1,\\\"Address\\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"grid grid-cols-1 gap-x-6 gap-y-8 sm:grid-cols-6\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"sm:col-span-4\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,5],[[24,3,\\\"address-line-one\\\"]],[[\\\"@type\\\",\\\"@value\\\",\\\"@label\\\",\\\"@id\\\"],[\\\"text\\\",[30,0,[\\\"model\\\",\\\"office\\\",\\\"lineOne\\\"]],\\\"Address line 1\\\",\\\"address-line-one\\\"]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,0],[14,0,\\\"sm:col-span-4\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,5],[[24,3,\\\"address-line-two\\\"]],[[\\\"@type\\\",\\\"@value\\\",\\\"@label\\\",\\\"@id\\\"],[\\\"text\\\",[30,0,[\\\"model\\\",\\\"office\\\",\\\"lineTwo\\\"]],\\\"Address line 2\\\",\\\"address-line-two\\\"]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,0],[14,0,\\\"sm:col-span-2 sm:col-start-1\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,5],[[24,3,\\\"suburb\\\"]],[[\\\"@type\\\",\\\"@value\\\",\\\"@label\\\",\\\"@id\\\"],[\\\"text\\\",[30,0,[\\\"model\\\",\\\"office\\\",\\\"suburb\\\"]],\\\"Suburb\\\",\\\"suburb\\\"]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,0],[14,0,\\\"sm:col-span-2\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,5],[[24,3,\\\"state\\\"]],[[\\\"@type\\\",\\\"@value\\\",\\\"@label\\\",\\\"@id\\\"],[\\\"text\\\",[30,0,[\\\"model\\\",\\\"office\\\",\\\"state\\\"]],\\\"State\\\",\\\"state\\\"]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,0],[14,0,\\\"sm:col-span-2\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,5],[[24,3,\\\"postcode\\\"]],[[\\\"@type\\\",\\\"@value\\\",\\\"@label\\\",\\\"@id\\\"],[\\\"text\\\",[30,0,[\\\"model\\\",\\\"office\\\",\\\"postcode\\\"]],\\\"Postcode\\\",\\\"postcode\\\"]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"py-6\\\"],[12],[1,\\\"\\\\n    \\\"],[10,2],[14,0,\\\"text-base font-semibold leading-7\\\"],[12],[1,\\\"Configuration\\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"grid grid-cols-1 gap-x-6 gap-y-8 sm:grid-cols-6\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"sm:col-span-4\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,5],[[24,3,\\\"office-map-url\\\"],[24,\\\"placeholder\\\",\\\"https://www.google.com.au/maps...\\\"]],[[\\\"@type\\\",\\\"@value\\\",\\\"@label\\\",\\\"@id\\\"],[\\\"text\\\",[30,0,[\\\"model\\\",\\\"office\\\",\\\"mapURL\\\"]],\\\"Google Maps URL (or similar)\\\",\\\"office-map-url\\\"]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"sm:col-span-4\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,5],[[24,3,\\\"office-phone\\\"]],[[\\\"@type\\\",\\\"@value\\\",\\\"@label\\\",\\\"@id\\\"],[\\\"text\\\",[30,0,[\\\"model\\\",\\\"office\\\",\\\"phone\\\"]],\\\"Phone\\\",\\\"office-phone\\\"]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,6],[[30,0,[\\\"availablePracticeAreas\\\",\\\"length\\\"]],1],null],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"col-span-full\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"label\\\"],[14,0,\\\"block text-sm font-medium leading-6\\\"],[12],[1,\\\"Practice areas at this office\\\"],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"mt-2\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"office\\\",\\\"practiceAreas\\\"]],[[[42,[28,[37,9],[[28,[37,9],[[30,0,[\\\"availablePracticeAreas\\\"]]],null]],null],null,[[[1,\\\"                \\\"],[10,0],[12],[1,\\\"\\\\n                  \\\"],[8,[39,10],null,[[\\\"@label\\\",\\\"@value\\\",\\\"@id\\\"],[[30,1],[28,[37,11],[[30,0,[\\\"model\\\",\\\"office\\\",\\\"practiceAreas\\\"]],[30,1]],null],[29,[[30,1],\\\"-practice-area-checkbox\\\"]]]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"              \\\"],[11,\\\"button\\\"],[24,0,\\\"mt-2 block text-sm text-brand-primary-color-rgb\\\"],[24,4,\\\"button\\\"],[4,[38,13],[\\\"click\\\",[30,0,[\\\"togglePracticeAreaOptions\\\"]]],null],[12],[1,\\\"Allow all practice areas\\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"              \\\"],[8,[39,10],null,[[\\\"@label\\\",\\\"@model\\\",\\\"@disabled\\\",\\\"@id\\\"],[\\\"All\\\",true,true,\\\"all-practice-area-checkbox\\\"]],null],[1,\\\"\\\\n              \\\"],[11,\\\"button\\\"],[24,0,\\\"mt-2 block text-sm text-brand-primary-color-rgb\\\"],[24,4,\\\"button\\\"],[4,[38,13],[\\\"click\\\",[30,0,[\\\"togglePracticeAreaOptions\\\"]]],null],[12],[1,\\\"Specify practice areas\\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[10,0],[14,0,\\\"col-span-full\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"primary-office\\\"],[14,0,\\\"block text-sm font-medium leading-6\\\"],[12],[1,\\\"Primary office\\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"mt-2\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,14],null,[[\\\"@model\\\",\\\"@id\\\"],[[30,0,[\\\"model\\\",\\\"office\\\",\\\"primaryOffice\\\"]],\\\"primary-office\\\"]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"model\\\",\\\"isNew\\\"]]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"col-span-full\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"disable-office\\\"],[14,0,\\\"block text-sm font-medium leading-6\\\"],[12],[1,\\\"Archive / disable this office\\\"],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"mt-2\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,14],null,[[\\\"@model\\\",\\\"@id\\\"],[[30,0,[\\\"model\\\",\\\"office\\\",\\\"disabled\\\"]],\\\"disable-office\\\"]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"col-span-full\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showDeleteOptions\\\"]],[[[1,\\\"            \\\"],[10,0],[14,0,\\\"sm:grid sm:grid-cols-3 sm:items-center sm:gap-4 sm:py-6\\\"],[12],[1,\\\"\\\\n              \\\"],[10,2],[14,0,\\\"col-span-2 text-sm font-medium leading-6\\\"],[12],[1,\\\"\\\\n                Are you sure you want to remove this office?\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"flex justify-end gap-2\\\"],[12],[1,\\\"\\\\n                \\\"],[8,[39,16],[[24,0,\\\"text-sm font-semibold\\\"],[4,[38,13],[\\\"click\\\",[30,0,[\\\"deleteOffice\\\"]]],null]],[[\\\"@variant\\\"],[\\\"outlined\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  Yes\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n                \\\"],[8,[39,16],[[24,0,\\\"text-sm font-semibold\\\"],[4,[38,13],[\\\"click\\\",[30,0,[\\\"toggleDelete\\\"]]],null]],[[\\\"@variant\\\"],[\\\"outlined\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                  Cancel\\\\n                \\\"]],[]]]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"            \\\"],[8,[39,16],[[24,0,\\\"ml-auto flex items-center justify-center gap-2 text-sm font-semibold text-red-500\\\"],[4,[38,13],[\\\"click\\\",[30,0,[\\\"toggleDelete\\\"]]],null]],[[\\\"@variant\\\"],[\\\"outlined\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[39,17],[[24,0,\\\"size-4\\\"]],[[\\\"@icon\\\"],[\\\"trash\\\"]],null],[1,\\\"\\\\n              Delete\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"practiceArea\\\"],false,[\\\"v2/slide-over\\\",\\\"if\\\",\\\"address-string\\\",\\\"div\\\",\\\"p\\\",\\\"v2/textline\\\",\\\"gt\\\",\\\"label\\\",\\\"each\\\",\\\"-track-array\\\",\\\"v2/checkbox\\\",\\\"get\\\",\\\"button\\\",\\\"on\\\",\\\"v2/toggle\\\",\\\"unless\\\",\\\"v2/button\\\",\\\"v2/svg-icon\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/offices/edit.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/page-not-found\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage>\n    <div class=\"grid min-h-full place-items-center bg-white px-6 py-24 sm:py-32 lg:px-8\">\n      <p class=\"text-base font-semibold text-brand-primary-color-rgb\">404</p>\n      <h1 class=\"mt-4 text-3xl font-bold tracking-tight sm:text-5xl\">Page not found</h1>\n      <p class=\"mt-6 text-base leading-7 text-gray-600\">Sorry, we couldn’t find the page you’re looking for.</p>\n      <div class=\"mt-10 flex items-center justify-center gap-x-6\">\n        <LinkTo\n          @route=\"v2.admin\"\n          class=\"rounded-md bg-brand-primary-color-rgb px-3.5 py-2.5 text-sm font-semibold text-white shadow-sm hover:bg-brand-primary-color-rgb/90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand-primary-color-rgb\"\n        >\n          Go back home\n        </LinkTo>\n        <a href=\"https://settify-firm.freshdesk.com\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-sm font-semibold\">\n          Contact support\n          <span aria-hidden=\"true\">&rarr;</span>\n        </a>\n      </div>\n    </div>\n    {{outlet}}\n  </V2::AdminPage>\n  \n  */\n  {\n    \"id\": \"hIneokNC\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"grid min-h-full place-items-center bg-white px-6 py-24 sm:py-32 lg:px-8\\\"],[12],[1,\\\"\\\\n    \\\"],[10,2],[14,0,\\\"text-base font-semibold text-brand-primary-color-rgb\\\"],[12],[1,\\\"404\\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"h1\\\"],[14,0,\\\"mt-4 text-3xl font-bold tracking-tight sm:text-5xl\\\"],[12],[1,\\\"Page not found\\\"],[13],[1,\\\"\\\\n    \\\"],[10,2],[14,0,\\\"mt-6 text-base leading-7 text-gray-600\\\"],[12],[1,\\\"Sorry, we couldn’t find the page you’re looking for.\\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"mt-10 flex items-center justify-center gap-x-6\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,4],[[24,0,\\\"rounded-md bg-brand-primary-color-rgb px-3.5 py-2.5 text-sm font-semibold text-white shadow-sm hover:bg-brand-primary-color-rgb/90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand-primary-color-rgb\\\"]],[[\\\"@route\\\"],[\\\"v2.admin\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        Go back home\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[10,3],[14,6,\\\"https://settify-firm.freshdesk.com\\\"],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[14,0,\\\"text-sm font-semibold\\\"],[12],[1,\\\"\\\\n        Contact support\\\\n        \\\"],[10,1],[14,\\\"aria-hidden\\\",\\\"true\\\"],[12],[1,\\\"→\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[46,[28,[37,8],null,null],null,null,null],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[],false,[\\\"v2/admin-page\\\",\\\"div\\\",\\\"p\\\",\\\"h1\\\",\\\"link-to\\\",\\\"a\\\",\\\"span\\\",\\\"component\\\",\\\"-outlet\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/page-not-found.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/settings\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{outlet}}\n  \n  */\n  {\n    \"id\": \"XBJ0D+aL\",\n    \"block\": \"[[[46,[28,[37,1],null,null],null,null,null],[1,\\\"\\\\n\\\"]],[],false,[\\\"component\\\",\\\"-outlet\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/settings.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/settings/settify\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage @heading=\"Settings\">\n    <div>\n      <ul role=\"list\" class=\"divide-y divide-gray-100 text-sm leading-6\">\n        <li class=\"flex items-center justify-between gap-x-6 py-6\">\n          <div class=\"flex flex-col\">\n            <div class=\"font-medium text-gray-900\">Manage Forms</div>\n            <div class=\"text-sm text-gray-500\">View and edit the forms for this firm</div>\n          </div>\n          <LinkTo @route=\"admin.config.forms\" class=\"font-semibold text-brand-primary-color-rgb hover:text-brand-primary-color-rgb/90\">\n            Manage Forms\n          </LinkTo>\n        </li>\n        <li class=\"flex justify-between gap-x-6 py-6\">\n          <div class=\"flex flex-col\">\n            <div class=\"font-medium text-gray-900\">Trigger Sentry Error</div>\n            <div class=\"text-sm text-gray-500\">This will cause an error to be triggered and sent to Sentry</div>\n          </div>\n          <button type=\"button\" class=\"font-semibold text-brand-primary-color-rgb hover:text-brand-primary-color-rgb/90\" {{on \"click\" this.triggerSentryError}}>Trigger</button>\n        </li>\n        <li class=\"flex justify-between gap-x-6 py-6\">\n          <div class=\"flex flex-col\">\n            <div class=\"font-medium text-gray-900\">Notification Tests</div>\n            <div class=\"text-sm text-gray-500\">This will display a few test notifications</div>\n          </div>\n          <button type=\"button\" class=\"font-semibold text-brand-primary-color-rgb hover:text-brand-primary-color-rgb/90\" {{on \"click\" this.testNotificationService}}>Trigger</button>\n        </li>\n      </ul>\n    </div>\n  </V2::AdminPage>\n  */\n  {\n    \"id\": \"iHG0BAsb\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@heading\\\"],[\\\"Settings\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[12],[1,\\\"\\\\n    \\\"],[10,\\\"ul\\\"],[14,\\\"role\\\",\\\"list\\\"],[14,0,\\\"divide-y divide-gray-100 text-sm leading-6\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"li\\\"],[14,0,\\\"flex items-center justify-between gap-x-6 py-6\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"flex flex-col\\\"],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"font-medium text-gray-900\\\"],[12],[1,\\\"Manage Forms\\\"],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"text-sm text-gray-500\\\"],[12],[1,\\\"View and edit the forms for this firm\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[8,[39,4],[[24,0,\\\"font-semibold text-brand-primary-color-rgb hover:text-brand-primary-color-rgb/90\\\"]],[[\\\"@route\\\"],[\\\"admin.config.forms\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n          Manage Forms\\\\n        \\\"]],[]]]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"li\\\"],[14,0,\\\"flex justify-between gap-x-6 py-6\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"flex flex-col\\\"],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"font-medium text-gray-900\\\"],[12],[1,\\\"Trigger Sentry Error\\\"],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"text-sm text-gray-500\\\"],[12],[1,\\\"This will cause an error to be triggered and sent to Sentry\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[11,\\\"button\\\"],[24,0,\\\"font-semibold text-brand-primary-color-rgb hover:text-brand-primary-color-rgb/90\\\"],[24,4,\\\"button\\\"],[4,[38,6],[\\\"click\\\",[30,0,[\\\"triggerSentryError\\\"]]],null],[12],[1,\\\"Trigger\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"li\\\"],[14,0,\\\"flex justify-between gap-x-6 py-6\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"flex flex-col\\\"],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"font-medium text-gray-900\\\"],[12],[1,\\\"Notification Tests\\\"],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"text-sm text-gray-500\\\"],[12],[1,\\\"This will display a few test notifications\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[11,\\\"button\\\"],[24,0,\\\"font-semibold text-brand-primary-color-rgb hover:text-brand-primary-color-rgb/90\\\"],[24,4,\\\"button\\\"],[4,[38,6],[\\\"click\\\",[30,0,[\\\"testNotificationService\\\"]]],null],[12],[1,\\\"Trigger\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[],false,[\\\"v2/admin-page\\\",\\\"div\\\",\\\"ul\\\",\\\"li\\\",\\\"link-to\\\",\\\"button\\\",\\\"on\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/settings/settify.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/settings/setting\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage @heading=\"Settings\" @ctaButtons={{this.ctaButtons}}>\n    {{#if (gt this.availablePracticeAreas.length 1)}}\n      <h3 class=\"flex flex-col items-baseline text-lg font-semibold leading-6 md:flex-row md:gap-2\">\n        <span>Practice area:</span>\n        <div class=\"w-full md:w-auto\">\n          <V2::SelectBox @options={{this.availablePracticeAreas}} @selectedItem={{this.selectedPracticeArea}} @id=\"practice-area-select\" @onChange={{this.changePracticeArea}} />\n        </div>\n      </h3>\n    {{/if}}\n  \n    <div class=\"mt-2 block md:flex md:divide-y md:divide-gray-300\">\n      <div class=\"md:hidden\">\n        <V2::SelectBox @options={{this.settingsMenu}} @selectedItem={{this.router.currentRouteName}} @onChange={{this.changeRoute}} />\n      </div>\n      <div class=\"hidden py-4 md:block\">\n        <ul class=\"me-2 flex flex-col space-y-4 text-sm font-medium text-gray-600\">\n          {{#each this.settingsMenu as |menuItem|}}\n            <LinkTo @route={{menuItem.value}} class=\"inline-flex w-48 items-center gap-x-2 rounded-md fill-gray-600 px-4 py-3\" @activeClass=\"text-white bg-brand-primary-color-rgb\">\n              {{menuItem.name}}\n            </LinkTo>\n          {{/each}}\n        </ul>\n      </div>\n      <div class=\"min-h-screen w-full border-l-0 md:border-l md:px-6\">\n        {{outlet}}\n      </div>\n    </div>\n  </V2::AdminPage>\n  \n  */\n  {\n    \"id\": \"dIG0dJmR\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@heading\\\",\\\"@ctaButtons\\\"],[\\\"Settings\\\",[30,0,[\\\"ctaButtons\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[28,[37,2],[[30,0,[\\\"availablePracticeAreas\\\",\\\"length\\\"]],1],null],[[[1,\\\"    \\\"],[10,\\\"h3\\\"],[14,0,\\\"flex flex-col items-baseline text-lg font-semibold leading-6 md:flex-row md:gap-2\\\"],[12],[1,\\\"\\\\n      \\\"],[10,1],[12],[1,\\\"Practice area:\\\"],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"w-full md:w-auto\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,6],null,[[\\\"@options\\\",\\\"@selectedItem\\\",\\\"@id\\\",\\\"@onChange\\\"],[[30,0,[\\\"availablePracticeAreas\\\"]],[30,0,[\\\"selectedPracticeArea\\\"]],\\\"practice-area-select\\\",[30,0,[\\\"changePracticeArea\\\"]]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"mt-2 block md:flex md:divide-y md:divide-gray-300\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"md:hidden\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,6],null,[[\\\"@options\\\",\\\"@selectedItem\\\",\\\"@onChange\\\"],[[30,0,[\\\"settingsMenu\\\"]],[30,0,[\\\"router\\\",\\\"currentRouteName\\\"]],[30,0,[\\\"changeRoute\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"hidden py-4 md:block\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"ul\\\"],[14,0,\\\"me-2 flex flex-col space-y-4 text-sm font-medium text-gray-600\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,9],[[28,[37,9],[[30,0,[\\\"settingsMenu\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[8,[39,10],[[24,0,\\\"inline-flex w-48 items-center gap-x-2 rounded-md fill-gray-600 px-4 py-3\\\"]],[[\\\"@route\\\",\\\"@activeClass\\\"],[[30,1,[\\\"value\\\"]],\\\"text-white bg-brand-primary-color-rgb\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[1,[30,1,[\\\"name\\\"]]],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"min-h-screen w-full border-l-0 md:border-l md:px-6\\\"],[12],[1,\\\"\\\\n      \\\"],[46,[28,[37,12],null,null],null,null,null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[\\\"menuItem\\\"],false,[\\\"v2/admin-page\\\",\\\"if\\\",\\\"gt\\\",\\\"h3\\\",\\\"span\\\",\\\"div\\\",\\\"v2/select-box\\\",\\\"ul\\\",\\\"each\\\",\\\"-track-array\\\",\\\"link-to\\\",\\\"component\\\",\\\"-outlet\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/settings/setting.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/settings/setting/billing\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#unless this.firm.stripeID}}\n    <div class=\"grid grid-cols-1 items-center gap-x-12 gap-y-10 border-b border-gray-900/10 py-6 md:grid-cols-2\">\n      <div>\n        <h3 class=\"text-base font-semibold leading-7\">Billing entity name</h3>\n        <p class=\"mt-1 text-sm leading-6 text-gray-500\">Enter the entity name to appear on invoices, if different from {{this.firm.name}}.</p>\n      </div>\n      <V2::Textline @value={{this.firmDetails.globalDetails.billingEntityName}} @id=\"entity-name\" name=\"billingEntityName\" placeholder=\"E.g. ABC Legal Pty Ltd\" />\n    </div>\n  \n    <div class=\"grid grid-cols-1 items-center gap-x-12 gap-y-10 border-b border-gray-900/10 py-6 md:grid-cols-2\">\n      <div>\n        <h3 class=\"text-base font-semibold leading-7\">Business address for invoices</h3>\n      </div>\n      <V2::Textarea @value={{this.firmDetails.globalDetails.address}} @id=\"entity-address\" name=\"address\" />\n    </div>\n  {{/unless}}\n  \n  <div class=\"grid grid-cols-1 items-center gap-x-12 gap-y-10 border-b border-gray-900/10 py-6 md:grid-cols-2\">\n    <div>\n      <h3 class=\"text-base font-semibold leading-7\">Client review contact names</h3>\n      <p class=\"mt-1 text-sm leading-6 text-gray-500\">List the names of contacts who review clients each month.</p>\n    </div>\n    <V2::Textline @value={{this.firmDetails.globalDetails.generalContactNames}} @id=\"contact-name\" name=\"generalContactNames\" placeholder=\"Eg, John Doe, New Clients Team, etc\" />\n  </div>\n  \n  <div class=\"grid grid-cols-1 items-center gap-x-12 gap-y-10 border-b border-gray-900/10 py-6 md:grid-cols-2\">\n    <div>\n      <h3 class=\"text-base font-semibold leading-7\">Client review contact emails</h3>\n      <p class=\"mt-1 text-sm leading-6 text-gray-500\">List the email addresses of contacts who review clients each month, separated by commas.</p>\n    </div>\n    <V2::Textarea @value={{this.firmDetails.globalDetails.generalContactEmails}} @id=\"contact-email\" name=\"generalContactEmails\" />\n  </div>\n  \n  {{#unless this.firm.stripeID}}\n    <div class=\"grid grid-cols-1 items-center gap-x-12 gap-y-10 border-b border-gray-900/10 py-6 md:grid-cols-2\">\n      <div>\n        <h3 class=\"text-base font-semibold leading-7\">Invoice contact names</h3>\n        <p class=\"mt-1 text-sm leading-6 text-gray-500\">List the names of contacts who will receive the invoices.</p>\n      </div>\n      <V2::Textline\n        @value={{this.firmDetails.globalDetails.accountsPayableNames}}\n        @id=\"accounts-name\"\n        name=\"accountsPayableNames\"\n        placeholder=\"Eg, John Doe, Accounts Payable, etc\"\n      />\n    </div>\n  \n    <div class=\"grid grid-cols-1 items-center gap-x-12 gap-y-10 border-b border-gray-900/10 py-6 md:grid-cols-2\">\n      <div>\n        <h3 class=\"text-base font-semibold leading-7\">Invoice contact emails</h3>\n        <p class=\"mt-1 text-sm leading-6 text-gray-500\">List the email addresses of contacts who will receive the invoices, separated by commas.</p>\n      </div>\n      <V2::Textarea @value={{this.firmDetails.globalDetails.accountsPayableEmails}} @id=\"accounts-email\" name=\"accountsPayableEmails\" />\n    </div>\n  {{/unless}}\n  \n  */\n  {\n    \"id\": \"0Y+NQfh7\",\n    \"block\": \"[[[41,[51,[30,0,[\\\"firm\\\",\\\"stripeID\\\"]]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"grid grid-cols-1 items-center gap-x-12 gap-y-10 border-b border-gray-900/10 py-6 md:grid-cols-2\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[12],[1,\\\"\\\\n      \\\"],[10,\\\"h3\\\"],[14,0,\\\"text-base font-semibold leading-7\\\"],[12],[1,\\\"Billing entity name\\\"],[13],[1,\\\"\\\\n      \\\"],[10,2],[14,0,\\\"mt-1 text-sm leading-6 text-gray-500\\\"],[12],[1,\\\"Enter the entity name to appear on invoices, if different from \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\".\\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,4],[[24,3,\\\"billingEntityName\\\"],[24,\\\"placeholder\\\",\\\"E.g. ABC Legal Pty Ltd\\\"]],[[\\\"@value\\\",\\\"@id\\\"],[[30,0,[\\\"firmDetails\\\",\\\"globalDetails\\\",\\\"billingEntityName\\\"]],\\\"entity-name\\\"]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"grid grid-cols-1 items-center gap-x-12 gap-y-10 border-b border-gray-900/10 py-6 md:grid-cols-2\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[12],[1,\\\"\\\\n      \\\"],[10,\\\"h3\\\"],[14,0,\\\"text-base font-semibold leading-7\\\"],[12],[1,\\\"Business address for invoices\\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,5],[[24,3,\\\"address\\\"]],[[\\\"@value\\\",\\\"@id\\\"],[[30,0,[\\\"firmDetails\\\",\\\"globalDetails\\\",\\\"address\\\"]],\\\"entity-address\\\"]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[10,0],[14,0,\\\"grid grid-cols-1 items-center gap-x-12 gap-y-10 border-b border-gray-900/10 py-6 md:grid-cols-2\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[12],[1,\\\"\\\\n    \\\"],[10,\\\"h3\\\"],[14,0,\\\"text-base font-semibold leading-7\\\"],[12],[1,\\\"Client review contact names\\\"],[13],[1,\\\"\\\\n    \\\"],[10,2],[14,0,\\\"mt-1 text-sm leading-6 text-gray-500\\\"],[12],[1,\\\"List the names of contacts who review clients each month.\\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,4],[[24,3,\\\"generalContactNames\\\"],[24,\\\"placeholder\\\",\\\"Eg, John Doe, New Clients Team, etc\\\"]],[[\\\"@value\\\",\\\"@id\\\"],[[30,0,[\\\"firmDetails\\\",\\\"globalDetails\\\",\\\"generalContactNames\\\"]],\\\"contact-name\\\"]],null],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"grid grid-cols-1 items-center gap-x-12 gap-y-10 border-b border-gray-900/10 py-6 md:grid-cols-2\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[12],[1,\\\"\\\\n    \\\"],[10,\\\"h3\\\"],[14,0,\\\"text-base font-semibold leading-7\\\"],[12],[1,\\\"Client review contact emails\\\"],[13],[1,\\\"\\\\n    \\\"],[10,2],[14,0,\\\"mt-1 text-sm leading-6 text-gray-500\\\"],[12],[1,\\\"List the email addresses of contacts who review clients each month, separated by commas.\\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,5],[[24,3,\\\"generalContactEmails\\\"]],[[\\\"@value\\\",\\\"@id\\\"],[[30,0,[\\\"firmDetails\\\",\\\"globalDetails\\\",\\\"generalContactEmails\\\"]],\\\"contact-email\\\"]],null],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[51,[30,0,[\\\"firm\\\",\\\"stripeID\\\"]]],[[[1,\\\"  \\\"],[10,0],[14,0,\\\"grid grid-cols-1 items-center gap-x-12 gap-y-10 border-b border-gray-900/10 py-6 md:grid-cols-2\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[12],[1,\\\"\\\\n      \\\"],[10,\\\"h3\\\"],[14,0,\\\"text-base font-semibold leading-7\\\"],[12],[1,\\\"Invoice contact names\\\"],[13],[1,\\\"\\\\n      \\\"],[10,2],[14,0,\\\"mt-1 text-sm leading-6 text-gray-500\\\"],[12],[1,\\\"List the names of contacts who will receive the invoices.\\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,4],[[24,3,\\\"accountsPayableNames\\\"],[24,\\\"placeholder\\\",\\\"Eg, John Doe, Accounts Payable, etc\\\"]],[[\\\"@value\\\",\\\"@id\\\"],[[30,0,[\\\"firmDetails\\\",\\\"globalDetails\\\",\\\"accountsPayableNames\\\"]],\\\"accounts-name\\\"]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"grid grid-cols-1 items-center gap-x-12 gap-y-10 border-b border-gray-900/10 py-6 md:grid-cols-2\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[12],[1,\\\"\\\\n      \\\"],[10,\\\"h3\\\"],[14,0,\\\"text-base font-semibold leading-7\\\"],[12],[1,\\\"Invoice contact emails\\\"],[13],[1,\\\"\\\\n      \\\"],[10,2],[14,0,\\\"mt-1 text-sm leading-6 text-gray-500\\\"],[12],[1,\\\"List the email addresses of contacts who will receive the invoices, separated by commas.\\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,5],[[24,3,\\\"accountsPayableEmails\\\"]],[[\\\"@value\\\",\\\"@id\\\"],[[30,0,[\\\"firmDetails\\\",\\\"globalDetails\\\",\\\"accountsPayableEmails\\\"]],\\\"accounts-email\\\"]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[],false,[\\\"unless\\\",\\\"div\\\",\\\"h3\\\",\\\"p\\\",\\\"v2/textline\\\",\\\"v2/textarea\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/settings/setting/billing.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/settings/setting/client-facing\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#each this.filteredSettings as |setting index|}}\n    {{#if setting.firmEditable}}\n      <div class=\"grid grid-cols-1 gap-x-12 gap-y-10 items-center border-b border-gray-900/10 md:grid-cols-2 py-6\">\n        <div>\n          <h2 class=\"text-base font-semibold leading-7\">{{setting.displayName}}</h2>\n          <p class=\"mt-1 text-sm leading-6 text-gray-500\">{{setting.helpText}}</p>\n        </div>\n  \n        {{!-- TODO: convert the below into a component --}}\n        {{#let (get this.selectedPracticeAreaSettings setting.withPath) as |settingValue|}}\n          {{#if (eq setting.type \"string\")}}\n            <V2::Textline @type=\"text\" @value={{settingValue}} @id={{sum \"string-input-\" index}} />\n          {{else if (eq setting.type \"number\")}}\n            <V2::Textline @type=\"number\" @value={{settingValue}} @id={{sum \"number-input-\" index}} />\n          {{else if (eq setting.type \"textarea\")}}\n            <V2::Textarea @value={{settingValue}} @id={{sum \"textarea-input-\" index}} />\n          {{else if (eq setting.type \"bool\")}}\n            <V2::Toggle @model={{settingValue}} />\n          {{else if (eq setting.type \"stringarray\")}}\n            <FreeList @model={{mut settingValue}} @noDestory={{true}} as |item|>\n              <V2::Textline @type=\"text\" @value={{item.contents}} @id={{sum \"string-input-\" index}} />\n            </FreeList>\n          {{else if (eq setting.type \"emailarray\")}}\n            <FreeList @model={{mut settingValue}} @itemName=\"email address\" @noDestory={{true}} as |item|>\n              <V2::EmailInput @value={{item.contents}} />\n            </FreeList>\n          {{else if (eq setting.type \"fileupload\")}}\n            <FreeList @model={{mut settingValue}} @itemName=\"file\" @noDestory={{true}} as |item|>\n              <SettifyFileUpload @uploadPrefix=\"{CognitoIdentityPoolId}/\" @model={{item}} @maxKB={{mul 1024 5}} @accept=\".pdf,.docx,.doc\" />\n            </FreeList>\n          {{else}}\n            <V2::Textline @type=\"text\" @value={{settingValue}} @id={{sum \"string-input-\" index}} />\n          {{/if}}\n        {{/let}}\n      </div>\n    {{/if}}\n  {{/each}}\n  \n  */\n  {\n    \"id\": \"N9CRva7H\",\n    \"block\": \"[[[42,[28,[37,1],[[28,[37,1],[[30,0,[\\\"filteredSettings\\\"]]],null]],null],null,[[[41,[30,1,[\\\"firmEditable\\\"]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"grid grid-cols-1 gap-x-12 gap-y-10 items-center border-b border-gray-900/10 md:grid-cols-2 py-6\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,\\\"h2\\\"],[14,0,\\\"text-base font-semibold leading-7\\\"],[12],[1,[30,1,[\\\"displayName\\\"]]],[13],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"mt-1 text-sm leading-6 text-gray-500\\\"],[12],[1,[30,1,[\\\"helpText\\\"]]],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[44,[[28,[37,7],[[30,0,[\\\"selectedPracticeAreaSettings\\\"]],[30,1,[\\\"withPath\\\"]]],null]],[[[41,[28,[37,8],[[30,1,[\\\"type\\\"]],\\\"string\\\"],null],[[[1,\\\"          \\\"],[8,[39,9],null,[[\\\"@type\\\",\\\"@value\\\",\\\"@id\\\"],[\\\"text\\\",[30,3],[28,[37,10],[\\\"string-input-\\\",[30,2]],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,1,[\\\"type\\\"]],\\\"number\\\"],null],[[[1,\\\"          \\\"],[8,[39,9],null,[[\\\"@type\\\",\\\"@value\\\",\\\"@id\\\"],[\\\"number\\\",[30,3],[28,[37,10],[\\\"number-input-\\\",[30,2]],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,1,[\\\"type\\\"]],\\\"textarea\\\"],null],[[[1,\\\"          \\\"],[8,[39,11],null,[[\\\"@value\\\",\\\"@id\\\"],[[30,3],[28,[37,10],[\\\"textarea-input-\\\",[30,2]],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,1,[\\\"type\\\"]],\\\"bool\\\"],null],[[[1,\\\"          \\\"],[8,[39,12],null,[[\\\"@model\\\"],[[30,3]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,1,[\\\"type\\\"]],\\\"stringarray\\\"],null],[[[1,\\\"          \\\"],[8,[39,13],null,[[\\\"@model\\\",\\\"@noDestory\\\"],[[28,[37,14],[[30,3]],null],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,9],null,[[\\\"@type\\\",\\\"@value\\\",\\\"@id\\\"],[\\\"text\\\",[30,4,[\\\"contents\\\"]],[28,[37,10],[\\\"string-input-\\\",[30,2]],null]]],null],[1,\\\"\\\\n          \\\"]],[4]]]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,1,[\\\"type\\\"]],\\\"emailarray\\\"],null],[[[1,\\\"          \\\"],[8,[39,13],null,[[\\\"@model\\\",\\\"@itemName\\\",\\\"@noDestory\\\"],[[28,[37,14],[[30,3]],null],\\\"email address\\\",true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,15],null,[[\\\"@value\\\"],[[30,5,[\\\"contents\\\"]]]],null],[1,\\\"\\\\n          \\\"]],[5]]]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,1,[\\\"type\\\"]],\\\"fileupload\\\"],null],[[[1,\\\"          \\\"],[8,[39,13],null,[[\\\"@model\\\",\\\"@itemName\\\",\\\"@noDestory\\\"],[[28,[37,14],[[30,3]],null],\\\"file\\\",true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,16],null,[[\\\"@uploadPrefix\\\",\\\"@model\\\",\\\"@maxKB\\\",\\\"@accept\\\"],[\\\"{CognitoIdentityPoolId}/\\\",[30,6],[28,[37,17],[1024,5],null],\\\".pdf,.docx,.doc\\\"]],null],[1,\\\"\\\\n          \\\"]],[6]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[8,[39,9],null,[[\\\"@type\\\",\\\"@value\\\",\\\"@id\\\"],[\\\"text\\\",[30,3],[28,[37,10],[\\\"string-input-\\\",[30,2]],null]]],null],[1,\\\"\\\\n        \\\"]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[3]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[1,2]],null]],[\\\"setting\\\",\\\"index\\\",\\\"settingValue\\\",\\\"item\\\",\\\"item\\\",\\\"item\\\"],false,[\\\"each\\\",\\\"-track-array\\\",\\\"if\\\",\\\"div\\\",\\\"h2\\\",\\\"p\\\",\\\"let\\\",\\\"get\\\",\\\"eq\\\",\\\"v2/textline\\\",\\\"sum\\\",\\\"v2/textarea\\\",\\\"v2/toggle\\\",\\\"free-list\\\",\\\"mut\\\",\\\"v2/email-input\\\",\\\"settify-file-upload\\\",\\\"mul\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/settings/setting/client-facing.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/settings/setting/firm-facing\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#each this.filteredSettings as |setting index|}}\n    {{#if setting.firmEditable}}\n      <div class=\"grid grid-cols-1 gap-x-12 gap-y-10 items-center border-b border-gray-900/10 md:grid-cols-2 py-6\">\n        <div>\n          <h2 class=\"text-base font-semibold leading-7\">{{setting.displayName}}</h2>\n          <p class=\"mt-1 text-sm leading-6 text-gray-500\">{{setting.helpText}}</p>\n        </div>\n  \n        {{!-- TODO: convert the below into a component --}}\n        {{#let (get this.selectedPracticeAreaSettings setting.withPath) as |settingValue|}}\n          {{#if (eq setting.type \"string\")}}\n            <V2::Textline @type=\"text\" @value={{settingValue}} @id={{sum \"string-input-\" index}} />\n          {{else if (eq setting.type \"number\")}}\n            <V2::Textline @type=\"number\" @value={{settingValue}} @id={{sum \"number-input-\" index}} />\n          {{else if (eq setting.type \"textarea\")}}\n            <V2::Textarea @value={{settingValue}} @id={{sum \"textarea-input-\" index}} />\n          {{else if (eq setting.type \"bool\")}}\n            <V2::Toggle @model={{settingValue}} />\n          {{else if (eq setting.type \"stringarray\")}}\n            <FreeList @model={{mut settingValue}} @noDestory={{true}} as |item|>\n              <V2::Textline @type=\"text\" @value={{item.contents}} @id={{sum \"string-input-\" index}} />\n            </FreeList>\n          {{else if (eq setting.type \"emailarray\")}}\n            <FreeList @model={{mut settingValue}} @itemName=\"email address\" @noDestory={{true}} as |item|>\n              <V2::EmailInput @value={{item.contents}} />\n            </FreeList>\n          {{else if (eq setting.type \"fileupload\")}}\n            <FreeList @model={{mut settingValue}} @itemName=\"file\" @noDestory={{true}} as |item|>\n              <SettifyFileUpload @uploadPrefix=\"{CognitoIdentityPoolId}/\" @model={{item}} @maxKB={{mul 1024 5}} @accept=\".pdf,.docx,.doc\" />\n            </FreeList>\n          {{else}}\n            <V2::Textline @type=\"text\" @value={{settingValue}} @id={{sum \"string-input-\" index}} />\n          {{/if}}\n        {{/let}}\n      </div>\n    {{/if}}\n  {{/each}}\n  \n  */\n  {\n    \"id\": \"wHqwCExu\",\n    \"block\": \"[[[42,[28,[37,1],[[28,[37,1],[[30,0,[\\\"filteredSettings\\\"]]],null]],null],null,[[[41,[30,1,[\\\"firmEditable\\\"]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"grid grid-cols-1 gap-x-12 gap-y-10 items-center border-b border-gray-900/10 md:grid-cols-2 py-6\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,\\\"h2\\\"],[14,0,\\\"text-base font-semibold leading-7\\\"],[12],[1,[30,1,[\\\"displayName\\\"]]],[13],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"mt-1 text-sm leading-6 text-gray-500\\\"],[12],[1,[30,1,[\\\"helpText\\\"]]],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[44,[[28,[37,7],[[30,0,[\\\"selectedPracticeAreaSettings\\\"]],[30,1,[\\\"withPath\\\"]]],null]],[[[41,[28,[37,8],[[30,1,[\\\"type\\\"]],\\\"string\\\"],null],[[[1,\\\"          \\\"],[8,[39,9],null,[[\\\"@type\\\",\\\"@value\\\",\\\"@id\\\"],[\\\"text\\\",[30,3],[28,[37,10],[\\\"string-input-\\\",[30,2]],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,1,[\\\"type\\\"]],\\\"number\\\"],null],[[[1,\\\"          \\\"],[8,[39,9],null,[[\\\"@type\\\",\\\"@value\\\",\\\"@id\\\"],[\\\"number\\\",[30,3],[28,[37,10],[\\\"number-input-\\\",[30,2]],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,1,[\\\"type\\\"]],\\\"textarea\\\"],null],[[[1,\\\"          \\\"],[8,[39,11],null,[[\\\"@value\\\",\\\"@id\\\"],[[30,3],[28,[37,10],[\\\"textarea-input-\\\",[30,2]],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,1,[\\\"type\\\"]],\\\"bool\\\"],null],[[[1,\\\"          \\\"],[8,[39,12],null,[[\\\"@model\\\"],[[30,3]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,1,[\\\"type\\\"]],\\\"stringarray\\\"],null],[[[1,\\\"          \\\"],[8,[39,13],null,[[\\\"@model\\\",\\\"@noDestory\\\"],[[28,[37,14],[[30,3]],null],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,9],null,[[\\\"@type\\\",\\\"@value\\\",\\\"@id\\\"],[\\\"text\\\",[30,4,[\\\"contents\\\"]],[28,[37,10],[\\\"string-input-\\\",[30,2]],null]]],null],[1,\\\"\\\\n          \\\"]],[4]]]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,1,[\\\"type\\\"]],\\\"emailarray\\\"],null],[[[1,\\\"          \\\"],[8,[39,13],null,[[\\\"@model\\\",\\\"@itemName\\\",\\\"@noDestory\\\"],[[28,[37,14],[[30,3]],null],\\\"email address\\\",true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,15],null,[[\\\"@value\\\"],[[30,5,[\\\"contents\\\"]]]],null],[1,\\\"\\\\n          \\\"]],[5]]]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,1,[\\\"type\\\"]],\\\"fileupload\\\"],null],[[[1,\\\"          \\\"],[8,[39,13],null,[[\\\"@model\\\",\\\"@itemName\\\",\\\"@noDestory\\\"],[[28,[37,14],[[30,3]],null],\\\"file\\\",true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,16],null,[[\\\"@uploadPrefix\\\",\\\"@model\\\",\\\"@maxKB\\\",\\\"@accept\\\"],[\\\"{CognitoIdentityPoolId}/\\\",[30,6],[28,[37,17],[1024,5],null],\\\".pdf,.docx,.doc\\\"]],null],[1,\\\"\\\\n          \\\"]],[6]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[8,[39,9],null,[[\\\"@type\\\",\\\"@value\\\",\\\"@id\\\"],[\\\"text\\\",[30,3],[28,[37,10],[\\\"string-input-\\\",[30,2]],null]]],null],[1,\\\"\\\\n        \\\"]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[3]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[1,2]],null]],[\\\"setting\\\",\\\"index\\\",\\\"settingValue\\\",\\\"item\\\",\\\"item\\\",\\\"item\\\"],false,[\\\"each\\\",\\\"-track-array\\\",\\\"if\\\",\\\"div\\\",\\\"h2\\\",\\\"p\\\",\\\"let\\\",\\\"get\\\",\\\"eq\\\",\\\"v2/textline\\\",\\\"sum\\\",\\\"v2/textarea\\\",\\\"v2/toggle\\\",\\\"free-list\\\",\\\"mut\\\",\\\"v2/email-input\\\",\\\"settify-file-upload\\\",\\\"mul\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/settings/setting/firm-facing.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/settings/setting/invitations\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#each this.filteredSettings as |setting index|}}\n    {{#if setting.firmEditable}}\n      <div class=\"grid grid-cols-1 gap-x-12 gap-y-10 items-center border-b border-gray-900/10 md:grid-cols-2 py-6\">\n        <div>\n          <h2 class=\"text-base font-semibold leading-7\">{{setting.displayName}}</h2>\n          <p class=\"mt-1 text-sm leading-6 text-gray-500\">{{setting.helpText}}</p>\n        </div>\n  \n        {{!-- TODO: convert the below into a component --}}\n        {{#let (get this.selectedPracticeAreaSettings setting.withPath) as |settingValue|}}\n          {{#if (eq setting.type \"string\")}}\n            <V2::Textline @type=\"text\" @value={{settingValue}} @id={{sum \"string-input-\" index}} />\n          {{else if (eq setting.type \"number\")}}\n            <V2::Textline @type=\"number\" @value={{settingValue}} @id={{sum \"number-input-\" index}} />\n          {{else if (eq setting.type \"textarea\")}}\n            <V2::Textarea @value={{settingValue}} @id={{sum \"textarea-input-\" index}} />\n          {{else if (eq setting.type \"bool\")}}\n            <V2::Toggle @model={{settingValue}} />\n          {{else if (eq setting.type \"stringarray\")}}\n            <FreeList @model={{mut settingValue}} @noDestory={{true}} as |item|>\n              <V2::Textline @type=\"text\" @value={{item.contents}} @id={{sum \"string-input-\" index}} />\n            </FreeList>\n          {{else if (eq setting.type \"emailarray\")}}\n            <FreeList @model={{mut settingValue}} @itemName=\"email address\" @noDestory={{true}} as |item|>\n              <V2::EmailInput @value={{item.contents}} />\n            </FreeList>\n          {{else if (eq setting.type \"fileupload\")}}\n            <FreeList @model={{mut settingValue}} @itemName=\"file\" @noDestory={{true}} as |item|>\n              <SettifyFileUpload @uploadPrefix=\"{CognitoIdentityPoolId}/\" @model={{item}} @maxKB={{mul 1024 5}} @accept=\".pdf,.docx,.doc\" />\n            </FreeList>\n          {{else}}\n            <V2::Textline @type=\"text\" @value={{settingValue}} @id={{sum \"string-input-\" index}} />\n          {{/if}}\n        {{/let}}\n      </div>\n    {{/if}}\n  {{/each}}\n  \n  */\n  {\n    \"id\": \"2DfYLh9G\",\n    \"block\": \"[[[42,[28,[37,1],[[28,[37,1],[[30,0,[\\\"filteredSettings\\\"]]],null]],null],null,[[[41,[30,1,[\\\"firmEditable\\\"]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"grid grid-cols-1 gap-x-12 gap-y-10 items-center border-b border-gray-900/10 md:grid-cols-2 py-6\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,\\\"h2\\\"],[14,0,\\\"text-base font-semibold leading-7\\\"],[12],[1,[30,1,[\\\"displayName\\\"]]],[13],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"mt-1 text-sm leading-6 text-gray-500\\\"],[12],[1,[30,1,[\\\"helpText\\\"]]],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[44,[[28,[37,7],[[30,0,[\\\"selectedPracticeAreaSettings\\\"]],[30,1,[\\\"withPath\\\"]]],null]],[[[41,[28,[37,8],[[30,1,[\\\"type\\\"]],\\\"string\\\"],null],[[[1,\\\"          \\\"],[8,[39,9],null,[[\\\"@type\\\",\\\"@value\\\",\\\"@id\\\"],[\\\"text\\\",[30,3],[28,[37,10],[\\\"string-input-\\\",[30,2]],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,1,[\\\"type\\\"]],\\\"number\\\"],null],[[[1,\\\"          \\\"],[8,[39,9],null,[[\\\"@type\\\",\\\"@value\\\",\\\"@id\\\"],[\\\"number\\\",[30,3],[28,[37,10],[\\\"number-input-\\\",[30,2]],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,1,[\\\"type\\\"]],\\\"textarea\\\"],null],[[[1,\\\"          \\\"],[8,[39,11],null,[[\\\"@value\\\",\\\"@id\\\"],[[30,3],[28,[37,10],[\\\"textarea-input-\\\",[30,2]],null]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,1,[\\\"type\\\"]],\\\"bool\\\"],null],[[[1,\\\"          \\\"],[8,[39,12],null,[[\\\"@model\\\"],[[30,3]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,1,[\\\"type\\\"]],\\\"stringarray\\\"],null],[[[1,\\\"          \\\"],[8,[39,13],null,[[\\\"@model\\\",\\\"@noDestory\\\"],[[28,[37,14],[[30,3]],null],true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,9],null,[[\\\"@type\\\",\\\"@value\\\",\\\"@id\\\"],[\\\"text\\\",[30,4,[\\\"contents\\\"]],[28,[37,10],[\\\"string-input-\\\",[30,2]],null]]],null],[1,\\\"\\\\n          \\\"]],[4]]]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,1,[\\\"type\\\"]],\\\"emailarray\\\"],null],[[[1,\\\"          \\\"],[8,[39,13],null,[[\\\"@model\\\",\\\"@itemName\\\",\\\"@noDestory\\\"],[[28,[37,14],[[30,3]],null],\\\"email address\\\",true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,15],null,[[\\\"@value\\\"],[[30,5,[\\\"contents\\\"]]]],null],[1,\\\"\\\\n          \\\"]],[5]]]]],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,8],[[30,1,[\\\"type\\\"]],\\\"fileupload\\\"],null],[[[1,\\\"          \\\"],[8,[39,13],null,[[\\\"@model\\\",\\\"@itemName\\\",\\\"@noDestory\\\"],[[28,[37,14],[[30,3]],null],\\\"file\\\",true]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[39,16],null,[[\\\"@uploadPrefix\\\",\\\"@model\\\",\\\"@maxKB\\\",\\\"@accept\\\"],[\\\"{CognitoIdentityPoolId}/\\\",[30,6],[28,[37,17],[1024,5],null],\\\".pdf,.docx,.doc\\\"]],null],[1,\\\"\\\\n          \\\"]],[6]]]]],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[8,[39,9],null,[[\\\"@type\\\",\\\"@value\\\",\\\"@id\\\"],[\\\"text\\\",[30,3],[28,[37,10],[\\\"string-input-\\\",[30,2]],null]]],null],[1,\\\"\\\\n        \\\"]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[]]]],[3]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[1,2]],null]],[\\\"setting\\\",\\\"index\\\",\\\"settingValue\\\",\\\"item\\\",\\\"item\\\",\\\"item\\\"],false,[\\\"each\\\",\\\"-track-array\\\",\\\"if\\\",\\\"div\\\",\\\"h2\\\",\\\"p\\\",\\\"let\\\",\\\"get\\\",\\\"eq\\\",\\\"v2/textline\\\",\\\"sum\\\",\\\"v2/textarea\\\",\\\"v2/toggle\\\",\\\"free-list\\\",\\\"mut\\\",\\\"v2/email-input\\\",\\\"settify-file-upload\\\",\\\"mul\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/settings/setting/invitations.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/settings/setting/loading\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"py-4\">\n    <span class=\"sr-only\">Loading...</span>\n    <div class=\"relative rounded-md p-2 mb-2 bg-gray-200 h-14 animate-pulse\"></div>\n    <div class=\"relative rounded-md p-2 mb-2 bg-gray-200 h-14 animate-pulse\"></div>\n    <div class=\"relative rounded-md p-2 mb-2 bg-gray-200 h-14 animate-pulse\"></div>\n    <div class=\"relative rounded-md p-2 mb-2 bg-gray-200 h-14 animate-pulse\"></div>\n    {{outlet}}\n  </div>\n  */\n  {\n    \"id\": \"Z0moUG0T\",\n    \"block\": \"[[[10,0],[14,0,\\\"py-4\\\"],[12],[1,\\\"\\\\n  \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Loading...\\\"],[13],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"relative rounded-md p-2 mb-2 bg-gray-200 h-14 animate-pulse\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"relative rounded-md p-2 mb-2 bg-gray-200 h-14 animate-pulse\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"relative rounded-md p-2 mb-2 bg-gray-200 h-14 animate-pulse\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"relative rounded-md p-2 mb-2 bg-gray-200 h-14 animate-pulse\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[46,[28,[37,3],null,null],null,null,null],[1,\\\"\\\\n\\\"],[13]],[],false,[\\\"div\\\",\\\"span\\\",\\\"component\\\",\\\"-outlet\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/settings/setting/loading.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/settings/setting/settify\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div>\n    <ul role=\"list\" class=\"divide-y divide-gray-100 text-sm leading-6\">\n      <li class=\"flex items-center justify-between gap-x-6 py-6\">\n        <div class=\"flex flex-col\">\n          <div class=\"font-medium text-gray-900\">Manage Forms</div>\n          <div class=\"text-sm text-gray-500\">View and edit the forms for this firm</div>\n        </div>\n        <LinkTo @route=\"admin.config.forms\" class=\"font-semibold text-settify-green hover:text-settify-green/90\">\n          Manage Forms\n        </LinkTo>\n      </li>\n      <li class=\"flex justify-between gap-x-6 py-6\">\n        <div class=\"flex flex-col\">\n          <div class=\"font-medium text-gray-900\">Trigger Sentry Error</div>\n          <div class=\"text-sm text-gray-500\">This will cause an error to be triggered and sent to Sentry</div>\n        </div>\n        <button type=\"button\" class=\"font-semibold text-settify-green hover:text-settify-green/90\" {{on \"click\" this.triggerSentryError}}>Trigger</button>\n      </li>\n      <li class=\"flex justify-between gap-x-6 py-6\">\n        <div class=\"flex flex-col\">\n          <div class=\"font-medium text-gray-900\">Notification Tests</div>\n          <div class=\"text-sm text-gray-500\">This will display a few test notifications</div>\n        </div>\n        <button type=\"button\" class=\"font-semibold text-settify-green hover:text-settify-green/90\" {{on \"click\" this.testNotificationService}}>Trigger</button>\n      </li>\n    </ul>\n  </div>\n  */\n  {\n    \"id\": \"N//ThN9B\",\n    \"block\": \"[[[10,0],[12],[1,\\\"\\\\n  \\\"],[10,\\\"ul\\\"],[14,\\\"role\\\",\\\"list\\\"],[14,0,\\\"divide-y divide-gray-100 text-sm leading-6\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"li\\\"],[14,0,\\\"flex items-center justify-between gap-x-6 py-6\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"flex flex-col\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"font-medium text-gray-900\\\"],[12],[1,\\\"Manage Forms\\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"text-sm text-gray-500\\\"],[12],[1,\\\"View and edit the forms for this firm\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[8,[39,3],[[24,0,\\\"font-semibold text-settify-green hover:text-settify-green/90\\\"]],[[\\\"@route\\\"],[\\\"admin.config.forms\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        Manage Forms\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"li\\\"],[14,0,\\\"flex justify-between gap-x-6 py-6\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"flex flex-col\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"font-medium text-gray-900\\\"],[12],[1,\\\"Trigger Sentry Error\\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"text-sm text-gray-500\\\"],[12],[1,\\\"This will cause an error to be triggered and sent to Sentry\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[11,\\\"button\\\"],[24,0,\\\"font-semibold text-settify-green hover:text-settify-green/90\\\"],[24,4,\\\"button\\\"],[4,[38,5],[\\\"click\\\",[30,0,[\\\"triggerSentryError\\\"]]],null],[12],[1,\\\"Trigger\\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"li\\\"],[14,0,\\\"flex justify-between gap-x-6 py-6\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"flex flex-col\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"font-medium text-gray-900\\\"],[12],[1,\\\"Notification Tests\\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"text-sm text-gray-500\\\"],[12],[1,\\\"This will display a few test notifications\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[11,\\\"button\\\"],[24,0,\\\"font-semibold text-settify-green hover:text-settify-green/90\\\"],[24,4,\\\"button\\\"],[4,[38,5],[\\\"click\\\",[30,0,[\\\"testNotificationService\\\"]]],null],[12],[1,\\\"Trigger\\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[],false,[\\\"div\\\",\\\"ul\\\",\\\"li\\\",\\\"link-to\\\",\\\"button\\\",\\\"on\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/settings/setting/settify.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/settings/setting/users\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <form class=\"flex gap-2 py-4\" {{on \"submit\" this.createUser}}>\n    <div class=\"w-full sm:max-w-80\">\n      <V2::EmailInput\n        @value={{this.newUserEmail}}\n        @required={{true}}\n        @id=\"new-user-email\"\n        @setEmailValidation={{this.setEmailValidation}}\n        class=\"w-full placeholder:text-sm\"\n        placeholder=\"New account email\"\n      />\n    </div>\n    <V2::Button @variant=\"solid\" type=\"submit\" disabled={{or this.creatingNewUser (not this.newUserEmailValid)}} class=\"self-start text-sm\">\n      {{#if this.creatingNewUser}}\n        <V2::SvgIcon @icon=\"spinner-third\" class=\"size-4 animate-spin\" role=\"status\" />\n      {{else if this.allowRestrictedDomain}}\n        Confirm\n      {{else}}\n        Add\n      {{/if}}\n    </V2::Button>\n  </form>\n  \n  {{#if this.userFailedMessage}}\n    <span class=\"text-sm text-gray-600\">{{this.userFailedMessage}}</span>\n  {{/if}}\n  \n  <table class=\"min-w-full table-fixed divide-y divide-gray-300\">\n    <thead>\n      <tr class=\"text-left text-sm\">\n        <th scope=\"col\" class=\"p-3 font-semibold\">Account</th>\n        <th scope=\"col\" class=\"hidden p-3 font-semibold sm:table-cell\">Status</th>\n        <th scope=\"col\" class=\"relative p-3\">\n          <span class=\"sr-only\">Options</span>\n        </th>\n      </tr>\n    </thead>\n    <tbody class=\"divide-y divide-gray-200 bg-white\">\n      {{#each this.model.userList as |user index|}}\n        <tr data-index={{index}} data-user-email={{user.email}} class=\"border-b border-gray-100\">\n          <td class=\"px-3 py-3.5 text-sm\">\n            <div class=\"flex items-center gap-x-3\">\n              {{#if user.photoURL}}\n                <img class=\"size-10 rounded-full bg-gray-50 object-cover\" src={{user.photoURL}} alt=\"{{user.name}}\" />\n              {{else}}\n                <V2::SvgIcon @icon=\"empty-profile\" class=\"size-10 rounded-full text-gray-300\" />\n              {{/if}}\n              <div class=\"flex flex-col\">\n                <span>{{user.email}}</span>\n                <span class=\"text-xs text-gray-500\">{{user.name}}</span>\n              </div>\n            </div>\n          </td>\n          <td class=\"hidden px-3 py-3.5 text-sm sm:table-cell\">\n            <div\n              class=\"inline-flex rounded-md px-2 py-1 text-xs font-medium ring-1 ring-inset\n                {{if user.loginEnabled 'bg-green-50 text-green-700 ring-green-600/20' 'bg-yellow-50 text-yellow-800 ring-yellow-600/20'}}\"\n            >\n              {{if user.loginEnabled \"Enabled\" \"Disabled\"}}\n            </div>\n          </td>\n          <td class=\"relative text-sm\">\n            <V2::Dropdown\n              @id=\"user-row-menu-{{index}}\"\n              @toggleDropdown={{fn this.toggleUserDropdown user}}\n              @parameters={{index}}\n              @clickedOutside={{fn this.closeUserDropdown user}}\n              as |dropdown|\n            >\n              <dropdown.header>\n                <V2::Button @size=\"small\" class=\"hover:bg-gray-100\" aria-expanded={{eq this.selectedUser user}} aria-haspopup=\"true\" aria-controls=\"options-menu-{{index}}\">\n                  <span class=\"sr-only\">Open options</span>\n                  <V2::SvgIcon @icon=\"dots-vertical\" class=\"size-5\" />\n                </V2::Button>\n              </dropdown.header>\n              <dropdown.content @isOpen={{eq this.selectedUser user.email}}>\n                <div\n                  id=\"options-menu-{{index}}\"\n                  class=\"absolute right-0 z-10 w-32 rounded-sm bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none\"\n                  role=\"menu\"\n                  aria-orientation=\"vertical\"\n                  aria-labelledby=\"user-dropdown-{{index}}\"\n                >\n                  <ul class=\"py-1\">\n                    <li>\n                      <V2::Button {{on \"click\" (fn this.toggleUserLoginStatus user)}} class=\"w-full text-left hover:bg-gray-100\">\n                        {{if user.loginEnabled \"Disable\" \"Enable\"}}\n                      </V2::Button>\n                    </li>\n                    <li>\n                      <V2::Button {{on \"click\" (fn this.deleteUser user)}} class=\"w-full text-left hover:bg-gray-100\">Delete</V2::Button>\n                    </li>\n                  </ul>\n                </div>\n              </dropdown.content>\n            </V2::Dropdown>\n          </td>\n        </tr>\n      {{/each}}\n    </tbody>\n  </table>\n  */\n  {\n    \"id\": \"8duBdZgi\",\n    \"block\": \"[[[11,\\\"form\\\"],[24,0,\\\"flex gap-2 py-4\\\"],[4,[38,1],[\\\"submit\\\",[30,0,[\\\"createUser\\\"]]],null],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"w-full sm:max-w-80\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,3],[[24,0,\\\"w-full placeholder:text-sm\\\"],[24,\\\"placeholder\\\",\\\"New account email\\\"]],[[\\\"@value\\\",\\\"@required\\\",\\\"@id\\\",\\\"@setEmailValidation\\\"],[[30,0,[\\\"newUserEmail\\\"]],true,\\\"new-user-email\\\",[30,0,[\\\"setEmailValidation\\\"]]]],null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[8,[39,4],[[16,\\\"disabled\\\",[28,[37,5],[[30,0,[\\\"creatingNewUser\\\"]],[28,[37,6],[[30,0,[\\\"newUserEmailValid\\\"]]],null]],null]],[24,0,\\\"self-start text-sm\\\"],[24,4,\\\"submit\\\"]],[[\\\"@variant\\\"],[\\\"solid\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"creatingNewUser\\\"]],[[[1,\\\"      \\\"],[8,[39,8],[[24,0,\\\"size-4 animate-spin\\\"],[24,\\\"role\\\",\\\"status\\\"]],[[\\\"@icon\\\"],[\\\"spinner-third\\\"]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"allowRestrictedDomain\\\"]],[[[1,\\\"      Confirm\\\\n\\\"]],[]],[[[1,\\\"      Add\\\\n    \\\"]],[]]]],[]]],[1,\\\"  \\\"]],[]]]]],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"userFailedMessage\\\"]],[[[1,\\\"  \\\"],[10,1],[14,0,\\\"text-sm text-gray-600\\\"],[12],[1,[30,0,[\\\"userFailedMessage\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[10,\\\"table\\\"],[14,0,\\\"min-w-full table-fixed divide-y divide-gray-300\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"tr\\\"],[14,0,\\\"text-left text-sm\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"p-3 font-semibold\\\"],[12],[1,\\\"Account\\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"hidden p-3 font-semibold sm:table-cell\\\"],[12],[1,\\\"Status\\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"relative p-3\\\"],[12],[1,\\\"\\\\n        \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Options\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,\\\"tbody\\\"],[14,0,\\\"divide-y divide-gray-200 bg-white\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,16],[[28,[37,16],[[30,0,[\\\"model\\\",\\\"userList\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[10,\\\"tr\\\"],[15,\\\"data-index\\\",[30,2]],[15,\\\"data-user-email\\\",[30,1,[\\\"email\\\"]]],[14,0,\\\"border-b border-gray-100\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"td\\\"],[14,0,\\\"px-3 py-3.5 text-sm\\\"],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"flex items-center gap-x-3\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"photoURL\\\"]],[[[1,\\\"              \\\"],[10,\\\"img\\\"],[14,0,\\\"size-10 rounded-full bg-gray-50 object-cover\\\"],[15,\\\"src\\\",[30,1,[\\\"photoURL\\\"]]],[15,\\\"alt\\\",[29,[[30,1,[\\\"name\\\"]]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"              \\\"],[8,[39,8],[[24,0,\\\"size-10 rounded-full text-gray-300\\\"]],[[\\\"@icon\\\"],[\\\"empty-profile\\\"]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"            \\\"],[10,0],[14,0,\\\"flex flex-col\\\"],[12],[1,\\\"\\\\n              \\\"],[10,1],[12],[1,[30,1,[\\\"email\\\"]]],[13],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"text-xs text-gray-500\\\"],[12],[1,[30,1,[\\\"name\\\"]]],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"td\\\"],[14,0,\\\"hidden px-3 py-3.5 text-sm sm:table-cell\\\"],[12],[1,\\\"\\\\n          \\\"],[10,0],[15,0,[29,[\\\"inline-flex rounded-md px-2 py-1 text-xs font-medium ring-1 ring-inset\\\\n              \\\",[52,[30,1,[\\\"loginEnabled\\\"]],\\\"bg-green-50 text-green-700 ring-green-600/20\\\",\\\"bg-yellow-50 text-yellow-800 ring-yellow-600/20\\\"]]]],[12],[1,\\\"\\\\n            \\\"],[1,[52,[30,1,[\\\"loginEnabled\\\"]],\\\"Enabled\\\",\\\"Disabled\\\"]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"td\\\"],[14,0,\\\"relative text-sm\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,19],null,[[\\\"@id\\\",\\\"@toggleDropdown\\\",\\\"@parameters\\\",\\\"@clickedOutside\\\"],[[29,[\\\"user-row-menu-\\\",[30,2]]],[28,[37,20],[[30,0,[\\\"toggleUserDropdown\\\"]],[30,1]],null],[30,2],[28,[37,20],[[30,0,[\\\"closeUserDropdown\\\"]],[30,1]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[8,[30,3,[\\\"header\\\"]],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[39,4],[[24,0,\\\"hover:bg-gray-100\\\"],[16,\\\"aria-expanded\\\",[28,[37,21],[[30,0,[\\\"selectedUser\\\"]],[30,1]],null]],[24,\\\"aria-haspopup\\\",\\\"true\\\"],[16,\\\"aria-controls\\\",[29,[\\\"options-menu-\\\",[30,2]]]]],[[\\\"@size\\\"],[\\\"small\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Open options\\\"],[13],[1,\\\"\\\\n                \\\"],[8,[39,8],[[24,0,\\\"size-5\\\"]],[[\\\"@icon\\\"],[\\\"dots-vertical\\\"]],null],[1,\\\"\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[8,[30,3,[\\\"content\\\"]],null,[[\\\"@isOpen\\\"],[[28,[37,21],[[30,0,[\\\"selectedUser\\\"]],[30,1,[\\\"email\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,0],[15,1,[29,[\\\"options-menu-\\\",[30,2]]]],[14,0,\\\"absolute right-0 z-10 w-32 rounded-sm bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none\\\"],[14,\\\"role\\\",\\\"menu\\\"],[14,\\\"aria-orientation\\\",\\\"vertical\\\"],[15,\\\"aria-labelledby\\\",[29,[\\\"user-dropdown-\\\",[30,2]]]],[12],[1,\\\"\\\\n                \\\"],[10,\\\"ul\\\"],[14,0,\\\"py-1\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n                    \\\"],[8,[39,4],[[24,0,\\\"w-full text-left hover:bg-gray-100\\\"],[4,[38,1],[\\\"click\\\",[28,[37,20],[[30,0,[\\\"toggleUserLoginStatus\\\"]],[30,1]],null]],null]],null,[[\\\"default\\\"],[[[[1,\\\"\\\\n                      \\\"],[1,[52,[30,1,[\\\"loginEnabled\\\"]],\\\"Disable\\\",\\\"Enable\\\"]],[1,\\\"\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n                    \\\"],[8,[39,4],[[24,0,\\\"w-full text-left hover:bg-gray-100\\\"],[4,[38,1],[\\\"click\\\",[28,[37,20],[[30,0,[\\\"deleteUser\\\"]],[30,1]],null]],null]],null,[[\\\"default\\\"],[[[[1,\\\"Delete\\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"]],[3]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[1,2]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"user\\\",\\\"index\\\",\\\"dropdown\\\"],false,[\\\"form\\\",\\\"on\\\",\\\"div\\\",\\\"v2/email-input\\\",\\\"v2/button\\\",\\\"or\\\",\\\"not\\\",\\\"if\\\",\\\"v2/svg-icon\\\",\\\"span\\\",\\\"table\\\",\\\"thead\\\",\\\"tr\\\",\\\"th\\\",\\\"tbody\\\",\\\"each\\\",\\\"-track-array\\\",\\\"td\\\",\\\"img\\\",\\\"v2/dropdown\\\",\\\"fn\\\",\\\"eq\\\",\\\"ul\\\",\\\"li\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/settings/setting/users.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/team-loading\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage @heading=\"Team\">\n    <div class=\"relative mb-2 h-14 animate-pulse rounded-md bg-gray-200 p-2\"></div>\n    <div class=\"relative mb-2 h-14 animate-pulse rounded-md bg-gray-200 p-2\"></div>\n    <div class=\"relative mb-2 h-14 animate-pulse rounded-md bg-gray-200 p-2\"></div>\n  </V2::AdminPage>\n  \n  */\n  {\n    \"id\": \"UGESdzEJ\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@heading\\\"],[\\\"Team\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"relative mb-2 h-14 animate-pulse rounded-md bg-gray-200 p-2\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"relative mb-2 h-14 animate-pulse rounded-md bg-gray-200 p-2\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"relative mb-2 h-14 animate-pulse rounded-md bg-gray-200 p-2\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[],false,[\\\"v2/admin-page\\\",\\\"div\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/team-loading.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/team\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage @heading=\"Team\" @ctaButtons={{this.ctaButtons}}>\n    <div class=\"flow-root\">\n      <div class=\"-mx-4 -my-2 overflow-x-auto sm:-mx-6 lg:-mx-8\">\n        <div class=\"inline-block min-w-full py-2 align-middle sm:px-6 lg:px-8\">\n          <div class=\"relative\">\n            {{! Selected row actions, only show when rows are selected. }}\n            {{!-- {{#if this.showSelectedActions}}\n              <div class=\"absolute top-0 left-14 flex h-12 items-center space-x-3 bg-white sm:left-12\">\n                <button type=\"button\" class=\"inline-flex items-center rounded bg-white px-2 py-1 text-sm font-semibold  shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-30 disabled:hover:bg-white\">Archive all</button>\n                <button type=\"button\" class=\"inline-flex items-center rounded bg-white px-2 py-1 text-sm font-semibold  shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-30 disabled:hover:bg-white\">Delete all</button>\n              </div>\n            {{/if}} --}}\n  \n            <table class=\"min-w-full table-fixed divide-y divide-gray-300\">\n              <thead>\n                <tr>\n                  {{! <th scope=\"col\" class=\"relative px-7 sm:w-12 sm:px-6\">\n                    <label for=\"hs-at-with-checkboxes-main\" class=\"flex\">\n                      <input type=\"checkbox\" class=\"absolute left-4 top-1/2 -mt-2 h-4 w-4 rounded border-gray-300 text-brand-primary-color-rgb focus:ring-brand-primary-color-rgb\" id=\"hs-at-with-checkboxes-main\">\n                      <span class=\"sr-only\">Select all team members</span>\n                    </label>\n                  </th> }}\n                  <th scope=\"col\" class=\"min-w-[12rem] py-3.5 pr-3 text-left text-sm font-semibold\">Name</th>\n                  <th scope=\"col\" class=\"px-3 py-3.5 text-left text-sm font-semibold\">Position</th>\n                  <th scope=\"col\" class=\"hidden px-3 py-3.5 text-left text-sm font-semibold lg:table-cell\">Status</th>\n                  <th scope=\"col\" class=\"relative py-3.5 pl-3 pr-4 sm:pr-3\">\n                    <span class=\"sr-only\">Edit</span>\n                  </th>\n                </tr>\n              </thead>\n              <tbody class=\"divide-y divide-gray-100 bg-white\">\n                {{#each this.model.teamList as |teamMember index|}}\n                  <tr class=\"\">\n                    {{!-- <td class=\"relative px-7 sm:w-12 sm:px-6\">\n                      {{ !-- Selected row marker, only show when row is selected. -- }}\n                      <div class=\"absolute inset-y-0 left-0 w-0.5 bg-brand-primary-color-rgb\"></div>\n                      <label for=\"hs-at-with-checkboxes-{{index}}\" class=\"flex\">\n                        <input type=\"checkbox\" class=\"absolute left-4 top-1/2 -mt-2 h-4 w-4 rounded border-gray-300 text-brand-primary-color-rgb focus:ring-brand-primary-color-rgb\" id=\"hs-at-with-checkboxes-{{index}}\">\n                        <span class=\"sr-only\">Select {{teamMember.name}}</span>\n                      </label>\n                    </td> --}}\n                    <td class=\"whitespace-nowrap py-4 pr-3 text-sm\">\n                      <div class=\"flex items-center gap-x-3\">\n                        {{#if teamMember.photoURL}}\n                          <img class=\"size-12 rounded-full bg-gray-50 object-cover\" src={{teamMember.photoURL}} alt=\"{{teamMember.name}}\" />\n                        {{else}}\n                          <V2::SvgIcon @icon=\"empty-profile\" class=\"size-12 rounded-full text-gray-300\" />\n                        {{/if}}\n                        <div class=\"grow text-sm\">\n                          <span class=\"block font-semibold\">{{teamMember.name}}</span>\n                          <a href=\"mailto:{{teamMember.email}}\" class=\"block truncate text-gray-500 hover:underline\">{{teamMember.email}}</a>\n                          <span class=\"block text-gray-500\">\n                            {{#if teamMember.worksWith.length}}\n                              {{#if (eq teamMember.personType \"lawyer\")}}\n                                Assisted by\n                              {{else}}\n                                Assists\n                              {{/if}}\n  \n                              {{#each teamMember.worksWith as |colleague|}}\n                                {{#if (get (get this.lawyerList.byID colleague.personID) \"name\")}}\n                                  {{get (get this.lawyerList.byID colleague.personID) \"name\"}}\n                                {{~/if~}}\n                                {{~#if (not-eq colleague (get teamMember.worksWith (sub teamMember.worksWith.length 0)))~}}\n                                  ,\n                                {{/if}}\n                              {{/each}}\n                            {{else}}\n                              {{#if (eq teamMember.personType \"lawyer\")}}\n                                No assistant assigned\n                              {{/if}}\n                            {{/if}}\n                          </span>\n                        </div>\n                      </div>\n                    </td>\n                    <td class=\"whitespace-nowrap px-3 py-4 text-sm\">\n                      {{#if teamMember.title}}\n                        <span class=\"block font-semibold\">{{teamMember.title}}</span>\n                      {{/if}}\n                      <span class=\"block text-gray-500\">\n                        {{if (eq teamMember.personType \"lawyer\") \"Lawyer\" \"Assistant\"}}\n                      </span>\n                    </td>\n                    <td class=\"hidden whitespace-nowrap px-3 py-4 text-sm text-gray-500 lg:table-cell\">\n                      {{#if teamMember.disabled}}\n                        <span class=\"inline-flex items-center gap-1.5 rounded-full bg-yellow-50 px-2 py-0.5 text-xs font-medium text-yellow-800 ring-1 ring-inset ring-yellow-600/20\">\n                          Archived\n                        </span>\n                      {{else}}\n                        <span class=\"inline-flex items-center gap-1.5 rounded-full bg-green-100 px-2 py-0.5 text-xs font-medium text-green-800\">\n                          Active\n                        </span>\n                      {{/if}}\n                    </td>\n                    <td class=\"whitespace-nowrap py-4 pl-3 pr-4 text-right text-sm font-medium sm:pr-3\">\n                      <V2::Button @variant=\"outlined\" @route=\"v2.admin.team.edit\" @model={{teamMember.id}} class=\"text-brand-primary-color-rgb\">\n                        Edit<span class=\"sr-only\">, {{teamMember.name}}</span>\n                      </V2::Button>\n                    </td>\n                  </tr>\n                {{/each}}\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </V2::AdminPage>\n  \n  {{outlet}}\n  \n  */\n  {\n    \"id\": \"WYBMxKGY\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@heading\\\",\\\"@ctaButtons\\\"],[\\\"Team\\\",[30,0,[\\\"ctaButtons\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"flow-root\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"-mx-4 -my-2 overflow-x-auto sm:-mx-6 lg:-mx-8\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"inline-block min-w-full py-2 align-middle sm:px-6 lg:px-8\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"relative\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"\\\\n          \\\"],[10,\\\"table\\\"],[14,0,\\\"min-w-full table-fixed divide-y divide-gray-300\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"tr\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"                \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"min-w-[12rem] py-3.5 pr-3 text-left text-sm font-semibold\\\"],[12],[1,\\\"Name\\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"px-3 py-3.5 text-left text-sm font-semibold\\\"],[12],[1,\\\"Position\\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"hidden px-3 py-3.5 text-left text-sm font-semibold lg:table-cell\\\"],[12],[1,\\\"Status\\\"],[13],[1,\\\"\\\\n                \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"relative py-3.5 pl-3 pr-4 sm:pr-3\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Edit\\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,\\\"tbody\\\"],[14,0,\\\"divide-y divide-gray-100 bg-white\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,9],[[28,[37,9],[[30,0,[\\\"model\\\",\\\"teamList\\\"]]],null]],null],null,[[[1,\\\"                \\\"],[10,\\\"tr\\\"],[14,0,\\\"\\\"],[12],[1,\\\"\\\\n\\\"],[1,\\\"                  \\\"],[10,\\\"td\\\"],[14,0,\\\"whitespace-nowrap py-4 pr-3 text-sm\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,0],[14,0,\\\"flex items-center gap-x-3\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"photoURL\\\"]],[[[1,\\\"                        \\\"],[10,\\\"img\\\"],[14,0,\\\"size-12 rounded-full bg-gray-50 object-cover\\\"],[15,\\\"src\\\",[30,1,[\\\"photoURL\\\"]]],[15,\\\"alt\\\",[29,[[30,1,[\\\"name\\\"]]]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                        \\\"],[8,[39,13],[[24,0,\\\"size-12 rounded-full text-gray-300\\\"]],[[\\\"@icon\\\"],[\\\"empty-profile\\\"]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"                      \\\"],[10,0],[14,0,\\\"grow text-sm\\\"],[12],[1,\\\"\\\\n                        \\\"],[10,1],[14,0,\\\"block font-semibold\\\"],[12],[1,[30,1,[\\\"name\\\"]]],[13],[1,\\\"\\\\n                        \\\"],[10,3],[15,6,[29,[\\\"mailto:\\\",[30,1,[\\\"email\\\"]]]]],[14,0,\\\"block truncate text-gray-500 hover:underline\\\"],[12],[1,[30,1,[\\\"email\\\"]]],[13],[1,\\\"\\\\n                        \\\"],[10,1],[14,0,\\\"block text-gray-500\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"worksWith\\\",\\\"length\\\"]],[[[41,[28,[37,15],[[30,1,[\\\"personType\\\"]],\\\"lawyer\\\"],null],[[[1,\\\"                              Assisted by\\\\n\\\"]],[]],[[[1,\\\"                              Assists\\\\n\\\"]],[]]],[1,\\\"\\\\n\\\"],[42,[28,[37,9],[[28,[37,9],[[30,1,[\\\"worksWith\\\"]]],null]],null],null,[[[41,[28,[37,16],[[28,[37,16],[[30,0,[\\\"lawyerList\\\",\\\"byID\\\"]],[30,3,[\\\"personID\\\"]]],null],\\\"name\\\"],null],[[[1,\\\"                                \\\"],[1,[28,[35,16],[[28,[37,16],[[30,0,[\\\"lawyerList\\\",\\\"byID\\\"]],[30,3,[\\\"personID\\\"]]],null],\\\"name\\\"],null]]],[]],null],[41,[28,[37,17],[[30,3],[28,[37,16],[[30,1,[\\\"worksWith\\\"]],[28,[37,18],[[30,1,[\\\"worksWith\\\",\\\"length\\\"]],0],null]],null]],null],[[[1,\\\",\\\\n\\\"]],[]],null]],[3]],null]],[]],[[[41,[28,[37,15],[[30,1,[\\\"personType\\\"]],\\\"lawyer\\\"],null],[[[1,\\\"                              No assistant assigned\\\\n\\\"]],[]],null]],[]]],[1,\\\"                        \\\"],[13],[1,\\\"\\\\n                      \\\"],[13],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[14,0,\\\"whitespace-nowrap px-3 py-4 text-sm\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"title\\\"]],[[[1,\\\"                      \\\"],[10,1],[14,0,\\\"block font-semibold\\\"],[12],[1,[30,1,[\\\"title\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                    \\\"],[10,1],[14,0,\\\"block text-gray-500\\\"],[12],[1,\\\"\\\\n                      \\\"],[1,[52,[28,[37,15],[[30,1,[\\\"personType\\\"]],\\\"lawyer\\\"],null],\\\"Lawyer\\\",\\\"Assistant\\\"]],[1,\\\"\\\\n                    \\\"],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[14,0,\\\"hidden whitespace-nowrap px-3 py-4 text-sm text-gray-500 lg:table-cell\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,1,[\\\"disabled\\\"]],[[[1,\\\"                      \\\"],[10,1],[14,0,\\\"inline-flex items-center gap-1.5 rounded-full bg-yellow-50 px-2 py-0.5 text-xs font-medium text-yellow-800 ring-1 ring-inset ring-yellow-600/20\\\"],[12],[1,\\\"\\\\n                        Archived\\\\n                      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                      \\\"],[10,1],[14,0,\\\"inline-flex items-center gap-1.5 rounded-full bg-green-100 px-2 py-0.5 text-xs font-medium text-green-800\\\"],[12],[1,\\\"\\\\n                        Active\\\\n                      \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"                  \\\"],[13],[1,\\\"\\\\n                  \\\"],[10,\\\"td\\\"],[14,0,\\\"whitespace-nowrap py-4 pl-3 pr-4 text-right text-sm font-medium sm:pr-3\\\"],[12],[1,\\\"\\\\n                    \\\"],[8,[39,19],[[24,0,\\\"text-brand-primary-color-rgb\\\"]],[[\\\"@variant\\\",\\\"@route\\\",\\\"@model\\\"],[\\\"outlined\\\",\\\"v2.admin.team.edit\\\",[30,1,[\\\"id\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                      Edit\\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\", \\\"],[1,[30,1,[\\\"name\\\"]]],[13],[1,\\\"\\\\n                    \\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[1,2]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[46,[28,[37,21],null,null],null,null,null],[1,\\\"\\\\n\\\"]],[\\\"teamMember\\\",\\\"index\\\",\\\"colleague\\\"],false,[\\\"v2/admin-page\\\",\\\"div\\\",\\\"table\\\",\\\"thead\\\",\\\"tr\\\",\\\"th\\\",\\\"span\\\",\\\"tbody\\\",\\\"each\\\",\\\"-track-array\\\",\\\"td\\\",\\\"if\\\",\\\"img\\\",\\\"v2/svg-icon\\\",\\\"a\\\",\\\"eq\\\",\\\"get\\\",\\\"not-eq\\\",\\\"sub\\\",\\\"v2/button\\\",\\\"component\\\",\\\"-outlet\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/team.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/admin/team/edit\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::SlideOver @title={{or this.model.teamMember.name \"Unnamed team member\"}} @open={{true}} @onClose={{this.cancelChanges}} @onSave={{this.saveChanges}} @maxWidth=\"large\">\n    <div class=\"border-b border-gray-900/10 py-6\">\n      <label class=\"sr-only block text-sm font-medium leading-6\">Photo</label>\n      <div class=\"mt-2\">\n        <FileVirusScanStatus @bucket={{this.photoUploadBucket}} @key={{this.photoUploadKey}} as |fileIsSafe|>\n          <div class=\"flex items-center gap-x-3\">\n            {{#if (and fileIsSafe this.model.teamMember.photoURL)}}\n              <img class=\"h-16 w-16 rounded-full bg-gray-50 object-cover\" src={{this.model.teamMember.photoURL}} alt={{this.model.teamMember.name}} />\n            {{else}}\n              <V2::SvgIcon @icon=\"empty-profile\" class=\"size-16 rounded-full text-gray-300\" />\n            {{/if}}\n            <div>\n              <label for=\"file-upload\" class=\"cursor-pointer rounded-md bg-white px-3 py-2 text-sm font-semibold shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50\">\n                <span>Change</span>\n                <input id=\"file-upload\" name=\"file-upload\" type=\"file\" class=\"sr-only\" {{on \"change\" this.uploadHeadshot}} />\n              </label>\n              <p class=\"mt-2 text-xs leading-5 text-gray-400\">JPG or PNG. 200KB max.</p>\n            </div>\n          </div>\n        </FileVirusScanStatus>\n      </div>\n    </div>\n  \n    <div class=\"border-b border-gray-900/10 py-6\">\n      <p class=\"text-base font-semibold leading-7\">Personal details</p>\n      <div class=\"grid grid-cols-1 gap-x-6 gap-y-8 sm:grid-cols-6\">\n        <div class=\"sm:col-span-4\">\n          <V2::Textline @type=\"text\" @value={{this.model.teamMember.name}} @label=\"Full name\" @id=\"full-name\" name=\"full-name\" @required={{true}} />\n        </div>\n  \n        <div class=\"sm:col-span-4\">\n          <V2::EmailInput\n            @value={{this.model.teamMember.email}}\n            @label=\"Email address\"\n            @id=\"email\"\n            @validation={{this.emailIsValid}}\n            @setEmailValidation={{this.setEmailValidation}}\n            @required={{true}}\n          />\n        </div>\n  \n        <div class=\"sm:col-span-4\">\n          <label for=\"role-type\" class=\"block text-sm font-medium leading-6\">Role</label>\n          <div class=\"mt-2\">\n            <V2::SelectBox\n              @selectedItem={{this.model.teamMember.personType}}\n              @options={{this.teamMemberRoles}}\n              @id=\"role-type\"\n              @name=\"role-type\"\n              @onChange={{fn this.setStaffValue \"personType\"}}\n            />\n          </div>\n        </div>\n  \n        <div class=\"sm:col-span-4\">\n          <V2::Textline @type=\"text\" @value={{this.model.teamMember.title}} @label=\"Title / Position\" @id=\"title\" name=\"title\" />\n        </div>\n  \n        <div class=\"sm:col-span-3\">\n          <V2::MoneyInput\n            @min=\"0\"\n            @onChange={{fn this.setStaffValue \"chargeOutRate\"}}\n            @value={{this.model.teamMember.chargeOutRate}}\n            @label=\"Charge out rate\"\n            @id=\"charge-out-rate\"\n            name=\"charge-out-rate\"\n          />\n        </div>\n  \n        {{#if (eq this.model.teamMember.personType \"lawyer\")}}\n          <div class=\"sm:col-span-3\">\n            <V2::MoneyInput\n              @min=\"0\"\n              @onChange={{fn this.setStaffValue \"initialConsultationFee\"}}\n              @value={{this.model.teamMember.initialConsultationFee}}\n              @label=\"Initial consultation fee\"\n              @id=\"consultation-fee\"\n              name=\"consultation-fee\"\n            />\n          </div>\n  \n          <div class=\"sm:col-span-3\">\n            <V2::PhoneInput @value={{this.model.teamMember.phone}} @label=\"Phone number\" @id=\"phone-number\" name=\"phone-number\" />\n          </div>\n  \n          <div class=\"sm:col-span-3\">\n            <V2::PhoneInput @value={{this.model.teamMember.alternativePhone}} @label=\"Alternative phone number\" @id=\"alt-phone-number\" name=\"alt-phone-number\" />\n          </div>\n  \n          <div class=\"sm:col-span-4\">\n            <V2::Textline @type=\"text\" @value={{this.model.teamMember.fax}} @label=\"Fax number\" @id=\"fax-number\" name=\"fax-number\" />\n          </div>\n  \n          <div class=\"sm:col-span-4\">\n            <V2::Textline @type=\"text\" @value={{this.model.teamMember.pronoun}} @label=\"Pronouns\" @id=\"pronoun\" name=\"pronoun\" />\n          </div>\n  \n          <div class=\"sm:col-span-4\">\n            <V2::Textline @type=\"text\" @value={{this.model.teamMember.clientFacingName}} @label=\"Client-facing name\" @id=\"client-facing-name\" name=\"client-facing-name\" />\n          </div>\n  \n          <div class=\"sm:col-span-4\">\n            <V2::Textline @type=\"text\" @value={{this.model.teamMember.readMoreURL}} @label=\"Link to profile on your website\" @id=\"read-more-url\" name=\"read-more-url\" />\n          </div>\n  \n          <div class=\"sm:col-span-full\">\n            <V2::Textarea @label=\"Brief biography\" @value={{this.model.teamMember.bio}} @id=\"biography\" rows=\"6\" name=\"biography\" />\n          </div>\n        {{/if}}\n      </div>\n    </div>\n  \n    <div class=\"py-6\">\n      <p class=\"text-base font-semibold leading-7\">Configuration</p>\n      <div class=\"grid gap-x-6 gap-y-8\">\n        {{#if (gt this.availablePracticeAreas.length 1)}}\n          <div class=\"col-span-full\">\n            <label for=\"practice-areas\" class=\"block text-sm font-medium leading-6\">Areas of practice</label>\n            <div class=\"mt-2\">\n              {{#if this.model.teamMember.practiceAreas}}\n                {{#each this.availablePracticeAreas as |practiceArea|}}\n                  <div>\n                    <V2::Checkbox @value={{get this.model.teamMember.practiceAreas practiceArea}} @label={{practiceArea}} @id=\"{{practiceArea}}-checkbox\" />\n                  </div>\n                {{/each}}\n                <button type=\"button\" class=\"mt-2 block text-sm text-brand-primary-color-rgb\" {{on \"click\" this.togglePracticeAreaOptions}}>Allow all practice areas</button>\n              {{else}}\n                <V2::Checkbox @value={{not this.model.teamMember.practiceAreas}} @label=\"All\" @id=\"all-checkbox\" @disabled={{true}} />\n                <button type=\"button\" class=\"mt-2 block text-sm text-brand-primary-color-rgb\" {{on \"click\" this.togglePracticeAreaOptions}}>Specify practice areas</button>\n              {{/if}}\n            </div>\n          </div>\n        {{/if}}\n        <div class=\"col-span-full\">\n          <label for=\"works-with\" class=\"block text-sm font-medium leading-6\">\n            {{#if (eq this.model.teamMember.personType \"lawyer\")}}\n              Assistants\n            {{else}}\n              Assists\n            {{/if}}\n          </label>\n          <div class=\"mt-2\">\n            <V2::TeamMappingSelect @teamMember={{this.model.teamMember}} />\n          </div>\n        </div>\n  \n        {{#unless this.model.isNew}}\n          <div class=\"col-span-full\">\n            <label for=\"disable-team-member\" class=\"block text-sm font-medium leading-6\">Archive {{or this.model.teamMember.name \"Unnamed team member\"}}</label>\n            <div class=\"mt-2\">\n              <V2::Toggle @model={{this.model.teamMember.disabled}} @id=\"disable-team-member\" />\n            </div>\n          </div>\n          <div class=\"col-span-full\">\n            {{#if this.showDeleteOptions}}\n              <p class=\"col-span-2 block text-sm leading-6\">\n                Deleting a team member removes their details from the system forever. This is best used when a team member permanently departs from the firm.\n                <span class=\"font-medium\">Are you sure?</span>\n              </p>\n              <div class=\"flex justify-end gap-2\">\n                <V2::Button @variant=\"outlined\" class=\"text-sm font-semibold\" {{on \"click\" this.deleteTeamMember}}>\n                  Yes\n                </V2::Button>\n                <V2::Button @variant=\"outlined\" class=\"text-sm font-semibold\" {{on \"click\" this.toggleDelete}}>\n                  Cancel\n                </V2::Button>\n              </div>\n            {{else}}\n              <V2::Button @variant=\"outlined\" class=\"ml-auto flex items-center justify-center gap-2 text-sm font-semibold text-red-500\" {{on \"click\" this.toggleDelete}}>\n                <V2::SvgIcon @icon=\"trash\" class=\"size-4\" />\n                Delete\n              </V2::Button>\n            {{/if}}\n          </div>\n        {{/unless}}\n      </div>\n    </div>\n  </V2::SlideOver>\n  */\n  {\n    \"id\": \"ctewIamH\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@title\\\",\\\"@open\\\",\\\"@onClose\\\",\\\"@onSave\\\",\\\"@maxWidth\\\"],[[28,[37,1],[[30,0,[\\\"model\\\",\\\"teamMember\\\",\\\"name\\\"]],\\\"Unnamed team member\\\"],null],true,[30,0,[\\\"cancelChanges\\\"]],[30,0,[\\\"saveChanges\\\"]],\\\"large\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"border-b border-gray-900/10 py-6\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"label\\\"],[14,0,\\\"sr-only block text-sm font-medium leading-6\\\"],[12],[1,\\\"Photo\\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"mt-2\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,4],null,[[\\\"@bucket\\\",\\\"@key\\\"],[[30,0,[\\\"photoUploadBucket\\\"]],[30,0,[\\\"photoUploadKey\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"flex items-center gap-x-3\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,6],[[30,1],[30,0,[\\\"model\\\",\\\"teamMember\\\",\\\"photoURL\\\"]]],null],[[[1,\\\"            \\\"],[10,\\\"img\\\"],[14,0,\\\"h-16 w-16 rounded-full bg-gray-50 object-cover\\\"],[15,\\\"src\\\",[30,0,[\\\"model\\\",\\\"teamMember\\\",\\\"photoURL\\\"]]],[15,\\\"alt\\\",[30,0,[\\\"model\\\",\\\"teamMember\\\",\\\"name\\\"]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"            \\\"],[8,[39,8],[[24,0,\\\"size-16 rounded-full text-gray-300\\\"]],[[\\\"@icon\\\"],[\\\"empty-profile\\\"]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"          \\\"],[10,0],[12],[1,\\\"\\\\n            \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"file-upload\\\"],[14,0,\\\"cursor-pointer rounded-md bg-white px-3 py-2 text-sm font-semibold shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50\\\"],[12],[1,\\\"\\\\n              \\\"],[10,1],[12],[1,\\\"Change\\\"],[13],[1,\\\"\\\\n              \\\"],[11,\\\"input\\\"],[24,1,\\\"file-upload\\\"],[24,3,\\\"file-upload\\\"],[24,0,\\\"sr-only\\\"],[24,4,\\\"file\\\"],[4,[38,11],[\\\"change\\\",[30,0,[\\\"uploadHeadshot\\\"]]],null],[12],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,2],[14,0,\\\"mt-2 text-xs leading-5 text-gray-400\\\"],[12],[1,\\\"JPG or PNG. 200KB max.\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"]],[1]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"border-b border-gray-900/10 py-6\\\"],[12],[1,\\\"\\\\n    \\\"],[10,2],[14,0,\\\"text-base font-semibold leading-7\\\"],[12],[1,\\\"Personal details\\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"grid grid-cols-1 gap-x-6 gap-y-8 sm:grid-cols-6\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"sm:col-span-4\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,13],[[24,3,\\\"full-name\\\"]],[[\\\"@type\\\",\\\"@value\\\",\\\"@label\\\",\\\"@id\\\",\\\"@required\\\"],[\\\"text\\\",[30,0,[\\\"model\\\",\\\"teamMember\\\",\\\"name\\\"]],\\\"Full name\\\",\\\"full-name\\\",true]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,0],[14,0,\\\"sm:col-span-4\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,14],null,[[\\\"@value\\\",\\\"@label\\\",\\\"@id\\\",\\\"@validation\\\",\\\"@setEmailValidation\\\",\\\"@required\\\"],[[30,0,[\\\"model\\\",\\\"teamMember\\\",\\\"email\\\"]],\\\"Email address\\\",\\\"email\\\",[30,0,[\\\"emailIsValid\\\"]],[30,0,[\\\"setEmailValidation\\\"]],true]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,0],[14,0,\\\"sm:col-span-4\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"role-type\\\"],[14,0,\\\"block text-sm font-medium leading-6\\\"],[12],[1,\\\"Role\\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"mt-2\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,15],null,[[\\\"@selectedItem\\\",\\\"@options\\\",\\\"@id\\\",\\\"@name\\\",\\\"@onChange\\\"],[[30,0,[\\\"model\\\",\\\"teamMember\\\",\\\"personType\\\"]],[30,0,[\\\"teamMemberRoles\\\"]],\\\"role-type\\\",\\\"role-type\\\",[28,[37,16],[[30,0,[\\\"setStaffValue\\\"]],\\\"personType\\\"],null]]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,0],[14,0,\\\"sm:col-span-4\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,13],[[24,3,\\\"title\\\"]],[[\\\"@type\\\",\\\"@value\\\",\\\"@label\\\",\\\"@id\\\"],[\\\"text\\\",[30,0,[\\\"model\\\",\\\"teamMember\\\",\\\"title\\\"]],\\\"Title / Position\\\",\\\"title\\\"]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,0],[14,0,\\\"sm:col-span-3\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[39,17],[[24,3,\\\"charge-out-rate\\\"]],[[\\\"@min\\\",\\\"@onChange\\\",\\\"@value\\\",\\\"@label\\\",\\\"@id\\\"],[\\\"0\\\",[28,[37,16],[[30,0,[\\\"setStaffValue\\\"]],\\\"chargeOutRate\\\"],null],[30,0,[\\\"model\\\",\\\"teamMember\\\",\\\"chargeOutRate\\\"]],\\\"Charge out rate\\\",\\\"charge-out-rate\\\"]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[28,[37,18],[[30,0,[\\\"model\\\",\\\"teamMember\\\",\\\"personType\\\"]],\\\"lawyer\\\"],null],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"sm:col-span-3\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,17],[[24,3,\\\"consultation-fee\\\"]],[[\\\"@min\\\",\\\"@onChange\\\",\\\"@value\\\",\\\"@label\\\",\\\"@id\\\"],[\\\"0\\\",[28,[37,16],[[30,0,[\\\"setStaffValue\\\"]],\\\"initialConsultationFee\\\"],null],[30,0,[\\\"model\\\",\\\"teamMember\\\",\\\"initialConsultationFee\\\"]],\\\"Initial consultation fee\\\",\\\"consultation-fee\\\"]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[10,0],[14,0,\\\"sm:col-span-3\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,19],[[24,3,\\\"phone-number\\\"]],[[\\\"@value\\\",\\\"@label\\\",\\\"@id\\\"],[[30,0,[\\\"model\\\",\\\"teamMember\\\",\\\"phone\\\"]],\\\"Phone number\\\",\\\"phone-number\\\"]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[10,0],[14,0,\\\"sm:col-span-3\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,19],[[24,3,\\\"alt-phone-number\\\"]],[[\\\"@value\\\",\\\"@label\\\",\\\"@id\\\"],[[30,0,[\\\"model\\\",\\\"teamMember\\\",\\\"alternativePhone\\\"]],\\\"Alternative phone number\\\",\\\"alt-phone-number\\\"]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[10,0],[14,0,\\\"sm:col-span-4\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,13],[[24,3,\\\"fax-number\\\"]],[[\\\"@type\\\",\\\"@value\\\",\\\"@label\\\",\\\"@id\\\"],[\\\"text\\\",[30,0,[\\\"model\\\",\\\"teamMember\\\",\\\"fax\\\"]],\\\"Fax number\\\",\\\"fax-number\\\"]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[10,0],[14,0,\\\"sm:col-span-4\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,13],[[24,3,\\\"pronoun\\\"]],[[\\\"@type\\\",\\\"@value\\\",\\\"@label\\\",\\\"@id\\\"],[\\\"text\\\",[30,0,[\\\"model\\\",\\\"teamMember\\\",\\\"pronoun\\\"]],\\\"Pronouns\\\",\\\"pronoun\\\"]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[10,0],[14,0,\\\"sm:col-span-4\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,13],[[24,3,\\\"client-facing-name\\\"]],[[\\\"@type\\\",\\\"@value\\\",\\\"@label\\\",\\\"@id\\\"],[\\\"text\\\",[30,0,[\\\"model\\\",\\\"teamMember\\\",\\\"clientFacingName\\\"]],\\\"Client-facing name\\\",\\\"client-facing-name\\\"]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[10,0],[14,0,\\\"sm:col-span-4\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,13],[[24,3,\\\"read-more-url\\\"]],[[\\\"@type\\\",\\\"@value\\\",\\\"@label\\\",\\\"@id\\\"],[\\\"text\\\",[30,0,[\\\"model\\\",\\\"teamMember\\\",\\\"readMoreURL\\\"]],\\\"Link to profile on your website\\\",\\\"read-more-url\\\"]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[10,0],[14,0,\\\"sm:col-span-full\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,20],[[24,\\\"rows\\\",\\\"6\\\"],[24,3,\\\"biography\\\"]],[[\\\"@label\\\",\\\"@value\\\",\\\"@id\\\"],[\\\"Brief biography\\\",[30,0,[\\\"model\\\",\\\"teamMember\\\",\\\"bio\\\"]],\\\"biography\\\"]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"py-6\\\"],[12],[1,\\\"\\\\n    \\\"],[10,2],[14,0,\\\"text-base font-semibold leading-7\\\"],[12],[1,\\\"Configuration\\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"grid gap-x-6 gap-y-8\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,21],[[30,0,[\\\"availablePracticeAreas\\\",\\\"length\\\"]],1],null],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"col-span-full\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"practice-areas\\\"],[14,0,\\\"block text-sm font-medium leading-6\\\"],[12],[1,\\\"Areas of practice\\\"],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"mt-2\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"model\\\",\\\"teamMember\\\",\\\"practiceAreas\\\"]],[[[42,[28,[37,23],[[28,[37,23],[[30,0,[\\\"availablePracticeAreas\\\"]]],null]],null],null,[[[1,\\\"                \\\"],[10,0],[12],[1,\\\"\\\\n                  \\\"],[8,[39,24],null,[[\\\"@value\\\",\\\"@label\\\",\\\"@id\\\"],[[28,[37,25],[[30,0,[\\\"model\\\",\\\"teamMember\\\",\\\"practiceAreas\\\"]],[30,2]],null],[30,2],[29,[[30,2],\\\"-checkbox\\\"]]]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n\\\"]],[2]],null],[1,\\\"              \\\"],[11,\\\"button\\\"],[24,0,\\\"mt-2 block text-sm text-brand-primary-color-rgb\\\"],[24,4,\\\"button\\\"],[4,[38,11],[\\\"click\\\",[30,0,[\\\"togglePracticeAreaOptions\\\"]]],null],[12],[1,\\\"Allow all practice areas\\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"              \\\"],[8,[39,24],null,[[\\\"@value\\\",\\\"@label\\\",\\\"@id\\\",\\\"@disabled\\\"],[[28,[37,27],[[30,0,[\\\"model\\\",\\\"teamMember\\\",\\\"practiceAreas\\\"]]],null],\\\"All\\\",\\\"all-checkbox\\\",true]],null],[1,\\\"\\\\n              \\\"],[11,\\\"button\\\"],[24,0,\\\"mt-2 block text-sm text-brand-primary-color-rgb\\\"],[24,4,\\\"button\\\"],[4,[38,11],[\\\"click\\\",[30,0,[\\\"togglePracticeAreaOptions\\\"]]],null],[12],[1,\\\"Specify practice areas\\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[10,0],[14,0,\\\"col-span-full\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"works-with\\\"],[14,0,\\\"block text-sm font-medium leading-6\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,18],[[30,0,[\\\"model\\\",\\\"teamMember\\\",\\\"personType\\\"]],\\\"lawyer\\\"],null],[[[1,\\\"            Assistants\\\\n\\\"]],[]],[[[1,\\\"            Assists\\\\n\\\"]],[]]],[1,\\\"        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"mt-2\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,28],null,[[\\\"@teamMember\\\"],[[30,0,[\\\"model\\\",\\\"teamMember\\\"]]]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[51,[30,0,[\\\"model\\\",\\\"isNew\\\"]]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"col-span-full\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"disable-team-member\\\"],[14,0,\\\"block text-sm font-medium leading-6\\\"],[12],[1,\\\"Archive \\\"],[1,[28,[35,1],[[30,0,[\\\"model\\\",\\\"teamMember\\\",\\\"name\\\"]],\\\"Unnamed team member\\\"],null]],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"mt-2\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,30],null,[[\\\"@model\\\",\\\"@id\\\"],[[30,0,[\\\"model\\\",\\\"teamMember\\\",\\\"disabled\\\"]],\\\"disable-team-member\\\"]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"col-span-full\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showDeleteOptions\\\"]],[[[1,\\\"            \\\"],[10,2],[14,0,\\\"col-span-2 block text-sm leading-6\\\"],[12],[1,\\\"\\\\n              Deleting a team member removes their details from the system forever. This is best used when a team member permanently departs from the firm.\\\\n              \\\"],[10,1],[14,0,\\\"font-medium\\\"],[12],[1,\\\"Are you sure?\\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"flex justify-end gap-2\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,31],[[24,0,\\\"text-sm font-semibold\\\"],[4,[38,11],[\\\"click\\\",[30,0,[\\\"deleteTeamMember\\\"]]],null]],[[\\\"@variant\\\"],[\\\"outlined\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                Yes\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n              \\\"],[8,[39,31],[[24,0,\\\"text-sm font-semibold\\\"],[4,[38,11],[\\\"click\\\",[30,0,[\\\"toggleDelete\\\"]]],null]],[[\\\"@variant\\\"],[\\\"outlined\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                Cancel\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"            \\\"],[8,[39,31],[[24,0,\\\"ml-auto flex items-center justify-center gap-2 text-sm font-semibold text-red-500\\\"],[4,[38,11],[\\\"click\\\",[30,0,[\\\"toggleDelete\\\"]]],null]],[[\\\"@variant\\\"],[\\\"outlined\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[8,[39,8],[[24,0,\\\"size-4\\\"]],[[\\\"@icon\\\"],[\\\"trash\\\"]],null],[1,\\\"\\\\n              Delete\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"fileIsSafe\\\",\\\"practiceArea\\\"],false,[\\\"v2/slide-over\\\",\\\"or\\\",\\\"div\\\",\\\"label\\\",\\\"file-virus-scan-status\\\",\\\"if\\\",\\\"and\\\",\\\"img\\\",\\\"v2/svg-icon\\\",\\\"span\\\",\\\"input\\\",\\\"on\\\",\\\"p\\\",\\\"v2/textline\\\",\\\"v2/email-input\\\",\\\"v2/select-box\\\",\\\"fn\\\",\\\"v2/money-input\\\",\\\"eq\\\",\\\"v2/phone-input\\\",\\\"v2/textarea\\\",\\\"gt\\\",\\\"each\\\",\\\"-track-array\\\",\\\"v2/checkbox\\\",\\\"get\\\",\\\"button\\\",\\\"not\\\",\\\"v2/team-mapping-select\\\",\\\"unless\\\",\\\"v2/toggle\\\",\\\"v2/button\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/admin/team/edit.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/auth/first-login\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"flex min-h-full flex-col justify-center py-12 sm:px-6 lg:px-8\">\n    <div class=\"sm:mx-auto sm:w-full sm:max-w-md\">\n      <h2 class=\"text-center text-2xl font-bold leading-9 tracking-tight text-gray-900\">Change your password</h2>\n    </div>\n  \n    <div class=\"mt-2 sm:mx-auto sm:w-full sm:max-w-[480px]\">\n      <div class=\"bg-white px-6 py-12 sm:rounded-lg sm:px-12\">\n        <p>\n          To make sure your account is secure, you now need to change your password.\n        </p>\n        <form class=\"space-y-6\" {{on \"submit\" this.changePassword}}>\n          <div>\n            {{! Hidden username field here per Chrome suggestion for accessibility/password managers }}\n            <input type=\"text\" name=\"email\" value={{this.cognitoUser.user.username}} autocomplete=\"username email\" class=\"hidden\" />\n          </div>\n  \n          <V2::NewPassword @newPassword={{this.newPassword}} @setValidation={{this.setValidation}} />\n  \n          {{#if this.errorMessage}}\n            <div class=\"mb-4 mt-4 flex items-center rounded-lg border border-red-300 bg-red-50 p-4 text-sm text-red-800\" role=\"alert\">\n              <V2::SvgIcon @icon=\"circle-info\" class=\"me-3 inline size-4 flex-shrink-0\" />\n              <span class=\"sr-only\">Info</span>\n              <div>\n                <span class=\"font-medium\">{{this.errorMessage}}</span>\n              </div>\n            </div>\n          {{/if}}\n  \n          <div>\n            <button\n              type=\"submit\"\n              disabled={{not this.isPasswordValid}}\n              class=\"flex w-full items-center justify-center rounded-md bg-brand-primary-color-rgb px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-brand-primary-color-rgb/90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand-primary-color-rgb disabled:cursor-not-allowed disabled:opacity-50\"\n            >\n              {{#if this.loading}}\n                <V2::SvgIcon @icon=\"spinner-third\" class=\"me-2 size-4 animate-spin\" role=\"status\" />\n              {{/if}}\n              <span class={{if this.loading \"pr-6\"}}>Change password</span>\n            </button>\n          </div>\n        </form>\n      </div>\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"KWRwkSp7\",\n    \"block\": \"[[[10,0],[14,0,\\\"flex min-h-full flex-col justify-center py-12 sm:px-6 lg:px-8\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"sm:mx-auto sm:w-full sm:max-w-md\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"h2\\\"],[14,0,\\\"text-center text-2xl font-bold leading-9 tracking-tight text-gray-900\\\"],[12],[1,\\\"Change your password\\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"mt-2 sm:mx-auto sm:w-full sm:max-w-[480px]\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"bg-white px-6 py-12 sm:rounded-lg sm:px-12\\\"],[12],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        To make sure your account is secure, you now need to change your password.\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[11,\\\"form\\\"],[24,0,\\\"space-y-6\\\"],[4,[38,4],[\\\"submit\\\",[30,0,[\\\"changePassword\\\"]]],null],[12],[1,\\\"\\\\n        \\\"],[10,0],[12],[1,\\\"\\\\n\\\"],[1,\\\"          \\\"],[10,\\\"input\\\"],[14,3,\\\"email\\\"],[15,2,[30,0,[\\\"cognitoUser\\\",\\\"user\\\",\\\"username\\\"]]],[14,\\\"autocomplete\\\",\\\"username email\\\"],[14,0,\\\"hidden\\\"],[14,4,\\\"text\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,6],null,[[\\\"@newPassword\\\",\\\"@setValidation\\\"],[[30,0,[\\\"newPassword\\\"]],[30,0,[\\\"setValidation\\\"]]]],null],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"errorMessage\\\"]],[[[1,\\\"          \\\"],[10,0],[14,0,\\\"mb-4 mt-4 flex items-center rounded-lg border border-red-300 bg-red-50 p-4 text-sm text-red-800\\\"],[14,\\\"role\\\",\\\"alert\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,8],[[24,0,\\\"me-3 inline size-4 flex-shrink-0\\\"]],[[\\\"@icon\\\"],[\\\"circle-info\\\"]],null],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Info\\\"],[13],[1,\\\"\\\\n            \\\"],[10,0],[12],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"font-medium\\\"],[12],[1,[30,0,[\\\"errorMessage\\\"]]],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n        \\\"],[10,0],[12],[1,\\\"\\\\n          \\\"],[10,\\\"button\\\"],[15,\\\"disabled\\\",[28,[37,11],[[30,0,[\\\"isPasswordValid\\\"]]],null]],[14,0,\\\"flex w-full items-center justify-center rounded-md bg-brand-primary-color-rgb px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-brand-primary-color-rgb/90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand-primary-color-rgb disabled:cursor-not-allowed disabled:opacity-50\\\"],[14,4,\\\"submit\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"loading\\\"]],[[[1,\\\"              \\\"],[8,[39,8],[[24,0,\\\"me-2 size-4 animate-spin\\\"],[24,\\\"role\\\",\\\"status\\\"]],[[\\\"@icon\\\"],[\\\"spinner-third\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[10,1],[15,0,[52,[30,0,[\\\"loading\\\"]],\\\"pr-6\\\"]],[12],[1,\\\"Change password\\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[],false,[\\\"div\\\",\\\"h2\\\",\\\"p\\\",\\\"form\\\",\\\"on\\\",\\\"input\\\",\\\"v2/new-password\\\",\\\"if\\\",\\\"v2/svg-icon\\\",\\\"span\\\",\\\"button\\\",\\\"not\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/auth/first-login.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/auth/forgot-password\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"flex min-h-full flex-col justify-center py-12 sm:px-6 lg:px-8\">\n    <div class=\"sm:mx-auto sm:w-full sm:max-w-md\">\n      <h2 class=\"text-center text-2xl font-bold leading-9 tracking-tight text-gray-900\">Reset your password</h2>\n    </div>\n  \n    <div class=\"mt-2 sm:mx-auto sm:w-full sm:max-w-[480px]\">\n      <div class=\"bg-white px-6 py-10 sm:rounded-lg sm:px-12\">\n        {{#if this.validationCode}}\n          <div class=\"form-group\">\n            <form {{on \"submit\" this.confirmPasswordChange}} class=\"mt-4 space-y-6\" aria-label=\"new password form\">\n              {{! Hidden username field here per Chrome suggestion for accessibility/password managers }}\n              <input type=\"text\" name=\"email\" value={{this.email}} autocomplete=\"username email\" class=\"hidden\" />\n  \n              <V2::NewPassword @newPassword={{this.newPassword}} @setValidation={{this.setValidation}} />\n              <div>\n                <button\n                  type=\"submit\"\n                  disabled={{not this.isPasswordValid}}\n                  class=\"flex w-full items-center justify-center rounded-md bg-brand-primary-color-rgb px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-brand-primary-color-rgb/90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand-primary-color-rgb disabled:cursor-not-allowed disabled:opacity-50\"\n                >\n                  {{#if this.loading}}\n                    <V2::SvgIcon @icon=\"spinner-third\" class=\"me-2 size-4 animate-spin\" role=\"status\" />\n                  {{/if}}\n                  <span class={{if this.loading \"pr-6\"}}>Change password</span>\n                </button>\n              </div>\n            </form>\n          </div>\n        {{else}}\n          <div>\n            <p>Enter your email address below, and we'll send you a link you can use to reset your password.</p>\n            <form {{on \"submit\" this.sendResetPasswordEmail}} class=\"mt-4 space-y-6\">\n              <V2::Textline @type=\"email\" @value={{this.emailAddress}} @label=\"Email address\" @required={{true}} @id=\"email\" name=\"email\" autocomplete=\"email\" />\n  \n              <div>\n                <button\n                  type=\"submit\"\n                  class=\"flex w-full items-center justify-center rounded-md bg-brand-primary-color-rgb px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-brand-primary-color-rgb/90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand-primary-color-rgb\"\n                >\n                  {{#if this.loading}}\n                    <V2::SvgIcon @icon=\"spinner-third\" class=\"me-2 size-4 animate-spin\" role=\"status\" />\n                  {{/if}}\n                  <span class={{if this.loading \"pr-6\"}}>Reset password</span>\n                </button>\n              </div>\n            </form>\n          </div>\n        {{/if}}\n  \n        <p class=\"mt-3 text-center text-sm\">Return to <LinkTo @route=\"v2.auth.login\" class=\"text-blue-600 hover:underline\">Login</LinkTo></p>\n  \n        {{#if this.errorMessage}}\n          <div class=\"mb-4 mt-4 flex items-center rounded-lg border border-red-300 bg-red-50 p-4 text-sm text-red-800\" role=\"alert\">\n            <V2::SvgIcon @icon=\"circle-info\" class=\"me-3 inline size-4 flex-shrink-0\" />\n            <span class=\"sr-only\">Info</span>\n            <div>\n              <span class=\"font-medium\">{{this.errorMessage}}</span>\n            </div>\n          </div>\n        {{/if}}\n  \n        {{#if this.emailSent}}\n          <div class=\"mt-6\">\n            <p>\n              <i class=\"fal fa-check-circle\" />\n              An email has been sent that will include instructions on how to reset your password. Please check your spam or junk mail folder if it doesn't arrive within a few\n              minutes.\n            </p>\n          </div>\n        {{/if}}\n      </div>\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"N19Os+RL\",\n    \"block\": \"[[[10,0],[14,0,\\\"flex min-h-full flex-col justify-center py-12 sm:px-6 lg:px-8\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"sm:mx-auto sm:w-full sm:max-w-md\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"h2\\\"],[14,0,\\\"text-center text-2xl font-bold leading-9 tracking-tight text-gray-900\\\"],[12],[1,\\\"Reset your password\\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"mt-2 sm:mx-auto sm:w-full sm:max-w-[480px]\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"bg-white px-6 py-10 sm:rounded-lg sm:px-12\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"validationCode\\\"]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"form-group\\\"],[12],[1,\\\"\\\\n          \\\"],[11,\\\"form\\\"],[24,0,\\\"mt-4 space-y-6\\\"],[24,\\\"aria-label\\\",\\\"new password form\\\"],[4,[38,4],[\\\"submit\\\",[30,0,[\\\"confirmPasswordChange\\\"]]],null],[12],[1,\\\"\\\\n\\\"],[1,\\\"            \\\"],[10,\\\"input\\\"],[14,3,\\\"email\\\"],[15,2,[30,0,[\\\"email\\\"]]],[14,\\\"autocomplete\\\",\\\"username email\\\"],[14,0,\\\"hidden\\\"],[14,4,\\\"text\\\"],[12],[13],[1,\\\"\\\\n\\\\n            \\\"],[8,[39,6],null,[[\\\"@newPassword\\\",\\\"@setValidation\\\"],[[30,0,[\\\"newPassword\\\"]],[30,0,[\\\"setValidation\\\"]]]],null],[1,\\\"\\\\n            \\\"],[10,0],[12],[1,\\\"\\\\n              \\\"],[10,\\\"button\\\"],[15,\\\"disabled\\\",[28,[37,8],[[30,0,[\\\"isPasswordValid\\\"]]],null]],[14,0,\\\"flex w-full items-center justify-center rounded-md bg-brand-primary-color-rgb px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-brand-primary-color-rgb/90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand-primary-color-rgb disabled:cursor-not-allowed disabled:opacity-50\\\"],[14,4,\\\"submit\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"loading\\\"]],[[[1,\\\"                  \\\"],[8,[39,9],[[24,0,\\\"me-2 size-4 animate-spin\\\"],[24,\\\"role\\\",\\\"status\\\"]],[[\\\"@icon\\\"],[\\\"spinner-third\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                \\\"],[10,1],[15,0,[52,[30,0,[\\\"loading\\\"]],\\\"pr-6\\\"]],[12],[1,\\\"Change password\\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,0],[12],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"Enter your email address below, and we'll send you a link you can use to reset your password.\\\"],[13],[1,\\\"\\\\n          \\\"],[11,\\\"form\\\"],[24,0,\\\"mt-4 space-y-6\\\"],[4,[38,4],[\\\"submit\\\",[30,0,[\\\"sendResetPasswordEmail\\\"]]],null],[12],[1,\\\"\\\\n            \\\"],[8,[39,12],[[24,3,\\\"email\\\"],[24,\\\"autocomplete\\\",\\\"email\\\"]],[[\\\"@type\\\",\\\"@value\\\",\\\"@label\\\",\\\"@required\\\",\\\"@id\\\"],[\\\"email\\\",[30,0,[\\\"emailAddress\\\"]],\\\"Email address\\\",true,\\\"email\\\"]],null],[1,\\\"\\\\n\\\\n            \\\"],[10,0],[12],[1,\\\"\\\\n              \\\"],[10,\\\"button\\\"],[14,0,\\\"flex w-full items-center justify-center rounded-md bg-brand-primary-color-rgb px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-brand-primary-color-rgb/90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand-primary-color-rgb\\\"],[14,4,\\\"submit\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"loading\\\"]],[[[1,\\\"                  \\\"],[8,[39,9],[[24,0,\\\"me-2 size-4 animate-spin\\\"],[24,\\\"role\\\",\\\"status\\\"]],[[\\\"@icon\\\"],[\\\"spinner-third\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"                \\\"],[10,1],[15,0,[52,[30,0,[\\\"loading\\\"]],\\\"pr-6\\\"]],[12],[1,\\\"Reset password\\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"\\\\n      \\\"],[10,2],[14,0,\\\"mt-3 text-center text-sm\\\"],[12],[1,\\\"Return to \\\"],[8,[39,13],[[24,0,\\\"text-blue-600 hover:underline\\\"]],[[\\\"@route\\\"],[\\\"v2.auth.login\\\"]],[[\\\"default\\\"],[[[[1,\\\"Login\\\"]],[]]]]],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"errorMessage\\\"]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"mb-4 mt-4 flex items-center rounded-lg border border-red-300 bg-red-50 p-4 text-sm text-red-800\\\"],[14,\\\"role\\\",\\\"alert\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,9],[[24,0,\\\"me-3 inline size-4 flex-shrink-0\\\"]],[[\\\"@icon\\\"],[\\\"circle-info\\\"]],null],[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Info\\\"],[13],[1,\\\"\\\\n          \\\"],[10,0],[12],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"font-medium\\\"],[12],[1,[30,0,[\\\"errorMessage\\\"]]],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"emailSent\\\"]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"mt-6\\\"],[12],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"\\\\n            An email has been sent that will include instructions on how to reset your password. Please check your spam or junk mail folder if it doesn't arrive within a few\\\\n            minutes.\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[],false,[\\\"div\\\",\\\"h2\\\",\\\"if\\\",\\\"form\\\",\\\"on\\\",\\\"input\\\",\\\"v2/new-password\\\",\\\"button\\\",\\\"not\\\",\\\"v2/svg-icon\\\",\\\"span\\\",\\\"p\\\",\\\"v2/textline\\\",\\\"link-to\\\",\\\"i\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/auth/forgot-password.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/auth/login\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"flex min-h-full flex-col justify-center py-8 sm:px-6 lg:px-8\">\n    <div class=\"sm:mx-auto sm:w-full sm:max-w-md\">\n      <h2 class=\"mt-6 text-center text-2xl font-bold leading-9 tracking-tight text-gray-900\">Settify Admin Sign In</h2>\n    </div>\n  \n    <div class=\"sm:mx-auto sm:w-full sm:max-w-[480px]\">\n      <div class=\"bg-white px-6 py-12 sm:rounded-lg sm:px-12\">\n        {{#if (eq this.status \"password-changed\")}}\n          <p class=\"mb-4\">\n            <i class=\"fal fa-check-circle\" />\n            Your password has been reset successfully.\n          </p>\n        {{/if}}\n        {{#if this.fromValidationLink}}\n          <p class=\"mb-4\">\n            <i class=\"fal fa-check-circle\" />\n            Your account has been verified. Enter your password below to pick up where you left off.\n          </p>\n        {{/if}}\n        <form {{on \"submit\" (if this.totpRequired this.verifyTOTP this.authenticate)}} class=\"space-y-6\">\n  \n          <V2::Textline @value={{this.identification}} @id=\"email\" name=\"email\" @type=\"email\" autocomplete=\"email\" @required={{true}} @label=\"Email address\" />\n  \n          <V2::Textline @value={{this.password}} @id=\"password\" name=\"password\" @type=\"password\" autocomplete=\"current-password\" @required={{true}} @label=\"Password\" />\n  \n          <div class=\"mt-4 flex items-center justify-end text-sm leading-6\">\n            <LinkTo @route=\"v2.auth.forgot-password\" class=\"font-semibold text-brand-primary-color-rgb hover:text-brand-primary-color-rgb/90\">Forgot password?</LinkTo>\n          </div>\n  \n          {{#if this.totpRequired}}\n            <div>\n              <p>Please enter your temporary one-time password (TOTP) from your mobile MFA app (eg, Google Authenticator, Authy, OTP Auth).</p>\n              <V2::Textline @value={{this.totp}} @id=\"totp\" name=\"totp\" @type=\"text\" autocomplete=\"one-time-code\" @required={{true}} @onInsert={{this.focusTOTPField}} />\n            </div>\n          {{/if}}\n  \n          {{#if this.errorMessage}}\n            <div class=\"mb-4 mt-4 flex items-center rounded-lg border border-red-300 bg-red-50 p-4 text-sm text-red-800\" role=\"alert\">\n              <V2::SvgIcon @icon=\"circle-info\" class=\"me-3 inline size-4 flex-shrink-0\" />\n              <span class=\"sr-only\">Info</span>\n              <div>\n                <span class=\"font-medium\">{{this.errorMessage}}</span>\n              </div>\n            </div>\n          {{/if}}\n  \n          <div>\n            <V2::Button @variant=\"solid\" type=\"submit\" class=\"login-button flex w-full items-center justify-center gap-2\">\n              {{#if this.loading}}\n                <V2::SvgIcon @icon=\"spinner-third\" class=\"size-4 animate-spin\" role=\"status\" />\n                Signing in...\n              {{else}}\n                Sign In\n              {{/if}}\n            </V2::Button>\n          </div>\n        </form>\n      </div>\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"IwV3RIGK\",\n    \"block\": \"[[[10,0],[14,0,\\\"flex min-h-full flex-col justify-center py-8 sm:px-6 lg:px-8\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"sm:mx-auto sm:w-full sm:max-w-md\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"h2\\\"],[14,0,\\\"mt-6 text-center text-2xl font-bold leading-9 tracking-tight text-gray-900\\\"],[12],[1,\\\"Settify Admin Sign In\\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"sm:mx-auto sm:w-full sm:max-w-[480px]\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"bg-white px-6 py-12 sm:rounded-lg sm:px-12\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,3],[[30,0,[\\\"status\\\"]],\\\"password-changed\\\"],null],[[[1,\\\"        \\\"],[10,2],[14,0,\\\"mb-4\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"\\\\n          Your password has been reset successfully.\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,0,[\\\"fromValidationLink\\\"]],[[[1,\\\"        \\\"],[10,2],[14,0,\\\"mb-4\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"i\\\"],[14,0,\\\"fal fa-check-circle\\\"],[12],[13],[1,\\\"\\\\n          Your account has been verified. Enter your password below to pick up where you left off.\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[11,\\\"form\\\"],[24,0,\\\"space-y-6\\\"],[4,[38,7],[\\\"submit\\\",[52,[30,0,[\\\"totpRequired\\\"]],[30,0,[\\\"verifyTOTP\\\"]],[30,0,[\\\"authenticate\\\"]]]],null],[12],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,8],[[24,3,\\\"email\\\"],[24,\\\"autocomplete\\\",\\\"email\\\"]],[[\\\"@value\\\",\\\"@id\\\",\\\"@type\\\",\\\"@required\\\",\\\"@label\\\"],[[30,0,[\\\"identification\\\"]],\\\"email\\\",\\\"email\\\",true,\\\"Email address\\\"]],null],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,8],[[24,3,\\\"password\\\"],[24,\\\"autocomplete\\\",\\\"current-password\\\"]],[[\\\"@value\\\",\\\"@id\\\",\\\"@type\\\",\\\"@required\\\",\\\"@label\\\"],[[30,0,[\\\"password\\\"]],\\\"password\\\",\\\"password\\\",true,\\\"Password\\\"]],null],[1,\\\"\\\\n\\\\n        \\\"],[10,0],[14,0,\\\"mt-4 flex items-center justify-end text-sm leading-6\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,9],[[24,0,\\\"font-semibold text-brand-primary-color-rgb hover:text-brand-primary-color-rgb/90\\\"]],[[\\\"@route\\\"],[\\\"v2.auth.forgot-password\\\"]],[[\\\"default\\\"],[[[[1,\\\"Forgot password?\\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"totpRequired\\\"]],[[[1,\\\"          \\\"],[10,0],[12],[1,\\\"\\\\n            \\\"],[10,2],[12],[1,\\\"Please enter your temporary one-time password (TOTP) from your mobile MFA app (eg, Google Authenticator, Authy, OTP Auth).\\\"],[13],[1,\\\"\\\\n            \\\"],[8,[39,8],[[24,3,\\\"totp\\\"],[24,\\\"autocomplete\\\",\\\"one-time-code\\\"]],[[\\\"@value\\\",\\\"@id\\\",\\\"@type\\\",\\\"@required\\\",\\\"@onInsert\\\"],[[30,0,[\\\"totp\\\"]],\\\"totp\\\",\\\"text\\\",true,[30,0,[\\\"focusTOTPField\\\"]]]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"errorMessage\\\"]],[[[1,\\\"          \\\"],[10,0],[14,0,\\\"mb-4 mt-4 flex items-center rounded-lg border border-red-300 bg-red-50 p-4 text-sm text-red-800\\\"],[14,\\\"role\\\",\\\"alert\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,10],[[24,0,\\\"me-3 inline size-4 flex-shrink-0\\\"]],[[\\\"@icon\\\"],[\\\"circle-info\\\"]],null],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Info\\\"],[13],[1,\\\"\\\\n            \\\"],[10,0],[12],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"font-medium\\\"],[12],[1,[30,0,[\\\"errorMessage\\\"]]],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n        \\\"],[10,0],[12],[1,\\\"\\\\n          \\\"],[8,[39,12],[[24,0,\\\"login-button flex w-full items-center justify-center gap-2\\\"],[24,4,\\\"submit\\\"]],[[\\\"@variant\\\"],[\\\"solid\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"loading\\\"]],[[[1,\\\"              \\\"],[8,[39,10],[[24,0,\\\"size-4 animate-spin\\\"],[24,\\\"role\\\",\\\"status\\\"]],[[\\\"@icon\\\"],[\\\"spinner-third\\\"]],null],[1,\\\"\\\\n              Signing in...\\\\n\\\"]],[]],[[[1,\\\"              Sign In\\\\n\\\"]],[]]],[1,\\\"          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[],false,[\\\"div\\\",\\\"h2\\\",\\\"if\\\",\\\"eq\\\",\\\"p\\\",\\\"i\\\",\\\"form\\\",\\\"on\\\",\\\"v2/textline\\\",\\\"link-to\\\",\\\"v2/svg-icon\\\",\\\"span\\\",\\\"v2/button\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/auth/login.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/auth/logout\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"flex min-h-full flex-col justify-center py-12 sm:px-6 lg:px-8\">\n    <div class=\"sm:mx-auto sm:w-full sm:max-w-md\">\n      <h2 class=\"text-center text-2xl font-bold leading-9 tracking-tight text-gray-900\">Sign out of your account</h2>\n    </div>\n  \n    <div class=\"mt-2 sm:mx-auto sm:w-full sm:max-w-[480px]\">\n      <div class=\"bg-white px-6 py-12 shadow sm:rounded-lg sm:px-12\">\n        <form class=\"space-y-6\" {{on \"submit\" this.invalidateSession}}>\n          <div>\n            <button\n              type=\"submit\"\n              class=\"flex w-full justify-center rounded-md bg-brand-primary-color-rgb px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-brand-primary-color-rgb/90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand-primary-color-rgb\"\n            >Sign Out</button>\n          </div>\n        </form>\n      </div>\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"u+x9M+w6\",\n    \"block\": \"[[[10,0],[14,0,\\\"flex min-h-full flex-col justify-center py-12 sm:px-6 lg:px-8\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"sm:mx-auto sm:w-full sm:max-w-md\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"h2\\\"],[14,0,\\\"text-center text-2xl font-bold leading-9 tracking-tight text-gray-900\\\"],[12],[1,\\\"Sign out of your account\\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"mt-2 sm:mx-auto sm:w-full sm:max-w-[480px]\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"bg-white px-6 py-12 shadow sm:rounded-lg sm:px-12\\\"],[12],[1,\\\"\\\\n      \\\"],[11,\\\"form\\\"],[24,0,\\\"space-y-6\\\"],[4,[38,3],[\\\"submit\\\",[30,0,[\\\"invalidateSession\\\"]]],null],[12],[1,\\\"\\\\n        \\\"],[10,0],[12],[1,\\\"\\\\n          \\\"],[10,\\\"button\\\"],[14,0,\\\"flex w-full justify-center rounded-md bg-brand-primary-color-rgb px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-brand-primary-color-rgb/90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand-primary-color-rgb\\\"],[14,4,\\\"submit\\\"],[12],[1,\\\"Sign Out\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[],false,[\\\"div\\\",\\\"h2\\\",\\\"form\\\",\\\"on\\\",\\\"button\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/auth/logout.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/auth/mfa\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"flex min-h-full flex-col justify-center py-12 sm:px-6 lg:px-8\">\n  \n    {{#if this.session.data.authenticated.mfaEnabled}}\n      <div class=\"flex items-center justify-center sm:mx-auto sm:w-full sm:max-w-md\">\n        <V2::SvgIcon @icon=\"check\" class=\"size-8 text-brand-primary-color-rgb\" />\n        <h2 class=\"pr-6 text-center text-2xl font-bold leading-9 tracking-tight text-gray-900\">MFA Enabled</h2>\n      </div>\n      <div class=\"mt-4 sm:mx-auto sm:w-full sm:max-w-[480px]\">\n        <p>\n          Multi-Factor Authentication is already enabled for this account.\n        </p>\n      </div>\n    {{else}}\n      <div class=\"sm:mx-auto sm:w-full sm:max-w-md\">\n        <h2 class=\"text-center text-2xl font-bold leading-9 tracking-tight text-gray-900\">Enable MFA</h2>\n      </div>\n      <div class=\"sm:mx-auto sm:w-full sm:max-w-[480px]\">\n        <div class=\"bg-white px-6 py-12 sm:rounded-lg sm:px-12\">\n  \n          <V2::MfaCode />\n  \n          <form {{on \"submit\" this.completeMFASetup}} class=\"space-y-6\">\n            <V2::Textline @type=\"text\" @value={{this.mfaSetupResponse}} @label=\"MFA Code\" @required={{true}} @id=\"mfacode\" name=\"mfacode\" />\n  \n            {{#if this.errorMessage}}\n              <div class=\"mb-4 mt-4 flex items-center rounded-lg border border-red-300 bg-red-50 p-4 text-sm text-red-800\" role=\"alert\">\n                <V2::SvgIcon @icon=\"circle-info\" class=\"me-3 inline size-4 flex-shrink-0\" />\n                <span class=\"sr-only\">Info</span>\n                <div>\n                  <span class=\"font-medium\">{{this.errorMessage}}</span>\n                </div>\n              </div>\n            {{/if}}\n  \n            <div class=\"mb-10 mt-10 flex items-center justify-center gap-x-6\">\n              <button\n                type=\"submit\"\n                class=\"flex items-center justify-center rounded-md bg-brand-primary-color-rgb px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-brand-primary-color-rgb/90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand-primary-color-rgb\"\n              >\n                {{#if this.loading}}\n                  <V2::SvgIcon @icon=\"spinner-third\" class=\"me-2 size-4 animate-spin\" role=\"status\" />\n                {{/if}}\n                <span>Enable MFA</span>\n              </button>\n              <a href=\"#\" class=\"text-sm font-semibold leading-6 text-gray-900\">Learn more <span aria-hidden=\"true\">→</span></a>\n            </div>\n          </form>\n        </div>\n      </div>\n    {{/if}}\n  </div>\n  \n  */\n  {\n    \"id\": \"yywYoZv1\",\n    \"block\": \"[[[10,0],[14,0,\\\"flex min-h-full flex-col justify-center py-12 sm:px-6 lg:px-8\\\"],[12],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"session\\\",\\\"data\\\",\\\"authenticated\\\",\\\"mfaEnabled\\\"]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"flex items-center justify-center sm:mx-auto sm:w-full sm:max-w-md\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,2],[[24,0,\\\"size-8 text-brand-primary-color-rgb\\\"]],[[\\\"@icon\\\"],[\\\"check\\\"]],null],[1,\\\"\\\\n      \\\"],[10,\\\"h2\\\"],[14,0,\\\"pr-6 text-center text-2xl font-bold leading-9 tracking-tight text-gray-900\\\"],[12],[1,\\\"MFA Enabled\\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"mt-4 sm:mx-auto sm:w-full sm:max-w-[480px]\\\"],[12],[1,\\\"\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        Multi-Factor Authentication is already enabled for this account.\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"sm:mx-auto sm:w-full sm:max-w-md\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"h2\\\"],[14,0,\\\"text-center text-2xl font-bold leading-9 tracking-tight text-gray-900\\\"],[12],[1,\\\"Enable MFA\\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"sm:mx-auto sm:w-full sm:max-w-[480px]\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"bg-white px-6 py-12 sm:rounded-lg sm:px-12\\\"],[12],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,5],null,null,null],[1,\\\"\\\\n\\\\n        \\\"],[11,\\\"form\\\"],[24,0,\\\"space-y-6\\\"],[4,[38,7],[\\\"submit\\\",[30,0,[\\\"completeMFASetup\\\"]]],null],[12],[1,\\\"\\\\n          \\\"],[8,[39,8],[[24,3,\\\"mfacode\\\"]],[[\\\"@type\\\",\\\"@value\\\",\\\"@label\\\",\\\"@required\\\",\\\"@id\\\"],[\\\"text\\\",[30,0,[\\\"mfaSetupResponse\\\"]],\\\"MFA Code\\\",true,\\\"mfacode\\\"]],null],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"errorMessage\\\"]],[[[1,\\\"            \\\"],[10,0],[14,0,\\\"mb-4 mt-4 flex items-center rounded-lg border border-red-300 bg-red-50 p-4 text-sm text-red-800\\\"],[14,\\\"role\\\",\\\"alert\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,2],[[24,0,\\\"me-3 inline size-4 flex-shrink-0\\\"]],[[\\\"@icon\\\"],[\\\"circle-info\\\"]],null],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Info\\\"],[13],[1,\\\"\\\\n              \\\"],[10,0],[12],[1,\\\"\\\\n                \\\"],[10,1],[14,0,\\\"font-medium\\\"],[12],[1,[30,0,[\\\"errorMessage\\\"]]],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"mb-10 mt-10 flex items-center justify-center gap-x-6\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"button\\\"],[14,0,\\\"flex items-center justify-center rounded-md bg-brand-primary-color-rgb px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-brand-primary-color-rgb/90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand-primary-color-rgb\\\"],[14,4,\\\"submit\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"loading\\\"]],[[[1,\\\"                \\\"],[8,[39,2],[[24,0,\\\"me-2 size-4 animate-spin\\\"],[24,\\\"role\\\",\\\"status\\\"]],[[\\\"@icon\\\"],[\\\"spinner-third\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[10,1],[12],[1,\\\"Enable MFA\\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,3],[14,6,\\\"#\\\"],[14,0,\\\"text-sm font-semibold leading-6 text-gray-900\\\"],[12],[1,\\\"Learn more \\\"],[10,1],[14,\\\"aria-hidden\\\",\\\"true\\\"],[12],[1,\\\"→\\\"],[13],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[13],[1,\\\"\\\\n\\\"]],[],false,[\\\"div\\\",\\\"if\\\",\\\"v2/svg-icon\\\",\\\"h2\\\",\\\"p\\\",\\\"v2/mfa-code\\\",\\\"form\\\",\\\"on\\\",\\\"v2/textline\\\",\\\"span\\\",\\\"button\\\",\\\"a\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/auth/mfa.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/auth/password\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"flex min-h-full flex-col justify-center py-12 sm:px-6 lg:px-8\">\n    <div class=\"sm:mx-auto sm:w-full sm:max-w-md\">\n      <h2 class=\"text-center text-2xl font-bold leading-9 tracking-tight text-gray-900\">Change your password</h2>\n    </div>\n  \n    <div class=\"mt-2 sm:mx-auto sm:w-full sm:max-w-[480px]\">\n      <div class=\"bg-white px-6 py-12 sm:rounded-lg sm:px-12\">\n        <form class=\"space-y-6\" {{on \"submit\" this.changePassword}}>\n          <div>\n            {{! Hidden username field here per Chrome suggestion for accessibility/password managers }}\n            <input type=\"text\" name=\"email\" value={{this.cognitoUser.user.username}} autocomplete=\"username email\" class=\"hidden\" />\n            <V2::Textline @type=\"password\" @value={{this.currentPassword}} @label=\"Current password\" @required={{true}} @id=\"current-password\" autocomplete=\"current-password\" />\n          </div>\n  \n          <V2::NewPassword @newPassword={{this.newPassword}} @setValidation={{this.setValidation}} />\n  \n          {{#if this.errorMessage}}\n            <div class=\"mb-4 mt-4 flex items-center rounded-lg border border-red-300 bg-red-50 p-4 text-sm text-red-800\" role=\"alert\">\n              <V2::SvgIcon @icon=\"circle-info\" class=\"me-3 inline size-4 flex-shrink-0\" />\n              <span class=\"sr-only\">Info</span>\n              <div>\n                <span class=\"font-medium\">{{this.errorMessage}}</span>\n              </div>\n            </div>\n          {{/if}}\n  \n          {{#if this.success}}\n            <div class=\"rounded-lg border border-green-300 bg-green-50 p-4\">\n              <div class=\"flex\">\n                <V2::SvgIcon @icon=\"circle-check\" class=\"size-4 flex-shrink-0 text-green-500\" />\n                <div class=\"ml-3\">\n                  <h3 class=\"text-sm font-medium text-green-800\">Success!</h3>\n                  <div class=\"mt-2 text-sm text-green-700\">\n                    <p>Password has been changed.</p>\n                  </div>\n                  <div class=\"mt-4\">\n                    <div class=\"-mx-2 -my-1.5 flex\">\n                      <LinkTo\n                        @route=\"v2.index\"\n                        class=\"rounded-md bg-green-50 px-2 py-1.5 text-sm font-medium text-green-800 hover:bg-green-100 focus:outline-none focus:ring-2 focus:ring-green-600 focus:ring-offset-2 focus:ring-offset-green-50\"\n                      >Return home</LinkTo>\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          {{else}}\n            <div>\n              <button\n                type=\"submit\"\n                disabled={{not this.isPasswordValid}}\n                class=\"flex w-full items-center justify-center rounded-md bg-brand-primary-color-rgb px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-brand-primary-color-rgb/90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand-primary-color-rgb disabled:cursor-not-allowed disabled:opacity-50\"\n              >\n                {{#if this.loading}}\n                  <V2::SvgIcon @icon=\"spinner-third\" class=\"me-2 size-4 animate-spin\" role=\"status\" />\n                {{/if}}\n                <span class={{if this.loading \"pr-6\"}}>Change password</span>\n              </button>\n            </div>\n          {{/if}}\n        </form>\n      </div>\n    </div>\n  </div>\n  \n  */\n  {\n    \"id\": \"qWNZIA0l\",\n    \"block\": \"[[[10,0],[14,0,\\\"flex min-h-full flex-col justify-center py-12 sm:px-6 lg:px-8\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"sm:mx-auto sm:w-full sm:max-w-md\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"h2\\\"],[14,0,\\\"text-center text-2xl font-bold leading-9 tracking-tight text-gray-900\\\"],[12],[1,\\\"Change your password\\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"mt-2 sm:mx-auto sm:w-full sm:max-w-[480px]\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"bg-white px-6 py-12 sm:rounded-lg sm:px-12\\\"],[12],[1,\\\"\\\\n      \\\"],[11,\\\"form\\\"],[24,0,\\\"space-y-6\\\"],[4,[38,3],[\\\"submit\\\",[30,0,[\\\"changePassword\\\"]]],null],[12],[1,\\\"\\\\n        \\\"],[10,0],[12],[1,\\\"\\\\n\\\"],[1,\\\"          \\\"],[10,\\\"input\\\"],[14,3,\\\"email\\\"],[15,2,[30,0,[\\\"cognitoUser\\\",\\\"user\\\",\\\"username\\\"]]],[14,\\\"autocomplete\\\",\\\"username email\\\"],[14,0,\\\"hidden\\\"],[14,4,\\\"text\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[8,[39,5],[[24,\\\"autocomplete\\\",\\\"current-password\\\"]],[[\\\"@type\\\",\\\"@value\\\",\\\"@label\\\",\\\"@required\\\",\\\"@id\\\"],[\\\"password\\\",[30,0,[\\\"currentPassword\\\"]],\\\"Current password\\\",true,\\\"current-password\\\"]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,6],null,[[\\\"@newPassword\\\",\\\"@setValidation\\\"],[[30,0,[\\\"newPassword\\\"]],[30,0,[\\\"setValidation\\\"]]]],null],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"errorMessage\\\"]],[[[1,\\\"          \\\"],[10,0],[14,0,\\\"mb-4 mt-4 flex items-center rounded-lg border border-red-300 bg-red-50 p-4 text-sm text-red-800\\\"],[14,\\\"role\\\",\\\"alert\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,8],[[24,0,\\\"me-3 inline size-4 flex-shrink-0\\\"]],[[\\\"@icon\\\"],[\\\"circle-info\\\"]],null],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Info\\\"],[13],[1,\\\"\\\\n            \\\"],[10,0],[12],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"font-medium\\\"],[12],[1,[30,0,[\\\"errorMessage\\\"]]],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"success\\\"]],[[[1,\\\"          \\\"],[10,0],[14,0,\\\"rounded-lg border border-green-300 bg-green-50 p-4\\\"],[12],[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"flex\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,8],[[24,0,\\\"size-4 flex-shrink-0 text-green-500\\\"]],[[\\\"@icon\\\"],[\\\"circle-check\\\"]],null],[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"ml-3\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"h3\\\"],[14,0,\\\"text-sm font-medium text-green-800\\\"],[12],[1,\\\"Success!\\\"],[13],[1,\\\"\\\\n                \\\"],[10,0],[14,0,\\\"mt-2 text-sm text-green-700\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,2],[12],[1,\\\"Password has been changed.\\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,0],[14,0,\\\"mt-4\\\"],[12],[1,\\\"\\\\n                  \\\"],[10,0],[14,0,\\\"-mx-2 -my-1.5 flex\\\"],[12],[1,\\\"\\\\n                    \\\"],[8,[39,12],[[24,0,\\\"rounded-md bg-green-50 px-2 py-1.5 text-sm font-medium text-green-800 hover:bg-green-100 focus:outline-none focus:ring-2 focus:ring-green-600 focus:ring-offset-2 focus:ring-offset-green-50\\\"]],[[\\\"@route\\\"],[\\\"v2.index\\\"]],[[\\\"default\\\"],[[[[1,\\\"Return home\\\"]],[]]]]],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[10,0],[12],[1,\\\"\\\\n            \\\"],[10,\\\"button\\\"],[15,\\\"disabled\\\",[28,[37,14],[[30,0,[\\\"isPasswordValid\\\"]]],null]],[14,0,\\\"flex w-full items-center justify-center rounded-md bg-brand-primary-color-rgb px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-brand-primary-color-rgb/90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand-primary-color-rgb disabled:cursor-not-allowed disabled:opacity-50\\\"],[14,4,\\\"submit\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"loading\\\"]],[[[1,\\\"                \\\"],[8,[39,8],[[24,0,\\\"me-2 size-4 animate-spin\\\"],[24,\\\"role\\\",\\\"status\\\"]],[[\\\"@icon\\\"],[\\\"spinner-third\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[10,1],[15,0,[52,[30,0,[\\\"loading\\\"]],\\\"pr-6\\\"]],[12],[1,\\\"Change password\\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[],false,[\\\"div\\\",\\\"h2\\\",\\\"form\\\",\\\"on\\\",\\\"input\\\",\\\"v2/textline\\\",\\\"v2/new-password\\\",\\\"if\\\",\\\"v2/svg-icon\\\",\\\"span\\\",\\\"h3\\\",\\\"p\\\",\\\"link-to\\\",\\\"button\\\",\\\"not\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/auth/password.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/auth/verify-loading\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"w-full p-4 text-center\">\n    Verifying your account, please wait...\n  </div>\n  */\n  {\n    \"id\": \"V+wENVCx\",\n    \"block\": \"[[[10,0],[14,0,\\\"w-full p-4 text-center\\\"],[12],[1,\\\"\\\\n  Verifying your account, please wait...\\\\n\\\"],[13]],[],false,[\\\"div\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/auth/verify-loading.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/auth/verify\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"flex min-h-full flex-col justify-center py-12 sm:px-6 lg:px-8\">\n    <div class=\"sm:mx-auto sm:w-full sm:max-w-md\">\n      <h2 class=\"text-center text-2xl font-bold leading-9 tracking-tight text-gray-900\">Verify your account</h2>\n    </div>\n  \n    <div class=\"mt-2 sm:mx-auto sm:w-full sm:max-w-[480px]\">\n      <div class=\"bg-white px-6 py-8 sm:rounded-lg sm:px-12\">\n        {{#if this.errorMessage}}\n          <div class=\"mb-4 mt-4 flex items-center rounded-lg border border-red-300 bg-red-50 p-4 text-sm text-red-800\" role=\"alert\">\n            <V2::SvgIcon @icon=\"circle-info\" class=\"me-3 inline size-4 flex-shrink-0\" />\n            <span class=\"sr-only\">Info</span>\n            <div>\n              <span class=\"font-medium\">{{this.errorMessage}}</span>\n            </div>\n          </div>\n        {{/if}}\n        <p class=\"mt-3 text-center text-sm\">\n          {{#if this.resent}}\n            We have sent a new verification code to your email address.\n          {{else}}\n            Didn't receive an email?\n            <V2::Button @size=\"small\" class=\"text-brand-link-color-rgb underline\" {{on \"click\" this.resendVerificationEmail}}>\n              Resend Code\n            </V2::Button>\n          {{/if}}\n        </p>\n        <p class=\"pt-2 text-center text-sm\">\n          Still need help?\n          <a href=\"https://settify.freshdesk.com\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-brand-link-color-rgb underline\">\n            Tech support\n          </a>\n        </p>\n      </div>\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"6M/P7Aq/\",\n    \"block\": \"[[[10,0],[14,0,\\\"flex min-h-full flex-col justify-center py-12 sm:px-6 lg:px-8\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"sm:mx-auto sm:w-full sm:max-w-md\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"h2\\\"],[14,0,\\\"text-center text-2xl font-bold leading-9 tracking-tight text-gray-900\\\"],[12],[1,\\\"Verify your account\\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"mt-2 sm:mx-auto sm:w-full sm:max-w-[480px]\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"bg-white px-6 py-8 sm:rounded-lg sm:px-12\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"errorMessage\\\"]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"mb-4 mt-4 flex items-center rounded-lg border border-red-300 bg-red-50 p-4 text-sm text-red-800\\\"],[14,\\\"role\\\",\\\"alert\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,3],[[24,0,\\\"me-3 inline size-4 flex-shrink-0\\\"]],[[\\\"@icon\\\"],[\\\"circle-info\\\"]],null],[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Info\\\"],[13],[1,\\\"\\\\n          \\\"],[10,0],[12],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"font-medium\\\"],[12],[1,[30,0,[\\\"errorMessage\\\"]]],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[10,2],[14,0,\\\"mt-3 text-center text-sm\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"resent\\\"]],[[[1,\\\"          We have sent a new verification code to your email address.\\\\n\\\"]],[]],[[[1,\\\"          Didn't receive an email?\\\\n          \\\"],[8,[39,6],[[24,0,\\\"text-brand-link-color-rgb underline\\\"],[4,[38,7],[\\\"click\\\",[30,0,[\\\"resendVerificationEmail\\\"]]],null]],[[\\\"@size\\\"],[\\\"small\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            Resend Code\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,2],[14,0,\\\"pt-2 text-center text-sm\\\"],[12],[1,\\\"\\\\n        Still need help?\\\\n        \\\"],[10,3],[14,6,\\\"https://settify.freshdesk.com\\\"],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[14,0,\\\"text-brand-link-color-rgb underline\\\"],[12],[1,\\\"\\\\n          Tech support\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[],false,[\\\"div\\\",\\\"h2\\\",\\\"if\\\",\\\"v2/svg-icon\\\",\\\"span\\\",\\\"p\\\",\\\"v2/button\\\",\\\"on\\\",\\\"a\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/auth/verify.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/client\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"min-h-screen w-full bg-[#F3F7F9] text-lg\">\n    {{#if (contains this.firm.id \"000000000\")}}\n      <div class=\"sticky top-0 z-10 border-b border-red-400 bg-red-50 px-5 py-2 text-center text-sm text-red-800 sm:px-6\" role=\"alert\">\n        <span class=\"font-semibold\">This is a test site!</span>\n        Please do not enter any sensitive personal information.\n      </div>\n    {{/if}}\n  \n    {{outlet}}\n  </div>\n  */\n  {\n    \"id\": \"ZnfMRDrY\",\n    \"block\": \"[[[10,0],[14,0,\\\"min-h-screen w-full bg-[#F3F7F9] text-lg\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,2],[[30,0,[\\\"firm\\\",\\\"id\\\"]],\\\"000000000\\\"],null],[[[1,\\\"    \\\"],[10,0],[14,0,\\\"sticky top-0 z-10 border-b border-red-400 bg-red-50 px-5 py-2 text-center text-sm text-red-800 sm:px-6\\\"],[14,\\\"role\\\",\\\"alert\\\"],[12],[1,\\\"\\\\n      \\\"],[10,1],[14,0,\\\"font-semibold\\\"],[12],[1,\\\"This is a test site!\\\"],[13],[1,\\\"\\\\n      Please do not enter any sensitive personal information.\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n  \\\"],[46,[28,[37,5],null,null],null,null,null],[1,\\\"\\\\n\\\"],[13]],[],false,[\\\"div\\\",\\\"if\\\",\\\"contains\\\",\\\"span\\\",\\\"component\\\",\\\"-outlet\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/client.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/console/index\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::Console::Layout>\n    <:header>\n      {{! Header title and info banner }}\n      <div class=\"flex items-center gap-x-8\">\n        <h1 class=\"text-xl font-semibold text-gray-900\">Management Console</h1>\n        {{! Show selected firm in header }}\n        {{#if this.console.selectedFirm}}\n          <div\n            {{on \"click\" this.clearFirm}}\n            class=\"group flex cursor-pointer items-center rounded-lg border-2 border-purple-600 bg-purple-50 px-3 py-2 hover:border-gray-600 hover:bg-gray-50\"\n          >\n            <V2::SvgIcon @icon=\"building\" class=\"size-4 text-purple-600 group-hover:text-gray-600\" />\n            <div class=\"mx-2\">\n              <p class=\"text-xs font-semibold text-purple-900 group-hover:text-gray-900\">{{this.console.selectedFirm.name}}</p>\n              <p class=\"text-xs text-purple-700 group-hover:text-gray-700\">{{this.console.selectedFirm.firmID}}</p>\n            </div>\n            <V2::SvgIcon @icon=\"x-mark\" class=\"size-4 text-purple-600 group-hover:text-gray-600\" />\n          </div>\n        {{/if}}\n      </div>\n  \n      {{! Console Label }}\n      <div class=\"flex items-center rounded-lg border-2 border-purple-600 bg-purple-50 px-3 py-2\">\n        <V2::SvgIcon @icon=\"user-helmet\" class=\"mr-2 size-4 text-purple-600\" />\n        <div>\n          <p class=\"text-xs font-semibold text-purple-900\">Development Tool</p>\n        </div>\n      </div>\n    </:header>\n  \n    <:left>\n      <div class=\"h-full border-r border-gray-200 bg-white\">\n        {{#if this.hasFirmSelected}}\n          {{! Show search palette when firm is selected }}\n          <V2::Console::SearchClient @firm={{this.console.selectedFirm}} @client={{this.console.selectedClient}} @onSelectClient={{this.onSelectClient}} />\n        {{else}}\n          {{! Show firm palette when no firm is selected }}\n          <V2::Console::SearchFirm @firm={{this.console.selectedFirm}} @onSelectFirm={{this.onSelectFirm}} @onClearFirm={{this.onClearFirm}} />\n        {{/if}}\n      </div>\n    </:left>\n  \n    <:main>\n      <div class=\"relative h-full\">\n        <V2::Console::ManageClient @firm={{this.console.selectedFirm}} @client={{this.console.selectedClient}} />\n        <V2::Console::ExecutionHistory @onViewRecord={{this.loadExecutionContext}} />\n      </div>\n    </:main>\n  \n    <:right>\n      <div class=\"h-full border-l border-gray-200 bg-white\">\n        <V2::Console::CommandPalette\n          @firm={{this.console.selectedFirm}}\n          @client={{this.console.selectedClient}}\n          @onExecute={{this.handleCommandExecution}}\n          @isCommandDisabled=\"{this.isCommandDisabled}\"\n        />\n      </div>\n    </:right>\n  \n    <:footer>\n      {{! Footer) }}\n      <div class=\"border-t bg-white p-4\">\n        <p class=\"text-xs text-gray-500\">Footer actions will appear here</p>\n      </div>\n    </:footer>\n  </V2::Console::Layout>\n  */\n  {\n    \"id\": \"eERCQ8Nz\",\n    \"block\": \"[[[8,[39,0],null,null,[[\\\"header\\\",\\\"left\\\",\\\"main\\\",\\\"right\\\",\\\"footer\\\"],[[[[1,\\\"\\\\n\\\"],[1,\\\"    \\\"],[10,0],[14,0,\\\"flex items-center gap-x-8\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"h1\\\"],[14,0,\\\"text-xl font-semibold text-gray-900\\\"],[12],[1,\\\"Management Console\\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"console\\\",\\\"selectedFirm\\\"]],[[[1,\\\"        \\\"],[11,0],[24,0,\\\"group flex cursor-pointer items-center rounded-lg border-2 border-purple-600 bg-purple-50 px-3 py-2 hover:border-gray-600 hover:bg-gray-50\\\"],[4,[38,5],[\\\"click\\\",[30,0,[\\\"clearFirm\\\"]]],null],[12],[1,\\\"\\\\n          \\\"],[8,[39,6],[[24,0,\\\"size-4 text-purple-600 group-hover:text-gray-600\\\"]],[[\\\"@icon\\\"],[\\\"building\\\"]],null],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"mx-2\\\"],[12],[1,\\\"\\\\n            \\\"],[10,2],[14,0,\\\"text-xs font-semibold text-purple-900 group-hover:text-gray-900\\\"],[12],[1,[30,0,[\\\"console\\\",\\\"selectedFirm\\\",\\\"name\\\"]]],[13],[1,\\\"\\\\n            \\\"],[10,2],[14,0,\\\"text-xs text-purple-700 group-hover:text-gray-700\\\"],[12],[1,[30,0,[\\\"console\\\",\\\"selectedFirm\\\",\\\"firmID\\\"]]],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[8,[39,6],[[24,0,\\\"size-4 text-purple-600 group-hover:text-gray-600\\\"]],[[\\\"@icon\\\"],[\\\"x-mark\\\"]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"    \\\"],[10,0],[14,0,\\\"flex items-center rounded-lg border-2 border-purple-600 bg-purple-50 px-3 py-2\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,6],[[24,0,\\\"mr-2 size-4 text-purple-600\\\"]],[[\\\"@icon\\\"],[\\\"user-helmet\\\"]],null],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"text-xs font-semibold text-purple-900\\\"],[12],[1,\\\"Development Tool\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]],[[[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"h-full border-r border-gray-200 bg-white\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"hasFirmSelected\\\"]],[[[1,\\\"        \\\"],[8,[39,9],null,[[\\\"@firm\\\",\\\"@client\\\",\\\"@onSelectClient\\\"],[[30,0,[\\\"console\\\",\\\"selectedFirm\\\"]],[30,0,[\\\"console\\\",\\\"selectedClient\\\"]],[30,0,[\\\"onSelectClient\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[8,[39,10],null,[[\\\"@firm\\\",\\\"@onSelectFirm\\\",\\\"@onClearFirm\\\"],[[30,0,[\\\"console\\\",\\\"selectedFirm\\\"]],[30,0,[\\\"onSelectFirm\\\"]],[30,0,[\\\"onClearFirm\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]],[[[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"relative h-full\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,12],null,[[\\\"@firm\\\",\\\"@client\\\"],[[30,0,[\\\"console\\\",\\\"selectedFirm\\\"]],[30,0,[\\\"console\\\",\\\"selectedClient\\\"]]]],null],[1,\\\"\\\\n      \\\"],[8,[39,13],null,[[\\\"@onViewRecord\\\"],[[30,0,[\\\"loadExecutionContext\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]],[[[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"h-full border-l border-gray-200 bg-white\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,15],null,[[\\\"@firm\\\",\\\"@client\\\",\\\"@onExecute\\\",\\\"@isCommandDisabled\\\"],[[30,0,[\\\"console\\\",\\\"selectedFirm\\\"]],[30,0,[\\\"console\\\",\\\"selectedClient\\\"]],[30,0,[\\\"handleCommandExecution\\\"]],\\\"{this.isCommandDisabled}\\\"]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]],[[[1,\\\"\\\\n\\\"],[1,\\\"    \\\"],[10,0],[14,0,\\\"border-t bg-white p-4\\\"],[12],[1,\\\"\\\\n      \\\"],[10,2],[14,0,\\\"text-xs text-gray-500\\\"],[12],[1,\\\"Footer actions will appear here\\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]]],[],false,[\\\"v2/console/layout\\\",\\\":header\\\",\\\"div\\\",\\\"h1\\\",\\\"if\\\",\\\"on\\\",\\\"v2/svg-icon\\\",\\\"p\\\",\\\":left\\\",\\\"v2/console/search-client\\\",\\\"v2/console/search-firm\\\",\\\":main\\\",\\\"v2/console/manage-client\\\",\\\"v2/console/execution-history\\\",\\\":right\\\",\\\"v2/console/command-palette\\\",\\\":footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/console/index.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/firms/clients/client\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage @heading=\"{{this.model.metadata.displayName}}\" @ctaButtons={{this.ctaButtons}}>\n    {{! TODO: move breadcrumb into re-useable component perhaps as part of AdminPage header }}\n    <nav class=\"flex\" aria-label=\"Breadcrumb\">\n      <ol role=\"list\" class=\"mb-2 flex items-center space-x-2\">\n        <li>\n          <div>\n            <LinkTo @route=\"v2.firms\" class=\"text-gray-400 hover:text-gray-500\">\n              <svg class=\"size-5 shrink-0\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\" data-slot=\"icon\">\n                <path\n                  fill-rule=\"evenodd\"\n                  d=\"M9.293 2.293a1 1 0 0 1 1.414 0l7 7A1 1 0 0 1 17 11h-1v6a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-3a1 1 0 0 0-1-1H9a1 1 0 0 0-1 1v3a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-6H3a1 1 0 0 1-.707-1.707l7-7Z\"\n                  clip-rule=\"evenodd\"\n                />\n              </svg>\n              <span class=\"sr-only\">Home</span>\n            </LinkTo>\n          </div>\n        </li>\n        <li>\n          <div class=\"flex items-center\">\n            <svg class=\"size-5 shrink-0 text-gray-400\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\" data-slot=\"icon\">\n              <path\n                fill-rule=\"evenodd\"\n                d=\"M8.22 5.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.75.75 0 0 1-1.06-1.06L11.94 10 8.22 6.28a.75.75 0 0 1 0-1.06Z\"\n                clip-rule=\"evenodd\"\n              />\n            </svg>\n            <LinkTo @route=\"v2.firms.firm\" @model={{this.model.metadata.firmID}} class=\"text-sm font-medium text-gray-500 hover:text-gray-700\">\n              Firm Details\n            </LinkTo>\n          </div>\n        </li>\n        <li>\n          <div class=\"flex items-center\">\n            <svg class=\"size-5 shrink-0 text-gray-400\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\" data-slot=\"icon\">\n              <path\n                fill-rule=\"evenodd\"\n                d=\"M8.22 5.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.75.75 0 0 1-1.06-1.06L11.94 10 8.22 6.28a.75.75 0 0 1 0-1.06Z\"\n                clip-rule=\"evenodd\"\n              />\n            </svg>\n            <LinkTo @route=\"v2.firms.clients.client\" class=\"text-sm font-medium text-gray-500 hover:text-gray-700\">\n              Client Record Details\n            </LinkTo>\n          </div>\n        </li>\n      </ol>\n    </nav>\n  \n    {{! template-lint-disable no-html-comments }}\n    <!--\n    TODO fix the styling of the iframe (if we prefer to use an iframe)\n    <iframe\n      class=\"w-full border-2\"\n      style=\"height: 800px\"\n      id=\"record\"\n      srcdoc=\"{{{this.model.record}}}\">\n    </iframe>\n    -->\n    {{! template-lint-disable no-triple-curlies }}\n    <div>{{{this.model.record}}}</div>\n  </V2::AdminPage>\n  \n  {{outlet}}\n  */\n  {\n    \"id\": \"g/3PdCDe\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@heading\\\",\\\"@ctaButtons\\\"],[[29,[[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"displayName\\\"]]]],[30,0,[\\\"ctaButtons\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[1,\\\"  \\\"],[10,\\\"nav\\\"],[14,0,\\\"flex\\\"],[14,\\\"aria-label\\\",\\\"Breadcrumb\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"ol\\\"],[14,\\\"role\\\",\\\"list\\\"],[14,0,\\\"mb-2 flex items-center space-x-2\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[12],[1,\\\"\\\\n          \\\"],[8,[39,5],[[24,0,\\\"text-gray-400 hover:text-gray-500\\\"]],[[\\\"@route\\\"],[\\\"v2.firms\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,\\\"svg\\\"],[14,0,\\\"size-5 shrink-0\\\"],[14,\\\"viewBox\\\",\\\"0 0 20 20\\\"],[14,\\\"fill\\\",\\\"currentColor\\\"],[14,\\\"aria-hidden\\\",\\\"true\\\"],[14,\\\"data-slot\\\",\\\"icon\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"path\\\"],[14,\\\"fill-rule\\\",\\\"evenodd\\\"],[14,\\\"d\\\",\\\"M9.293 2.293a1 1 0 0 1 1.414 0l7 7A1 1 0 0 1 17 11h-1v6a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-3a1 1 0 0 0-1-1H9a1 1 0 0 0-1 1v3a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-6H3a1 1 0 0 1-.707-1.707l7-7Z\\\"],[14,\\\"clip-rule\\\",\\\"evenodd\\\"],[12],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Home\\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"flex items-center\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"svg\\\"],[14,0,\\\"size-5 shrink-0 text-gray-400\\\"],[14,\\\"viewBox\\\",\\\"0 0 20 20\\\"],[14,\\\"fill\\\",\\\"currentColor\\\"],[14,\\\"aria-hidden\\\",\\\"true\\\"],[14,\\\"data-slot\\\",\\\"icon\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"path\\\"],[14,\\\"fill-rule\\\",\\\"evenodd\\\"],[14,\\\"d\\\",\\\"M8.22 5.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.75.75 0 0 1-1.06-1.06L11.94 10 8.22 6.28a.75.75 0 0 1 0-1.06Z\\\"],[14,\\\"clip-rule\\\",\\\"evenodd\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[8,[39,5],[[24,0,\\\"text-sm font-medium text-gray-500 hover:text-gray-700\\\"]],[[\\\"@route\\\",\\\"@model\\\"],[\\\"v2.firms.firm\\\",[30,0,[\\\"model\\\",\\\"metadata\\\",\\\"firmID\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            Firm Details\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"flex items-center\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"svg\\\"],[14,0,\\\"size-5 shrink-0 text-gray-400\\\"],[14,\\\"viewBox\\\",\\\"0 0 20 20\\\"],[14,\\\"fill\\\",\\\"currentColor\\\"],[14,\\\"aria-hidden\\\",\\\"true\\\"],[14,\\\"data-slot\\\",\\\"icon\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"path\\\"],[14,\\\"fill-rule\\\",\\\"evenodd\\\"],[14,\\\"d\\\",\\\"M8.22 5.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.75.75 0 0 1-1.06-1.06L11.94 10 8.22 6.28a.75.75 0 0 1 0-1.06Z\\\"],[14,\\\"clip-rule\\\",\\\"evenodd\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[8,[39,5],[[24,0,\\\"text-sm font-medium text-gray-500 hover:text-gray-700\\\"]],[[\\\"@route\\\"],[\\\"v2.firms.clients.client\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            Client Record Details\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"  \\\"],[3,\\\"\\\\n  TODO fix the styling of the iframe (if we prefer to use an iframe)\\\\n  <iframe\\\\n    class=\\\\\\\"w-full border-2\\\\\\\"\\\\n    style=\\\\\\\"height: 800px\\\\\\\"\\\\n    id=\\\\\\\"record\\\\\\\"\\\\n    srcdoc=\\\\\\\"{{{this.model.record}}}\\\\\\\">\\\\n  </iframe>\\\\n  \\\"],[1,\\\"\\\\n\\\"],[1,\\\"  \\\"],[10,0],[12],[2,[30,0,[\\\"model\\\",\\\"record\\\"]]],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[46,[28,[37,10],null,null],null,null,null]],[],false,[\\\"v2/admin-page\\\",\\\"nav\\\",\\\"ol\\\",\\\"li\\\",\\\"div\\\",\\\"link-to\\\",\\\"svg\\\",\\\"path\\\",\\\"span\\\",\\\"component\\\",\\\"-outlet\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/firms/clients/client.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/firms/error\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage @heading=\"Error\" @ctaButtons={{this.ctaButtons}}>\n    <div class=\"my-4 rounded-md bg-yellow-50 p-4\">\n      <div class=\"ml-3\">\n        <div class=\"text-base text-yellow-700\">\n          <p>\n            It looks like there was an error:\n            {{this.model}}\n          </p>\n        </div>\n      </div>\n    </div>\n  </V2::AdminPage>\n  */\n  {\n    \"id\": \"26c5YN8U\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@heading\\\",\\\"@ctaButtons\\\"],[\\\"Error\\\",[30,0,[\\\"ctaButtons\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"my-4 rounded-md bg-yellow-50 p-4\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"ml-3\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"text-base text-yellow-700\\\"],[12],[1,\\\"\\\\n        \\\"],[10,2],[12],[1,\\\"\\\\n          It looks like there was an error:\\\\n          \\\"],[1,[30,0,[\\\"model\\\"]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[],false,[\\\"v2/admin-page\\\",\\\"div\\\",\\\"p\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/firms/error.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/firms/firm\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage @heading=\"{{this.model.firm.global.name}}\" @ctaButtons={{this.ctaButtons}}>\n    {{! TODO: move breadcrumb into re-useable component perhaps as part of AdminPage header }}\n    <nav class=\"flex\" aria-label=\"Breadcrumb\">\n      <ol role=\"list\" class=\"mb-2 flex items-center space-x-2\">\n        <li>\n          <div>\n            <LinkTo @route=\"v2.firms.index\" class=\"text-gray-400 hover:text-gray-500\">\n              <svg class=\"size-5 shrink-0\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\" data-slot=\"icon\">\n                <path\n                  fill-rule=\"evenodd\"\n                  d=\"M9.293 2.293a1 1 0 0 1 1.414 0l7 7A1 1 0 0 1 17 11h-1v6a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-3a1 1 0 0 0-1-1H9a1 1 0 0 0-1 1v3a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-6H3a1 1 0 0 1-.707-1.707l7-7Z\"\n                  clip-rule=\"evenodd\"\n                />\n              </svg>\n              <span class=\"sr-only\">Home</span>\n            </LinkTo>\n          </div>\n        </li>\n        <li>\n          <div class=\"flex items-center\">\n            <svg class=\"size-5 shrink-0 text-gray-400\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\" data-slot=\"icon\">\n              <path\n                fill-rule=\"evenodd\"\n                d=\"M8.22 5.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.75.75 0 0 1-1.06-1.06L11.94 10 8.22 6.28a.75.75 0 0 1 0-1.06Z\"\n                clip-rule=\"evenodd\"\n              />\n            </svg>\n            <LinkTo @route=\"v2.firms.firm\" class=\"text-sm font-medium text-gray-500 hover:text-gray-700\">\n              Firm Details\n            </LinkTo>\n          </div>\n        </li>\n      </ol>\n    </nav>\n  \n    {{! todo: improve style of firm status and use latte backend to determine state  }}\n    <div class=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n      {{#each this.model.practiceAreas as |pa index|}}\n        <div\n          data-index={{index}}\n          data-practice-area-id={{pa.practiceArea}}\n          class=\"group relative flex flex-col overflow-hidden rounded-lg border border-gray-200 bg-white p-4 hover:bg-gray-100\"\n        >\n          <div class=\"flex flex-1 flex-col space-y-2\">\n            <h3 class=\"flex flex-row items-center space-x-2 text-sm font-medium text-gray-900\">\n              <a href={{pa.settifyURL}} title=\"Open {{pa.practiceArea}} site\" target=\"_blank\" class=\"hover:underline\" rel=\"noopener noreferrer\">\n                <span aria-hidden=\"true\" class=\"absolute inset-0\" />\n                {{pa.practiceArea}}\n              </a>\n              {{#if (contains pa.settifyURL \"app.settify\")}}\n                <span class=\"inline-flex items-center rounded-md bg-purple-50 px-2 py-1 text-xs font-medium text-purple-700 ring-1 ring-inset ring-purple-700/10\">\n                  NextGen\n                </span>\n              {{/if}}\n              {{#if pa.terminatedContract}}\n                <span class=\"inline-flex items-center rounded-md bg-red-50 px-2 py-1 text-xs font-medium text-red-700 ring-1 ring-inset ring-red-600/10\">\n                  Terminated\n                </span>\n              {{else if pa.wentLive}}\n                <span class=\"inline-flex items-center rounded-md bg-green-50 px-2 py-1 text-xs font-medium text-green-700 ring-1 ring-inset ring-green-600/20\">\n                  Live\n                </span>\n              {{else}}\n                <span class=\"inline-flex items-center rounded-md bg-yellow-50 px-2 py-1 text-xs font-medium text-yellow-800 ring-1 ring-inset ring-yellow-600/20\">\n                  Rollout\n                </span>\n              {{/if}}\n            </h3>\n          </div>\n          <p class=\"text-base font-medium text-gray-900\">\n            <span>{{format-number (div pa.licenceFeeInCents 100) money=true}}</span>\n            <span class=\"text-xs text-gray-500\">{{pa.conversionGroup}}</span>\n          </p>\n        </div>\n      {{/each}}\n    </div>\n  \n    <section class=\"py-10\">\n      <h2>Client Records</h2>\n      <V2::DataTable @id=\"client-records-list\" @columns={{this.columns}} @data={{this.model.clientRecords}} @isSearchable={{true}} @onRowSelection={{this.onClientSelected}}>\n        <:action as |data|>\n          {{#unless data.row.frozen}}\n            <V2::Button class=\"text-brand-primary-color-rgb\" @variant=\"outlined\" @route=\"v2.firms.clients.client\" @models={{array data.row.metadata.firmID data.row.id}}>\n              View\n            </V2::Button>\n          {{/unless}}\n        </:action>\n      </V2::DataTable>\n    </section>\n  </V2::AdminPage>\n  \n  {{outlet}}\n  */\n  {\n    \"id\": \"LuZaCqhi\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@heading\\\",\\\"@ctaButtons\\\"],[[29,[[30,0,[\\\"model\\\",\\\"firm\\\",\\\"global\\\",\\\"name\\\"]]]],[30,0,[\\\"ctaButtons\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\"],[1,\\\"  \\\"],[10,\\\"nav\\\"],[14,0,\\\"flex\\\"],[14,\\\"aria-label\\\",\\\"Breadcrumb\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"ol\\\"],[14,\\\"role\\\",\\\"list\\\"],[14,0,\\\"mb-2 flex items-center space-x-2\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[12],[1,\\\"\\\\n          \\\"],[8,[39,5],[[24,0,\\\"text-gray-400 hover:text-gray-500\\\"]],[[\\\"@route\\\"],[\\\"v2.firms.index\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            \\\"],[10,\\\"svg\\\"],[14,0,\\\"size-5 shrink-0\\\"],[14,\\\"viewBox\\\",\\\"0 0 20 20\\\"],[14,\\\"fill\\\",\\\"currentColor\\\"],[14,\\\"aria-hidden\\\",\\\"true\\\"],[14,\\\"data-slot\\\",\\\"icon\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"path\\\"],[14,\\\"fill-rule\\\",\\\"evenodd\\\"],[14,\\\"d\\\",\\\"M9.293 2.293a1 1 0 0 1 1.414 0l7 7A1 1 0 0 1 17 11h-1v6a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-3a1 1 0 0 0-1-1H9a1 1 0 0 0-1 1v3a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-6H3a1 1 0 0 1-.707-1.707l7-7Z\\\"],[14,\\\"clip-rule\\\",\\\"evenodd\\\"],[12],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Home\\\"],[13],[1,\\\"\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"flex items-center\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"svg\\\"],[14,0,\\\"size-5 shrink-0 text-gray-400\\\"],[14,\\\"viewBox\\\",\\\"0 0 20 20\\\"],[14,\\\"fill\\\",\\\"currentColor\\\"],[14,\\\"aria-hidden\\\",\\\"true\\\"],[14,\\\"data-slot\\\",\\\"icon\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"path\\\"],[14,\\\"fill-rule\\\",\\\"evenodd\\\"],[14,\\\"d\\\",\\\"M8.22 5.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.75.75 0 0 1-1.06-1.06L11.94 10 8.22 6.28a.75.75 0 0 1 0-1.06Z\\\"],[14,\\\"clip-rule\\\",\\\"evenodd\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[8,[39,5],[[24,0,\\\"text-sm font-medium text-gray-500 hover:text-gray-700\\\"]],[[\\\"@route\\\"],[\\\"v2.firms.firm\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            Firm Details\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"  \\\"],[10,0],[14,0,\\\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,10],[[28,[37,10],[[30,0,[\\\"model\\\",\\\"practiceAreas\\\"]]],null]],null],null,[[[1,\\\"      \\\"],[10,0],[15,\\\"data-index\\\",[30,2]],[15,\\\"data-practice-area-id\\\",[30,1,[\\\"practiceArea\\\"]]],[14,0,\\\"group relative flex flex-col overflow-hidden rounded-lg border border-gray-200 bg-white p-4 hover:bg-gray-100\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"flex flex-1 flex-col space-y-2\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"h3\\\"],[14,0,\\\"flex flex-row items-center space-x-2 text-sm font-medium text-gray-900\\\"],[12],[1,\\\"\\\\n            \\\"],[10,3],[15,6,[30,1,[\\\"settifyURL\\\"]]],[15,\\\"title\\\",[29,[\\\"Open \\\",[30,1,[\\\"practiceArea\\\"]],\\\" site\\\"]]],[14,\\\"target\\\",\\\"_blank\\\"],[14,0,\\\"hover:underline\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[12],[1,\\\"\\\\n              \\\"],[10,1],[14,\\\"aria-hidden\\\",\\\"true\\\"],[14,0,\\\"absolute inset-0\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[1,[30,1,[\\\"practiceArea\\\"]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,14],[[30,1,[\\\"settifyURL\\\"]],\\\"app.settify\\\"],null],[[[1,\\\"              \\\"],[10,1],[14,0,\\\"inline-flex items-center rounded-md bg-purple-50 px-2 py-1 text-xs font-medium text-purple-700 ring-1 ring-inset ring-purple-700/10\\\"],[12],[1,\\\"\\\\n                NextGen\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[41,[30,1,[\\\"terminatedContract\\\"]],[[[1,\\\"              \\\"],[10,1],[14,0,\\\"inline-flex items-center rounded-md bg-red-50 px-2 py-1 text-xs font-medium text-red-700 ring-1 ring-inset ring-red-600/10\\\"],[12],[1,\\\"\\\\n                Terminated\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,1,[\\\"wentLive\\\"]],[[[1,\\\"              \\\"],[10,1],[14,0,\\\"inline-flex items-center rounded-md bg-green-50 px-2 py-1 text-xs font-medium text-green-700 ring-1 ring-inset ring-green-600/20\\\"],[12],[1,\\\"\\\\n                Live\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"              \\\"],[10,1],[14,0,\\\"inline-flex items-center rounded-md bg-yellow-50 px-2 py-1 text-xs font-medium text-yellow-800 ring-1 ring-inset ring-yellow-600/20\\\"],[12],[1,\\\"\\\\n                Rollout\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]],[]]],[1,\\\"          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"text-base font-medium text-gray-900\\\"],[12],[1,\\\"\\\\n          \\\"],[10,1],[12],[1,[28,[35,16],[[28,[37,4],[[30,1,[\\\"licenceFeeInCents\\\"]],100],null]],[[\\\"money\\\"],[true]]]],[13],[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"text-xs text-gray-500\\\"],[12],[1,[30,1,[\\\"conversionGroup\\\"]]],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[1,2]],null],[1,\\\"  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,\\\"section\\\"],[14,0,\\\"py-10\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"h2\\\"],[12],[1,\\\"Client Records\\\"],[13],[1,\\\"\\\\n    \\\"],[8,[39,19],null,[[\\\"@id\\\",\\\"@columns\\\",\\\"@data\\\",\\\"@isSearchable\\\",\\\"@onRowSelection\\\"],[\\\"client-records-list\\\",[30,0,[\\\"columns\\\"]],[30,0,[\\\"model\\\",\\\"clientRecords\\\"]],true,[30,0,[\\\"onClientSelected\\\"]]]],[[\\\"action\\\"],[[[[1,\\\"\\\\n\\\"],[41,[51,[30,3,[\\\"row\\\",\\\"frozen\\\"]]],[[[1,\\\"          \\\"],[8,[39,22],[[24,0,\\\"text-brand-primary-color-rgb\\\"]],[[\\\"@variant\\\",\\\"@route\\\",\\\"@models\\\"],[\\\"outlined\\\",\\\"v2.firms.clients.client\\\",[28,[37,23],[[30,3,[\\\"row\\\",\\\"metadata\\\",\\\"firmID\\\"]],[30,3,[\\\"row\\\",\\\"id\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            View\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"]],[3]]]]],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[46,[28,[37,25],null,null],null,null,null]],[\\\"pa\\\",\\\"index\\\",\\\"data\\\"],false,[\\\"v2/admin-page\\\",\\\"nav\\\",\\\"ol\\\",\\\"li\\\",\\\"div\\\",\\\"link-to\\\",\\\"svg\\\",\\\"path\\\",\\\"span\\\",\\\"each\\\",\\\"-track-array\\\",\\\"h3\\\",\\\"a\\\",\\\"if\\\",\\\"contains\\\",\\\"p\\\",\\\"format-number\\\",\\\"section\\\",\\\"h2\\\",\\\"v2/data-table\\\",\\\":action\\\",\\\"unless\\\",\\\"v2/button\\\",\\\"array\\\",\\\"component\\\",\\\"-outlet\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/firms/firm.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/firms/index\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage @heading=\"Firms\" @ctaButtons={{this.ctaButtons}}>\n  \n    <dl class=\"mx-auto mb-4 grid grid-cols-1 gap-2 sm:grid-cols-2 lg:grid-cols-4\">\n      <div\n        class=\"flex cursor-pointer flex-wrap items-baseline justify-between gap-x-4 gap-y-2 rounded-lg border-2 border-gray-900 px-4 py-4 hover:bg-gray-100\"\n        {{on \"click\" (fn this.filterByStatus \"\")}}\n      >\n        <dt class=\"text-sm/6 font-medium text-gray-500\">Total Firms</dt>\n        {{#unless this.statusFilter}}\n          <V2::SvgIcon @icon=\"circle-check\" class=\"size-4 text-green-500\" />\n        {{/unless}}\n        <dd class=\"w-full flex-none text-3xl/10 font-medium tracking-tight text-gray-900\">{{this.model.firms.length}}</dd>\n      </div>\n      <div\n        class=\"flex cursor-pointer flex-wrap items-baseline justify-between gap-x-4 gap-y-2 rounded-lg border-2 border-gray-900 px-4 py-4 hover:bg-gray-100\"\n        {{on \"click\" (fn this.filterByStatus \"Pending\")}}\n      >\n        <dt class=\"text-sm/6 font-medium text-gray-500\">Pending Firms</dt>\n        {{#if (eq this.statusFilter \"Pending\")}}\n          <V2::SvgIcon @icon=\"circle-check\" class=\"size-4 text-green-500\" />\n        {{/if}}\n        <dd class=\"w-full flex-none text-3xl/10 font-medium tracking-tight text-gray-900\">{{this.countPending}}</dd>\n      </div>\n      <div\n        class=\"flex cursor-pointer flex-wrap items-baseline justify-between gap-x-4 gap-y-2 rounded-lg border-2 border-gray-900 px-4 py-4 hover:bg-gray-100\"\n        {{on \"click\" (fn this.filterByStatus \"Active\")}}\n      >\n        <dt class=\"text-sm/6 font-medium text-gray-500\">Active Firms</dt>\n        {{#if (eq this.statusFilter \"Active\")}}\n          <V2::SvgIcon @icon=\"circle-check\" class=\"size-4 text-green-500\" />\n        {{/if}}\n        <dd class=\"w-full flex-none text-3xl/10 font-medium tracking-tight text-gray-900\">{{this.countActive}}</dd>\n      </div>\n      <div\n        class=\"flex cursor-pointer flex-wrap items-baseline justify-between gap-x-4 gap-y-2 rounded-lg border-2 border-gray-900 px-4 py-4 hover:bg-gray-100\"\n        {{on \"click\" (fn this.filterByStatus \"Terminated\")}}\n      >\n        <dt class=\"text-sm/6 font-medium text-gray-500\">Terminated Firms</dt>\n        {{#if (eq this.statusFilter \"Terminated\")}}\n          <V2::SvgIcon @icon=\"circle-check\" class=\"size-4 text-green-500\" />\n        {{/if}}\n        <dd class=\"w-full flex-none text-3xl/10 font-medium tracking-tight text-gray-900\">{{this.countTerminated}}</dd>\n      </div>\n    </dl>\n  \n    <dl class=\"mx-auto grid grid-cols-5 gap-2 rounded-lg bg-gray-100\">\n      <div class=\"flex flex-wrap items-baseline justify-between gap-x-4 px-4 py-2\">\n        <dt class=\"text-sm/6 font-medium text-gray-500\">Family</dt>\n        <dd class=\"w-full flex-none text-2xl/10 font-medium tracking-tight text-gray-900\">{{this.countPracticeArea.Family}}</dd>\n      </div>\n      <div class=\"flex flex-wrap items-baseline justify-between gap-x-4 px-4 py-2\">\n        <dt class=\"text-sm/6 font-medium text-gray-500\">Wills</dt>\n        <dd class=\"w-full flex-none text-2xl/10 font-medium tracking-tight text-gray-900\">{{this.countPracticeArea.Wills}}</dd>\n      </div>\n      <div class=\"flex flex-wrap items-baseline justify-between gap-x-4 px-4 py-2\">\n        <dt class=\"text-sm/6 font-medium text-gray-500\">Probate</dt>\n        <dd class=\"w-full flex-none text-2xl/10 font-medium tracking-tight text-gray-900\">{{this.countPracticeArea.Probate}}</dd>\n      </div>\n      <div class=\"flex flex-wrap items-baseline justify-between gap-x-4 px-4 py-2\">\n        <dt class=\"text-sm/6 font-medium text-gray-500\">Estates</dt>\n        <dd class=\"w-full flex-none text-2xl/10 font-medium tracking-tight text-gray-900\">{{this.countPracticeArea.Estates}}</dd>\n      </div>\n      <div class=\"flex flex-wrap items-baseline justify-between gap-x-4 px-4 py-2\">\n        <dt class=\"text-sm/6 font-medium text-gray-500\">Forms</dt>\n        <dd class=\"w-full flex-none text-2xl/10 font-medium tracking-tight text-gray-900\">{{this.countPracticeArea.Forms}}</dd>\n      </div>\n    </dl>\n  \n    <table class=\"min-w-full table-fixed divide-y divide-gray-300\">\n      <thead>\n        <tr class=\"text-left text-sm\">\n          <th scope=\"col\" class=\"hidden p-3 font-semibold sm:table-cell\">Name ({{this.firms.length}})</th>\n          <th scope=\"col\" class=\"p-3 font-semibold\">Firm ID</th>\n          <th scope=\"col\" class=\"hidden p-3 font-semibold sm:table-cell\">Status</th>\n          <th scope=\"col\" class=\"hidden p-3 font-semibold sm:table-cell\">Practice areas</th>\n          <th scope=\"col\" class=\"relative p-3\">\n            <span class=\"sr-only\">Options</span>\n          </th>\n        </tr>\n      </thead>\n      <tbody class=\"divide-y divide-gray-200 bg-white\">\n        {{#each this.firms as |firm index|}}\n          <tr data-index={{index}} data-firm-id={{firm.firmID}} class=\"border-b border-gray-100\">\n            <td class=\"hidden px-3 py-3.5 text-sm sm:table-cell\">\n              {{firm.name}}\n            </td>\n            <td class=\"hidden px-3 py-3.5 text-sm sm:table-cell\">\n              {{firm.firmID}}\n            </td>\n            <td class=\"hidden px-3 py-3.5 text-sm sm:table-cell\">\n              {{! TODO: enabled if any active, disabled if all terminated, or pending if any not marked active/terminated }}\n              {{#if (eq firm.status \"Active\")}}\n                <span class=\"inline-flex rounded-md bg-green-50 px-2 py-1 text-xs font-medium text-green-700 ring-1 ring-inset ring-green-600/10\">\n                  {{firm.status}}\n                </span>\n              {{else if (eq firm.status \"Pending\")}}\n                <span class=\"inline-flex rounded-md bg-orange-50 px-2 py-1 text-xs font-medium text-yellow-700 ring-1 ring-inset ring-orange-600/10\">\n                  {{firm.status}}\n                </span>\n              {{else if (eq firm.status \"Terminated\")}}\n                <span class=\"inline-flex rounded-md bg-orange-50 px-2 py-1 text-xs font-medium text-orange-700 ring-1 ring-inset ring-orange-600/10\">\n                  {{firm.status}}\n                </span>\n              {{else}}\n                <span class=\"inline-flex rounded-md bg-orange-50 px-2 py-1 text-xs font-medium text-gray-700 ring-1 ring-inset ring-orange-600/10\">\n                  {{firm.status}}\n                </span>\n              {{/if}}\n            </td>\n            <td class=\"hidden px-3 py-3.5 text-sm sm:table-cell\">\n              {{! TODO: Show active practice areas and maybe pending as gray? }}\n              {{#each firm.practiceAreas as |practiceArea index|}}\n                {{#if (eq practiceArea.name \"Family\")}}\n                  <span\n                    class=\"inline-flex items-center justify-center gap-1 rounded-md bg-orange-50 px-2 py-1 text-xs font-medium text-green-700 ring-1 ring-inset ring-orange-600/10\"\n                  >\n                    {{practiceArea.name}}\n                    {{#if (eq practiceArea.status \"Active\")}}\n                      <i class=\"fa fa-check\"></i>\n                    {{else if (eq practiceArea.status \"Pending\")}}\n                      <i class=\"fa fa-clock-o\"></i>\n                    {{else if (eq practiceArea.status \"Terminated\")}}\n                      <i class=\"fa fa-times\"></i>\n                    {{/if}}\n                  </span>\n                {{else if (eq practiceArea.name \"Wills\")}}\n                  <span\n                    class=\"inline-flex items-center justify-center gap-1 rounded-md bg-orange-50 px-2 py-1 text-xs font-medium text-cyan-700 ring-1 ring-inset ring-orange-600/10\"\n                  >\n                    {{practiceArea.name}}\n                    {{#if (eq practiceArea.status \"Active\")}}\n                      <i class=\"fa fa-check\"></i>\n                    {{else if (eq practiceArea.status \"Pending\")}}\n                      <i class=\"fa fa-clock-o\"></i>\n                    {{else if (eq practiceArea.status \"Terminated\")}}\n                      <i class=\"fa fa-times\"></i>\n                    {{/if}}\n                  </span>\n                {{else if (eq practiceArea.name \"Probate\")}}\n                  <span\n                    class=\"inline-flex items-center justify-center gap-1 rounded-md bg-orange-50 px-2 py-1 text-xs font-medium text-purple-700 ring-1 ring-inset ring-orange-600/10\"\n                  >\n                    {{practiceArea.name}}\n                    {{#if (eq practiceArea.status \"Active\")}}\n                      <i class=\"fa fa-check\"></i>\n                    {{else if (eq practiceArea.status \"Pending\")}}\n                      <i class=\"fa fa-clock-o\"></i>\n                    {{else if (eq practiceArea.status \"Terminated\")}}\n                      <i class=\"fa fa-times\"></i>\n                    {{/if}}\n                  </span>\n                {{else if (eq practiceArea.name \"Estates\")}}\n                  <span\n                    class=\"inline-flex items-center justify-center gap-1 rounded-md bg-orange-50 px-2 py-1 text-xs font-medium text-blue-700 ring-1 ring-inset ring-orange-600/10\"\n                  >\n                    {{practiceArea.name}}\n                    {{#if (eq practiceArea.status \"Active\")}}\n                      <i class=\"fa fa-check\"></i>\n                    {{else if (eq practiceArea.status \"Pending\")}}\n                      <i class=\"fa fa-clock-o\"></i>\n                    {{else if (eq practiceArea.status \"Terminated\")}}\n                      <i class=\"fa fa-times\"></i>\n                    {{/if}}\n                  </span>\n                {{else}}\n                  <span\n                    class=\"inline-flex items-center justify-center gap-1 rounded-md bg-orange-50 px-2 py-1 text-xs font-medium text-gray-700 ring-1 ring-inset ring-orange-600/10\"\n                  >\n                    {{practiceArea.name}}\n                    {{#if (eq practiceArea.status \"Active\")}}\n                      <i class=\"fa fa-check\"></i>\n                    {{else if (eq practiceArea.status \"Pending\")}}\n                      <i class=\"fa fa-clock-o\"></i>\n                    {{else if (eq practiceArea.status \"Terminated\")}}\n                      <i class=\"fa fa-times\"></i>\n                    {{/if}}\n                  </span>\n                {{/if}}\n              {{/each}}\n            </td>\n            <td class=\"whitespace-nowrap py-4 pl-3 pr-4 text-right text-sm font-medium sm:pr-3\">\n              <V2::Button @variant=\"outlined\" @route=\"v2.firms.firm\" @model={{firm.firmID}} class=\"text-brand-primary-color-rgb\">\n                Manage<span class=\"sr-only\"></span>\n              </V2::Button>\n            </td>\n          </tr>\n        {{/each}}\n      </tbody>\n    </table>\n  </V2::AdminPage>\n  \n  {{outlet}}\n  */\n  {\n    \"id\": \"mNhwbSSe\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@heading\\\",\\\"@ctaButtons\\\"],[\\\"Firms\\\",[30,0,[\\\"ctaButtons\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\\n  \\\"],[10,\\\"dl\\\"],[14,0,\\\"mx-auto mb-4 grid grid-cols-1 gap-2 sm:grid-cols-2 lg:grid-cols-4\\\"],[12],[1,\\\"\\\\n    \\\"],[11,0],[24,0,\\\"flex cursor-pointer flex-wrap items-baseline justify-between gap-x-4 gap-y-2 rounded-lg border-2 border-gray-900 px-4 py-4 hover:bg-gray-100\\\"],[4,[38,3],[\\\"click\\\",[28,[37,4],[[30,0,[\\\"filterByStatus\\\"]],\\\"\\\"],null]],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"dt\\\"],[14,0,\\\"text-sm/6 font-medium text-gray-500\\\"],[12],[1,\\\"Total Firms\\\"],[13],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"statusFilter\\\"]]],[[[1,\\\"        \\\"],[8,[39,7],[[24,0,\\\"size-4 text-green-500\\\"]],[[\\\"@icon\\\"],[\\\"circle-check\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[10,\\\"dd\\\"],[14,0,\\\"w-full flex-none text-3xl/10 font-medium tracking-tight text-gray-900\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"firms\\\",\\\"length\\\"]]],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[11,0],[24,0,\\\"flex cursor-pointer flex-wrap items-baseline justify-between gap-x-4 gap-y-2 rounded-lg border-2 border-gray-900 px-4 py-4 hover:bg-gray-100\\\"],[4,[38,3],[\\\"click\\\",[28,[37,4],[[30,0,[\\\"filterByStatus\\\"]],\\\"Pending\\\"],null]],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"dt\\\"],[14,0,\\\"text-sm/6 font-medium text-gray-500\\\"],[12],[1,\\\"Pending Firms\\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,10],[[30,0,[\\\"statusFilter\\\"]],\\\"Pending\\\"],null],[[[1,\\\"        \\\"],[8,[39,7],[[24,0,\\\"size-4 text-green-500\\\"]],[[\\\"@icon\\\"],[\\\"circle-check\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[10,\\\"dd\\\"],[14,0,\\\"w-full flex-none text-3xl/10 font-medium tracking-tight text-gray-900\\\"],[12],[1,[30,0,[\\\"countPending\\\"]]],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[11,0],[24,0,\\\"flex cursor-pointer flex-wrap items-baseline justify-between gap-x-4 gap-y-2 rounded-lg border-2 border-gray-900 px-4 py-4 hover:bg-gray-100\\\"],[4,[38,3],[\\\"click\\\",[28,[37,4],[[30,0,[\\\"filterByStatus\\\"]],\\\"Active\\\"],null]],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"dt\\\"],[14,0,\\\"text-sm/6 font-medium text-gray-500\\\"],[12],[1,\\\"Active Firms\\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,10],[[30,0,[\\\"statusFilter\\\"]],\\\"Active\\\"],null],[[[1,\\\"        \\\"],[8,[39,7],[[24,0,\\\"size-4 text-green-500\\\"]],[[\\\"@icon\\\"],[\\\"circle-check\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[10,\\\"dd\\\"],[14,0,\\\"w-full flex-none text-3xl/10 font-medium tracking-tight text-gray-900\\\"],[12],[1,[30,0,[\\\"countActive\\\"]]],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[11,0],[24,0,\\\"flex cursor-pointer flex-wrap items-baseline justify-between gap-x-4 gap-y-2 rounded-lg border-2 border-gray-900 px-4 py-4 hover:bg-gray-100\\\"],[4,[38,3],[\\\"click\\\",[28,[37,4],[[30,0,[\\\"filterByStatus\\\"]],\\\"Terminated\\\"],null]],null],[12],[1,\\\"\\\\n      \\\"],[10,\\\"dt\\\"],[14,0,\\\"text-sm/6 font-medium text-gray-500\\\"],[12],[1,\\\"Terminated Firms\\\"],[13],[1,\\\"\\\\n\\\"],[41,[28,[37,10],[[30,0,[\\\"statusFilter\\\"]],\\\"Terminated\\\"],null],[[[1,\\\"        \\\"],[8,[39,7],[[24,0,\\\"size-4 text-green-500\\\"]],[[\\\"@icon\\\"],[\\\"circle-check\\\"]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[10,\\\"dd\\\"],[14,0,\\\"w-full flex-none text-3xl/10 font-medium tracking-tight text-gray-900\\\"],[12],[1,[30,0,[\\\"countTerminated\\\"]]],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,\\\"dl\\\"],[14,0,\\\"mx-auto grid grid-cols-5 gap-2 rounded-lg bg-gray-100\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"flex flex-wrap items-baseline justify-between gap-x-4 px-4 py-2\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"dt\\\"],[14,0,\\\"text-sm/6 font-medium text-gray-500\\\"],[12],[1,\\\"Family\\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"dd\\\"],[14,0,\\\"w-full flex-none text-2xl/10 font-medium tracking-tight text-gray-900\\\"],[12],[1,[30,0,[\\\"countPracticeArea\\\",\\\"Family\\\"]]],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"flex flex-wrap items-baseline justify-between gap-x-4 px-4 py-2\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"dt\\\"],[14,0,\\\"text-sm/6 font-medium text-gray-500\\\"],[12],[1,\\\"Wills\\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"dd\\\"],[14,0,\\\"w-full flex-none text-2xl/10 font-medium tracking-tight text-gray-900\\\"],[12],[1,[30,0,[\\\"countPracticeArea\\\",\\\"Wills\\\"]]],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"flex flex-wrap items-baseline justify-between gap-x-4 px-4 py-2\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"dt\\\"],[14,0,\\\"text-sm/6 font-medium text-gray-500\\\"],[12],[1,\\\"Probate\\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"dd\\\"],[14,0,\\\"w-full flex-none text-2xl/10 font-medium tracking-tight text-gray-900\\\"],[12],[1,[30,0,[\\\"countPracticeArea\\\",\\\"Probate\\\"]]],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"flex flex-wrap items-baseline justify-between gap-x-4 px-4 py-2\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"dt\\\"],[14,0,\\\"text-sm/6 font-medium text-gray-500\\\"],[12],[1,\\\"Estates\\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"dd\\\"],[14,0,\\\"w-full flex-none text-2xl/10 font-medium tracking-tight text-gray-900\\\"],[12],[1,[30,0,[\\\"countPracticeArea\\\",\\\"Estates\\\"]]],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"flex flex-wrap items-baseline justify-between gap-x-4 px-4 py-2\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"dt\\\"],[14,0,\\\"text-sm/6 font-medium text-gray-500\\\"],[12],[1,\\\"Forms\\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"dd\\\"],[14,0,\\\"w-full flex-none text-2xl/10 font-medium tracking-tight text-gray-900\\\"],[12],[1,[30,0,[\\\"countPracticeArea\\\",\\\"Forms\\\"]]],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,\\\"table\\\"],[14,0,\\\"min-w-full table-fixed divide-y divide-gray-300\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"thead\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"tr\\\"],[14,0,\\\"text-left text-sm\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"hidden p-3 font-semibold sm:table-cell\\\"],[12],[1,\\\"Name (\\\"],[1,[30,0,[\\\"firms\\\",\\\"length\\\"]]],[1,\\\")\\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"p-3 font-semibold\\\"],[12],[1,\\\"Firm ID\\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"hidden p-3 font-semibold sm:table-cell\\\"],[12],[1,\\\"Status\\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"hidden p-3 font-semibold sm:table-cell\\\"],[12],[1,\\\"Practice areas\\\"],[13],[1,\\\"\\\\n        \\\"],[10,\\\"th\\\"],[14,\\\"scope\\\",\\\"col\\\"],[14,0,\\\"relative p-3\\\"],[12],[1,\\\"\\\\n          \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Options\\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"tbody\\\"],[14,0,\\\"divide-y divide-gray-200 bg-white\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,18],[[28,[37,18],[[30,0,[\\\"firms\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[10,\\\"tr\\\"],[15,\\\"data-index\\\",[30,2]],[15,\\\"data-firm-id\\\",[30,1,[\\\"firmID\\\"]]],[14,0,\\\"border-b border-gray-100\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[14,0,\\\"hidden px-3 py-3.5 text-sm sm:table-cell\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[30,1,[\\\"name\\\"]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[14,0,\\\"hidden px-3 py-3.5 text-sm sm:table-cell\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[30,1,[\\\"firmID\\\"]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[14,0,\\\"hidden px-3 py-3.5 text-sm sm:table-cell\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,10],[[30,1,[\\\"status\\\"]],\\\"Active\\\"],null],[[[1,\\\"              \\\"],[10,1],[14,0,\\\"inline-flex rounded-md bg-green-50 px-2 py-1 text-xs font-medium text-green-700 ring-1 ring-inset ring-green-600/10\\\"],[12],[1,\\\"\\\\n                \\\"],[1,[30,1,[\\\"status\\\"]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,1,[\\\"status\\\"]],\\\"Pending\\\"],null],[[[1,\\\"              \\\"],[10,1],[14,0,\\\"inline-flex rounded-md bg-orange-50 px-2 py-1 text-xs font-medium text-yellow-700 ring-1 ring-inset ring-orange-600/10\\\"],[12],[1,\\\"\\\\n                \\\"],[1,[30,1,[\\\"status\\\"]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,1,[\\\"status\\\"]],\\\"Terminated\\\"],null],[[[1,\\\"              \\\"],[10,1],[14,0,\\\"inline-flex rounded-md bg-orange-50 px-2 py-1 text-xs font-medium text-orange-700 ring-1 ring-inset ring-orange-600/10\\\"],[12],[1,\\\"\\\\n                \\\"],[1,[30,1,[\\\"status\\\"]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"              \\\"],[10,1],[14,0,\\\"inline-flex rounded-md bg-orange-50 px-2 py-1 text-xs font-medium text-gray-700 ring-1 ring-inset ring-orange-600/10\\\"],[12],[1,\\\"\\\\n                \\\"],[1,[30,1,[\\\"status\\\"]]],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]],[]]]],[]]],[1,\\\"          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[14,0,\\\"hidden px-3 py-3.5 text-sm sm:table-cell\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,18],[[28,[37,18],[[30,1,[\\\"practiceAreas\\\"]]],null]],null],null,[[[41,[28,[37,10],[[30,3,[\\\"name\\\"]],\\\"Family\\\"],null],[[[1,\\\"                \\\"],[10,1],[14,0,\\\"inline-flex items-center justify-center gap-1 rounded-md bg-orange-50 px-2 py-1 text-xs font-medium text-green-700 ring-1 ring-inset ring-orange-600/10\\\"],[12],[1,\\\"\\\\n                  \\\"],[1,[30,3,[\\\"name\\\"]]],[1,\\\"\\\\n\\\"],[41,[28,[37,10],[[30,3,[\\\"status\\\"]],\\\"Active\\\"],null],[[[1,\\\"                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fa fa-check\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,3,[\\\"status\\\"]],\\\"Pending\\\"],null],[[[1,\\\"                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fa fa-clock-o\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,3,[\\\"status\\\"]],\\\"Terminated\\\"],null],[[[1,\\\"                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fa fa-times\\\"],[12],[13],[1,\\\"\\\\n                  \\\"]],[]],null]],[]]]],[]]],[1,\\\"                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,3,[\\\"name\\\"]],\\\"Wills\\\"],null],[[[1,\\\"                \\\"],[10,1],[14,0,\\\"inline-flex items-center justify-center gap-1 rounded-md bg-orange-50 px-2 py-1 text-xs font-medium text-cyan-700 ring-1 ring-inset ring-orange-600/10\\\"],[12],[1,\\\"\\\\n                  \\\"],[1,[30,3,[\\\"name\\\"]]],[1,\\\"\\\\n\\\"],[41,[28,[37,10],[[30,3,[\\\"status\\\"]],\\\"Active\\\"],null],[[[1,\\\"                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fa fa-check\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,3,[\\\"status\\\"]],\\\"Pending\\\"],null],[[[1,\\\"                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fa fa-clock-o\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,3,[\\\"status\\\"]],\\\"Terminated\\\"],null],[[[1,\\\"                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fa fa-times\\\"],[12],[13],[1,\\\"\\\\n                  \\\"]],[]],null]],[]]]],[]]],[1,\\\"                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,3,[\\\"name\\\"]],\\\"Probate\\\"],null],[[[1,\\\"                \\\"],[10,1],[14,0,\\\"inline-flex items-center justify-center gap-1 rounded-md bg-orange-50 px-2 py-1 text-xs font-medium text-purple-700 ring-1 ring-inset ring-orange-600/10\\\"],[12],[1,\\\"\\\\n                  \\\"],[1,[30,3,[\\\"name\\\"]]],[1,\\\"\\\\n\\\"],[41,[28,[37,10],[[30,3,[\\\"status\\\"]],\\\"Active\\\"],null],[[[1,\\\"                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fa fa-check\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,3,[\\\"status\\\"]],\\\"Pending\\\"],null],[[[1,\\\"                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fa fa-clock-o\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,3,[\\\"status\\\"]],\\\"Terminated\\\"],null],[[[1,\\\"                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fa fa-times\\\"],[12],[13],[1,\\\"\\\\n                  \\\"]],[]],null]],[]]]],[]]],[1,\\\"                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,3,[\\\"name\\\"]],\\\"Estates\\\"],null],[[[1,\\\"                \\\"],[10,1],[14,0,\\\"inline-flex items-center justify-center gap-1 rounded-md bg-orange-50 px-2 py-1 text-xs font-medium text-blue-700 ring-1 ring-inset ring-orange-600/10\\\"],[12],[1,\\\"\\\\n                  \\\"],[1,[30,3,[\\\"name\\\"]]],[1,\\\"\\\\n\\\"],[41,[28,[37,10],[[30,3,[\\\"status\\\"]],\\\"Active\\\"],null],[[[1,\\\"                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fa fa-check\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,3,[\\\"status\\\"]],\\\"Pending\\\"],null],[[[1,\\\"                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fa fa-clock-o\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,3,[\\\"status\\\"]],\\\"Terminated\\\"],null],[[[1,\\\"                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fa fa-times\\\"],[12],[13],[1,\\\"\\\\n                  \\\"]],[]],null]],[]]]],[]]],[1,\\\"                \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                \\\"],[10,1],[14,0,\\\"inline-flex items-center justify-center gap-1 rounded-md bg-orange-50 px-2 py-1 text-xs font-medium text-gray-700 ring-1 ring-inset ring-orange-600/10\\\"],[12],[1,\\\"\\\\n                  \\\"],[1,[30,3,[\\\"name\\\"]]],[1,\\\"\\\\n\\\"],[41,[28,[37,10],[[30,3,[\\\"status\\\"]],\\\"Active\\\"],null],[[[1,\\\"                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fa fa-check\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,3,[\\\"status\\\"]],\\\"Pending\\\"],null],[[[1,\\\"                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fa fa-clock-o\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[41,[28,[37,10],[[30,3,[\\\"status\\\"]],\\\"Terminated\\\"],null],[[[1,\\\"                    \\\"],[10,\\\"i\\\"],[14,0,\\\"fa fa-times\\\"],[12],[13],[1,\\\"\\\\n                  \\\"]],[]],null]],[]]]],[]]],[1,\\\"                \\\"],[13],[1,\\\"\\\\n              \\\"]],[]]]],[]]]],[]]]],[]]]],[3,4]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,\\\"td\\\"],[14,0,\\\"whitespace-nowrap py-4 pl-3 pr-4 text-right text-sm font-medium sm:pr-3\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,21],[[24,0,\\\"text-brand-primary-color-rgb\\\"]],[[\\\"@variant\\\",\\\"@route\\\",\\\"@model\\\"],[\\\"outlined\\\",\\\"v2.firms.firm\\\",[30,1,[\\\"firmID\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              Manage\\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[1,2]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[46,[28,[37,23],null,null],null,null,null]],[\\\"firm\\\",\\\"index\\\",\\\"practiceArea\\\",\\\"index\\\"],false,[\\\"v2/admin-page\\\",\\\"dl\\\",\\\"div\\\",\\\"on\\\",\\\"fn\\\",\\\"dt\\\",\\\"unless\\\",\\\"v2/svg-icon\\\",\\\"dd\\\",\\\"if\\\",\\\"eq\\\",\\\"table\\\",\\\"thead\\\",\\\"tr\\\",\\\"th\\\",\\\"span\\\",\\\"tbody\\\",\\\"each\\\",\\\"-track-array\\\",\\\"td\\\",\\\"i\\\",\\\"v2/button\\\",\\\"component\\\",\\\"-outlet\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/firms/index.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/firms/loading\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage @heading=\"Loading...\">\n    {{outlet}}\n  </V2::AdminPage>\n  */\n  {\n    \"id\": \"YCADyhzK\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@heading\\\"],[\\\"Loading...\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[46,[28,[37,2],null,null],null,null,null],[1,\\\"\\\\n\\\"]],[]]]]]],[],false,[\\\"v2/admin-page\\\",\\\"component\\\",\\\"-outlet\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/firms/loading.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/layout-admin\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! Shown on large screens, hidden on small }}\n  <V2::Sidebar @isSidebarOpen={{this.isSidebarOpen}} @setSidebarState={{this.setSidebarState}} />\n  {{! Hidden on large screens, shown on small }}\n  <AdminHeader @setSidebarState={{this.setSidebarState}} />\n  \n  <div class=\"pt-14 lg:pl-64 lg:pt-0\">\n    <main>\n      {{outlet}}\n    </main>\n  \n    {{#if this.hasOverdueInvoices}}\n      <V2::Banner @primaryAction={{this.goToBilling}} @primaryActionText=\"View invoices\" class=\"bg-red-500 text-white lg:ml-64\">\n        {{this.firm.name}}\n        has overdue invoices!\n      </V2::Banner>\n    {{/if}}\n  </div>\n  \n  <AdminNotification />\n  \n  */\n  {\n    \"id\": \"RB0iWd0x\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@isSidebarOpen\\\",\\\"@setSidebarState\\\"],[[30,0,[\\\"isSidebarOpen\\\"]],[30,0,[\\\"setSidebarState\\\"]]]],null],[1,\\\"\\\\n\\\"],[8,[39,1],null,[[\\\"@setSidebarState\\\"],[[30,0,[\\\"setSidebarState\\\"]]]],null],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"pt-14 lg:pl-64 lg:pt-0\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"main\\\"],[12],[1,\\\"\\\\n    \\\"],[46,[28,[37,5],null,null],null,null,null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"hasOverdueInvoices\\\"]],[[[1,\\\"    \\\"],[8,[39,7],[[24,0,\\\"bg-red-500 text-white lg:ml-64\\\"]],[[\\\"@primaryAction\\\",\\\"@primaryActionText\\\"],[[30,0,[\\\"goToBilling\\\"]],\\\"View invoices\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\"\\\\n      has overdue invoices!\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,8],null,null,null],[1,\\\"\\\\n\\\"]],[],false,[\\\"v2/sidebar\\\",\\\"admin-header\\\",\\\"div\\\",\\\"main\\\",\\\"component\\\",\\\"-outlet\\\",\\\"if\\\",\\\"v2/banner\\\",\\\"admin-notification\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/layout-admin.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/layout-auth\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"flex min-h-full flex-col justify-center py-12 sm:px-6 lg:px-8\">\n    {{outlet}}\n  </div>\n  \n  */\n  {\n    \"id\": \"ujyS/2h7\",\n    \"block\": \"[[[10,0],[14,0,\\\"flex min-h-full flex-col justify-center py-12 sm:px-6 lg:px-8\\\"],[12],[1,\\\"\\\\n  \\\"],[46,[28,[37,2],null,null],null,null,null],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[],false,[\\\"div\\\",\\\"component\\\",\\\"-outlet\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/layout-auth.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/layout-base\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{outlet}}\n  <EnvironmentIndicator @legacyUserInterface={{false}} />\n  \n  */\n  {\n    \"id\": \"uFi2Kkn2\",\n    \"block\": \"[[[46,[28,[37,1],null,null],null,null,null],[1,\\\"\\\\n\\\"],[8,[39,2],null,[[\\\"@legacyUserInterface\\\"],[false]],null],[1,\\\"\\\\n\\\"]],[],false,[\\\"component\\\",\\\"-outlet\\\",\\\"environment-indicator\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/layout-base.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/layout-firms\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! Shown on large screens, hidden on small }}\n  <V2::Sidebar @isSidebarOpen={{this.isSidebarOpen}} @setSidebarState={{this.setSidebarState}} />\n  {{! Hidden on large screens, shown on small }}\n  <AdminHeader @setSidebarState={{this.setSidebarState}} />\n  \n  <div class=\"pt-14 lg:pl-64 lg:pt-0\">\n    <main>\n      {{outlet}}\n    </main>\n  </div>\n  \n  <AdminNotification />\n  */\n  {\n    \"id\": \"aoK+9hVG\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@isSidebarOpen\\\",\\\"@setSidebarState\\\"],[[30,0,[\\\"isSidebarOpen\\\"]],[30,0,[\\\"setSidebarState\\\"]]]],null],[1,\\\"\\\\n\\\"],[8,[39,1],null,[[\\\"@setSidebarState\\\"],[[30,0,[\\\"setSidebarState\\\"]]]],null],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"pt-14 lg:pl-64 lg:pt-0\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"main\\\"],[12],[1,\\\"\\\\n    \\\"],[46,[28,[37,5],null,null],null,null,null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,6],null,null,null]],[],false,[\\\"v2/sidebar\\\",\\\"admin-header\\\",\\\"div\\\",\\\"main\\\",\\\"component\\\",\\\"-outlet\\\",\\\"admin-notification\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/layout-firms.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/layout-reports\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! Shown on large screens, hidden on small }}\n  <V2::Sidebar @isSidebarOpen={{this.isSidebarOpen}} @setSidebarState={{this.setSidebarState}} />\n  {{! Hidden on large screens, shown on small }}\n  <AdminHeader @setSidebarState={{this.setSidebarState}} />\n  \n  <div class=\"pt-14 lg:pl-64 lg:pt-0\">\n    <main>\n      {{outlet}}\n    </main>\n  </div>\n  \n  <AdminNotification />\n  */\n  {\n    \"id\": \"S6uRNhKy\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@isSidebarOpen\\\",\\\"@setSidebarState\\\"],[[30,0,[\\\"isSidebarOpen\\\"]],[30,0,[\\\"setSidebarState\\\"]]]],null],[1,\\\"\\\\n\\\"],[8,[39,1],null,[[\\\"@setSidebarState\\\"],[[30,0,[\\\"setSidebarState\\\"]]]],null],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"pt-14 lg:pl-64 lg:pt-0\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"main\\\"],[12],[1,\\\"\\\\n    \\\"],[46,[28,[37,5],null,null],null,null,null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,6],null,null,null]],[],false,[\\\"v2/sidebar\\\",\\\"admin-header\\\",\\\"div\\\",\\\"main\\\",\\\"component\\\",\\\"-outlet\\\",\\\"admin-notification\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/layout-reports.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/layout-signup\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"min-h-full bg-gray-200\">\n    <nav class=\"bg-gray-900\">\n      <div class=\"mx-auto max-w-7xl px-4 sm:px-6 lg:px-8\">\n        <div class=\"flex h-16 justify-center\">\n          <div class=\"flex h-16 shrink-0 items-center justify-center\">\n            <img class=\"h-8 w-auto\" src=\"/assets/images/settify-logo-type.png\" alt=\"Settify\">\n          </div>\n        </div>\n      </div>\n    </nav>\n    <main>\n      {{outlet}}\n    </main>\n  </div>\n  \n  */\n  {\n    \"id\": \"MxNyjuje\",\n    \"block\": \"[[[10,0],[14,0,\\\"min-h-full bg-gray-200\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"nav\\\"],[14,0,\\\"bg-gray-900\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"mx-auto max-w-7xl px-4 sm:px-6 lg:px-8\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"flex h-16 justify-center\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"flex h-16 shrink-0 items-center justify-center\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"img\\\"],[14,0,\\\"h-8 w-auto\\\"],[14,\\\"src\\\",\\\"/assets/images/settify-logo-type.png\\\"],[14,\\\"alt\\\",\\\"Settify\\\"],[12],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,\\\"main\\\"],[12],[1,\\\"\\\\n    \\\"],[46,[28,[37,5],null,null],null,null,null],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\"]],[],false,[\\\"div\\\",\\\"nav\\\",\\\"img\\\",\\\"main\\\",\\\"component\\\",\\\"-outlet\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/layout-signup.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/loading\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"loading-pane w-full p-4\">\n    Loading...\n  </div>\n  {{outlet}}\n  */\n  {\n    \"id\": \"zP5QZsK5\",\n    \"block\": \"[[[10,0],[14,0,\\\"loading-pane w-full p-4\\\"],[12],[1,\\\"\\\\n  Loading...\\\\n\\\"],[13],[1,\\\"\\\\n\\\"],[46,[28,[37,2],null,null],null,null,null]],[],false,[\\\"div\\\",\\\"component\\\",\\\"-outlet\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/loading.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/page-not-found\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"grid min-h-full place-items-center bg-white px-6 py-24 sm:py-32 lg:px-8\">\n    <p class=\"text-base font-semibold text-brand-primary-color-rgb\">404</p>\n    <h1 class=\"mt-4 text-3xl font-bold tracking-tight sm:text-5xl\">Page not found</h1>\n    <p class=\"mt-6 text-base leading-7 text-gray-600\">Sorry, we couldn’t find the page you’re looking for.</p>\n    <div class=\"mt-10 flex items-center justify-center gap-x-6\">\n      <LinkTo\n        @route=\"v2\"\n        class=\"rounded-md bg-brand-primary-color-rgb px-3.5 py-2.5 text-sm font-semibold text-white shadow-sm hover:bg-brand-primary-color-rgb/90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand-primary-color-rgb\"\n      >\n        Go back home\n      </LinkTo>\n      <a href=\"#\" class=\"text-sm font-semibold\">Contact support <span aria-hidden=\"true\">&rarr;</span></a>\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"JFlyzixl\",\n    \"block\": \"[[[10,0],[14,0,\\\"grid min-h-full place-items-center bg-white px-6 py-24 sm:py-32 lg:px-8\\\"],[12],[1,\\\"\\\\n  \\\"],[10,2],[14,0,\\\"text-base font-semibold text-brand-primary-color-rgb\\\"],[12],[1,\\\"404\\\"],[13],[1,\\\"\\\\n  \\\"],[10,\\\"h1\\\"],[14,0,\\\"mt-4 text-3xl font-bold tracking-tight sm:text-5xl\\\"],[12],[1,\\\"Page not found\\\"],[13],[1,\\\"\\\\n  \\\"],[10,2],[14,0,\\\"mt-6 text-base leading-7 text-gray-600\\\"],[12],[1,\\\"Sorry, we couldn’t find the page you’re looking for.\\\"],[13],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"mt-10 flex items-center justify-center gap-x-6\\\"],[12],[1,\\\"\\\\n    \\\"],[8,[39,3],[[24,0,\\\"rounded-md bg-brand-primary-color-rgb px-3.5 py-2.5 text-sm font-semibold text-white shadow-sm hover:bg-brand-primary-color-rgb/90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand-primary-color-rgb\\\"]],[[\\\"@route\\\"],[\\\"v2\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n      Go back home\\\\n    \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[10,3],[14,6,\\\"#\\\"],[14,0,\\\"text-sm font-semibold\\\"],[12],[1,\\\"Contact support \\\"],[10,1],[14,\\\"aria-hidden\\\",\\\"true\\\"],[12],[1,\\\"→\\\"],[13],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[],false,[\\\"div\\\",\\\"p\\\",\\\"h1\\\",\\\"link-to\\\",\\\"a\\\",\\\"span\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/page-not-found.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/reports/index\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage @heading=\"Reports\" @ctaButtons={{this.ctaButtons}}>\n  \n    <div class=\"mb-4 flex w-full\">\n      <div class=\"m-4 w-1/5 min-w-[12rem]\">\n        <V2::SelectBox @id=\"reportName\" @label=\"Available Reports\" @options={{this.reportNames}} @selectedItem={{this.selectedReportName}} @onChange={{this.reportNameSelected}} />\n      </div>\n  \n      <div class=\"m-4 w-1/5 min-w-[12rem]\">\n        <V2::SelectDate @id=\"reportDate\" @label=\"Report Date\" @format=\"dddd D MMMM YYYY\" @onChange={{this.reportDateSelected}} @date={{this.defaultDate}} />\n      </div>\n  \n      <div class=\"m-4 w-3/5\">\n        <V2::DataTable @id=\"reportFiles\" @columns={{this.columns}} @data={{this.rowData}} @isSearchable={{false}}>\n          <:colgroup>\n            {{! Name }}\n            <col class=\"w-full\" />\n            <col />\n          </:colgroup>\n  \n          <:action as |data|>\n            <V2::Button {{on \"click\" (fn this.downloadReport data.row)}}>Download</V2::Button>\n          </:action>\n        </V2::DataTable>\n      </div>\n    </div>\n  \n  </V2::AdminPage>\n  \n  {{outlet}}\n  */\n  {\n    \"id\": \"ssdrFAQ6\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@heading\\\",\\\"@ctaButtons\\\"],[\\\"Reports\\\",[30,0,[\\\"ctaButtons\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"mb-4 flex w-full\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"m-4 w-1/5 min-w-[12rem]\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,2],null,[[\\\"@id\\\",\\\"@label\\\",\\\"@options\\\",\\\"@selectedItem\\\",\\\"@onChange\\\"],[\\\"reportName\\\",\\\"Available Reports\\\",[30,0,[\\\"reportNames\\\"]],[30,0,[\\\"selectedReportName\\\"]],[30,0,[\\\"reportNameSelected\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,0],[14,0,\\\"m-4 w-1/5 min-w-[12rem]\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,3],null,[[\\\"@id\\\",\\\"@label\\\",\\\"@format\\\",\\\"@onChange\\\",\\\"@date\\\"],[\\\"reportDate\\\",\\\"Report Date\\\",\\\"dddd D MMMM YYYY\\\",[30,0,[\\\"reportDateSelected\\\"]],[30,0,[\\\"defaultDate\\\"]]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,0],[14,0,\\\"m-4 w-3/5\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,4],null,[[\\\"@id\\\",\\\"@columns\\\",\\\"@data\\\",\\\"@isSearchable\\\"],[\\\"reportFiles\\\",[30,0,[\\\"columns\\\"]],[30,0,[\\\"rowData\\\"]],false]],[[\\\"colgroup\\\",\\\"action\\\"],[[[[1,\\\"\\\\n\\\"],[1,\\\"          \\\"],[10,\\\"col\\\"],[14,0,\\\"w-full\\\"],[12],[13],[1,\\\"\\\\n          \\\"],[10,\\\"col\\\"],[12],[13],[1,\\\"\\\\n        \\\"]],[]],[[[1,\\\"\\\\n          \\\"],[8,[39,8],[[4,[38,9],[\\\"click\\\",[28,[37,10],[[30,0,[\\\"downloadReport\\\"]],[30,1,[\\\"row\\\"]]],null]],null]],null,[[\\\"default\\\"],[[[[1,\\\"Download\\\"]],[]]]]],[1,\\\"\\\\n        \\\"]],[1]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[46,[28,[37,12],null,null],null,null,null]],[\\\"data\\\"],false,[\\\"v2/admin-page\\\",\\\"div\\\",\\\"v2/select-box\\\",\\\"v2/select-date\\\",\\\"v2/data-table\\\",\\\":colgroup\\\",\\\"col\\\",\\\":action\\\",\\\"v2/button\\\",\\\"on\\\",\\\"fn\\\",\\\"component\\\",\\\"-outlet\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/reports/index.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/reports/loading\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <V2::AdminPage @heading=\"Loading...\">\n    {{outlet}}\n  </V2::AdminPage>\n  */\n  {\n    \"id\": \"xmOLBdhx\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@heading\\\"],[\\\"Loading...\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[46,[28,[37,2],null,null],null,null,null],[1,\\\"\\\\n\\\"]],[]]]]]],[],false,[\\\"v2/admin-page\\\",\\\"component\\\",\\\"-outlet\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/reports/loading.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/serverdown\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"min-h-screen w-full bg-[#F3F7F9] text-lg\">\n    <section class=\"mx-auto min-h-screen w-full max-w-7xl px-6 py-12 lg:grid lg:grid-cols-2 lg:items-center lg:gap-8\">\n      <div class=\"grid gap-6 px-4 text-gray-700\">\n        <h1 class=\"mb-6 text-center text-3xl font-bold tracking-tight text-gray-900 lg:text-left\">\n          {{if this.currentStatus this.currentStatus.downtimeHeader \"Functionality restored\"}}\n        </h1>\n        {{#if this.currentStatus}}\n          <div class=\"grid grid-cols-1 gap-y-6\">\n            <p class=\"mb-2 font-semibold leading-8\">\n              {{html-safe this.currentStatus.downtimeTitle}}\n            </p>\n            <p>\n              {{html-safe this.currentStatus.downtimeMessage}}\n            </p>\n            {{#if this.clientStartedInduction}}\n              <p>\n                To help you continue from where you left off when we are back up and running, please take a copy of your custom resume link below.\n              </p>\n              <V2::Clipboard @value={{this.resumeLink}} class=\"mt-2 text-gray-500\" />\n            {{else if this.allowAdminAccess}}\n              <p>\n                If you are a\n                {{this.firm.name}}\n                team member,\n                <V2::Button @route=\"v2.auth.login\" class=\"login-button px-1 text-brand-link-color-rgb underline\">\n                  Log in\n                </V2::Button>\n              </p>\n            {{/if}}\n          </div>\n        {{/if}}\n      </div>\n      <div class=\"serverdown-image hidden h-full w-full content-center overflow-hidden rounded-lg opacity-75 lg:block\">\n        <img src=\"/assets/images/serverdown.svg\" alt=\"Server down\" />\n      </div>\n    </section>\n  </div>\n  */\n  {\n    \"id\": \"x9LgJ3ML\",\n    \"block\": \"[[[10,0],[14,0,\\\"min-h-screen w-full bg-[#F3F7F9] text-lg\\\"],[12],[1,\\\"\\\\n  \\\"],[10,\\\"section\\\"],[14,0,\\\"mx-auto min-h-screen w-full max-w-7xl px-6 py-12 lg:grid lg:grid-cols-2 lg:items-center lg:gap-8\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"grid gap-6 px-4 text-gray-700\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"h1\\\"],[14,0,\\\"mb-6 text-center text-3xl font-bold tracking-tight text-gray-900 lg:text-left\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[52,[30,0,[\\\"currentStatus\\\"]],[30,0,[\\\"currentStatus\\\",\\\"downtimeHeader\\\"]],\\\"Functionality restored\\\"]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"currentStatus\\\"]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"grid grid-cols-1 gap-y-6\\\"],[12],[1,\\\"\\\\n          \\\"],[10,2],[14,0,\\\"mb-2 font-semibold leading-8\\\"],[12],[1,\\\"\\\\n            \\\"],[1,[28,[35,5],[[30,0,[\\\"currentStatus\\\",\\\"downtimeTitle\\\"]]],null]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,2],[12],[1,\\\"\\\\n            \\\"],[1,[28,[35,5],[[30,0,[\\\"currentStatus\\\",\\\"downtimeMessage\\\"]]],null]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"clientStartedInduction\\\"]],[[[1,\\\"            \\\"],[10,2],[12],[1,\\\"\\\\n              To help you continue from where you left off when we are back up and running, please take a copy of your custom resume link below.\\\\n            \\\"],[13],[1,\\\"\\\\n            \\\"],[8,[39,6],[[24,0,\\\"mt-2 text-gray-500\\\"]],[[\\\"@value\\\"],[[30,0,[\\\"resumeLink\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],[[[41,[30,0,[\\\"allowAdminAccess\\\"]],[[[1,\\\"            \\\"],[10,2],[12],[1,\\\"\\\\n              If you are a\\\\n              \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\"\\\\n              team member,\\\\n              \\\"],[8,[39,7],[[24,0,\\\"login-button px-1 text-brand-link-color-rgb underline\\\"]],[[\\\"@route\\\"],[\\\"v2.auth.login\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n                Log in\\\\n              \\\"]],[]]]]],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"]],[]],null]],[]]],[1,\\\"        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"serverdown-image hidden h-full w-full content-center overflow-hidden rounded-lg opacity-75 lg:block\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"/assets/images/serverdown.svg\\\"],[14,\\\"alt\\\",\\\"Server down\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[],false,[\\\"div\\\",\\\"section\\\",\\\"h1\\\",\\\"if\\\",\\\"p\\\",\\\"html-safe\\\",\\\"v2/clipboard\\\",\\\"v2/button\\\",\\\"img\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/serverdown.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/signup/complete\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"min-h-svh bg-gray-50\">\n    <div class=\"mx-auto max-w-2xl px-4 pb-24 pt-16 sm:px-6 lg:max-w-7xl lg:px-8\">\n      <h2 class=\"sr-only\">Complete</h2>\n      <div class=\"lg:grid lg:grid-cols-2 lg:gap-x-12 xl:gap-x-16\">\n        <section class=\"flex flex-col gap-3\">\n          <h3 class=\"text-3xl font-bold text-brand-primary-color-rgb\">Congratulations!</h3>\n          <p class=\"leading-8\">Your new Settify site is being created.</p>\n          <p class=\"leading-8\">\n            Your site URL is:\n            <span class=\"font-semibold\">{{this.fullSettifyUrl}}</span>\n          </p>\n          {{#if this.signupService.isAutoRolloutRegion}}\n            <p class=\"leading-8\">\n              Your site is being automatically set up in the background. Your login credentials will be sent to you shortly — use them to log in at your site URL above.\n            </p>\n            <p class=\"text-sm leading-6 text-gray-500\">\n              Haven't received your credentials? Check your spam folder, or contact us at\n              <a href=\"mailto:contact@settify.com\" class=\"font-medium text-brand-primary-color-rgb hover:underline\">contact@settify.com</a>.\n            </p>\n            <p class=\"text-sm leading-6 text-gray-600\">You may now close this window.</p>\n          {{else}}\n            <p class=\"text-sm leading-6 text-gray-600\">\n              Please allow up to 48 hours for your site to be available. You may now close this window.\n            </p>\n          {{/if}}\n        </section>\n  \n        <section class=\"relative mt-10 hidden h-full lg:mt-0 lg:block\">\n          <h3 class=\"text-lg font-medium\">Settify Signup</h3>\n          <div class=\"mt-4 overflow-hidden rounded-lg border border-gray-200 bg-white shadow-sm\">\n            <div class=\"flex h-full items-start justify-center bg-blue-100 p-6\">\n              <V2::SignupSite>\n                <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"h-12 w-12\">\n                  <path\n                    stroke-linecap=\"round\"\n                    stroke-linejoin=\"round\"\n                    d=\"M15.182 15.182a4.5 4.5 0 0 1-6.364 0M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0ZM9.75 9.75c0 .414-.168.75-.375.75S9 10.164 9 9.75 9.168 9 9.375 9s.375.336.375.75Zm-.375 0h.008v.015h-.008V9.75Zm5.625 0c0 .414-.168.75-.375.75s-.375-.336-.375-.75.168-.75.375-.75.375.336.375.75Zm-.375 0h.008v.015h-.008V9.75Z\"\n                  />\n                </svg>\n              </V2::SignupSite>\n            </div>\n          </div>\n        </section>\n      </div>\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"X0R+17QT\",\n    \"block\": \"[[[10,0],[14,0,\\\"min-h-svh bg-gray-50\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"mx-auto max-w-2xl px-4 pb-24 pt-16 sm:px-6 lg:max-w-7xl lg:px-8\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"h2\\\"],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Complete\\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"lg:grid lg:grid-cols-2 lg:gap-x-12 xl:gap-x-16\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"section\\\"],[14,0,\\\"flex flex-col gap-3\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"h3\\\"],[14,0,\\\"text-3xl font-bold text-brand-primary-color-rgb\\\"],[12],[1,\\\"Congratulations!\\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"leading-8\\\"],[12],[1,\\\"Your new Settify site is being created.\\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"leading-8\\\"],[12],[1,\\\"\\\\n          Your site URL is:\\\\n          \\\"],[10,1],[14,0,\\\"font-semibold\\\"],[12],[1,[30,0,[\\\"fullSettifyUrl\\\"]]],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"signupService\\\",\\\"isAutoRolloutRegion\\\"]],[[[1,\\\"          \\\"],[10,2],[14,0,\\\"leading-8\\\"],[12],[1,\\\"\\\\n            Your site is being automatically set up in the background. Your login credentials will be sent to you shortly — use them to log in at your site URL above.\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,2],[14,0,\\\"text-sm leading-6 text-gray-500\\\"],[12],[1,\\\"\\\\n            Haven't received your credentials? Check your spam folder, or contact us at\\\\n            \\\"],[10,3],[14,6,\\\"mailto:contact@settify.com\\\"],[14,0,\\\"font-medium text-brand-primary-color-rgb hover:underline\\\"],[12],[1,\\\"contact@settify.com\\\"],[13],[1,\\\".\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,2],[14,0,\\\"text-sm leading-6 text-gray-600\\\"],[12],[1,\\\"You may now close this window.\\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"          \\\"],[10,2],[14,0,\\\"text-sm leading-6 text-gray-600\\\"],[12],[1,\\\"\\\\n            Please allow up to 48 hours for your site to be available. You may now close this window.\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,\\\"section\\\"],[14,0,\\\"relative mt-10 hidden h-full lg:mt-0 lg:block\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"h3\\\"],[14,0,\\\"text-lg font-medium\\\"],[12],[1,\\\"Settify Signup\\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"mt-4 overflow-hidden rounded-lg border border-gray-200 bg-white shadow-sm\\\"],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"flex h-full items-start justify-center bg-blue-100 p-6\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,8],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,\\\"svg\\\"],[14,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[14,\\\"fill\\\",\\\"none\\\"],[14,\\\"viewBox\\\",\\\"0 0 24 24\\\"],[14,\\\"stroke-width\\\",\\\"1.5\\\"],[14,\\\"stroke\\\",\\\"currentColor\\\"],[14,0,\\\"h-12 w-12\\\"],[12],[1,\\\"\\\\n                \\\"],[10,\\\"path\\\"],[14,\\\"stroke-linecap\\\",\\\"round\\\"],[14,\\\"stroke-linejoin\\\",\\\"round\\\"],[14,\\\"d\\\",\\\"M15.182 15.182a4.5 4.5 0 0 1-6.364 0M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0ZM9.75 9.75c0 .414-.168.75-.375.75S9 10.164 9 9.75 9.168 9 9.375 9s.375.336.375.75Zm-.375 0h.008v.015h-.008V9.75Zm5.625 0c0 .414-.168.75-.375.75s-.375-.336-.375-.75.168-.75.375-.75.375.336.375.75Zm-.375 0h.008v.015h-.008V9.75Z\\\"],[12],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[],false,[\\\"div\\\",\\\"h2\\\",\\\"section\\\",\\\"h3\\\",\\\"p\\\",\\\"span\\\",\\\"if\\\",\\\"a\\\",\\\"v2/signup-site\\\",\\\"svg\\\",\\\"path\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/signup/complete.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/signup/index\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"bg-gray-50\">\n    <div class=\"mx-auto max-w-2xl px-4 pb-24 pt-16 sm:px-6 lg:max-w-7xl lg:px-8\">\n      <h2 class=\"sr-only\">Sign up</h2>\n  \n      <form class=\"lg:grid lg:grid-cols-2 lg:gap-x-12 xl:gap-x-16\">\n        <div>\n          <div>\n            <h2 class=\"text-lg font-medium\">Contact information</h2>\n  \n            <div class=\"mt-4 grid grid-cols-1 gap-y-6\">\n              <div>\n                <V2::EmailInput\n                  @label=\"Email address\"\n                  @type=\"email\"\n                  @value={{this.signupService.email}}\n                  @setEmailValidation={{this.signupService.setEmailValidation}}\n                  @id=\"email\"\n                  @required={{true}}\n                  name=\"email\"\n                  autocomplete=\"email\"\n                />\n              </div>\n  \n              <div>\n                <V2::Textline @label=\"Contact name\" @value={{this.signupService.name}} @id=\"name\" @required={{true}} name=\"contactName\" autocomplete=\"name\" />\n              </div>\n            </div>\n          </div>\n  \n          <div class=\"mt-10 border-t border-gray-200 pt-10\">\n            <h2 class=\"text-lg font-medium\">Firm information</h2>\n  \n            <div class=\"mt-4 grid grid-cols-1 gap-y-6 sm:grid-cols-2 sm:gap-x-4\">\n  \n              <div class=\"sm:col-span-2\">\n                <V2::Textline\n                  @label=\"Firm name\"\n                  @value={{this.signupService.firmName}}\n                  @id=\"firmName\"\n                  @required={{true}}\n                  name=\"firmName\"\n                  {{on \"change\" this.signupService.refreshSiteSlug}}\n                />\n              </div>\n  \n              <div class=\"sm:col-span-2\">\n                <V2::Textline @label=\"Website\" @value={{this.signupService.firmWebsite}} @id=\"website\" name=\"firmWebsite\" {{on \"change\" this.signupService.refreshSiteSlug}} />\n              </div>\n  \n              <div class=\"sm:col-span-2\">\n                <V2::SelectBox\n                  @label=\"Country\"\n                  @options={{this.signupService.countryOptions}}\n                  @selectedItem={{this.signupService.country}}\n                  @prompt=\"Select\"\n                  @id=\"country\"\n                  @required={{true}}\n                  {{on \"change\" this.signupService.updateCountry}}\n                  autocomplete=\"country-name\"\n                />\n              </div>\n  \n              <div class=\"sm:col-span-2\">\n                <V2::Textline @label=\"Street address\" @value={{this.signupService.street}} @id=\"address\" @required={{true}} name=\"address\" autocomplete=\"street-address\" />\n              </div>\n  \n              <div class=\"sm:col-span-2\">\n                <V2::Textline @label=\"City / Suburb\" @value={{this.signupService.city}} @id=\"city\" @required={{true}} name=\"city\" autocomplete=\"address-level2\" />\n              </div>\n  \n              {{! Only shown where we offer states - the UK and NZ have none, so postcode takes the whole row }}\n              {{#if this.signupService.hasStates}}\n                <div>\n                  <V2::SelectBox\n                    @label=\"State / Province\"\n                    @options={{this.signupService.stateOptions}}\n                    @selectedItem={{this.signupService.state}}\n                    @prompt=\"Select\"\n                    @id=\"region\"\n                    @required={{true}}\n                    {{on \"change\" this.signupService.updateState}}\n                    autocomplete=\"address-level1\"\n                  />\n                  {{#if this.signupService.isUSOrCanada}}\n                    <p class=\"mt-2 text-xs text-gray-400\">Only available states/provinces are shown.</p>\n                  {{/if}}\n                </div>\n              {{/if}}\n  \n              <div class=\"{{unless this.signupService.hasStates 'sm:col-span-2'}}\">\n                <V2::Textline @label=\"ZIP / Postal code\" @value={{this.signupService.postcode}} @id=\"postal-code\" @required={{true}} name=\"postal-code\" autocomplete=\"postal-code\" />\n              </div>\n  \n              <div class=\"sm:col-span-2\">\n                <V2::Textline @label=\"Phone\" @value={{this.signupService.phone}} @id=\"phone\" name=\"phone\" autocomplete=\"tel\" />\n              </div>\n            </div>\n          </div>\n        </div>\n  \n        {{! Settify Signup }}\n        <div class=\"mt-10 lg:mt-0\">\n          <h2 class=\"text-lg font-medium\">Account setup</h2>\n  \n          <div class=\"mt-4 overflow-hidden rounded-lg border border-gray-200 bg-white shadow-sm\">\n            <div class=\"flex h-full items-start justify-center bg-blue-100 p-6\">\n              <V2::SignupSite />\n            </div>\n  \n            <div class=\"border-t border-gray-200 px-4 py-6 sm:px-6\">\n              <fieldset>\n                <legend class=\"required-field-marker pb-2 text-lg font-medium\">\n                  Practice Areas\n                </legend>\n                <div class=\"grid grid-cols-2 gap-2\">\n                  {{#each this.signupService.availablePracticeAreasForCountry as |pa|}}\n                    <div>\n                      <V2::Checkbox\n                        @value={{pa.selected}}\n                        @label={{pa.label}}\n                        @disabled={{this.signupService.isSinglePracticeAreaCountry}}\n                        @onChange={{fn this.signupService.togglePracticeArea pa.value}}\n                      />\n                    </div>\n                  {{else}}\n                    <p class=\"col-span-2 py-4 text-sm italic text-gray-400\">\n                      Select your country to see available practice areas.\n                    </p>\n                  {{/each}}\n                </div>\n                {{#if this.signupService.isSinglePracticeAreaCountry}}\n                  <p class=\"mt-2 text-xs text-gray-400\">Only available practice area in your region.</p>\n                {{/if}}\n              </fieldset>\n            </div>\n  \n            <div class=\"border-t border-gray-200 px-4 py-6 sm:px-6\">\n              <fieldset>\n                <legend class=\"text-lg font-medium\">Settify Plan</legend>\n                <V2::SignupButton @options={{this.signupService.signupPlans}} @onSelect={{this.signupService.selectPlan}} />\n              </fieldset>\n            </div>\n  \n            <div class=\"border-t border-gray-200 px-4 py-6 sm:px-6\">\n              <div class=\"flex flex-col gap-1\">\n                <label for=\"siteSlug\" class=\"required-field-marker block text-sm font-medium text-gray-700\">\n                  Settify URL\n                </label>\n                <div class=\"flex w-full\">\n                  <span class=\"inline-flex shrink-0 items-center rounded-l-md border border-r-0 border-gray-300 bg-gray-100 px-3 text-gray-500 sm:text-sm\">https://</span>\n                  <div class=\"min-w-0 flex-1\">\n                    <V2::Textline\n                      @value={{this.signupService.siteSlug}}\n                      @placeholder=\"settify-legal\"\n                      @id=\"siteSlug\"\n                      @onChange={{this.signupService.siteSlugOnChange}}\n                      @onBlur={{this.signupService.siteSlugOnBlur}}\n                      name=\"siteSlug\"\n                      class=\"w-full rounded-none text-right {{if this.signupService.domainExists 'ring-2 ring-red-500'}}\"\n                    />\n                  </div>\n                  <span class=\"inline-flex w-40 shrink-0 items-center rounded-r-md border border-l-0 border-gray-300 bg-gray-100 px-3 text-gray-500 sm:text-sm\">\n                    {{this.signupService.firmDomain}}\n                  </span>\n                </div>\n              </div>\n            </div>\n  \n            <div class=\"border-t border-gray-200 px-4 py-6 sm:px-6\">\n              <div class=\"mb-6 flex items-start gap-2 rounded-lg border border-gray-300 bg-gray-50 p-4\">\n                <div class=\"mt-1 flex items-center\">\n                  <V2::Checkbox @value={{this.signupService.termsAccepted}} @id=\"terms-acceptance\" />\n                </div>\n                {{! template-lint-disable no-nested-interactive }}\n                <label for=\"terms-acceptance\" class=\"cursor-pointer text-sm font-medium\">\n                  I have read and agree to Settify's\n                  <a href=\"https://settify.com/terms\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"hover:text-settify-green-dark font-medium text-settify-green underline\">Terms\n                    and Conditions</a>\n                  and\n                  <a\n                    href=\"https://settify.com/privacy\"\n                    target=\"_blank\"\n                    rel=\"noopener noreferrer\"\n                    class=\"hover:text-settify-green-dark font-medium text-settify-green underline\"\n                  >Privacy Policy</a>\n                </label>\n              </div>\n  \n              {{! General errors (network, validation failures) }}\n              {{#if this.signupService.error}}\n                <div class=\"mb-4 rounded-md border border-red-200 bg-red-50 p-3\" role=\"alert\">\n                  <div class=\"flex items-start gap-2\">\n                    <V2::SvgIcon @icon=\"triangle-exclamation\" class=\"size-5 flex-shrink-0 text-red-600\" />\n                    <span class=\"sr-only\">Error</span>\n                    <p class=\"text-sm text-red-800\">{{this.signupService.errorMessage}}</p>\n                  </div>\n                </div>\n              {{/if}}\n  \n              <V2::LoadingButton\n                @variant=\"solid\"\n                @disabled={{not this.signupService.isValidSignup}}\n                @loading={{this.signupService.loading}}\n                @loadingText=\"Processing...\"\n                {{on \"click\" this.signupService.createVerificationCode}}\n                class=\"w-full\"\n              >\n                Next\n              </V2::LoadingButton>\n            </div>\n          </div>\n        </div>\n      </form>\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"GBHdbn2K\",\n    \"block\": \"[[[10,0],[14,0,\\\"bg-gray-50\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"mx-auto max-w-2xl px-4 pb-24 pt-16 sm:px-6 lg:max-w-7xl lg:px-8\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"h2\\\"],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Sign up\\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,\\\"form\\\"],[14,0,\\\"lg:grid lg:grid-cols-2 lg:gap-x-12 xl:gap-x-16\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[12],[1,\\\"\\\\n        \\\"],[10,0],[12],[1,\\\"\\\\n          \\\"],[10,\\\"h2\\\"],[14,0,\\\"text-lg font-medium\\\"],[12],[1,\\\"Contact information\\\"],[13],[1,\\\"\\\\n\\\\n          \\\"],[10,0],[14,0,\\\"mt-4 grid grid-cols-1 gap-y-6\\\"],[12],[1,\\\"\\\\n            \\\"],[10,0],[12],[1,\\\"\\\\n              \\\"],[8,[39,3],[[24,3,\\\"email\\\"],[24,\\\"autocomplete\\\",\\\"email\\\"]],[[\\\"@label\\\",\\\"@type\\\",\\\"@value\\\",\\\"@setEmailValidation\\\",\\\"@id\\\",\\\"@required\\\"],[\\\"Email address\\\",\\\"email\\\",[30,0,[\\\"signupService\\\",\\\"email\\\"]],[30,0,[\\\"signupService\\\",\\\"setEmailValidation\\\"]],\\\"email\\\",true]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\\n            \\\"],[10,0],[12],[1,\\\"\\\\n              \\\"],[8,[39,4],[[24,3,\\\"contactName\\\"],[24,\\\"autocomplete\\\",\\\"name\\\"]],[[\\\"@label\\\",\\\"@value\\\",\\\"@id\\\",\\\"@required\\\"],[\\\"Contact name\\\",[30,0,[\\\"signupService\\\",\\\"name\\\"]],\\\"name\\\",true]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[10,0],[14,0,\\\"mt-10 border-t border-gray-200 pt-10\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"h2\\\"],[14,0,\\\"text-lg font-medium\\\"],[12],[1,\\\"Firm information\\\"],[13],[1,\\\"\\\\n\\\\n          \\\"],[10,0],[14,0,\\\"mt-4 grid grid-cols-1 gap-y-6 sm:grid-cols-2 sm:gap-x-4\\\"],[12],[1,\\\"\\\\n\\\\n            \\\"],[10,0],[14,0,\\\"sm:col-span-2\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,4],[[24,3,\\\"firmName\\\"],[4,[38,5],[\\\"change\\\",[30,0,[\\\"signupService\\\",\\\"refreshSiteSlug\\\"]]],null]],[[\\\"@label\\\",\\\"@value\\\",\\\"@id\\\",\\\"@required\\\"],[\\\"Firm name\\\",[30,0,[\\\"signupService\\\",\\\"firmName\\\"]],\\\"firmName\\\",true]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\\n            \\\"],[10,0],[14,0,\\\"sm:col-span-2\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,4],[[24,3,\\\"firmWebsite\\\"],[4,[38,5],[\\\"change\\\",[30,0,[\\\"signupService\\\",\\\"refreshSiteSlug\\\"]]],null]],[[\\\"@label\\\",\\\"@value\\\",\\\"@id\\\"],[\\\"Website\\\",[30,0,[\\\"signupService\\\",\\\"firmWebsite\\\"]],\\\"website\\\"]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\\n            \\\"],[10,0],[14,0,\\\"sm:col-span-2\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,6],[[24,\\\"autocomplete\\\",\\\"country-name\\\"],[4,[38,5],[\\\"change\\\",[30,0,[\\\"signupService\\\",\\\"updateCountry\\\"]]],null]],[[\\\"@label\\\",\\\"@options\\\",\\\"@selectedItem\\\",\\\"@prompt\\\",\\\"@id\\\",\\\"@required\\\"],[\\\"Country\\\",[30,0,[\\\"signupService\\\",\\\"countryOptions\\\"]],[30,0,[\\\"signupService\\\",\\\"country\\\"]],\\\"Select\\\",\\\"country\\\",true]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\\n            \\\"],[10,0],[14,0,\\\"sm:col-span-2\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,4],[[24,3,\\\"address\\\"],[24,\\\"autocomplete\\\",\\\"street-address\\\"]],[[\\\"@label\\\",\\\"@value\\\",\\\"@id\\\",\\\"@required\\\"],[\\\"Street address\\\",[30,0,[\\\"signupService\\\",\\\"street\\\"]],\\\"address\\\",true]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\\n            \\\"],[10,0],[14,0,\\\"sm:col-span-2\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,4],[[24,3,\\\"city\\\"],[24,\\\"autocomplete\\\",\\\"address-level2\\\"]],[[\\\"@label\\\",\\\"@value\\\",\\\"@id\\\",\\\"@required\\\"],[\\\"City / Suburb\\\",[30,0,[\\\"signupService\\\",\\\"city\\\"]],\\\"city\\\",true]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"signupService\\\",\\\"hasStates\\\"]],[[[1,\\\"              \\\"],[10,0],[12],[1,\\\"\\\\n                \\\"],[8,[39,6],[[24,\\\"autocomplete\\\",\\\"address-level1\\\"],[4,[38,5],[\\\"change\\\",[30,0,[\\\"signupService\\\",\\\"updateState\\\"]]],null]],[[\\\"@label\\\",\\\"@options\\\",\\\"@selectedItem\\\",\\\"@prompt\\\",\\\"@id\\\",\\\"@required\\\"],[\\\"State / Province\\\",[30,0,[\\\"signupService\\\",\\\"stateOptions\\\"]],[30,0,[\\\"signupService\\\",\\\"state\\\"]],\\\"Select\\\",\\\"region\\\",true]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"signupService\\\",\\\"isUSOrCanada\\\"]],[[[1,\\\"                  \\\"],[10,2],[14,0,\\\"mt-2 text-xs text-gray-400\\\"],[12],[1,\\\"Only available states/provinces are shown.\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n            \\\"],[10,0],[15,0,[29,[[52,[51,[30,0,[\\\"signupService\\\",\\\"hasStates\\\"]]],\\\"sm:col-span-2\\\"]]]],[12],[1,\\\"\\\\n              \\\"],[8,[39,4],[[24,3,\\\"postal-code\\\"],[24,\\\"autocomplete\\\",\\\"postal-code\\\"]],[[\\\"@label\\\",\\\"@value\\\",\\\"@id\\\",\\\"@required\\\"],[\\\"ZIP / Postal code\\\",[30,0,[\\\"signupService\\\",\\\"postcode\\\"]],\\\"postal-code\\\",true]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\\n            \\\"],[10,0],[14,0,\\\"sm:col-span-2\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,4],[[24,3,\\\"phone\\\"],[24,\\\"autocomplete\\\",\\\"tel\\\"]],[[\\\"@label\\\",\\\"@value\\\",\\\"@id\\\"],[\\\"Phone\\\",[30,0,[\\\"signupService\\\",\\\"phone\\\"]],\\\"phone\\\"]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[1,\\\"      \\\"],[10,0],[14,0,\\\"mt-10 lg:mt-0\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"h2\\\"],[14,0,\\\"text-lg font-medium\\\"],[12],[1,\\\"Account setup\\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[10,0],[14,0,\\\"mt-4 overflow-hidden rounded-lg border border-gray-200 bg-white shadow-sm\\\"],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"flex h-full items-start justify-center bg-blue-100 p-6\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,10],null,null,null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\\n          \\\"],[10,0],[14,0,\\\"border-t border-gray-200 px-4 py-6 sm:px-6\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"fieldset\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"legend\\\"],[14,0,\\\"required-field-marker pb-2 text-lg font-medium\\\"],[12],[1,\\\"\\\\n                Practice Areas\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"grid grid-cols-2 gap-2\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,14],[[28,[37,14],[[30,0,[\\\"signupService\\\",\\\"availablePracticeAreasForCountry\\\"]]],null]],null],null,[[[1,\\\"                  \\\"],[10,0],[12],[1,\\\"\\\\n                    \\\"],[8,[39,15],null,[[\\\"@value\\\",\\\"@label\\\",\\\"@disabled\\\",\\\"@onChange\\\"],[[30,1,[\\\"selected\\\"]],[30,1,[\\\"label\\\"]],[30,0,[\\\"signupService\\\",\\\"isSinglePracticeAreaCountry\\\"]],[28,[37,16],[[30,0,[\\\"signupService\\\",\\\"togglePracticeArea\\\"]],[30,1,[\\\"value\\\"]]],null]]],null],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],[[[1,\\\"                  \\\"],[10,2],[14,0,\\\"col-span-2 py-4 text-sm italic text-gray-400\\\"],[12],[1,\\\"\\\\n                    Select your country to see available practice areas.\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"              \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"signupService\\\",\\\"isSinglePracticeAreaCountry\\\"]],[[[1,\\\"                \\\"],[10,2],[14,0,\\\"mt-2 text-xs text-gray-400\\\"],[12],[1,\\\"Only available practice area in your region.\\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\\n          \\\"],[10,0],[14,0,\\\"border-t border-gray-200 px-4 py-6 sm:px-6\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"fieldset\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"legend\\\"],[14,0,\\\"text-lg font-medium\\\"],[12],[1,\\\"Settify Plan\\\"],[13],[1,\\\"\\\\n              \\\"],[8,[39,17],null,[[\\\"@options\\\",\\\"@onSelect\\\"],[[30,0,[\\\"signupService\\\",\\\"signupPlans\\\"]],[30,0,[\\\"signupService\\\",\\\"selectPlan\\\"]]]],null],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\\n          \\\"],[10,0],[14,0,\\\"border-t border-gray-200 px-4 py-6 sm:px-6\\\"],[12],[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"flex flex-col gap-1\\\"],[12],[1,\\\"\\\\n              \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"siteSlug\\\"],[14,0,\\\"required-field-marker block text-sm font-medium text-gray-700\\\"],[12],[1,\\\"\\\\n                Settify URL\\\\n              \\\"],[13],[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"flex w-full\\\"],[12],[1,\\\"\\\\n                \\\"],[10,1],[14,0,\\\"inline-flex shrink-0 items-center rounded-l-md border border-r-0 border-gray-300 bg-gray-100 px-3 text-gray-500 sm:text-sm\\\"],[12],[1,\\\"https://\\\"],[13],[1,\\\"\\\\n                \\\"],[10,0],[14,0,\\\"min-w-0 flex-1\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,4],[[24,3,\\\"siteSlug\\\"],[16,0,[29,[\\\"w-full rounded-none text-right \\\",[52,[30,0,[\\\"signupService\\\",\\\"domainExists\\\"]],\\\"ring-2 ring-red-500\\\"]]]]],[[\\\"@value\\\",\\\"@placeholder\\\",\\\"@id\\\",\\\"@onChange\\\",\\\"@onBlur\\\"],[[30,0,[\\\"signupService\\\",\\\"siteSlug\\\"]],\\\"settify-legal\\\",\\\"siteSlug\\\",[30,0,[\\\"signupService\\\",\\\"siteSlugOnChange\\\"]],[30,0,[\\\"signupService\\\",\\\"siteSlugOnBlur\\\"]]]],null],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n                \\\"],[10,1],[14,0,\\\"inline-flex w-40 shrink-0 items-center rounded-r-md border border-l-0 border-gray-300 bg-gray-100 px-3 text-gray-500 sm:text-sm\\\"],[12],[1,\\\"\\\\n                  \\\"],[1,[30,0,[\\\"signupService\\\",\\\"firmDomain\\\"]]],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\\n          \\\"],[10,0],[14,0,\\\"border-t border-gray-200 px-4 py-6 sm:px-6\\\"],[12],[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"mb-6 flex items-start gap-2 rounded-lg border border-gray-300 bg-gray-50 p-4\\\"],[12],[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"mt-1 flex items-center\\\"],[12],[1,\\\"\\\\n                \\\"],[8,[39,15],null,[[\\\"@value\\\",\\\"@id\\\"],[[30,0,[\\\"signupService\\\",\\\"termsAccepted\\\"]],\\\"terms-acceptance\\\"]],null],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"],[1,\\\"              \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"terms-acceptance\\\"],[14,0,\\\"cursor-pointer text-sm font-medium\\\"],[12],[1,\\\"\\\\n                I have read and agree to Settify's\\\\n                \\\"],[10,3],[14,6,\\\"https://settify.com/terms\\\"],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[14,0,\\\"hover:text-settify-green-dark font-medium text-settify-green underline\\\"],[12],[1,\\\"Terms\\\\n                  and Conditions\\\"],[13],[1,\\\"\\\\n                and\\\\n                \\\"],[10,3],[14,6,\\\"https://settify.com/privacy\\\"],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[14,0,\\\"hover:text-settify-green-dark font-medium text-settify-green underline\\\"],[12],[1,\\\"Privacy Policy\\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"signupService\\\",\\\"error\\\"]],[[[1,\\\"              \\\"],[10,0],[14,0,\\\"mb-4 rounded-md border border-red-200 bg-red-50 p-3\\\"],[14,\\\"role\\\",\\\"alert\\\"],[12],[1,\\\"\\\\n                \\\"],[10,0],[14,0,\\\"flex items-start gap-2\\\"],[12],[1,\\\"\\\\n                  \\\"],[8,[39,21],[[24,0,\\\"size-5 flex-shrink-0 text-red-600\\\"]],[[\\\"@icon\\\"],[\\\"triangle-exclamation\\\"]],null],[1,\\\"\\\\n                  \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Error\\\"],[13],[1,\\\"\\\\n                  \\\"],[10,2],[14,0,\\\"text-sm text-red-800\\\"],[12],[1,[30,0,[\\\"signupService\\\",\\\"errorMessage\\\"]]],[13],[1,\\\"\\\\n                \\\"],[13],[1,\\\"\\\\n              \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n            \\\"],[8,[39,22],[[24,0,\\\"w-full\\\"],[4,[38,5],[\\\"click\\\",[30,0,[\\\"signupService\\\",\\\"createVerificationCode\\\"]]],null]],[[\\\"@variant\\\",\\\"@disabled\\\",\\\"@loading\\\",\\\"@loadingText\\\"],[\\\"solid\\\",[28,[37,23],[[30,0,[\\\"signupService\\\",\\\"isValidSignup\\\"]]],null],[30,0,[\\\"signupService\\\",\\\"loading\\\"]],\\\"Processing...\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              Next\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"pa\\\"],false,[\\\"div\\\",\\\"h2\\\",\\\"form\\\",\\\"v2/email-input\\\",\\\"v2/textline\\\",\\\"on\\\",\\\"v2/select-box\\\",\\\"if\\\",\\\"p\\\",\\\"unless\\\",\\\"v2/signup-site\\\",\\\"fieldset\\\",\\\"legend\\\",\\\"each\\\",\\\"-track-array\\\",\\\"v2/checkbox\\\",\\\"fn\\\",\\\"v2/signup-button\\\",\\\"label\\\",\\\"span\\\",\\\"a\\\",\\\"v2/svg-icon\\\",\\\"v2/loading-button\\\",\\\"not\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/signup/index.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/signup/validate\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <div class=\"min-h-svh bg-gray-50\">\n    <div class=\"mx-auto max-w-2xl px-4 pb-24 pt-16 sm:px-6 lg:max-w-7xl lg:px-8\">\n      <h2 class=\"sr-only\">Validate</h2>\n      <div class=\"lg:grid lg:grid-cols-2 lg:gap-x-12 xl:gap-x-16\">\n        <section class=\"flex flex-col gap-4\">\n          <h3 class=\"text-lg font-medium\">Check your email</h3>\n          <p class=\"leading-8\">\n            We've sent a 6-digit verification code to\n            <span class=\"settify-sensitive font-bold\">{{this.signupService.email}}</span>. It will expire in 5 minutes.\n          </p>\n          <div>\n            <V2::Textline @label=\"Verification code\" @value={{this.signupService.code}} @id=\"code\" @required={{true}} name=\"code\" maxlength={{6}} class=\"w-full\" />\n          </div>\n          <p class=\"text-sm leading-8 text-gray-500\">\n            Remember to check your spam folder if you don't see it.\n          </p>\n  \n          <p class=\"text-sm text-gray-500\">\n            Didn't receive it?\n            <V2::LoadingButton\n              @loading={{this.resendCodeLoading}}\n              @loadingText=\"Sending...\"\n              @disabled={{this.signupService.loading}}\n              {{on \"click\" this.resendCode}}\n              class=\"hover:text-settify-green-dark inline-flex text-settify-green underline disabled:opacity-50\"\n            >\n              Resend code\n            </V2::LoadingButton>\n          </p>\n  \n          {{#if this.signupService.error}}\n            <div class=\"rounded-md border border-red-200 bg-red-50 p-3\" role=\"alert\">\n              <div class=\"flex items-start gap-2\">\n                <V2::SvgIcon @icon=\"triangle-exclamation\" class=\"size-5 flex-shrink-0 text-red-600\" />\n                <span class=\"sr-only\">Error</span>\n                <p class=\"text-sm text-red-800\">{{this.signupService.errorMessage}}</p>\n              </div>\n            </div>\n          {{/if}}\n        </section>\n  \n        <section class=\"relative mt-4 h-full lg:mt-0\">\n          <h3 class=\"sr-only\">Settify Signup</h3>\n          <div class=\"overflow-hidden lg:mt-4 lg:rounded-lg lg:border lg:border-gray-200 lg:bg-white lg:shadow-sm\">\n            <div class=\"hidden h-full items-start justify-center bg-blue-100 p-6 lg:flex\">\n              <V2::SignupSite>\n                <div class=\"animate-pulse\">\n                  {{#if this.signupService.isValidCode}}\n                    <V2::SvgIcon @icon=\"shield-check\" class=\"size-12\" />\n                  {{else}}\n                    <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"h-12 w-12\">\n                      <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\" />\n                    </svg>\n                  {{/if}}\n                </div>\n              </V2::SignupSite>\n            </div>\n            <div class=\"py-6 lg:px-6\">\n              <V2::LoadingButton\n                @variant=\"solid\"\n                @disabled={{or (not this.signupService.isValidCode) this.resendCodeLoading}}\n                @loading={{and this.signupService.loading (not this.resendCodeLoading)}}\n                @loadingText=\"Submitting...\"\n                {{on \"click\" this.signupService.addSelfSignupDraftToRolloutTable}}\n                class=\"w-full\"\n              >\n                Next\n              </V2::LoadingButton>\n            </div>\n          </div>\n        </section>\n      </div>\n    </div>\n  </div>\n  */\n  {\n    \"id\": \"R8Jqi5Bb\",\n    \"block\": \"[[[10,0],[14,0,\\\"min-h-svh bg-gray-50\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"mx-auto max-w-2xl px-4 pb-24 pt-16 sm:px-6 lg:max-w-7xl lg:px-8\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"h2\\\"],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Validate\\\"],[13],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"lg:grid lg:grid-cols-2 lg:gap-x-12 xl:gap-x-16\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"section\\\"],[14,0,\\\"flex flex-col gap-4\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"h3\\\"],[14,0,\\\"text-lg font-medium\\\"],[12],[1,\\\"Check your email\\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"leading-8\\\"],[12],[1,\\\"\\\\n          We've sent a 6-digit verification code to\\\\n          \\\"],[10,1],[14,0,\\\"settify-sensitive font-bold\\\"],[12],[1,[30,0,[\\\"signupService\\\",\\\"email\\\"]]],[13],[1,\\\". It will expire in 5 minutes.\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[12],[1,\\\"\\\\n          \\\"],[8,[39,6],[[24,3,\\\"code\\\"],[16,\\\"maxlength\\\",6],[24,0,\\\"w-full\\\"]],[[\\\"@label\\\",\\\"@value\\\",\\\"@id\\\",\\\"@required\\\"],[\\\"Verification code\\\",[30,0,[\\\"signupService\\\",\\\"code\\\"]],\\\"code\\\",true]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n        \\\"],[10,2],[14,0,\\\"text-sm leading-8 text-gray-500\\\"],[12],[1,\\\"\\\\n          Remember to check your spam folder if you don't see it.\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[10,2],[14,0,\\\"text-sm text-gray-500\\\"],[12],[1,\\\"\\\\n          Didn't receive it?\\\\n          \\\"],[8,[39,7],[[24,0,\\\"hover:text-settify-green-dark inline-flex text-settify-green underline disabled:opacity-50\\\"],[4,[38,8],[\\\"click\\\",[30,0,[\\\"resendCode\\\"]]],null]],[[\\\"@loading\\\",\\\"@loadingText\\\",\\\"@disabled\\\"],[[30,0,[\\\"resendCodeLoading\\\"]],\\\"Sending...\\\",[30,0,[\\\"signupService\\\",\\\"loading\\\"]]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n            Resend code\\\\n          \\\"]],[]]]]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"signupService\\\",\\\"error\\\"]],[[[1,\\\"          \\\"],[10,0],[14,0,\\\"rounded-md border border-red-200 bg-red-50 p-3\\\"],[14,\\\"role\\\",\\\"alert\\\"],[12],[1,\\\"\\\\n            \\\"],[10,0],[14,0,\\\"flex items-start gap-2\\\"],[12],[1,\\\"\\\\n              \\\"],[8,[39,10],[[24,0,\\\"size-5 flex-shrink-0 text-red-600\\\"]],[[\\\"@icon\\\"],[\\\"triangle-exclamation\\\"]],null],[1,\\\"\\\\n              \\\"],[10,1],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Error\\\"],[13],[1,\\\"\\\\n              \\\"],[10,2],[14,0,\\\"text-sm text-red-800\\\"],[12],[1,[30,0,[\\\"signupService\\\",\\\"errorMessage\\\"]]],[13],[1,\\\"\\\\n            \\\"],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,\\\"section\\\"],[14,0,\\\"relative mt-4 h-full lg:mt-0\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"h3\\\"],[14,0,\\\"sr-only\\\"],[12],[1,\\\"Settify Signup\\\"],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"overflow-hidden lg:mt-4 lg:rounded-lg lg:border lg:border-gray-200 lg:bg-white lg:shadow-sm\\\"],[12],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"hidden h-full items-start justify-center bg-blue-100 p-6 lg:flex\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,11],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n              \\\"],[10,0],[14,0,\\\"animate-pulse\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"signupService\\\",\\\"isValidCode\\\"]],[[[1,\\\"                  \\\"],[8,[39,10],[[24,0,\\\"size-12\\\"]],[[\\\"@icon\\\"],[\\\"shield-check\\\"]],null],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"                  \\\"],[10,\\\"svg\\\"],[14,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[14,\\\"fill\\\",\\\"none\\\"],[14,\\\"viewBox\\\",\\\"0 0 24 24\\\"],[14,\\\"stroke-width\\\",\\\"1.5\\\"],[14,\\\"stroke\\\",\\\"currentColor\\\"],[14,0,\\\"h-12 w-12\\\"],[12],[1,\\\"\\\\n                    \\\"],[10,\\\"path\\\"],[14,\\\"stroke-linecap\\\",\\\"round\\\"],[14,\\\"stroke-linejoin\\\",\\\"round\\\"],[14,\\\"d\\\",\\\"M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\\\"],[12],[13],[1,\\\"\\\\n                  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"              \\\"],[13],[1,\\\"\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"py-6 lg:px-6\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,7],[[24,0,\\\"w-full\\\"],[4,[38,8],[\\\"click\\\",[30,0,[\\\"signupService\\\",\\\"addSelfSignupDraftToRolloutTable\\\"]]],null]],[[\\\"@variant\\\",\\\"@disabled\\\",\\\"@loading\\\",\\\"@loadingText\\\"],[\\\"solid\\\",[28,[37,14],[[28,[37,15],[[30,0,[\\\"signupService\\\",\\\"isValidCode\\\"]]],null],[30,0,[\\\"resendCodeLoading\\\"]]],null],[28,[37,16],[[30,0,[\\\"signupService\\\",\\\"loading\\\"]],[28,[37,15],[[30,0,[\\\"resendCodeLoading\\\"]]],null]],null],\\\"Submitting...\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n              Next\\\\n            \\\"]],[]]]]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[],false,[\\\"div\\\",\\\"h2\\\",\\\"section\\\",\\\"h3\\\",\\\"p\\\",\\\"span\\\",\\\"v2/textline\\\",\\\"v2/loading-button\\\",\\\"on\\\",\\\"if\\\",\\\"v2/svg-icon\\\",\\\"v2/signup-site\\\",\\\"svg\\\",\\\"path\\\",\\\"or\\\",\\\"not\\\",\\\"and\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/signup/validate.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/unsubscribe\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <main class=\"flex min-h-screen w-full flex-col items-center justify-center bg-white\" {{did-insert this.processUnsubscribe}}>\n    {{#if this.isUnsubscribing}}\n      <div id=\"unsubscribe-processing\" role=\"status\" aria-live=\"polite\" class=\"flex flex-col items-center\">\n        <V2::SvgIcon @icon=\"spinner-third\" class=\"size-10 animate-spin\" />\n        <p class=\"mt-4 text-center text-gray-600\">Unsubscribing...</p>\n      </div>\n    {{/if}}\n  \n    {{#if (and this.unsubscribeComplete (not this.isUnsubscribing))}}\n      <div id=\"unsubscribe-complete\" class=\"mb-4 flex items-center justify-center\">\n        <V2::SvgIcon @icon=\"circle-check\" class=\"size-10 text-green-600\" />\n      </div>\n      <h2 class=\"text-center text-xl font-semibold text-gray-800\">You have been unsubscribed</h2>\n      <p class=\"text-center text-base text-gray-600\">\n        {{#if (eq this.type \"newlead\")}}\n          We'll stop sending you reminders about this lead.\n        {{else if (eq this.type \"files\")}}\n          We'll stop sending you reminders about these files.\n          <br />\n          Please make sure you download them by the expiry date if you have not done so already.\n        {{else}}\n          You will no longer receive any emails from us.\n        {{/if}}\n      </p>\n    {{/if}}\n  \n    {{#if (and this.unsubscribeFailed (not this.isUnsubscribing))}}\n      <div id=\"unsubscribe-failed\" class=\"mb-4 flex items-center justify-center\">\n        <V2::SvgIcon @icon=\"triangle-exclamation\" class=\"size-10 text-red-600\" />\n      </div>\n      <h2 class=\"text-center text-xl font-semibold text-gray-800\">Unable to unsubscribe</h2>\n      <p class=\"text-center text-base text-gray-600\">\n        An error occurred. Please try again or\n        <a href=\"https://settify.freshdesk.com\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-blue-600 underline\">contact our support team</a>.\n      </p>\n    {{/if}}\n  </main>\n  */\n  {\n    \"id\": \"hMOeV1rp\",\n    \"block\": \"[[[11,\\\"main\\\"],[24,0,\\\"flex min-h-screen w-full flex-col items-center justify-center bg-white\\\"],[4,[38,1],[[30,0,[\\\"processUnsubscribe\\\"]]],null],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"isUnsubscribing\\\"]],[[[1,\\\"    \\\"],[10,0],[14,1,\\\"unsubscribe-processing\\\"],[14,\\\"role\\\",\\\"status\\\"],[14,\\\"aria-live\\\",\\\"polite\\\"],[14,0,\\\"flex flex-col items-center\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,4],[[24,0,\\\"size-10 animate-spin\\\"]],[[\\\"@icon\\\"],[\\\"spinner-third\\\"]],null],[1,\\\"\\\\n      \\\"],[10,2],[14,0,\\\"mt-4 text-center text-gray-600\\\"],[12],[1,\\\"Unsubscribing...\\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,6],[[30,0,[\\\"unsubscribeComplete\\\"]],[28,[37,7],[[30,0,[\\\"isUnsubscribing\\\"]]],null]],null],[[[1,\\\"    \\\"],[10,0],[14,1,\\\"unsubscribe-complete\\\"],[14,0,\\\"mb-4 flex items-center justify-center\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,4],[[24,0,\\\"size-10 text-green-600\\\"]],[[\\\"@icon\\\"],[\\\"circle-check\\\"]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"h2\\\"],[14,0,\\\"text-center text-xl font-semibold text-gray-800\\\"],[12],[1,\\\"You have been unsubscribed\\\"],[13],[1,\\\"\\\\n    \\\"],[10,2],[14,0,\\\"text-center text-base text-gray-600\\\"],[12],[1,\\\"\\\\n\\\"],[41,[28,[37,9],[[30,0,[\\\"type\\\"]],\\\"newlead\\\"],null],[[[1,\\\"        We'll stop sending you reminders about this lead.\\\\n\\\"]],[]],[[[41,[28,[37,9],[[30,0,[\\\"type\\\"]],\\\"files\\\"],null],[[[1,\\\"        We'll stop sending you reminders about these files.\\\\n        \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n        Please make sure you download them by the expiry date if you have not done so already.\\\\n\\\"]],[]],[[[1,\\\"        You will no longer receive any emails from us.\\\\n      \\\"]],[]]]],[]]],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,6],[[30,0,[\\\"unsubscribeFailed\\\"]],[28,[37,7],[[30,0,[\\\"isUnsubscribing\\\"]]],null]],null],[[[1,\\\"    \\\"],[10,0],[14,1,\\\"unsubscribe-failed\\\"],[14,0,\\\"mb-4 flex items-center justify-center\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,4],[[24,0,\\\"size-10 text-red-600\\\"]],[[\\\"@icon\\\"],[\\\"triangle-exclamation\\\"]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,\\\"h2\\\"],[14,0,\\\"text-center text-xl font-semibold text-gray-800\\\"],[12],[1,\\\"Unable to unsubscribe\\\"],[13],[1,\\\"\\\\n    \\\"],[10,2],[14,0,\\\"text-center text-base text-gray-600\\\"],[12],[1,\\\"\\\\n      An error occurred. Please try again or\\\\n      \\\"],[10,3],[14,6,\\\"https://settify.freshdesk.com\\\"],[14,\\\"target\\\",\\\"_blank\\\"],[14,\\\"rel\\\",\\\"noopener noreferrer\\\"],[14,0,\\\"text-blue-600 underline\\\"],[12],[1,\\\"contact our support team\\\"],[13],[1,\\\".\\\\n    \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[13]],[],false,[\\\"main\\\",\\\"did-insert\\\",\\\"if\\\",\\\"div\\\",\\\"v2/svg-icon\\\",\\\"p\\\",\\\"and\\\",\\\"not\\\",\\\"h2\\\",\\\"eq\\\",\\\"br\\\",\\\"a\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/unsubscribe.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/v2/welcome\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <section class=\"mx-auto min-h-screen w-full max-w-7xl px-6 py-12 lg:grid lg:grid-cols-2 lg:items-center lg:gap-8\">\n    <div class=\"grid gap-6 px-4 text-gray-700\">\n      <img src=\"/assets/images/settify-logo.png\" alt=\"Settify\" class=\"mx-auto max-w-40 lg:mx-0\" />\n      <h1 class=\"mb-6 text-center text-3xl font-bold tracking-tight text-gray-900 lg:text-left\">\n        Your Settify site is nearly ready!\n      </h1>\n      <p class=\"leading-8\">\n        Our team is putting the final touches on your new Settify site and will contact you soon to guide you through the \"Go Live\" plan.\n      </p>\n      <p class=\"leading-8\">\n        If you have any questions in the meantime, please reach out directly to\n        <a href=\"mailto:support@settify.com\" class=\"text-blue-500 underline\">support@settify.com</a>\n      </p>\n  \n      <div class=\"mt-6 flex items-center justify-center gap-2 text-sm sm:justify-start\">\n        Already have an account?\n        <V2::Button @route=\"v2.auth.login\" class=\"login-button text-blue-500 underline\">\n          Log in\n        </V2::Button>\n      </div>\n    </div>\n  \n    <div class=\"hidden h-full w-full overflow-hidden rounded-lg bg-slate-50 lg:flex\">\n      <img src=\"/assets/images/under-construction.svg\" alt=\"Under construction\" class=\"opacity-75\" />\n    </div>\n  </section>\n  */\n  {\n    \"id\": \"9rMzmD8z\",\n    \"block\": \"[[[10,\\\"section\\\"],[14,0,\\\"mx-auto min-h-screen w-full max-w-7xl px-6 py-12 lg:grid lg:grid-cols-2 lg:items-center lg:gap-8\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"grid gap-6 px-4 text-gray-700\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"/assets/images/settify-logo.png\\\"],[14,\\\"alt\\\",\\\"Settify\\\"],[14,0,\\\"mx-auto max-w-40 lg:mx-0\\\"],[12],[13],[1,\\\"\\\\n    \\\"],[10,\\\"h1\\\"],[14,0,\\\"mb-6 text-center text-3xl font-bold tracking-tight text-gray-900 lg:text-left\\\"],[12],[1,\\\"\\\\n      Your Settify site is nearly ready!\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,2],[14,0,\\\"leading-8\\\"],[12],[1,\\\"\\\\n      Our team is putting the final touches on your new Settify site and will contact you soon to guide you through the \\\\\\\"Go Live\\\\\\\" plan.\\\\n    \\\"],[13],[1,\\\"\\\\n    \\\"],[10,2],[14,0,\\\"leading-8\\\"],[12],[1,\\\"\\\\n      If you have any questions in the meantime, please reach out directly to\\\\n      \\\"],[10,3],[14,6,\\\"mailto:support@settify.com\\\"],[14,0,\\\"text-blue-500 underline\\\"],[12],[1,\\\"support@settify.com\\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,0],[14,0,\\\"mt-6 flex items-center justify-center gap-2 text-sm sm:justify-start\\\"],[12],[1,\\\"\\\\n      Already have an account?\\\\n      \\\"],[8,[39,6],[[24,0,\\\"login-button text-blue-500 underline\\\"]],[[\\\"@route\\\"],[\\\"v2.auth.login\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n        Log in\\\\n      \\\"]],[]]]]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,0],[14,0,\\\"hidden h-full w-full overflow-hidden rounded-lg bg-slate-50 lg:flex\\\"],[12],[1,\\\"\\\\n    \\\"],[10,\\\"img\\\"],[14,\\\"src\\\",\\\"/assets/images/under-construction.svg\\\"],[14,\\\"alt\\\",\\\"Under construction\\\"],[14,0,\\\"opacity-75\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13]],[],false,[\\\"section\\\",\\\"div\\\",\\\"img\\\",\\\"h1\\\",\\\"p\\\",\\\"a\\\",\\\"v2/button\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/v2/welcome.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/whyspouse\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{#unless this.model.wantsBFA}}\n    <br />\n    <CheckBox @model={{this.whyAskingSpouseDetails}} @class=\"toggle-box inline\">\n      <small><i class=\"fal fa-question-circle tight\" />Why am I being asked this?</small>\n    </CheckBox>\n  {{/unless}}\n  \n  <LiquidIf @predicate={{or this.model.wantsBFA this.whyAskingSpouseDetails}}>\n    <p>\n      This is just so that we can check that we are able to act for you.\n      {{this.firm.name}}\n      will not contact\n      <span class=\"settify-sensitive\">{{this.model.otherPersonName}}</span>\n      unless you instruct us to do so. When we meet, we will discuss with you the best way to communicate with\n      <span class=\"settify-sensitive\">{{this.model.otherPersonName}}</span>. We will\n      <u>never</u>\n      disclose any information that you give to us to\n      <span class=\"settify-sensitive\">{{this.model.otherPersonName}}</span>\n      until you specifically instruct us to do so.\n    </p>\n  </LiquidIf>\n  */\n  {\n    \"id\": \"xhD9EE3V\",\n    \"block\": \"[[[41,[51,[30,0,[\\\"model\\\",\\\"wantsBFA\\\"]]],[[[1,\\\"  \\\"],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n  \\\"],[8,[39,2],null,[[\\\"@model\\\",\\\"@class\\\"],[[30,0,[\\\"whyAskingSpouseDetails\\\"]],\\\"toggle-box inline\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n    \\\"],[10,\\\"small\\\"],[12],[10,\\\"i\\\"],[14,0,\\\"fal fa-question-circle tight\\\"],[12],[13],[1,\\\"Why am I being asked this?\\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[8,[39,5],null,[[\\\"@predicate\\\"],[[28,[37,6],[[30,0,[\\\"model\\\",\\\"wantsBFA\\\"]],[30,0,[\\\"whyAskingSpouseDetails\\\"]]],null]]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,2],[12],[1,\\\"\\\\n    This is just so that we can check that we are able to act for you.\\\\n    \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\"\\\\n    will not contact\\\\n    \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"otherPersonName\\\"]]],[13],[1,\\\"\\\\n    unless you instruct us to do so. When we meet, we will discuss with you the best way to communicate with\\\\n    \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"otherPersonName\\\"]]],[13],[1,\\\". We will\\\\n    \\\"],[10,\\\"u\\\"],[12],[1,\\\"never\\\"],[13],[1,\\\"\\\\n    disclose any information that you give to us to\\\\n    \\\"],[10,1],[14,0,\\\"settify-sensitive\\\"],[12],[1,[30,0,[\\\"model\\\",\\\"otherPersonName\\\"]]],[13],[1,\\\"\\\\n    until you specifically instruct us to do so.\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[],false,[\\\"unless\\\",\\\"br\\\",\\\"check-box\\\",\\\"small\\\",\\\"i\\\",\\\"liquid-if\\\",\\\"or\\\",\\\"p\\\",\\\"span\\\",\\\"u\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/whyspouse.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/templates/yourinformation\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/template-factory\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{outlet}}\n  \n  <AnimatedHeader>\n    Your Information\n  </AnimatedHeader>\n  \n  <div class=\"container-fluid even-row\">\n    <div class=\"row no-margin\">\n      <div class=\"settify-contentcolumn\">\n        <br><br>\n  \n        {{#if this.session.isAuthenticated}}\n          {{#if this.session.data.authenticated.adminUser}}\n            <p class=\"underline\">\n              Set out below is the information that potential clients will see when they access your Settify site.\n            </p>\n          {{/if}}\n        {{/if}}\n  \n  \n        <p>\n          As set out in our <LinkTo @route=\"terms\">Terms and Conditions</LinkTo>, this website is owned and\n          operated by Settify Pty Ltd on behalf of {{this.firm.name}}.\n        </p>\n  \n        <p>\n          None of the information you provide on this website will go to {{this.firm.name}} unless and\n          until you request an appointment to speak to a lawyer.\n        </p>\n  \n        <p>\n          Until you request an appointment, no lawyers or other personnel at {{this.firm.name}} can access, view,\n          download or otherwise receive any of the information that you provide in our Online Questionnaire.\n          Furthermore, it is not possible for any personnel at {{this.firm.name}} to view, access, download or\n          otherwise receive any of the information that you have provided or may provide at any time in the future,\n          unless you request an appointment to speak to a lawyer.\n        </p>\n  \n        <p>\n          Information you provide will be stored on Settify servers. You retain full ownership of that information.\n          If you request an appointment, Settify will provide {{this.firm.name}} with your name, address,\n          and date of birth, and your spouse’s name, address, and date of birth for the purpose of assessing whether\n          {{this.firm.name}} is able to act for you.\n        </p>\n  \n        <p>\n          If you request an appointment, and {{this.firm.name}} has expressly declared (on the basis of the names and\n          addresses provided) that they are willing and able to represent you, Settify will provide the remainder\n          of your information to them.\n        </p>\n  \n        <p>\n          If {{this.firm.name}} is not able to act for you, Settify can refer you to another leading law firm, provide\n          your information summary to you, or delete your information &mdash; whatever you choose.\n        </p>\n  \n        <p>\n          If you have any questions about this process, please don’t hesitate to contact Settify at\n          <a href=\"mailto:support@settify.com\">support@settify.com</a>\n        </p>\n      </div>\n    </div>\n  </div>\n  \n  <SettifyFooter />\n  \n  */\n  {\n    \"id\": \"LibmfUMs\",\n    \"block\": \"[[[46,[28,[37,1],null,null],null,null,null],[1,\\\"\\\\n\\\\n\\\"],[8,[39,2],null,null,[[\\\"default\\\"],[[[[1,\\\"\\\\n  Your Information\\\\n\\\"]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"container-fluid even-row\\\"],[12],[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"row no-margin\\\"],[12],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"settify-contentcolumn\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"br\\\"],[12],[13],[10,\\\"br\\\"],[12],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"session\\\",\\\"isAuthenticated\\\"]],[[[41,[30,0,[\\\"session\\\",\\\"data\\\",\\\"authenticated\\\",\\\"adminUser\\\"]],[[[1,\\\"          \\\"],[10,2],[14,0,\\\"underline\\\"],[12],[1,\\\"\\\\n            Set out below is the information that potential clients will see when they access your Settify site.\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"\\\\n\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        As set out in our \\\"],[8,[39,7],null,[[\\\"@route\\\"],[\\\"terms\\\"]],[[\\\"default\\\"],[[[[1,\\\"Terms and Conditions\\\"]],[]]]]],[1,\\\", this website is owned and\\\\n        operated by Settify Pty Ltd on behalf of \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\".\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        None of the information you provide on this website will go to \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\" unless and\\\\n        until you request an appointment to speak to a lawyer.\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        Until you request an appointment, no lawyers or other personnel at \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\" can access, view,\\\\n        download or otherwise receive any of the information that you provide in our Online Questionnaire.\\\\n        Furthermore, it is not possible for any personnel at \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\" to view, access, download or\\\\n        otherwise receive any of the information that you have provided or may provide at any time in the future,\\\\n        unless you request an appointment to speak to a lawyer.\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        Information you provide will be stored on Settify servers. You retain full ownership of that information.\\\\n        If you request an appointment, Settify will provide \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\" with your name, address,\\\\n        and date of birth, and your spouse’s name, address, and date of birth for the purpose of assessing whether\\\\n        \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\" is able to act for you.\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        If you request an appointment, and \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\" has expressly declared (on the basis of the names and\\\\n        addresses provided) that they are willing and able to represent you, Settify will provide the remainder\\\\n        of your information to them.\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        If \\\"],[1,[30,0,[\\\"firm\\\",\\\"name\\\"]]],[1,\\\" is not able to act for you, Settify can refer you to another leading law firm, provide\\\\n        your information summary to you, or delete your information — whatever you choose.\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,2],[12],[1,\\\"\\\\n        If you have any questions about this process, please don’t hesitate to contact Settify at\\\\n        \\\"],[10,3],[14,6,\\\"mailto:support@settify.com\\\"],[12],[1,\\\"support@settify.com\\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[8,[39,9],null,null,null],[1,\\\"\\\\n\\\"]],[],false,[\\\"component\\\",\\\"-outlet\\\",\\\"animated-header\\\",\\\"div\\\",\\\"br\\\",\\\"if\\\",\\\"p\\\",\\\"link-to\\\",\\\"a\\\",\\\"settify-footer\\\"]]\",\n    \"moduleName\": \"settify-mvp/templates/yourinformation.hbs\",\n    \"isStrictMode\": false\n  });\n});","define(\"settify-mvp/transforms/boolean-strict\", [\"exports\", \"@ember-data/serializer/transform\"], function (_exports, _transform) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember-data/serializer/transform\"eaimeta@70e063a35619d71f\n  // Boolean-strict does not infer truthiness\n  // If a value is not expressly set to true of false, it is null\n  var _default = _exports.default = _transform.default.extend({\n    deserialize(serialized) {\n      if (serialized === true) {\n        return true;\n      }\n      if (serialized === false) {\n        return false;\n      }\n      return null;\n    },\n    serialize(deserialized) {\n      if (deserialized === true) {\n        return true;\n      }\n      if (deserialized === false) {\n        return false;\n      }\n      return null;\n    }\n  });\n});","define(\"settify-mvp/transforms/boolean\", [\"exports\", \"@ember/debug\", \"@ember-data/serializer/transform\"], function (_exports, _debug, _transform) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _transform.BooleanTransform;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"@ember/debug\",0,\"@ember-data/serializer/transform\"eaimeta@70e063a35619d71f\n  (true && !(false) && (0, _debug.deprecate)(\"You are relying on ember-data auto-magically installing the BooleanTransform. Use `export { BooleanTransform as default } from '@ember-data/serializer/transform';` in app/transforms/boolean.js instead\", false, {\n    id: 'ember-data:deprecate-legacy-imports',\n    for: 'ember-data',\n    until: '6.0',\n    since: {\n      enabled: '5.2',\n      available: '4.13'\n    }\n  }));\n});","define(\"settify-mvp/transforms/date\", [\"exports\", \"@ember/debug\", \"@ember-data/serializer/transform\"], function (_exports, _debug, _transform) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _transform.DateTransform;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"@ember/debug\",0,\"@ember-data/serializer/transform\"eaimeta@70e063a35619d71f\n  (true && !(false) && (0, _debug.deprecate)(\"You are relying on ember-data auto-magically installing the DateTransform. Use `export { DateTransform as default } from '@ember-data/serializer/transform';` in app/transforms/date.js instead\", false, {\n    id: 'ember-data:deprecate-legacy-imports',\n    for: 'ember-data',\n    until: '6.0',\n    since: {\n      enabled: '5.2',\n      available: '4.13'\n    }\n  }));\n});","define(\"settify-mvp/transforms/number\", [\"exports\", \"@ember/debug\", \"@ember-data/serializer/transform\"], function (_exports, _debug, _transform) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _transform.NumberTransform;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"@ember/debug\",0,\"@ember-data/serializer/transform\"eaimeta@70e063a35619d71f\n  (true && !(false) && (0, _debug.deprecate)(\"You are relying on ember-data auto-magically installing the NumberTransform. Use `export { NumberTransform as default } from '@ember-data/serializer/transform';` in app/transforms/number.js instead\", false, {\n    id: 'ember-data:deprecate-legacy-imports',\n    for: 'ember-data',\n    until: '6.0',\n    since: {\n      enabled: '5.2',\n      available: '4.13'\n    }\n  }));\n});","define(\"settify-mvp/transforms/string\", [\"exports\", \"@ember/debug\", \"@ember-data/serializer/transform\"], function (_exports, _debug, _transform) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _transform.StringTransform;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"@ember/debug\",0,\"@ember-data/serializer/transform\"eaimeta@70e063a35619d71f\n  (true && !(false) && (0, _debug.deprecate)(\"You are relying on ember-data auto-magically installing the StringTransform. Use `export { StringTransform as default } from '@ember-data/serializer/transform';` in app/transforms/string.js instead\", false, {\n    id: 'ember-data:deprecate-legacy-imports',\n    for: 'ember-data',\n    until: '6.0',\n    since: {\n      enabled: '5.2',\n      available: '4.13'\n    }\n  }));\n});","define(\"settify-mvp/transitions\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = _default;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  function _default() {\n    this.transition(this.toValue(function (toValue, fromValue) {\n      let to, from;\n      let loopTo, loopFrom;\n      if (typeof toValue === \"number\") {\n        to = toValue;\n      } else if (toValue && typeof toValue === \"object\") {\n        if (toValue.definition) {\n          if (typeof toValue.loop === \"number\") {\n            loopTo = toValue.loop;\n          }\n          to = toValue.definition.pageIndex;\n        } else {\n          return false;\n        }\n      } else {\n        return false;\n      }\n      if (typeof fromValue === \"number\") {\n        from = toValue;\n      } else if (fromValue && typeof fromValue === \"object\") {\n        if (fromValue.definition) {\n          if (typeof fromValue.loop === \"number\") {\n            loopFrom = fromValue.loop;\n          }\n          from = fromValue.definition.pageIndex;\n        } else {\n          return false;\n        }\n      } else {\n        return false;\n      }\n      if (to === from) {\n        return loopTo < loopFrom;\n      }\n      return to < from;\n    }), this.use(\"quickfadeLeft\", {\n      duration: 200\n    }));\n    this.transition(this.toValue(function (toValue, fromValue) {\n      let to, from;\n      let loopTo, loopFrom;\n      if (typeof toValue === \"number\") {\n        to = toValue;\n      } else if (toValue && typeof toValue === \"object\") {\n        if (toValue.definition) {\n          if (typeof toValue.loop === \"number\") {\n            loopTo = toValue.loop;\n          }\n          to = toValue.definition.pageIndex;\n        }\n      } else {\n        return false;\n      }\n      if (typeof fromValue === \"number\") {\n        from = toValue;\n      } else if (fromValue && typeof fromValue === \"object\") {\n        if (fromValue.definition) {\n          if (typeof fromValue.loop === \"number\") {\n            loopFrom = fromValue.loop;\n          }\n          from = fromValue.definition.pageIndex;\n        }\n      } else {\n        return false;\n      }\n      if (to === from) {\n        return loopTo > loopFrom;\n      }\n      return to > from;\n    }), this.use(\"quickfadeRight\", {\n      duration: 200\n    }));\n    this.transition(this.hasClass(\"quickfade\"), this.use(\"fade\", {\n      duration: 100\n    }));\n    this.transition(this.hasClass(\"nofade\"), this.use(\"fade\", {\n      duration: 0\n    }));\n    this.transition(this.use(\"fade\", {\n      duration: 300\n    }));\n\n    // this.transition(\n    //   this.fromRoute('index'),\n    //   this.toRoute('about'),\n    //   this.use('crossFade'),\n    //   this.reverse('crossFade')\n    // );\n    // this.transition(\n    //   this.withinRoute('induction.page'),\n    //   this.useAndReverse('crossFade')\n    // );\n  }\n});","define(\"settify-mvp/transitions/cross-fade\", [\"exports\", \"liquid-fire/transitions/cross-fade\"], function (_exports, _crossFade) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _crossFade.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/transitions/cross-fade\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/transitions/default\", [\"exports\", \"liquid-fire/transitions/default\"], function (_exports, _default) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _default.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/transitions/default\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/transitions/explode\", [\"exports\", \"liquid-fire/transitions/explode\"], function (_exports, _explode) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _explode.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/transitions/explode\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/transitions/fade\", [\"exports\", \"liquid-fire/transitions/fade\"], function (_exports, _fade) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _fade.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/transitions/fade\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/transitions/flex-grow\", [\"exports\", \"liquid-fire/transitions/flex-grow\"], function (_exports, _flexGrow) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _flexGrow.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/transitions/flex-grow\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/transitions/fly-to\", [\"exports\", \"liquid-fire/transitions/fly-to\"], function (_exports, _flyTo) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _flyTo.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/transitions/fly-to\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/transitions/move-over\", [\"exports\", \"liquid-fire/transitions/move-over\"], function (_exports, _moveOver) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _moveOver.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/transitions/move-over\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/transitions/quickfade-left\", [\"exports\", \"liquid-fire\"], function (_exports, _liquidFire) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = quickfadeLeft;\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire\"eaimeta@70e063a35619d71f\n  function quickfadeLeft(opts = {}) {\n    (0, _liquidFire.stop)(this.oldElement);\n    return _liquidFire.Promise.all([(0, _liquidFire.animate)(this.oldElement, {\n      opacity: 0\n    }, {\n      duration: 0\n    }), (0, _liquidFire.animate)(this.newElement, {\n      opacity: [opts.maxOpacity || 1, 0.3],\n      translateY: [0, 20]\n    }, opts)]);\n  }\n});","define(\"settify-mvp/transitions/quickfade-right\", [\"exports\", \"liquid-fire\"], function (_exports, _liquidFire) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = quickfadeRight;\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire\"eaimeta@70e063a35619d71f\n  function quickfadeRight(opts = {}) {\n    (0, _liquidFire.stop)(this.oldElement);\n    return _liquidFire.Promise.all([(0, _liquidFire.animate)(this.oldElement, {\n      opacity: 0\n    }, {\n      duration: 0\n    }), (0, _liquidFire.animate)(this.newElement, {\n      opacity: [opts.maxOpacity || 1, 0.3],\n      translateY: [0, -20]\n    }, opts)]);\n  }\n});","define(\"settify-mvp/transitions/scale\", [\"exports\", \"liquid-fire/transitions/scale\"], function (_exports, _scale) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _scale.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/transitions/scale\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/transitions/scroll-then\", [\"exports\", \"liquid-fire/transitions/scroll-then\"], function (_exports, _scrollThen) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _scrollThen.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/transitions/scroll-then\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/transitions/to-down\", [\"exports\", \"liquid-fire/transitions/to-down\"], function (_exports, _toDown) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _toDown.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/transitions/to-down\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/transitions/to-left\", [\"exports\", \"liquid-fire/transitions/to-left\"], function (_exports, _toLeft) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _toLeft.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/transitions/to-left\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/transitions/to-right\", [\"exports\", \"liquid-fire/transitions/to-right\"], function (_exports, _toRight) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _toRight.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/transitions/to-right\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/transitions/to-up\", [\"exports\", \"liquid-fire/transitions/to-up\"], function (_exports, _toUp) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _toUp.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/transitions/to-up\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/transitions/wait\", [\"exports\", \"liquid-fire/transitions/wait\"], function (_exports, _wait) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _wait.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"liquid-fire/transitions/wait\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/utils/clamp-value\", [\"exports\", \"@ember/utils\"], function (_exports, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = clampValue;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/utils\"eaimeta@70e063a35619d71f\n  /**\n   * Clamps a numeric value within a specified range.\n   *\n   * This function ensures that a given number stays within the defined minimum and maximum limits.\n   * Optionally, it can also interpret two-digit years (e.g., 75) as full years (1975 or 2075)\n   * based on the current year.\n   *\n   * @param {number} value - The value to clamp.\n   * @param {number} [min] - The minimum allowed value (optional).\n   * @param {number} [max] - The maximum allowed value (optional).\n   * @param {boolean} [assumeTwoDigitYears=false] - If true, treats two-digit years (e.g., 75) as 1975 or 2075, depending on context.\n   * @returns {number} The clamped value.\n   *\n   * @example\n   *\n   * clampValue(85, 0, 100); // Output: 85 (value already within range)\n   * clampValue(125, 0, 100); // Output: 100 (value clamped to max)\n   * clampValue(-10, 0, 100); // Output: 0 (value clamped to min)\n   * clampValue(75, undefined, undefined, true); // Output: 1975 (assumes two-digit year)\n   * clampValue(16, 1900, 2024, true); // Output: 2016 (assumes two-digit year)\n   */\n  function clampValue(value, min, max, assumeTwoDigitYears) {\n    if (value === \"\") return undefined;\n    let result = parseInt(value);\n    if (isNaN(result)) return min ? parseInt(min) : 0;\n\n    // Handle two-digit years *before* clamping to min/max\n    if (assumeTwoDigitYears && result < 100) {\n      const currentYear = new Date().getFullYear();\n      const century = currentYear - currentYear % 100; // 1900 or 2000\n      result += century + (result <= currentYear % 100 ? 0 : -100); // Adjust for century\n    }\n\n    // Now clamp to the specified range (min/max)\n    if (!(0, _utils.isNone)(min)) {\n      result = Math.max(result, min);\n    }\n    if (!(0, _utils.isNone)(max)) {\n      result = Math.min(result, max);\n    }\n    return result;\n  }\n});","define(\"settify-mvp/utils/custom-query-params\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.getCustomQueryParams = getCustomQueryParams;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  const REGULAR_QUERY_PARAMS = [\"clientID\", \"origin\", \"request\", \"referral\", \"partnerName\"];\n  function getCustomQueryParams(url = window?.location?.href || \"\") {\n    try {\n      // Create a URL object to easily extract query params from the full URL\n      const urlObj = new URL(url);\n\n      // Get search parameters (query params) from the URL\n      const searchParams = new URLSearchParams(urlObj.search);\n\n      // Filter out regular query parameters\n      const filteredParams = [...searchParams].filter(([key]) => !REGULAR_QUERY_PARAMS.includes(key));\n\n      // Convert the filtered params back into an object\n      return Object.fromEntries(filteredParams);\n    } catch (error) {\n      // Invalid URL. Returning empty object\n      return {};\n    }\n  }\n});","define(\"settify-mvp/utils/defaults-object-initializer\", [\"exports\", \"uuid\"], function (_exports, _uuid) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.DefaultsObjectInitializer = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"uuid\"eaimeta@70e063a35619d71f\n  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }\n  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\n  function _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n  /**\n   * DefaultsObjectInitializer - Utility class for assigning default values and IDS to objects\n   *\n   * **Methods:**\n   * - `createDefaultItem()`: Creates a new object initialized with the specified default values.\n   * - `setDefaults(obj)`: Applies default values to an existing object without overwriting its current properties.\n   *   If `assignUUIDs` is true, also assigns a UUID to the object if it doesn't already have one.\n   * - `#assignIdIfNeeded()`: Private method for assigning id to the object and if `assignUUIDs` param is true\n   *\n   * **Example Usage:**\n   *\n   * const defaults = {\n   *   foo: 1,\n   *   bar: 2,\n   * };\n   *\n   * const assigner = new DefaultsObjectInitializer(defaults, true); // Assign UUIDs\n   *\n   * const newObject = assigner.createDefaultItem(); // { foo: 1, bar: 2, id: \"some-uuid\" }\n   *\n   * const existingObject = { foo: \"Hello\" };\n   * assigner.setDefaults(existingObject); // { foo: \"Hello\", bar: 2, id: \"some-uuid\" }\n   */\n  var _DefaultsObjectInitializer_brand = /*#__PURE__*/new WeakSet();\n  class DefaultsObjectInitializer {\n    /**\n     * Creates a new DefaultsObjectInitializer instance.\n     *\n     * @param {Object} defaults - An object specifying the default values for properties.\n     * @param {boolean} [assignUUIDs=false] - Whether to assign UUIDs to objects.\n     */\n    constructor(defaults, assignUUIDs = false) {\n      _classPrivateMethodInitSpec(this, _DefaultsObjectInitializer_brand);\n      this.defaults = defaults;\n      this.assignUUIDs = assignUUIDs;\n    }\n    createDefaultItem() {\n      return this.setDefaults({});\n    }\n    setDefaults(obj) {\n      for (const [key, defaultValue] of Object.entries(this.defaults || {})) {\n        if (obj[key] === undefined) {\n          obj[key] = defaultValue;\n          if (Array.isArray(obj[key])) {\n            obj[key].forEach(_assertClassBrand(_DefaultsObjectInitializer_brand, this, _assignIdIfNeeded).bind(this));\n          } else {\n            _assertClassBrand(_DefaultsObjectInitializer_brand, this, _assignIdIfNeeded).call(this, obj[key]);\n          }\n        }\n      }\n      _assertClassBrand(_DefaultsObjectInitializer_brand, this, _assignIdIfNeeded).call(this, obj);\n      return obj;\n    }\n  }\n  _exports.DefaultsObjectInitializer = DefaultsObjectInitializer;\n  function _assignIdIfNeeded(obj) {\n    if (typeof obj === \"object\" && this.assignUUIDs && !obj.id) {\n      obj.id = (0, _uuid.v4)();\n    }\n  }\n});","define(\"settify-mvp/utils/display-name-utils\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.formatCoupleName = formatCoupleName;\n  _exports.formatName = formatName;\n  _exports.generateDisplayName = generateDisplayName;\n  _exports.includeDeceasedName = includeDeceasedName;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  const DECEASED_NOT_PROVIDED = \" (deceased's name not yet provided)\";\n  const ESTATE_OF_NAME = \" (estate of {deceasedName})\";\n  const MATTER_REFERENCE_FORMAT = \" ({matterReference})\";\n\n  /**\n   * Generates a display name for a client, considering the practice area, name details, and matter reference.\n   * @param {Object} details - Object containing name and additional details.\n   * @param {string} details.firstName - The client's first name.\n   * @param {string} details.surname - The client's surname.\n   * @param {string} details.partnerFirstName - The client's partner's first name.\n   * @param {string} details.partnerSurname - The client's partner's surname.\n   * @param {string} details.practiceArea - The client's practice area (e.g., \"Probate\", \"Estates\", \"Wills\").\n   * @param {Object} [details.deceased] - The deceased person's details for Probate/Estates.\n   * @param {string} [details.matterReferenceNumber] - Optional matter reference number.\n   * @returns {string} - Formatted display name.\n   */\n  function generateDisplayName({\n    firstName,\n    surname,\n    partnerFirstName,\n    partnerSurname,\n    practiceArea,\n    deceased,\n    matterReferenceNumber\n  }) {\n    let name;\n    switch (practiceArea) {\n      case \"Probate\":\n      case \"Estates\":\n        name = formatName({\n          firstName,\n          surname\n        });\n        name += includeDeceasedName(deceased); // Add deceased name if applicable\n        break;\n      case \"Wills\":\n        name = formatCoupleName({\n          firstName,\n          surname,\n          partnerFirstName,\n          partnerSurname\n        });\n        break;\n      default:\n        name = formatName({\n          firstName,\n          surname\n        });\n    }\n\n    // Add matter reference number if available\n    if (matterReferenceNumber?.trim()) {\n      name += MATTER_REFERENCE_FORMAT.replace(\"{matterReference}\", matterReferenceNumber.trim());\n    }\n    return name;\n  }\n\n  /**\n   * Formats a person's name with their first name and surname.\n   * @param {Object} person - Object containing name details.\n   * @param {string} [person.firstName=\"\"] - The person's first name.\n   * @param {string} [person.surname=\"\"] - The person's surname.\n   * @returns {string} - String in \"SURNAME, FirstName\" format.\n   */\n  function formatName({\n    firstName = \"\",\n    surname = \"\"\n  }) {\n    const nameParts = [surname?.trim()?.toUpperCase(),\n    // Convert surname to uppercase if it exists\n    firstName?.trim() // Add trimmed first name if it exists\n    ];\n\n    // Filter out empty parts and join them with \", \"\n    return nameParts.filter(Boolean).join(\", \");\n  }\n\n  /**\n   * Formats the deceased person's name for Probate/Estates.\n   * @param {Object|null} deceased - Object containing deceased name details.\n   * @returns {string} - Formatted string for deceased person.\n   */\n  function includeDeceasedName(deceased) {\n    if (!deceased || typeof deceased !== \"object\") return DECEASED_NOT_PROVIDED;\n    const deceasedName = formatName(deceased);\n    return deceasedName ? ESTATE_OF_NAME.replace(\"{deceasedName}\", deceasedName) : DECEASED_NOT_PROVIDED;\n  }\n\n  /**\n   * Generates a display name for Wills, including partner details if applicable.\n   * @param {Object} details - Object containing name details.\n   * @param {string} details.firstName=\"\" - Client's first name.\n   * @param {string} details.surname=\"\" - Client's surname.\n   * @param {string} [details.partnerFirstName=\"\"] - Partner's first name.\n   * @param {string} [details.partnerSurname=\"\"] - Partner's surname.\n   * @returns {string} - Formatted display name for Wills.\n   */\n  function formatCoupleName({\n    firstName = \"\",\n    surname = \"\",\n    partnerFirstName = \"\",\n    partnerSurname = \"\"\n  }) {\n    let name = formatName({\n      firstName,\n      surname\n    });\n    if (partnerFirstName) {\n      // If the surname of the partner is the same as the clients, we don't need it when adding their name.\n      const partnerName = partnerSurname !== surname ? formatName({\n        firstName: partnerFirstName,\n        surname: partnerSurname\n      }) : formatName({\n        firstName: partnerFirstName\n      });\n      name += ` and ${partnerName}`;\n    }\n    return name;\n  }\n});","define(\"settify-mvp/utils/email-utils\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.decodeEmailAddress = decodeEmailAddress;\n  _exports.encodeEmailAddress = encodeEmailAddress;\n  _exports.isValidEmailAddress = isValidEmailAddress;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  const INPUT_KEY = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@-+._!#$%&'*+/=?^_`{|}~\";\n  const OUTPUT_KEY = \"1a;G`!537cilo%C*rTS|Oy9=${tDwx6QEZYbkuR&V}/'-F~pgnmsM+BqvUJP2?d#I_K_^+:0AjNzHfXh8LWe4\";\n  const LEGACY_INPUT_KEY = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@-+._!#$%&'*+-/=?^_`{|}~\";\n  const LEGACY_OUTPUT_KEY = \"1a;G`!537cil-o%C*rTS|Oy9=${tDwx6QEZYbkuR&V}/'-F~pgnmsM+BqvUJP2?d#I_K_^+:0AjNzHfXh8LWe4\";\n  const EMAIL_REGEX = /^(?!.*\\.{2})[A-Z0-9._%+'&-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$/i; // a fairly broad, permissive regex\n\n  /**\n   * Encodes an email address by replacing characters from the `INPUT_KEY` with corresponding characters from the `OUTPUT_KEY`.\n   * @param {string} email - The email address to encode.\n   * @returns {string|undefined} The encoded email address or `undefined` if input is invalid.\n   */\n  function encodeEmailAddress(email) {\n    if (!email || typeof email !== \"string\") {\n      return;\n    }\n    const output = [];\n    for (let i = 0; i < email.length; i++) {\n      const character = email[i];\n      const indexOfCharacter = INPUT_KEY.indexOf(character);\n      output.push(OUTPUT_KEY[indexOfCharacter]);\n    }\n    return output.join(\"\");\n  }\n\n  /**\n   * Decodes an encoded email address by reversing the encoding process.\n   * If the `legacy` flag is set, it uses the legacy encoding/decoding key set.\n   * If decoding fails, it will attempt to decode using the legacy method.\n   * @param {string} encoded - The encoded email address to decode.\n   * @param {boolean} [legacy=false] - Whether to use the legacy decoding method.\n   * @returns {string|undefined} The decoded email address or `undefined` if input is invalid.\n   */\n  function decodeEmailAddress(encoded, legacy) {\n    if (!encoded || typeof encoded !== \"string\") {\n      return;\n    }\n    if (encoded.includes(\"@\")) {\n      return encoded;\n    }\n    const output = [];\n    const inputKey = legacy ? LEGACY_INPUT_KEY : INPUT_KEY;\n    const outputKey = legacy ? LEGACY_OUTPUT_KEY : OUTPUT_KEY;\n    for (let i = 0; i < encoded.length; i++) {\n      const character = encoded[i];\n      const indexOfCharacter = outputKey.indexOf(character);\n      output.push(inputKey[indexOfCharacter]);\n    }\n    const emailDecoded = output.join(\"\");\n    if (!legacy && (!emailDecoded.includes(\"@\") || !emailDecoded.includes(\".\"))) {\n      // If the decoded email doesn't look valid, try with legacy decoding\n      return decodeEmailAddress(encoded, true);\n    }\n    return emailDecoded;\n  }\n\n  /**\n   * Validates if the given email address is in a valid format using regex.\n   * @param {string} email - The email address to validate.\n   * @returns {boolean} `true` if the email address is valid, otherwise `false`.\n   */\n  function isValidEmailAddress(email) {\n    return EMAIL_REGEX.test(email);\n  }\n});","define(\"settify-mvp/utils/filter-list-by-type\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.filterListByType = filterListByType;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  /**\n   * Filters a list of objects based on the specified filter type and criteria.\n   *\n   * @param {Array} list - The list of objects to be filtered.\n   * @param {string} filterType - The type of filtering to apply. Supported types: 'excludeall', 'blacklist', 'whitelist'.\n   * @param {Array} filterIdList - A list of IDs to include/exclude based on the filterType.\n   * @param {Object} [options] - Additional options for filtering.\n   * @param {String} [options.keyPath='id'] - A dot-separated path to the key in each object to evaluate.\n   * @param {String} [options.selectedValue] - The value used for comparisons in the 'excludeall' filter type.\n   * @returns {Array} - The filtered list of objects.\n   *\n   * @example\n   * const list = [\n   *   { id: 1, name: 'Alice' },\n   *   { id: 2, name: 'Bob' },\n   *   { id: 3, name: 'Charlie' }\n   * ];\n   * const filterIdList = [2, 3];\n   *\n   * // Whitelist example\n   * filterListByType(list, 'whitelist', filterIdList);\n   * // Output: [{ id: 2, name: 'Bob' }, { id: 3, name: 'Charlie' }]\n   *\n   * // Blacklist example\n   * filterListByType(list, 'blacklist', filterIdList);\n   * // Output: [{ id: 1, name: 'Alice' }]\n   *\n   * // Excludeall example with no selected value\n   * filterListByType(list, 'excludeall', filterIdList);\n   * // Output: []\n   *\n   * // Excludeall example with selected value\n   * filterListByType(list, 'excludeall', filterIdList, { selectedValue: \"1\" });\n   * // Output: [{ id: 1, name: 'Alice' }]\n   */\n  function filterListByType(list, filterType, filterIdList, options = {}) {\n    const keyPath = options?.keyPath || \"id\";\n    const getKey = item => keyPath.split(\".\").reduce((obj, key) => obj?.[key], item);\n    const filterStrategies = {\n      excludeall: () => list.filter(item => getKey(item) === options.selectedValue),\n      blacklist: () => list.filter(item => !filterIdList.includes(getKey(item))),\n      whitelist: () => list.filter(item => filterIdList.includes(getKey(item))),\n      default: () => list // Default case for unsupported filter types\n    };\n    const filterStrategy = filterStrategies[filterType?.toLowerCase()] || filterStrategies.default;\n    return filterStrategy();\n  }\n  var _default = _exports.default = {\n    filterListByType\n  };\n});","define(\"settify-mvp/utils/format-item-label\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = formatItemLabel;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  /**\n   * formatItemLabel - Formats a label string based on the provided format and item data.\n   *\n   * This function takes a format string with placeholders and replaces those placeholders\n   * with the corresponding values from an item object. Placeholders are words without percent\n   * signs (%) while the words with % signs are kept as they are sent to the function.\n   *\n   * @param {Object} item - The object containing the data to be used in the formatting.\n   * @param {string} format - The template string with placeholders to be replaced.\n   *\n   * Placeholders:\n   * -   `firstName`: Replace with the value of the `firstName` property from the `item`.\n   * -   `address.lineOne`: Replace with the value of the `lineOne` property\n   *       within the `address` object from the `item`.\n   * -   Multiple properties can be specified within a single placeholder, separated by spaces.\n   *\n   * @returns {string} The formatted label string with placeholders replaced.\n   *\n   * @example\n   *\n   * const item = {\n   *   name: \"John\",\n   *   address: {\n   *     street: \"123 Main St\",\n   *     city: \"Anytown\"\n   *   }\n   * };\n   *\n   * const format = \"name %lives %at address.city\";\n   *\n   * const result = formatItemLabel(item, format);\n   * console.log(result); // Output: \"John lives at Anytown\"\n   *\n   */\n\n  function formatItemLabel(item, format) {\n    if (!item || !format) {\n      return \"\";\n    }\n    const itemLabelElements = format.split(/\\s+/);\n    const labelOutput = [];\n    for (const element of itemLabelElements) {\n      if (item[element]) {\n        labelOutput.push(item[element]);\n      } else if (element.startsWith(\"%\")) {\n        labelOutput.push(element.slice(1));\n      } else {\n        const nestedValue = getNestedProperty(item, element);\n        if (nestedValue) {\n          labelOutput.push(nestedValue);\n        }\n      }\n    }\n    return labelOutput.join(\" \");\n  }\n\n  // Helper function to get nested property value\n  function getNestedProperty(obj, path) {\n    return path.split(\".\").reduce((value, key) => value?.[key], obj);\n  }\n});","define(\"settify-mvp/utils/get-conversion-type\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = getConversionType;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  /**\n   * getConversionType - Determines the conversion type based on a short name.\n   *\n   * @param {string} shortName - The short name to match against conversion types.\n   * @param {Object[]} conversionTypes - An array of conversion type objects.\n   *\n   * @returns {Object|null} An object representing the matching conversion type, or\n   *                        null if no match is found. The returned object has the structure:\n   *                        { invoiceAmountCents: number, invoiceNarration: string }\n   *\n   * @example\n   * const types = [\n   *  {\n   *    \"id\": 1, \"groupName\": \"DEFAULT\",\n   *    \"shortName\": \"TooSoon\",\n   *    \"longName\": \"Too soon to tell\",\n   *    \"description\": \"It's too soon to tell whether this person will become a paying client of the firm\",\n   *    \"invoiceNarration\": \"carry over to next month\",\n   *    \"invoiceAmountCents\": 0,\n   *    \"allowedForInvites\": 1,\n   *    \"allowedForWebsites\": 1,\n   *    \"requiredBillingFlags\": null,\n   *    \"glyphicon\": \"time\",\n   *    \"fontawesome\": \"clock\",\n   *    \"allowedPracticeArea\": \"Family\"\n   *   },\n   *   {\n   *     \"id\": 3,\n   *     \"groupName\": \"DEFAULT\",\n   *     \"shortName\": \"NonBillable\",\n   *     \"longName\": \"Did not become a client\",\n   *     \"description\": \"This person has not become a paying client of the firm\",\n   *     \"invoiceNarration\": \"did not become a client\",\n   *     \"invoiceAmountCents\": 0,\n   *     \"allowedForInvites\": 1,\n   *     \"allowedForWebsites\": 1,\n   *     \"requiredBillingFlags\": null,\n   *     \"glyphicon\": \"remove\",\n   *     \"fontawesome\": \"times\",\n   *     \"allowedPracticeArea\": \"Family\"\n   *   }\n   * ];\n   *\n   * getConversionType(\"NonBillable\", types);\n   * // Returns: { invoiceAmountCents: 2500, invoiceNarration: \"did not become a client\" }\n   */\n\n  function getConversionType(shortName, conversionTypes) {\n    if (!shortName || typeof shortName !== \"string\" || !conversionTypes || !Array.isArray(conversionTypes)) {\n      throw new Error(\"Invalid input: shortName must be a string, and conversionTypes must be an array.\");\n    }\n    if (shortName === \"Free\") {\n      return {\n        invoiceAmountCents: 0,\n        invoiceNarration: \"unknown (free)\"\n      };\n    }\n    return conversionTypes.find(type => type.shortName === shortName);\n  }\n});","define(\"settify-mvp/utils/html-utils\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.containsHtml = containsHtml;\n  _exports.containsScriptTag = containsScriptTag;\n  _exports.containsUnsafeHtml = containsUnsafeHtml;\n  _exports.stripHtml = stripHtml;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  /**\n   * Checks if the given string contains HTML tags.\n   * @param {string} str - The input string to check.\n   * @returns {boolean} - Returns true if any HTML tags are detected, otherwise false.\n   */\n  function containsHtml(str) {\n    const htmlTagRegex = /<[^>]*>/g; // Regular expression to detect any HTML tags\n    return htmlTagRegex.test(str);\n  }\n\n  /**\n   * Checks if the given string contains <script> tags.\n   * @param {string} str - The input string to check.\n   * @returns {boolean} - Returns true if a <script> tag is detected, otherwise false.\n   */\n  function containsScriptTag(str) {\n    // Regular expression to detect literal, HTML entity encoded, and URL encoded <script> tags\n    const scriptTagRegex = /<\\s*script\\b[^>]*>([\\s\\S]*?)<\\s*\\/\\s*script\\s*>|&lt;\\s*script\\b[^>]*&gt;([\\s\\S]*?)&lt;\\s*\\/\\s*script\\s*&gt;|%3C\\s*script\\b[^>]*%3E([\\s\\S]*?)%3C\\s*\\/\\s*script\\s*%3E/gi;\n    return scriptTagRegex.test(str);\n  }\n\n  /**\n   * Strips HTML tags from a given string.\n   * @param {string} str - The input string to strip.\n   * @returns {string} - The input string with all HTML tags removed.\n   */\n  function stripHtml(str) {\n    const htmlTagRegex = /<[^>]*>/g; // Regular expression to match HTML tags\n    return str.replace(htmlTagRegex, \"\"); // Replace HTML tags with empty string\n  }\n\n  /**\n   * Checks if the given string contains HTML tags or script tags.\n   * @param {string} str - The input string to check.\n   * @returns {boolean} - Returns true if any HTML or script tags are detected, otherwise false.\n   */\n  function containsUnsafeHtml(str) {\n    // Reuse the existing functions to check for HTML tags and script tags\n    return containsHtml(str) || containsScriptTag(str);\n  }\n});","define(\"settify-mvp/utils/inject\", [\"exports\", \"ember-simple-auth/utils/inject\"], function (_exports, _inject) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _inject.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-simple-auth/utils/inject\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/utils/is-empty-object-checker\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = isEmptyObject;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  /**\n   * isEmptyObjectChecker - Utility function used to check if an object is empty.\n   *\n   * **Methods:**\n   * - `isEmptyObject`: Checks if an object is empty and returns a Boolean\n   *\n   * **Example Usage:**\n   *\n   * const element = {\n   *   age: 10,\n   *   firstName: \"Marco\",\n   *   surname: \"Snow\",\n   *   noDelete: false,\n   *   id: \"0cea96ba-ed24-4804-8206-e2d43f1e859c\"\n   * };\n   *\n   * isEmptyObject(element, ignoreEmptySubobjects: true); // true/false\n   *\n   */\n\n  function isEmptyObject(obj, {\n    ignoreEmptySubobjects = false\n  } = {}) {\n    if (!obj && obj !== 0) return true; // Handle null, undefined, and NaN\n\n    if (Array.isArray(obj)) {\n      if (ignoreEmptySubobjects) {\n        return obj.every(el => isEmptyObject(el, {\n          ignoreEmptySubobjects\n        }));\n      }\n      return obj.length === 0;\n    }\n    for (const key in obj) {\n      // Exclude prototype properties and \"id\"\n      if (Object.prototype.hasOwnProperty.call(obj, key) && key !== \"id\") {\n        const value = obj[key];\n        if (value || value === 0 || value === false) {\n          if (typeof value === \"object\" && ignoreEmptySubobjects) {\n            if (!isEmptyObject(value, {\n              ignoreEmptySubobjects\n            })) {\n              return false;\n            }\n          } else {\n            return false; // Non-empty value found\n          }\n        }\n      }\n    }\n    return true; // All checks passed, object is empty\n  }\n});","define(\"settify-mvp/utils/is-fastboot\", [\"exports\", \"ember-simple-auth/utils/is-fastboot\"], function (_exports, _isFastboot) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _isFastboot.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-simple-auth/utils/is-fastboot\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/utils/location\", [\"exports\", \"ember-simple-auth/utils/location\"], function (_exports, _location) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _location.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-simple-auth/utils/location\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/utils/objects-are-equal\", [\"exports\", \"ember-simple-auth/utils/objects-are-equal\"], function (_exports, _objectsAreEqual) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function () {\n      return _objectsAreEqual.default;\n    }\n  });\n  0; //eaimeta@70e063a35619d71f0,\"ember-simple-auth/utils/objects-are-equal\"eaimeta@70e063a35619d71f\n});","define(\"settify-mvp/utils/set-css-variable\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.setCSSVariable = setCSSVariable;\n  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\n  /**\n   * Sets the value of a CSS variable within the root element of the HTML document.\n   * @param {string} varName - The name of the CSS variable to be set (without the leading double dash).\n   * @param {string} value - The desired value to assign to the CSS variable.\n   * @returns {string} - The input string with all HTML tags removed.\n   */\n  function setCSSVariable(varName, value) {\n    if (varName && value) {\n      document.querySelector(\":root\").style.setProperty(`--${varName}`, value);\n    }\n  }\n});","define(\"settify-mvp/validators/email-validator\", [\"exports\", \"@ember/object\", \"@ember/utils\"], function (_exports, _object, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"@ember/utils\"eaimeta@70e063a35619d71f\n  var _default = _exports.default = _object.default.extend({\n    validate(value) {\n      if ((0, _utils.isBlank)(value)) {\n        return;\n      }\n      const emailRegex = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$/i;\n      if (!emailRegex.test(value)) {\n        return \"mustBeValidEmail\";\n      }\n    }\n  });\n});","define(\"settify-mvp/validators/url-validator\", [\"exports\", \"@ember/utils\"], function (_exports, _utils) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = validateURL;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/utils\"eaimeta@70e063a35619d71f\n  // eslint-disable-next-line no-useless-escape\n  const URLRegex = new RegExp(\"^([a-zA-Z]+:\\\\/\\\\/)\" +\n  // protocol\n  \"((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|\" +\n  // domain name\n  \"((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))\" +\n  // OR IP (v4) address\n  \"(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*\" +\n  // port and path\n  \"(\\\\?[;&a-z\\\\d%_.~+=-]*)?\" +\n  // query string\n  \"(\\\\#[-a-z\\\\d_]*)?$\",\n  // fragment locator\n  \"i\");\n  function validateURL(value) {\n    if ((0, _utils.isBlank)(value)) {\n      return false;\n    }\n    if (!URLRegex.test(value)) {\n      return false;\n    }\n    return true;\n  }\n});","\n","define('settify-mvp/config/environment', [], function() {\n  var prefix = 'settify-mvp';\ntry {\n  var metaName = prefix + '/config/environment';\n  var rawConfig = document.querySelector('meta[name=\"' + metaName + '\"]').getAttribute('content');\n  var config = JSON.parse(decodeURIComponent(rawConfig));\n\n  var exports = { 'default': config };\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n  return exports;\n}\ncatch(err) {\n  throw new Error('Could not read config from meta tag with name \"' + metaName + '\".');\n}\n\n});\n","\n          if (!runningTests) {\n            require(\"settify-mvp/app\")[\"default\"].create({\"branch\":\"main\",\"revision\":\"4a65f805\",\"name\":\"settify-mvp\",\"version\":\"1.0.0+4a65f805\"});\n          }\n        \n"],"names":[],"mappings":"AAAA;AACA;AACA;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzwCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzhBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1jBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnsCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvsBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1sCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrhBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACl7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACheA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7bA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1ZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACn3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5qDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzoDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACltBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3ZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1+CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC55BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9iCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACraA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3tBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC11DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;","file":"settify-mvp.js"}