The first step in this process is to determine the eligible amounts that can be used towards an additional rent increase based on capital expenditures incurred.
\r\n
A capital expenditure is eligible for an additional rent increase if it:
\r\n
\r\n
\r\n is made to install, repair or replace a major system or component of the residential property that required repair or replacement under \r\n section 32 of the Residential Tenancy Act or the repair or replacement\r\n of a major system or component with a useful life of at least five years that has either failed or is close to the end of its useful life, or\r\n
\r\n
\r\n achieves one or more of the following:\r\n
\r\n
a measurable reduction in energy use or green house gas emissions
\r\n
improvement in the security of the residential property, and\r\n
\r\n
\r\n
\r\n is not expected to recur for at least five years, and\r\n
\r\n
\r\n was incurred in the 18-month period preceding the month the landlord made the application.\r\n
To begin, enter the total cost of each expenditure and the count of all units that were affected by it. Enter each capital expenditure that applies to individual units click “add another capital expenditure”.
`,\r\n improvements: {\r\n header: 'Capital Expenditure',\r\n title: 'Short title of capital expenditure',\r\n cost: 'Total cost of capital expenditure',\r\n units: 'Number of all Specified Dwelling units affected by the capital expenditure, including non-rental units',\r\n eligibleAmount: 'Calculated eligible amount',\r\n },\r\n addImprovement: 'Add another capital expenditure',\r\n },\r\n step2: {\r\n subText: 'Step 2: Estimated additional rent increases for each unit',\r\n description1: `\t\r\n In this step, you can determine how the additional rent increase granted based on your eligible capital expenditures can be applied with the annual allowable rent increase. If you need more information on the detailed calculations or rules, visit our `,\r\n website: 'website',\r\n maxAllowedUrl: 'https://www2.gov.bc.ca/gov/content/housing-tenancy/residential-tenancies/during-a-tenancy/rent-increases/additional-rent-increase',\r\n\r\n // @params: {{cost}}\r\n improvementCostSingle:\r\n 'Based on the capital expenditures provided, you may be eligible for an additional rent increase of {{cost}}. Enter the monthly rent for the unit you would like to apply an additional rent increase for and select the capital expenditures which affect that unit.',\r\n // @params: {{lowestCost}}, {{allCosts}}\r\n improvementCostMulti:\r\n 'Based on the capital expenditures provided, you may be eligible for an additional rent increase between {{lowestCost}} (lowest single amount) and {{allCosts}} (all amounts). Enter the monthly rent for the unit you would like to apply an additional rent increase for and select the capital expenditures which affect that unit.',\r\n additionalInfo: {\r\n text:\r\n 'Additional rent increase amounts are estimates based on the current maximum annual allowable rent increase amount, which are subject to change each year based on the Consumer Price Index. Learn more about how the ',\r\n urlText: 'maximum annual allowable rent increase is calculated',\r\n url: 'https://www2.gov.bc.ca/gov/content/housing-tenancy/residential-tenancies/during-a-tenancy/rent-increases',\r\n },\r\n unitRent: 'Enter current monthly rent of the selected unit',\r\n unitRentEntered: 'Current monthly rent of the selected unit',\r\n cpiValue: 'Maximum annual allowable rent increase amount',\r\n improvementSelect: 'Indicate the eligible capital expenditures for the selected unit',\r\n editImprovements: 'Edit capital expenditures',\r\n eligibleAmount: 'Total eligible amount',\r\n increaseBreakdown: {\r\n yearOne: 'First Year Rent Increase (for ',\r\n yearTwo: 'Second year additional rent increase (estimate only, as {{year}} maximum annual rent increase has not yet been set)',\r\n yearThree: 'Third year additional rent increase (estimate only, as {{year}} maximum annual rent increase has not yet been set)',\r\n increaseAmount: 'Maximum annual allowable rent increase for',\r\n increaseAmountFutureYears: 'Maximum annual allowable rent increase (using {{year}} rate of {{percentage}}% for estimating purposes only)',\r\n rentWithIncrease: 'Rent amount with annual allowable rent increase',\r\n additionalIncrease: 'Maximum additional rent increase allowed for unit (3.0%)',\r\n rentWithMaxIncrease: 'Potential maximum rent amount with all rent increases applied',\r\n remainingAmount1: 'Remaining eligible amount for additional rent increase in second year',\r\n remainingAmount2: 'Remaining eligible amount for third year',\r\n remainingAmount3: 'Remaining that cannot be applied',\r\n cpiRatesUrl: 'https://www2.gov.bc.ca/gov/content/housing-tenancy/residential-tenancies/during-a-tenancy/rent-increases'\r\n },\r\n print: {\r\n branch: 'Residential Tenancy Branch',\r\n // @params: {{date}}\r\n date: 'Calculated on {{date}}',\r\n },\r\n },\r\n errors: {\r\n title: {\r\n length: 'Title must be at least 2 characters',\r\n empty: 'Enter a title',\r\n },\r\n cost: {\r\n length: 'Must be greater than $1',\r\n empty: 'Enter a dollar amount',\r\n },\r\n units: {\r\n length: 'Must have at least one unit',\r\n empty: 'Enter a number of units',\r\n },\r\n submit: 'Press submit to calculate',\r\n rent: {\r\n length: 'Must be greater than $1',\r\n empty: 'Enter the rent amount',\r\n },\r\n improvement: {\r\n empty: 'Select Improvement',\r\n },\r\n increaseApplied: 'Select an answer',\r\n increaseDate: 'Select the first rent increase date',\r\n increaseAmount: 'Select the number of rent increases',\r\n eligibleAmount: {\r\n empty: 'Enter a valid eligible amount',\r\n },\r\n currentRent: {\r\n length: 'Must be greater than $1',\r\n empty: 'Enter a valid rent amount',\r\n },\r\n nextIncreaseDate: 'Select the rent increase date',\r\n increaseDateAlert: `The date that you entered is beyond 2 years which means that the landlord’s ability to apply an additional rent increase has expired. \r\n To learn more about the rules for additional rent increases, visit `,\r\n increaseDateAlertText: 'our website',\r\n increaseAmountAlert: `The landlord can only implement an additional rent increase to a specific rental unit over three years. \r\n To learn more about the rules for additional rent increases, visit `,\r\n increaseAmountAlertText: 'our website',\r\n },\r\n};\r\n\r\nexport default en;","import { ActionTypes } from '../../constants';\r\nimport { polyglot } from '../../assets/locales';\r\n\r\nlet defaultState = {\r\n list: [\r\n {\r\n id: new Date().getTime(),\r\n title: '',\r\n cost: '',\r\n units: '',\r\n calculatedAmount: '',\r\n submitDisabled: false,\r\n checked: false,\r\n errors: {\r\n title: polyglot.t('errors.title.empty'),\r\n cost: polyglot.t('errors.cost.empty'),\r\n units: polyglot.t('errors.units.empty'),\r\n submit: polyglot.t('errors.submit'),\r\n },\r\n },\r\n ],\r\n currentStep: 1,\r\n continueClicked: false,\r\n};\r\n\r\nexport default function (state = defaultState, action) {\r\n switch (action.type) {\r\n case ActionTypes.SET_IMPROVEMENT:\r\n return { ...state, list: action.payload.improvements };\r\n case ActionTypes.RESET_IMPROVEMENTS:\r\n return { list: defaultState.list, currentStep: defaultState.currentStep };\r\n case ActionTypes.UPDATE_STEP:\r\n return { ...state, currentStep: action.payload.currentStep };\r\n case ActionTypes.CONTINUE_CLICKED:\r\n return { ...state, continueClicked: action.payload.continueClicked };\r\n default:\r\n return state;\r\n }\r\n}","import { ActionTypes } from '../../constants';\r\n\r\nlet defaultState = {\r\n cpiConfig: ''\r\n}\r\n\r\nfunction ConfigReducer (state = defaultState, action) {\r\n switch (action.type) {\r\n case ActionTypes.ADD_CPI_CONFIG:\r\n\r\n return { ...state, cpiConfig: action.payload.cpiConfig };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default ConfigReducer;","import { ActionTypes } from '../../constants';\r\nimport { polyglot } from '../../assets/locales';\r\n\r\nlet defaultState = {\r\n data: null,\r\n currentStep: 1,\r\n continueClicked: false,\r\n};\r\n\r\nfunction ValidationReducer (state = defaultState, action) {\r\n switch (action.type) {\r\n case ActionTypes.SET_VALIDATION_DATA:\r\n return { ...state, data: action.payload.validationData };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default ValidationReducer;","import { combineReducers } from 'redux';\r\nimport { connectRouter } from 'connected-react-router';\r\nimport ImprovementReducer from './ImprovementReducer';\r\nimport ConfigReducer from './ConfigReducer';\r\nimport ValidationReducer from './ValidationReducer';\r\n\r\nconst rootReducer = (history) =>\r\n combineReducers({\r\n improvements: ImprovementReducer,\r\n validations: ValidationReducer,\r\n config: ConfigReducer,\r\n router: connectRouter(history),\r\n });\r\n\r\nexport default rootReducer;\r\n","import { createHashHistory } from 'history';\r\nimport thunk from 'redux-thunk';\r\nimport { applyMiddleware, createStore } from 'redux';\r\nimport { composeWithDevTools } from 'redux-devtools-extension';\r\nimport { routerMiddleware } from 'connected-react-router';\r\nimport rootReducer from './reducers';\r\n\r\nexport const history = createHashHistory({ hashType: 'noslash' });\r\nexport default function configureStore(preloadedState) {\r\n const store = createStore(\r\n rootReducer(history), // root reducer with router state\r\n preloadedState,\r\n composeWithDevTools(\r\n applyMiddleware(\r\n routerMiddleware(history), // for dispatching history actions\r\n thunk\r\n // ... other middlewares ...\r\n )\r\n )\r\n );\r\n\r\n return store;\r\n}\r\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import React from 'react';\r\n\r\nconst Error500 = () => {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n 500\r\n
\r\n
\r\n
\r\n
\r\n
Server Error
\r\n
\r\n
\r\n
\r\n
\r\n
Our server has encountered an unexpected error and cannot complete your request.
\r\n
If you came here from somewhere else, try pressing back. If you typed the address make sure it is typed correctly.
\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Error500;\r\n","import ErrorBoundary from './ErrorBoundary';\r\n\r\nexport default ErrorBoundary;","import React, { Component } from 'react';\r\nimport { Error500 } from './ErrorPages';\r\nclass ErrorBoundary extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { hasError: false };\r\n }\r\n\r\n static getDerivedStateFromError(error) {\r\n // Update state so the next render will show the fallback UI.\r\n return { hasError: true };\r\n }\r\n\r\n render() {\r\n if (this.state.hasError) {\r\n // You can render any custom fallback UI\r\n return ;\r\n }\r\n\r\n return this.props.children;\r\n }\r\n}\r\n\r\nexport default ErrorBoundary;\r\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import { ActionTypes } from '../../constants';\r\nimport { polyglot } from '../../assets/locales';\r\nimport update from 'immutability-helper';\r\n\r\nclass ImprovementPrivateActions {\r\n static setImprovements(improvements) {\r\n return {\r\n type: ActionTypes.SET_IMPROVEMENT,\r\n payload: {\r\n improvements,\r\n },\r\n };\r\n }\r\n}\r\n\r\nclass ImprovementActions {\r\n /**\r\n * takes in a new improvement object and appends it to existing improvements array\r\n * @param {Object} newImprovement - newly initialized improvement object\r\n */\r\n static appendImprovement() {\r\n return function (dispatch, getState) {\r\n const newImprovement = {\r\n id: new Date().getTime(),\r\n title: '',\r\n cost: '',\r\n units: '',\r\n calculatedAmount: '',\r\n submitDisabled: false,\r\n checked: false,\r\n errors: {\r\n title: polyglot.t('errors.title.empty'),\r\n cost: polyglot.t('errors.cost.empty'),\r\n units: polyglot.t('errors.units.empty'),\r\n submit: polyglot.t('errors.submit'),\r\n },\r\n };\r\n const improvements = getState().improvements.list;\r\n dispatch(ImprovementPrivateActions.setImprovements([...improvements, newImprovement]));\r\n };\r\n }\r\n\r\n /**\r\n * takes in an existing improvement object and creates a new improvements array with the spliced in/updated object\r\n * @param {Number} id - id of object to be updated\r\n * @param {Object} id - improvement object to be updated\r\n */\r\n static updateImprovement(id, updateObject) {\r\n return (dispatch, getState) => {\r\n const improvements = getState().improvements.list;\r\n const updateIndex = improvements.findIndex((improvement) => improvement.id === id);\r\n\r\n const updatedImprovements = update(improvements, {\r\n $splice: [[updateIndex, 1, updateObject]],\r\n });\r\n\r\n dispatch(ImprovementPrivateActions.setImprovements(updatedImprovements));\r\n };\r\n }\r\n\r\n /**\r\n * Deletes improvement with passed in id from array\r\n * @param {Number} id - id of object to be deleted\r\n */\r\n static deleteImprovement(id) {\r\n return (dispatch, getState) => {\r\n const improvements = getState().improvements.list;\r\n const deletedImprovements = improvements.filter((improvement) => {\r\n return improvement.id !== id;\r\n });\r\n\r\n dispatch(ImprovementPrivateActions.setImprovements(deletedImprovements));\r\n };\r\n }\r\n /**\r\n * resets to page 1 and clears all redux storage data to initial default state\r\n */\r\n static resetImprovements() {\r\n return {\r\n type: ActionTypes.RESET_IMPROVEMENTS,\r\n };\r\n }\r\n /**\r\n *\r\n * @param {Boolean} bool - true/false passed in when the continueButton is clicked\r\n */\r\n static submitStep1(bool) {\r\n return {\r\n type: ActionTypes.CONTINUE_CLICKED,\r\n payload: {\r\n continueClicked: bool,\r\n },\r\n };\r\n }\r\n\r\n /**\r\n * sets step to 1, and causes page 1 to render\r\n */\r\n static goToStep1() {\r\n return {\r\n type: ActionTypes.UPDATE_STEP,\r\n payload: {\r\n currentStep: 1,\r\n },\r\n };\r\n }\r\n\r\n /**\r\n * sets step to 2, and causes page 2 to render\r\n */\r\n static goToStep2() {\r\n return {\r\n type: ActionTypes.UPDATE_STEP,\r\n payload: {\r\n currentStep: 2,\r\n },\r\n };\r\n }\r\n}\r\n\r\nexport default ImprovementActions;","import { push } from 'connected-react-router';\r\n\r\nclass NavigateActions {\r\n static navigate(route) {\r\n return function (dispatch) {\r\n dispatch(push(route));\r\n };\r\n }\r\n}\r\n\r\nexport default NavigateActions;\r\n","import { ActionTypes } from '../../constants';\r\n\r\nclass ConfigActions {\r\n static addCpiConfig(config) {\r\n return {\r\n type: ActionTypes.ADD_CPI_CONFIG,\r\n payload: {\r\n cpiConfig: config,\r\n },\r\n };\r\n }\r\n}\r\n\r\nexport default ConfigActions;\r\n","import { ActionTypes } from '../../constants';\r\n\r\nclass ValidationActions {\r\n static setValidationData(validationData) {\r\n return {\r\n type: ActionTypes.SET_VALIDATION_DATA,\r\n payload: {\r\n validationData,\r\n },\r\n };\r\n }\r\n}\r\n\r\nexport default ValidationActions;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React, { useContext, useMemo } from 'react';\nvar ThemeContext = /*#__PURE__*/React.createContext({});\nvar Consumer = ThemeContext.Consumer,\n Provider = ThemeContext.Provider;\n\nfunction ThemeProvider(_ref) {\n var prefixes = _ref.prefixes,\n children = _ref.children;\n var copiedPrefixes = useMemo(function () {\n return _extends({}, prefixes);\n }, [prefixes]);\n return /*#__PURE__*/React.createElement(Provider, {\n value: copiedPrefixes\n }, children);\n}\n\nexport function useBootstrapPrefix(prefix, defaultPrefix) {\n var prefixes = useContext(ThemeContext);\n return prefix || prefixes[defaultPrefix] || defaultPrefix;\n}\n\nfunction createBootstrapComponent(Component, opts) {\n if (typeof opts === 'string') opts = {\n prefix: opts\n };\n var isClassy = Component.prototype && Component.prototype.isReactComponent; // If it's a functional component make sure we don't break it with a ref\n\n var _opts = opts,\n prefix = _opts.prefix,\n _opts$forwardRefAs = _opts.forwardRefAs,\n forwardRefAs = _opts$forwardRefAs === void 0 ? isClassy ? 'ref' : 'innerRef' : _opts$forwardRefAs;\n var Wrapped = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {\n var props = _extends({}, _ref2);\n\n props[forwardRefAs] = ref;\n var bsPrefix = useBootstrapPrefix(props.bsPrefix, prefix);\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n bsPrefix: bsPrefix\n }));\n });\n Wrapped.displayName = \"Bootstrap(\" + (Component.displayName || Component.name) + \")\";\n return Wrapped;\n}\n\nexport { createBootstrapComponent, Consumer as ThemeConsumer };\nexport default ThemeProvider;","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nfunction createChainedFunction() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n return funcs.filter(function (f) {\n return f != null;\n }).reduce(function (acc, f) {\n if (typeof f !== 'function') {\n throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');\n }\n\n if (acc === null) return f;\n return function chainedFunction() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n // @ts-ignore\n acc.apply(this, args); // @ts-ignore\n\n f.apply(this, args);\n };\n }, null);\n}\n\nexport default createChainedFunction;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"disabled\", \"onKeyDown\"];\nimport React from 'react';\nimport createChainedFunction from './createChainedFunction';\n\nfunction isTrivialHref(href) {\n return !href || href.trim() === '#';\n}\n/**\n * There are situations due to browser quirks or Bootstrap CSS where\n * an anchor tag is needed, when semantically a button tag is the\n * better choice. SafeAnchor ensures that when an anchor is used like a\n * button its accessible. It also emulates input `disabled` behavior for\n * links, which is usually desirable for Buttons, NavItems, DropdownItems, etc.\n */\n\n\nvar SafeAnchor = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'a' : _ref$as,\n disabled = _ref.disabled,\n onKeyDown = _ref.onKeyDown,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var handleClick = function handleClick(event) {\n var href = props.href,\n onClick = props.onClick;\n\n if (disabled || isTrivialHref(href)) {\n event.preventDefault();\n }\n\n if (disabled) {\n event.stopPropagation();\n return;\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n var handleKeyDown = function handleKeyDown(event) {\n if (event.key === ' ') {\n event.preventDefault();\n handleClick(event);\n }\n };\n\n if (isTrivialHref(props.href)) {\n props.role = props.role || 'button'; // we want to make sure there is a href attribute on the node\n // otherwise, the cursor incorrectly styled (except with role='button')\n\n props.href = props.href || '#';\n }\n\n if (disabled) {\n props.tabIndex = -1;\n props['aria-disabled'] = true;\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n onClick: handleClick,\n onKeyDown: createChainedFunction(handleKeyDown, onKeyDown)\n }));\n});\nSafeAnchor.displayName = 'SafeAnchor';\nexport default SafeAnchor;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"variant\", \"size\", \"active\", \"className\", \"block\", \"type\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport SafeAnchor from './SafeAnchor';\nvar defaultProps = {\n variant: 'primary',\n active: false,\n disabled: false\n};\nvar Button = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n variant = _ref.variant,\n size = _ref.size,\n active = _ref.active,\n className = _ref.className,\n block = _ref.block,\n type = _ref.type,\n as = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'btn');\n var classes = classNames(className, prefix, active && 'active', variant && prefix + \"-\" + variant, block && prefix + \"-block\", size && prefix + \"-\" + size);\n\n if (props.href) {\n return /*#__PURE__*/React.createElement(SafeAnchor, _extends({}, props, {\n as: as,\n ref: ref,\n className: classNames(classes, props.disabled && 'disabled')\n }));\n }\n\n if (ref) {\n props.ref = ref;\n }\n\n if (type) {\n props.type = type;\n } else if (!as) {\n props.type = 'button';\n }\n\n var Component = as || 'button';\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n className: classes\n }));\n});\nButton.displayName = 'Button';\nButton.defaultProps = defaultProps;\nexport default Button;","import moment from 'moment';\r\n\r\nconst formatter = {\r\n toAmountDisplay(amount, noCents) {\r\n if (amount === null || typeof amount === \"undefined\") {\r\n return amount;\r\n }\r\n if (isNaN(parseFloat(amount))) {\r\n return amount;\r\n }\r\n amount = parseFloat(amount).toFixed(2);\r\n let commaAmount = amount.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n if (noCents === true) {\r\n commaAmount = commaAmount.indexOf('.') !== -1 ? commaAmount.split('.')[0] : commaAmount;\r\n } else {\r\n commaAmount = commaAmount.indexOf('.') === -1 ? `${commaAmount}.00` : commaAmount;\r\n }\r\n return `$${commaAmount}`;\r\n },\r\n\r\n toFixedNumber(num, digits, base){\r\n const pow = Math.pow(base || 10, digits);\r\n return Math.round(num*pow) / pow;\r\n },\r\n\r\n toDateDisplay(dateString, options={ noDay: false, fullMonth: false }) {\r\n if (!dateString) return null;\r\n\r\n const momentDate = moment(dateString);\r\n\r\n if (options.noDay) return momentDate.format('MMMM, YYYY')\r\n if (options.fullMonth) return momentDate.format('MMMM DD, YYYY');\r\n\r\n return momentDate.format('MMM DD, YYYY');\r\n },\r\n};\r\n\r\nexport default formatter;\r\n","const CalculationUtils = {\r\n /*\r\n * CPI rent increase amount == x (example: $1,000.00 x .022 =\r\n * $22.00)\r\n */\r\n rentIncreaseAmount(num, cpiPercent) {\r\n return (Number(Number(num).toFixed(2)) * Number(cpiPercent));\r\n },\r\n\r\n /**\r\n * Rent amount with standard rent increase == + Y1A (example: $1,000.00 + $22.00\r\n * = $1,022.00)\r\n */\r\n rentWithIncrease(x, y) {\r\n return (Number(Number(x).toFixed(2)) + Number(Number(y).toFixed(2))).toFixed(2);\r\n },\r\n\r\n /**\r\n * Maximum additional allowed rent increase for unit == Y1B x .03 OR IF the\r\n * is less than the Y1B x .03 (example: $30.60 OR $36.42 == $30.60 because this is\r\n * the lesser of the two values)\r\n */\r\n maxAdditionalIncrease(x, y) {\r\n return (Number(Number(x).toFixed(2)) * 0.03).toFixed(2) < Number(Number(y).toFixed(2)) ? Number(Number(x).toFixed(2)) * 0.03 : Number(Number(y).toFixed(2));\r\n },\r\n\r\n /**\r\n * Potential maximum rent amount with all increases applied == Y1B + Y1C (example: $1,022.00 +\r\n * $30.60 = $1,052.60)\r\n */\r\n rentWithAllIncreases(x, y) {\r\n return Number(Number(x).toFixed(2)) + Number(Number(y).toFixed(2));\r\n },\r\n\r\n /**\r\n * Remaining eligible amount for second year = - Y1C (example: $36.42 - $30.60\r\n * = $5.7\r\n */\r\n remainingAmount(x, y) {\r\n return Number(Number(x).toFixed(2)) - Number(Number(y).toFixed(2)) > 0 ? Number(Number(x).toFixed(2)) - Number(Number(y).toFixed(2)) : 0;\r\n },\r\n\r\n getCpiForYear(cpiConfig, year) {\r\n const cpi = cpiConfig.yearly_cpis.find((val) => {\r\n return val.year.toString() === String(year);\r\n });\r\n\r\n return cpi;\r\n },\r\n};\r\n\r\nexport default CalculationUtils;\r\n","import moment from 'moment';\r\nimport { formatter } from '.';\r\n\r\nexport const validate = (validationObject) => {\r\n let err = {};\r\n\r\n validationObject.forEach((validation) => {\r\n const objKey = Object.keys(validation)[0];\r\n\r\n validation.validationRules.forEach((rule) => {\r\n switch (true) {\r\n case rule.hasOwnProperty('minLength'):\r\n if (!minLengthValidator(validation[objKey], rule.minLength)) {\r\n err = { ...err, [objKey]: rule.errorMsg ? rule.errorMsg : `Must be at least ${rule.minLength} characters` };\r\n }\r\n break;\r\n case rule.isRequired:\r\n if (!requiredValidator(validation[objKey])) {\r\n err = { ...err, [objKey]: rule.errorMsg ? rule.errorMsg : `Field is required` };\r\n }\r\n break;\r\n case rule.hasOwnProperty('minValue'):\r\n if (!minValueValidator(validation[objKey], rule.minValue)) {\r\n err = { ...err, [objKey]: rule.errorMsg ? rule.errorMsg : `Value must be greater than or equal to ${formatter.toAmountDisplay(rule.minValue)}` };\r\n }\r\n break;\r\n case rule.hasOwnProperty('maxValue'):\r\n if (!maxValueValidator(validation[objKey], rule.maxValue)) {\r\n err = { ...err, [objKey]: rule.errorMsg ? rule.errorMsg : `Value must be less than or equal to ${formatter.toAmountDisplay(rule.maxValue)}` };\r\n }\r\n break;\r\n case rule.hasOwnProperty('postalCode'):\r\n if (!postalCodeValidator(validation[objKey])) {\r\n err = { ...err, [objKey]: rule.errorMsg ? rule.errorMsg : `Invalid postal code` };\r\n }\r\n break;\r\n case rule.hasOwnProperty('maxDate'):\r\n if (!maxDateValidator(validation[objKey], rule.maxDate)) {\r\n err = { ...err, [objKey]: rule.errorMsg ? rule.errorMsg : `Date must be less than ${formatter.toDateDisplay(rule.maxDate)}` };\r\n }\r\n break;\r\n case rule.hasOwnProperty('minDate'):\r\n if (!minDateValidator(validation[objKey], rule.minDate)) {\r\n err = { ...err, [objKey]: rule.errorMsg ? rule.errorMsg : `Date must be greater than ${formatter.toDateDisplay(rule.minDate)}` };\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n });\r\n \r\n if (Object.keys(err)?.length) {\r\n const element = [...document.getElementsByClassName('input-base-error')].filter(el => el.innerText);\r\n\r\n if (element.length) element[0].scrollIntoView({ behavior: 'smooth' });\r\n }\r\n \r\n return err;\r\n};\r\n\r\nexport const minLengthValidator = (value, minLength) => {\r\n return value.length >= minLength;\r\n};\r\n\r\nexport const maxLengthValidator = (value, maxLength) => {\r\n return value.length < maxLength;\r\n};\r\n\r\nexport const minValueValidator = (value, minValue) => {\r\n return Number(value) >= Number(minValue);\r\n};\r\n\r\nexport const maxValueValidator = (value, maxValue) => {\r\n return Number(value) <= Number(maxValue);\r\n};\r\n\r\nexport const postalCodeValidator = (value) => {\r\n const validPostalCodeRegex = new RegExp('[A-Za-z][0-9][A-Za-z] [0-9][A-Za-z][0-9]');\r\n return validPostalCodeRegex.test(value);\r\n}\r\n\r\nexport const minDateValidator = (date, minDate) => {\r\n return moment(date).isAfter(moment(minDate).subtract(1, 'day'));\r\n}\r\n\r\nexport const maxDateValidator = (date, maxDate) => {\r\n return moment(date).isBefore(moment(maxDate).add(1, 'day'));\r\n}\r\n\r\n/**\r\n * Check to confirm that field is required\r\n *\r\n * @param value\r\n * @return\r\n */\r\nexport const requiredValidator = (value) => {\r\n if (Date.parse(value)) return true;\r\n if (typeof value === 'object' && Object.keys(value).length >= 1) return true;\r\n\r\n return value.trim() !== '';\r\n};\r\n\r\nexport default validate;\r\n","var rHyphen = /-(.)/g;\nexport default function camelize(string) {\n return string.replace(rHyphen, function (_, chr) {\n return chr.toUpperCase();\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"bsPrefix\", \"as\"];\nimport classNames from 'classnames';\nimport camelize from 'dom-helpers/camelize';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\n\nvar pascalCase = function pascalCase(str) {\n return str[0].toUpperCase() + camelize(str).slice(1);\n};\n\n// TODO: emstricten & fix the typing here! `createWithBsPrefix...`\nexport default function createWithBsPrefix(prefix, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$displayName = _ref.displayName,\n displayName = _ref$displayName === void 0 ? pascalCase(prefix) : _ref$displayName,\n Component = _ref.Component,\n defaultProps = _ref.defaultProps;\n\n var BsComponent = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {\n var className = _ref2.className,\n bsPrefix = _ref2.bsPrefix,\n _ref2$as = _ref2.as,\n Tag = _ref2$as === void 0 ? Component || 'div' : _ref2$as,\n props = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n var resolvedPrefix = useBootstrapPrefix(bsPrefix, prefix);\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: ref,\n className: classNames(className, resolvedPrefix)\n }, props));\n });\n BsComponent.defaultProps = defaultProps;\n BsComponent.displayName = displayName;\n return BsComponent;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _excluded = [\"bsPrefix\", \"size\", \"hasValidation\", \"className\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar InputGroupAppend = createWithBsPrefix('input-group-append');\nvar InputGroupPrepend = createWithBsPrefix('input-group-prepend');\nvar InputGroupText = createWithBsPrefix('input-group-text', {\n Component: 'span'\n});\n\nvar InputGroupCheckbox = function InputGroupCheckbox(props) {\n return /*#__PURE__*/React.createElement(InputGroupText, null, /*#__PURE__*/React.createElement(\"input\", _extends({\n type: \"checkbox\"\n }, props)));\n};\n\nvar InputGroupRadio = function InputGroupRadio(props) {\n return /*#__PURE__*/React.createElement(InputGroupText, null, /*#__PURE__*/React.createElement(\"input\", _extends({\n type: \"radio\"\n }, props)));\n};\n\n/**\n *\n * @property {InputGroupAppend} Append\n * @property {InputGroupPrepend} Prepend\n * @property {InputGroupText} Text\n * @property {InputGroupRadio} Radio\n * @property {InputGroupCheckbox} Checkbox\n */\nvar InputGroup = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n size = _ref.size,\n hasValidation = _ref.hasValidation,\n className = _ref.className,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'input-group');\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n className: classNames(className, bsPrefix, size && bsPrefix + \"-\" + size, hasValidation && 'has-validation')\n }));\n});\nInputGroup.displayName = 'InputGroup';\nInputGroup.Text = InputGroupText;\nInputGroup.Radio = InputGroupRadio;\nInputGroup.Checkbox = InputGroupCheckbox;\nInputGroup.Append = InputGroupAppend;\nInputGroup.Prepend = InputGroupPrepend;\nexport default InputGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"className\", \"type\", \"tooltip\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nvar propTypes = {\n /**\n * Specify whether the feedback is for valid or invalid fields\n *\n * @type {('valid'|'invalid')}\n */\n type: PropTypes.string,\n\n /** Display feedback as a tooltip. */\n tooltip: PropTypes.bool,\n as: PropTypes.elementType\n};\nvar Feedback = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n className = _ref.className,\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'valid' : _ref$type,\n _ref$tooltip = _ref.tooltip,\n tooltip = _ref$tooltip === void 0 ? false : _ref$tooltip,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, type + \"-\" + (tooltip ? 'tooltip' : 'feedback'))\n }));\n});\nFeedback.displayName = 'Feedback';\nFeedback.propTypes = propTypes;\nexport default Feedback;","import React from 'react'; // TODO\n\nvar FormContext = /*#__PURE__*/React.createContext({\n controlId: undefined\n});\nexport default FormContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"className\", \"type\", \"isValid\", \"isInvalid\", \"isStatic\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormCheckInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n className = _ref.className,\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'checkbox' : _ref$type,\n _ref$isValid = _ref.isValid,\n isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n _ref$isInvalid = _ref.isInvalid,\n isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n isStatic = _ref.isStatic,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'input' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom-control-input'] : [bsPrefix, 'form-check-input'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n type: type,\n id: id || controlId,\n className: classNames(className, bsPrefix, isValid && 'is-valid', isInvalid && 'is-invalid', isStatic && 'position-static')\n }));\n});\nFormCheckInput.displayName = 'FormCheckInput';\nexport default FormCheckInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"bsCustomPrefix\", \"className\", \"htmlFor\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormCheckLabel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n className = _ref.className,\n htmlFor = _ref.htmlFor,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom-control-label'] : [bsPrefix, 'form-check-label'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n return /*#__PURE__*/React.createElement(\"label\", _extends({}, props, {\n ref: ref,\n htmlFor: htmlFor || controlId,\n className: classNames(className, bsPrefix)\n }));\n});\nFormCheckLabel.displayName = 'FormCheckLabel';\nexport default FormCheckLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"inline\", \"disabled\", \"isValid\", \"isInvalid\", \"feedbackTooltip\", \"feedback\", \"className\", \"style\", \"title\", \"type\", \"label\", \"children\", \"custom\", \"as\"];\nimport classNames from 'classnames';\nimport all from 'prop-types-extra/lib/all';\nimport React, { useContext, useMemo } from 'react';\nimport Feedback from './Feedback';\nimport FormCheckInput from './FormCheckInput';\nimport FormCheckLabel from './FormCheckLabel';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormCheck = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n _ref$inline = _ref.inline,\n inline = _ref$inline === void 0 ? false : _ref$inline,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n _ref$isValid = _ref.isValid,\n isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n _ref$isInvalid = _ref.isInvalid,\n isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n _ref$feedbackTooltip = _ref.feedbackTooltip,\n feedbackTooltip = _ref$feedbackTooltip === void 0 ? false : _ref$feedbackTooltip,\n feedback = _ref.feedback,\n className = _ref.className,\n style = _ref.style,\n _ref$title = _ref.title,\n title = _ref$title === void 0 ? '' : _ref$title,\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'checkbox' : _ref$type,\n label = _ref.label,\n children = _ref.children,\n propCustom = _ref.custom,\n _ref$as = _ref.as,\n as = _ref$as === void 0 ? 'input' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var custom = type === 'switch' ? true : propCustom;\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom-control'] : [bsPrefix, 'form-check'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n var innerFormContext = useMemo(function () {\n return {\n controlId: id || controlId,\n custom: custom\n };\n }, [controlId, custom, id]);\n var hasLabel = custom || label != null && label !== false && !children;\n var input = /*#__PURE__*/React.createElement(FormCheckInput, _extends({}, props, {\n type: type === 'switch' ? 'checkbox' : type,\n ref: ref,\n isValid: isValid,\n isInvalid: isInvalid,\n isStatic: !hasLabel,\n disabled: disabled,\n as: as\n }));\n return /*#__PURE__*/React.createElement(FormContext.Provider, {\n value: innerFormContext\n }, /*#__PURE__*/React.createElement(\"div\", {\n style: style,\n className: classNames(className, bsPrefix, custom && \"custom-\" + type, inline && bsPrefix + \"-inline\")\n }, children || /*#__PURE__*/React.createElement(React.Fragment, null, input, hasLabel && /*#__PURE__*/React.createElement(FormCheckLabel, {\n title: title\n }, label), (isValid || isInvalid) && /*#__PURE__*/React.createElement(Feedback, {\n type: isValid ? 'valid' : 'invalid',\n tooltip: feedbackTooltip\n }, feedback))));\n});\nFormCheck.displayName = 'FormCheck';\nFormCheck.Input = FormCheckInput;\nFormCheck.Label = FormCheckLabel;\nexport default FormCheck;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"className\", \"isValid\", \"isInvalid\", \"lang\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormFileInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n className = _ref.className,\n isValid = _ref.isValid,\n isInvalid = _ref.isInvalid,\n lang = _ref.lang,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'input' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n var type = 'file';\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom-file-input'] : [bsPrefix, 'form-control-file'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n id: id || controlId,\n type: type,\n lang: lang,\n className: classNames(className, bsPrefix, isValid && 'is-valid', isInvalid && 'is-invalid')\n }));\n});\nFormFileInput.displayName = 'FormFileInput';\nexport default FormFileInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"bsCustomPrefix\", \"className\", \"htmlFor\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormFileLabel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n className = _ref.className,\n htmlFor = _ref.htmlFor,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom-file-label'] : [bsPrefix, 'form-file-label'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n return /*#__PURE__*/React.createElement(\"label\", _extends({}, props, {\n ref: ref,\n htmlFor: htmlFor || controlId,\n className: classNames(className, bsPrefix),\n \"data-browse\": props['data-browse']\n }));\n});\nFormFileLabel.displayName = 'FormFileLabel';\nexport default FormFileLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"disabled\", \"isValid\", \"isInvalid\", \"feedbackTooltip\", \"feedback\", \"className\", \"style\", \"label\", \"children\", \"custom\", \"lang\", \"data-browse\", \"as\", \"inputAs\"];\nimport classNames from 'classnames';\nimport React, { useContext, useMemo } from 'react';\nimport all from 'prop-types-extra/lib/all';\nimport Feedback from './Feedback';\nimport FormFileInput from './FormFileInput';\nimport FormFileLabel from './FormFileLabel';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormFile = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n _ref$isValid = _ref.isValid,\n isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n _ref$isInvalid = _ref.isInvalid,\n isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n _ref$feedbackTooltip = _ref.feedbackTooltip,\n feedbackTooltip = _ref$feedbackTooltip === void 0 ? false : _ref$feedbackTooltip,\n feedback = _ref.feedback,\n className = _ref.className,\n style = _ref.style,\n label = _ref.label,\n children = _ref.children,\n custom = _ref.custom,\n lang = _ref.lang,\n dataBrowse = _ref['data-browse'],\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n _ref$inputAs = _ref.inputAs,\n inputAs = _ref$inputAs === void 0 ? 'input' : _ref$inputAs,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom'] : [bsPrefix, 'form-file'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n var type = 'file';\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n var innerFormContext = useMemo(function () {\n return {\n controlId: id || controlId,\n custom: custom\n };\n }, [controlId, custom, id]);\n var hasLabel = label != null && label !== false && !children;\n var input = /*#__PURE__*/React.createElement(FormFileInput, _extends({}, props, {\n ref: ref,\n isValid: isValid,\n isInvalid: isInvalid,\n disabled: disabled,\n as: inputAs,\n lang: lang\n }));\n return /*#__PURE__*/React.createElement(FormContext.Provider, {\n value: innerFormContext\n }, /*#__PURE__*/React.createElement(Component, {\n style: style,\n className: classNames(className, bsPrefix, custom && \"custom-\" + type)\n }, children || /*#__PURE__*/React.createElement(React.Fragment, null, custom ? /*#__PURE__*/React.createElement(React.Fragment, null, input, hasLabel && /*#__PURE__*/React.createElement(FormFileLabel, {\n \"data-browse\": dataBrowse\n }, label)) : /*#__PURE__*/React.createElement(React.Fragment, null, hasLabel && /*#__PURE__*/React.createElement(FormFileLabel, null, label), input), (isValid || isInvalid) && /*#__PURE__*/React.createElement(Feedback, {\n type: isValid ? 'valid' : 'invalid',\n tooltip: feedbackTooltip\n }, feedback))));\n});\nFormFile.displayName = 'FormFile';\nFormFile.Input = FormFileInput;\nFormFile.Label = FormFileLabel;\nexport default FormFile;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"bsCustomPrefix\", \"type\", \"size\", \"htmlSize\", \"id\", \"className\", \"isValid\", \"isInvalid\", \"plaintext\", \"readOnly\", \"custom\", \"as\"];\nimport classNames from 'classnames';\nimport all from 'prop-types-extra/lib/all';\nimport React, { useContext } from 'react';\nimport warning from 'warning';\nimport Feedback from './Feedback';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormControl = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n type = _ref.type,\n size = _ref.size,\n htmlSize = _ref.htmlSize,\n id = _ref.id,\n className = _ref.className,\n _ref$isValid = _ref.isValid,\n isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n _ref$isInvalid = _ref.isInvalid,\n isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n plaintext = _ref.plaintext,\n readOnly = _ref.readOnly,\n custom = _ref.custom,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'input' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom'] : [bsPrefix, 'form-control'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n var classes;\n\n if (plaintext) {\n var _classes;\n\n classes = (_classes = {}, _classes[bsPrefix + \"-plaintext\"] = true, _classes);\n } else if (type === 'file') {\n var _classes2;\n\n classes = (_classes2 = {}, _classes2[bsPrefix + \"-file\"] = true, _classes2);\n } else if (type === 'range') {\n var _classes3;\n\n classes = (_classes3 = {}, _classes3[bsPrefix + \"-range\"] = true, _classes3);\n } else if (Component === 'select' && custom) {\n var _classes4;\n\n classes = (_classes4 = {}, _classes4[bsPrefix + \"-select\"] = true, _classes4[bsPrefix + \"-select-\" + size] = size, _classes4);\n } else {\n var _classes5;\n\n classes = (_classes5 = {}, _classes5[bsPrefix] = true, _classes5[bsPrefix + \"-\" + size] = size, _classes5);\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !id, '`controlId` is ignored on `` when `id` is specified.') : void 0;\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n type: type,\n size: htmlSize,\n ref: ref,\n readOnly: readOnly,\n id: id || controlId,\n className: classNames(className, classes, isValid && \"is-valid\", isInvalid && \"is-invalid\")\n }));\n});\nFormControl.displayName = 'FormControl';\nexport default Object.assign(FormControl, {\n Feedback: Feedback\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"children\", \"controlId\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useMemo } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormGroup = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n children = _ref.children,\n controlId = _ref.controlId,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-group');\n var context = useMemo(function () {\n return {\n controlId: controlId\n };\n }, [controlId]);\n return /*#__PURE__*/React.createElement(FormContext.Provider, {\n value: context\n }, /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix)\n }), children));\n});\nFormGroup.displayName = 'FormGroup';\nexport default FormGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar DEVICE_SIZES = ['xl', 'lg', 'md', 'sm', 'xs'];\nvar Col = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'col');\n var spans = [];\n var classes = [];\n DEVICE_SIZES.forEach(function (brkPoint) {\n var propValue = props[brkPoint];\n delete props[brkPoint];\n var span;\n var offset;\n var order;\n\n if (typeof propValue === 'object' && propValue != null) {\n var _propValue$span = propValue.span;\n span = _propValue$span === void 0 ? true : _propValue$span;\n offset = propValue.offset;\n order = propValue.order;\n } else {\n span = propValue;\n }\n\n var infix = brkPoint !== 'xs' ? \"-\" + brkPoint : '';\n if (span) spans.push(span === true ? \"\" + prefix + infix : \"\" + prefix + infix + \"-\" + span);\n if (order != null) classes.push(\"order\" + infix + \"-\" + order);\n if (offset != null) classes.push(\"offset\" + infix + \"-\" + offset);\n });\n\n if (!spans.length) {\n spans.push(prefix); // plain 'col'\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames.apply(void 0, [className].concat(spans, classes))\n }));\n});\nCol.displayName = 'Col';\nexport default Col;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"bsPrefix\", \"column\", \"srOnly\", \"className\", \"htmlFor\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport warning from 'warning';\nimport Col from './Col';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n column: false,\n srOnly: false\n};\nvar FormLabel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'label' : _ref$as,\n bsPrefix = _ref.bsPrefix,\n column = _ref.column,\n srOnly = _ref.srOnly,\n className = _ref.className,\n htmlFor = _ref.htmlFor,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-label');\n var columnClass = 'col-form-label';\n if (typeof column === 'string') columnClass = columnClass + \" \" + columnClass + \"-\" + column;\n var classes = classNames(className, bsPrefix, srOnly && 'sr-only', column && columnClass);\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !htmlFor, '`controlId` is ignored on `` when `htmlFor` is specified.') : void 0;\n htmlFor = htmlFor || controlId;\n if (column) return /*#__PURE__*/React.createElement(Col, _extends({\n ref: ref,\n as: \"label\",\n className: classes,\n htmlFor: htmlFor\n }, props));\n return (\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/label-has-for, jsx-a11y/label-has-associated-control\n React.createElement(Component, _extends({\n ref: ref,\n className: classes,\n htmlFor: htmlFor\n }, props))\n );\n});\nFormLabel.displayName = 'FormLabel';\nFormLabel.defaultProps = defaultProps;\nexport default FormLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"as\", \"muted\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormText = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'small' : _ref$as,\n muted = _ref.muted,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-text');\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix, muted && 'text-muted')\n }));\n});\nFormText.displayName = 'FormText';\nexport default FormText;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport FormCheck from './FormCheck';\nvar Switch = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(FormCheck, _extends({}, props, {\n ref: ref,\n type: \"switch\"\n }));\n});\nSwitch.displayName = 'Switch';\nSwitch.Input = FormCheck.Input;\nSwitch.Label = FormCheck.Label;\nexport default Switch;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"inline\", \"className\", \"validated\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport FormCheck from './FormCheck';\nimport FormFile from './FormFile';\nimport FormControl from './FormControl';\nimport FormGroup from './FormGroup';\nimport FormLabel from './FormLabel';\nimport FormText from './FormText';\nimport Switch from './Switch';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nvar FormRow = createWithBsPrefix('form-row');\nvar defaultProps = {\n inline: false\n};\nvar FormImpl = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n inline = _ref.inline,\n className = _ref.className,\n validated = _ref.validated,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'form' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form');\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, validated && 'was-validated', inline && bsPrefix + \"-inline\")\n }));\n});\nFormImpl.displayName = 'Form';\nFormImpl.defaultProps = defaultProps;\nFormImpl.Row = FormRow;\nFormImpl.Group = FormGroup;\nFormImpl.Control = FormControl;\nFormImpl.Check = FormCheck;\nFormImpl.File = FormFile;\nFormImpl.Switch = Switch;\nFormImpl.Label = FormLabel;\nFormImpl.Text = FormText;\nexport default FormImpl;","var _path, _path2;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgCalendar(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 16 16\",\n className: \"bi bi-calendar3-fill\",\n fill: \"currentColor\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2H0z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M0 3h16v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3zm6.5 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm4-1a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm2 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm-8 2a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm2 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm4-1a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm2 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm-8 2a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm2 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm4-1a1 1 0 1 1-2 0 1 1 0 0 1 2 0z\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCalendar);\nexport default __webpack_public_path__ + \"static/media/calendar.aba6107b97596b1d0cb07537f37812e9.svg\";\nexport { ForwardRef as ReactComponent };","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport InputGroup from 'react-bootstrap/InputGroup';\r\nimport Form from 'react-bootstrap/Form';\r\nimport { errorIcon } from '../../../assets/images';\r\nimport { maxLengthValidator } from '../../../utility/validate';\r\nimport { formatter } from '../../../utility';\r\n\r\nconst numberInputRegex = /^\\d*\\.?\\d{0,2}$/;\r\nclass InputBase extends Component {\r\n //pass event object to parent handle change function\r\n handleChange = (event) => {\r\n const { value } = event.target;\r\n const { maxLength, type, handleChange } = this.props;\r\n\r\n if (type === 'date-picker') return;\r\n if (type === 'number' && !(numberInputRegex.test(value))) return;\r\n \r\n if (maxLength) {\r\n const valid = maxLengthValidator(String(event.target.value), maxLength);\r\n if (!valid) return;\r\n }\r\n\r\n handleChange(event, this.props);\r\n };\r\n\r\n renderStartAdornment = () => {\r\n const { startAdornment, disabled } = this.props;\r\n if (startAdornment) {\r\n return (\r\n <>\r\n \r\n {startAdornment}\r\n \r\n >\r\n );\r\n }\r\n };\r\n\r\n renderEndAdornment = () => {\r\n const { endAdornment, onClick, disabled } = this.props;\r\n if (endAdornment) {\r\n return (\r\n
\r\n \r\n Note: The earliest date you can select is determined by the timing and notice requirements for rent increases under the Act (i.e. notice must be provided at least 3 months + 1 day in advance of the effective date of the rent increase).`}\r\n handleChange={this.handleDateChange}\r\n />\r\n
\r\n Rate of future annual allowable rent increase not known This future rent increase cannot be calculated until the maximum annual allowable rent increase rate is known for the year beginning on {formatter.toDateDisplay(moment(selectedRentIncreaseDate).format('YYYY'))}. This tool is updated each September with the annual allowable rent increase rates for the following calendar year. \r\n Based on the date you have selected for this rent increase, you can return to this site and calculate this rent increase in {dateNextYearCPIAvailable}.\r\n
\r\n \r\n \r\n Applied Rule: The first additional rent increase can only be imposed 3 full months after the decision date, to allow for service of the notice of additional rent increase ({(formatter.toDateDisplay(stepOneData.earliestDecisionServiceDate))}) \r\n or a minimum 1 year after the last rent increase, allowing for 3 full months from the decision date for service of the notice {isNaN(oneYearAfterLastRentIncreaseDate) || !oneYearAfterLastRentIncreaseDate ? '(does not apply)' : `(${formatter.toDateDisplay(oneYearAfterLastRentIncreaseDate)})`}. The earliest date allowed for this additional rent increase to take effect is {formatter.toDateDisplay(minRentIncreaseDate)}\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n Applied Rule: The first additional rent increase must be imposed within 1 year of the earliest available additional rent increase date. The last month for this additional rent increase to be effective is {formatter.toDateDisplay(maxRentIncreaseDate, { noDay: true })}. \r\n If the Phase 1 additional rent increase is not imposed by this month, the full eligible amount for the first year becomes an unused portion and cannot be carried forward to the next phase or any future rent increase.\r\n \r\n
\r\n {formatter.toAmountDisplay(rentAmountFinalAdditionalRentIncrease)}\r\n Maximum allowed rent amount with all rent increases applied (the annual allowable rent increase and additional rent increase)\r\n
\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n {formatter.toAmountDisplay(decisionEligibleAmount)}\r\n Eligible amount from the decision for the unit\r\n
\r\n\r\n
\r\n {formatter.toAmountDisplay(rentAmountUsedForCalc)}\r\n Current monthly rent (before any rent increases)\r\n
\r\n\r\n
\r\n {formatter.toAmountDisplay(rentCPIAmountStandardRentIncrease)}\r\n Maximum annual allowable rent increase amount {!cpiValue || !cpiYear ? null : `(${cpiValue}% for ${cpiYear})` }\r\n
\r\n\r\n
\r\n {formatter.toAmountDisplay(rentAmountStandardRentIncrease)}\r\n Rent amount with maximum annual allowable rent increase \r\n
\r\n\r\n
\r\n {formatter.toAmountDisplay(rentAmountAdditionalPortion)}\r\n Additional rent increase amount eligible for Phase 1 (capped at a max of 3% of rent after the annual allowable rent increase is applied or {formatter.toAmountDisplay(rentAmountAdditionalPortion)})\r\n
\r\n \r\n \r\n Applied Rule: The maximum additional rent increase amount that can be applied to a rent increase is the lesser amount between 3% of the rent (after the maximum annual allowable increase is calculated), or the eligible amount for the unit. \r\n The maximum additional rent increase amount for this rent increase is {formatter.toAmountDisplay(rentAmountAdditionalPortion)}.\r\n \r\n
\r\n Warning. The amount that you have selected for the additional rent increase does not use the full amount available. Based on the amount entered of {formatter.toAmountDisplay(selectedRentIncreaseAmount)} you \r\n will lose {formatter.toAmountDisplay(phaseOneLostEligibleAmount)} of\r\n your Phase 1 eligible amount as an unused portion. This unused portion cannot be carried forward to the next phase or any future rent increase.\r\n
\r\n Warning: The landlord may only increase the rent 12 months after the date that the existing rent was established or when rent was last increased. Based on the information you provided, for your previous and future rent increase, \r\n your future rent increase does not comply with the requirements under the Residential Tenancy Act and you should not continue with this tool until this issue is resolved. \r\n If the dates you have entered are incorrect you can enter the correct dates and, if the future rent increase is valid, this warning will disappear.\r\n
\r\n Warning: All rent increases must have the notice of rent increase served to the tenant at least 3 full months prior to the date that the rent increase is to be effective. \r\n Based on the information you provided, the notice that you served for your future rent increase does not comply with the requirements under the Residential Tenancy Act and you \r\n should not continue with this tool until this issue is resolved. If the dates you have entered are incorrect, you can enter the correct dates and if the future rent increase is \r\n valid this warning will disappear.\r\n
\r\n Warning. Based on the information that you provided, the final month for the Phase 1 additional rent increase to take effect is {formatter.toDateDisplay(calcMissedRentIncreaseDate)}. \r\n As there is less than three full months to provide notice to the tenant as required under the Act, your eligible amount for the Phase 1 additional rent increase has become an unused portion in the amount of {formatter.toAmountDisplay(rentAmountAdditionalPortion)} This\r\n unused portion cannot be carried forward to the next phase or any future rent increase. Your remaining eligible amount is {formatter.toAmountDisplay(phaseOneRemainingEligibleAmount)} for a Phase 2 additional rent increase. You must generate a notice insert for this lost Phase 1 eligible amount and include it with your future additional rent increases.\r\n
\r\n Warning. Based on the rules, your annual allowable rent increase effective on {formatter.toDateDisplay(calcMissedRentIncreaseDate)} will restrict you from imposing the Phase 1 additional rent increase during this same time frame and will result in the loss of the Phase 1 eligible amount of {formatter.toAmountDisplay(rentAmountAdditionalPortion)}.\r\n
\r\n Warning. Based on the rules and the information provided, you have $0.00 eligible amount remaining for future additional rent increases. The rent for this rental unit may be increased with the annual allowable rent increase, subject to the timing and notice requirements under the Act.\r\n
\r\n \r\n \r\n Applied Rule: Remaining eligible amounts associated to a rental unit that exceed 3% of the rent, after the maximum annual allowable increase is added, can be applied to future rent increases.\r\n The remaining eligible amount for future additional rent increases is {formatter.toAmountDisplay(phaseOneRemainingEligibleAmount)}\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n Applied Rule: Any additional rent increase amount eligible for Phase 1 that is not used within the first 12 months it may be imposed (to comply with timing and notice requirements) becomes an unused portion. \r\n This unused portion cannot be carried forward to the next phase or any future rent increase. \r\n If no additional rent increase is applied between {formatter.toDateDisplay(minRentIncreaseDate)} and {formatter.toDateDisplay(maxRentIncreaseDate)} the eligible amount that will be lost and becomes an unused portion is {formatter.toAmountDisplay(rentAmountAdditionalPortion)}, \r\n which will leave a remaining eligible amount for this unit of {formatter.toAmountDisplay(phaseOneRemainingEligibleAmount)} for future additional rent increases.\r\n \r\n
\r\n Lost Phase 1 additional rent increase: The Phase 1 additional rent increase was not imposed between the required dates of {formatter.toDateDisplay(minRentIncreaseDate)} and {formatter.toDateDisplay(maxRentIncreaseDate)}. \r\n For this reason, the eligible amount for the Phase 1 additional rent increase has become an unused portion in the amount of {formatter.toAmountDisplay(rentAmountAdditionalPortion)}. This \r\n unused portion cannot be carried forward to the next phase or any future rent increase. The landlord has a remaining eligible amount of {formatter.toAmountDisplay(phaseOneRemainingEligibleAmount)} for future additional rent increases.\r\n
\r\n Section 2: SUPPORTING INFORMATION\r\n Date of Residential Tenancy Branch decision:{formatter.toDateDisplay(decisionDate)}*\r\n Eligible amount for this unit in the decision:{formatter.toAmountDisplay(decisionEligibleAmount)}*\r\n Rent amount for this unit prior to this rent increase:{formatter.toAmountDisplay(rentAmountUsedForCalc) || '-'}*\r\n { renderPreviousRentIncrease() }\r\n Phase of this additional rent increase:Phase of this additional rent increase: First of up to three (3) maximum additional rent increases\r\n Earliest date allowed for Phase 1 additional rent increase:{formatter.toDateDisplay(minRentIncreaseDate)}\r\n Final month for Phase 1 additional rent increase to be imposed:{formatter.toDateDisplay(maxRentIncreaseDate)}\r\n \r\n
\r\n Rent Increase Calculation:\r\n \r\n \r\n\r\n { renderEligibleAmount() }\r\n Remaining eligible amount for a Phase 2 additional rent increase on this unit: {formatter.toAmountDisplay(phaseOneRemainingEligibleAmount)}\r\n
\r\n
\r\n )\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
Phase 1 Additional Rent Increase Calculation
\r\n \r\n Print or save as PDF to create a copy of the rent increase details below and attach it to a completed #RTB-53-P1 form with the additional rent increase decision. \r\n You can then use these documents to provide notice to the tenant(s) of the rent increase. The amount of the rent increase and the dates on which the notice of additional rent increase must be served below are based on the information that you entered in the previous step. \r\n If any of this information is incorrect, you can go back to the previous step and edit the information to correct it. You can learn more on our website.\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n #RTB-53P1D Additional Rent Increase\r\n First Phase Rent Increase Detail\r\n
\r\n
\r\n Instructions\r\n
\r\n
This form must be served to the tenant(s) with a completed #RTB-53-P1 form on or before the latest service dates below
\r\n Lost Phase 2 additional rent increase: The second additional rent increase (phase 2) was not imposed between the required dates of {formatter.toDateDisplay(calc_p2EarliestRentIncreaseDate, { fullMonth: true })} and {formatter.toDateDisplay(calc_p2MaxRentIncreaseDate, { fullMonth: true })}. \r\n For this reason, the landlord has lost the right to impose the phase 2 additional rent increase for this unit and {formatter.toAmountDisplay(calc_p2AppliedEligibleAmount)} of eligible amount which cannot be used for the third additional rent increase (phase 3).\r\n
\r\n Last date on which notice must be served to the tenant(s)\r\n
\r\n
{formatter.toDateDisplay(calc_p2InPersonMinServiceDate, { fullMonth: true })} if the notice of rent increase is served in person
\r\n
{formatter.toDateDisplay(calc_p2EmailDoorFaxMinServiceDate, { fullMonth: true })} if the notice of rent increase is served by pre-agreed email, posted on door, or fax
\r\n
{formatter.toDateDisplay(calc_p2RegMailMinServiceDate, { fullMonth: true })} if the notice of rent increase is served by registered mail
\r\n Potential phase 1 rent increase issue detected. Based on the information that the landlord provided, they have imposed a rent increase that is \r\n {formatter.toAmountDisplay(calc_p1RentIncreaseErrorAmount)} over the allowed maximum rent increase for this unit of {formatter.toAmountDisplay(calc_p1MaxAdditionalRentIncrease)}.\r\n If this rent increase was not mutually agreed to by the tenant(s), the tenant(s) may dispute the rent increase with the Residential Tenancy Branch or deduct any amount overpaid from future rent payments. You can find information on rent increases here.\r\n
\r\n Potential phase 1 rent increase issue detected. Based on the information that the landlord provided, they have imposed an eligible amount that is \r\n {formatter.toAmountDisplay(calc_p1EligibleErrorAmount)} over the maximum allowed eligible amount for this unit of {formatter.toAmountDisplay(calc_p1MaxEligibleAmount)}.\r\n If this rent increase was not mutually agreed to by the tenant(s), the tenant(s) may dispute the rent increase with the Residential Tenancy Branch or deduct any amount overpaid from future rent payments. You can find information on rent increases here.\r\n
\r\n Warning. The landlord has indicated that they have {formatter.toAmountDisplay(remainingPhase1EligibleAmount)} of eligible amount remaining for a future additional rent increase. Based on the information that the landlord provided, \r\n the Phase 2 Additional Rent Increase Calculator has determined the landlord actually has {formatter.toAmountDisplay(calc_p1RemainingEligibleAmount)} of eligible amount remaining for a future additional rent increase. This calculator uses the corrected amount of \r\n {formatter.toAmountDisplay(calc_p1RemainingEligibleAmount)} for the notice.\r\n
\r\n Warning. Based on the decision date of {formatter.toDateDisplay(decisionDate, { fullMonth: true })}, and your phase 1 rent increase date of {formatter.toDateDisplay(phase1RentIncreaseDate, { fullMonth: true })}, the landlord did not give the required \r\n 3 full months of notice \r\n If this rent increase was not mutually agreed to by the tenant(s), the tenant(s) could dispute this rent increase with the Residential Tenancy Branch or deduct any amount overpaid from future rent payments. \r\n If deducting rent, the tenant should explain to the landlord in writing why the deduction is being made. If the landlord continues with a subsequent rent increase that builds on this base rent amount, they may be adding to the amount which could be disputed by the tenant or deducted from a future rent payment. \r\n You can find information on rent increases here.\r\n
\r\n Warning. Based on the additional rent increase regulations, the rent increase that was effective on {formatter.toDateDisplay(rentIncreaseDateAfterPhase2, { fullMonth: true })}, is considered the phase 2 additional rent increase. If the phase 2 eligible amount of \r\n {formatter.toAmountDisplay(calc_p2AppliedEligibleAmount)} was not included in the rent increase on {formatter.toDateDisplay(rentIncreaseDateAfterPhase2, { fullMonth: true })}, then it is considered a lost amount and cannot be used for a future rent increase.\r\n
\r\n }\r\n\r\n return (\r\n
\r\n
\r\n Section 1: RENT INCREASE AMOUNT, DATES AND SERVICE\r\n Rental unit address:{address}*\r\n Date rent increase insert generated:{formatter.toDateDisplay(userAccessDate, { fullMonth: true })}\r\n { renderRentAmount() }\r\n { renderRentIncreaseDate() }\r\n { renderMissedRentIncreaseDate() }\r\n
\r\n Section 2: SUPPORTING INFORMATION\r\n Date of Residential Tenancy Branch decision:{formatter.toDateDisplay(decisionDate, { fullMonth: true })}*\r\n Eligible amount for this unit in the decision:{formatter.toAmountDisplay(decisionEligibleAmount)}*\r\n Rent amount for this unit prior to this rent increase:{formatter.toAmountDisplay(phase1RentAmountUsed) || '-'}*\r\n Date of previous rent increase for this unit:{phase1RentIncreaseDate ? formatter.toDateDisplay(phase1RentIncreaseDate, { fullMonth: true }) : 'Not applicable'}*\r\n Phase of this additional rent increase:Phase 2 of up to three (3) additional rent increases\r\n Earliest date allowed for phase 2 additional rent increase:{formatter.toDateDisplay(calc_p2EarliestRentIncreaseDate, { fullMonth: true })}\r\n Last month allowed for phase 2 additional rent increase to be imposed:{formatter.toDateDisplay(calc_p2MaxRentIncreaseDate, { fullMonth: true })}\r\n \r\n
\r\n Rent Increase Calculation:\r\n \r\n \r\n\r\n Remaining eligible amount for the final phase 3 additional rent increase for this unit: {formatter.toAmountDisplay(calc_p2RemainingEligibleAmount)}\r\n
\r\n
\r\n );\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
Phase 2 Additional Rent Increase Calculation
\r\n
\r\n Print or save as PDF to create a copy of the rent increase details below and attach it to a completed #RTB-53-P2 form. \r\n You must provide these forms with the additional rent increase decision. You can then use these documents to provide notice to the tenant(s) of an additional rent increase. The amount of the rent increase and the dates on which the notice of additional rent increase must be served below are based on \r\n the information that you entered in the previous step. If any of this information is incorrect, you can go back to the previous step and edit the information to correct it. You can learn more on our website.\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n #RTB-53P2D Additional Rent Increase\r\n Second Phase Rent Increase Detail\r\n
\r\n
\r\n Instructions\r\n
\r\n
This form must be served to the tenant(s) with a completed #RTB-53-P2 form on or before the latest service dates below
\r\n
\r\n If any of the bolded values with a * beside them are incorrect, this rent increase may not be valid and you should inform your landlord of the issue so they can correct the notice. If necessary, you can dispute the rent increase \r\n by filing an application with the Residential Tenancy Branch.\r\n
\r\n Process Completed. {stepThreeData.isGeneratedNoticeAvailable ? 'If the above is information is correct you can use it to generate a rent increase notice insert.' : null}\r\n
\r\n \r\n {polyglot.t('noticeGenerator.sectionOne.descriptionWarning')}\r\n \r\n { stepOneSubmitted && !hasFutureRIError ? : null }\r\n { stepOneSubmitted && stepTwoSubmitted && !hasFutureRIError && stepTwoData.calcCPIValue ? : null }\r\n { stepOneSubmitted && ((stepTwoSubmitted && stepThreeSubmitted && stepTwoData.calcCPIValue) || hasFutureRIError) ? : null }\r\n\r\n {renderSectionOneCompletedButtons()}\r\n >\r\n );\r\n }\r\n\r\n renderSectionTwo() {\r\n const {stepOneData, stepTwoData, stepThreeData } = this.state;\r\n const formData = {...stepOneData, ...stepTwoData, ...stepThreeData }\r\n return ;\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n cpiConfig: state.config.cpiConfig,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(\r\n {\r\n navigate: NavigateActions.navigate,\r\n },\r\n dispatch\r\n );\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(NoticeGenerator);\r\n","import NoticeGenerator from './NoticeGenerator';\r\nimport './NoticeGenerator.scss';\r\n\r\nexport default NoticeGenerator;\r\n","import invariant from 'invariant';\n\nvar noop = function noop() {};\n\nfunction readOnlyPropType(handler, name) {\n return function (props, propName) {\n if (props[propName] !== undefined) {\n if (!props[handler]) {\n return new Error(\"You have provided a `\" + propName + \"` prop to `\" + name + \"` \" + (\"without an `\" + handler + \"` handler prop. This will render a read-only field. \") + (\"If the field should be mutable use `\" + defaultKey(propName) + \"`. \") + (\"Otherwise, set `\" + handler + \"`.\"));\n }\n }\n };\n}\n\nexport function uncontrolledPropTypes(controlledValues, displayName) {\n var propTypes = {};\n Object.keys(controlledValues).forEach(function (prop) {\n // add default propTypes for folks that use runtime checks\n propTypes[defaultKey(prop)] = noop;\n\n if (process.env.NODE_ENV !== 'production') {\n var handler = controlledValues[prop];\n !(typeof handler === 'string' && handler.trim().length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Uncontrollable - [%s]: the prop `%s` needs a valid handler key name in order to make it uncontrollable', displayName, prop) : invariant(false) : void 0;\n propTypes[prop] = readOnlyPropType(handler, displayName);\n }\n });\n return propTypes;\n}\nexport function isProp(props, prop) {\n return props[prop] !== undefined;\n}\nexport function defaultKey(key) {\n return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nexport function canAcceptRef(component) {\n return !!component && (typeof component !== 'function' || component.prototype && component.prototype.isReactComponent);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\n\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n\nimport { useCallback, useRef, useState } from 'react';\nimport * as Utils from './utils';\n\nfunction useUncontrolledProp(propValue, defaultValue, handler) {\n var wasPropRef = useRef(propValue !== undefined);\n\n var _useState = useState(defaultValue),\n stateValue = _useState[0],\n setState = _useState[1];\n\n var isProp = propValue !== undefined;\n var wasProp = wasPropRef.current;\n wasPropRef.current = isProp;\n /**\n * If a prop switches from controlled to Uncontrolled\n * reset its value to the defaultValue\n */\n\n if (!isProp && wasProp && stateValue !== defaultValue) {\n setState(defaultValue);\n }\n\n return [isProp ? propValue : stateValue, useCallback(function (value) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (handler) handler.apply(void 0, [value].concat(args));\n setState(value);\n }, [handler])];\n}\n\nexport { useUncontrolledProp };\nexport default function useUncontrolled(props, config) {\n return Object.keys(config).reduce(function (result, fieldName) {\n var _extends2;\n\n var _ref = result,\n defaultValue = _ref[Utils.defaultKey(fieldName)],\n propsValue = _ref[fieldName],\n rest = _objectWithoutPropertiesLoose(_ref, [Utils.defaultKey(fieldName), fieldName].map(_toPropertyKey));\n\n var handlerName = config[fieldName];\n\n var _useUncontrolledProp = useUncontrolledProp(propsValue, defaultValue, props[handlerName]),\n value = _useUncontrolledProp[0],\n handler = _useUncontrolledProp[1];\n\n return _extends({}, rest, (_extends2 = {}, _extends2[fieldName] = value, _extends2[handlerName] = handler, _extends2));\n }, props);\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar NavbarBrand = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n as = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-brand');\n var Component = as || (props.href ? 'a' : 'span');\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix)\n }));\n});\nNavbarBrand.displayName = 'NavbarBrand';\nexport default NavbarBrand;","import ownerDocument from './ownerDocument';\n/**\n * Returns the owner window of a given element.\n * \n * @param node the element\n */\n\nexport default function ownerWindow(node) {\n var doc = ownerDocument(node);\n return doc && doc.defaultView || window;\n}","/**\n * Returns the owner document of a given element.\n * \n * @param node the element\n */\nexport default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","var rUpper = /([A-Z])/g;\nexport default function hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}","/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nimport hyphenate from './hyphenate';\nvar msPattern = /^ms-/;\nexport default function hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}","var supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\nexport default function isTransform(value) {\n return !!(value && supportedTransforms.test(value));\n}","import getComputedStyle from './getComputedStyle';\nimport hyphenate from './hyphenateStyle';\nimport isTransform from './isTransform';\n\nfunction style(node, property) {\n var css = '';\n var transforms = '';\n\n if (typeof property === 'string') {\n return node.style.getPropertyValue(hyphenate(property)) || getComputedStyle(node).getPropertyValue(hyphenate(property));\n }\n\n Object.keys(property).forEach(function (key) {\n var value = property[key];\n\n if (!value && value !== 0) {\n node.style.removeProperty(hyphenate(key));\n } else if (isTransform(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += hyphenate(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += \"transform: \" + transforms + \";\";\n }\n\n node.style.cssText += \";\" + css;\n}\n\nexport default style;","import ownerWindow from './ownerWindow';\n/**\n * Returns one or all computed style properties of an element.\n * \n * @param node the element\n * @param psuedoElement the style property\n */\n\nexport default function getComputedStyle(node, psuedoElement) {\n return ownerWindow(node).getComputedStyle(node, psuedoElement);\n}","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n * \n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\r\n );\r\n}\r\n\r\nexport default RentIncreaseInformation;","import { formatter } from \"../../utility\";\r\nimport { readyCheckIcon, notReadyCheckIcon } from \"../../assets/images\";\r\n\r\n\r\nconst ValidationSummary = (props) => {\r\n const { \r\n phase1RentIncreaseDate, calc_p1IsServiceDateValid, appliedPhase1EligibleAmount, calc_p1IsAppliedEligibleAmountValid, calc_p1MaxEligibleAmount, phase1RentAmount, calc_p1RentIncreaseErrorAmount, \r\n calc_p1IsRentIncreaseAmountValid, calc_p1MaxAdditionalRentIncrease, calc_p1IsRemainingEligibleAmountValid, calc_p1RemainingEligibleAmount, remainingPhase1EligibleAmount \r\n } = props?.validationData;\r\n \r\n const renderMinDateValidation = () => {\r\n const displayTextLandlord = calc_p1IsServiceDateValid ? 'The phase 1 rent increase was imposed at least 3 full months after the decision.' \r\n : 'The phase 1 rent increase was not imposed at least 3 full months after the decision';\r\n const displayTextTenant = calc_p1IsServiceDateValid ? 'The phase 1 rent increase was imposed at least 3 full months after the decision with enough time to serve notice' \r\n : 'The phase 1 rent increase was not imposed at least 3 full months after the decision and did not include adequate notice.'\r\n return (\r\n
\r\n )\r\n }\r\n\r\n const renderEligibleAmount = () => {\r\n const displayText = calc_p1IsAppliedEligibleAmountValid ? `The additional rent increase amount that was imposed is within the maximum rent increase allowed of ${formatter.toAmountDisplay(calc_p1MaxEligibleAmount)}.` \r\n : `The additional rent increase amount that was imposed is over the maximum rent increase allowed of ${formatter.toAmountDisplay(calc_p1MaxEligibleAmount)}.`\r\n return (\r\n
\r\n )\r\n }\r\n\r\n const renderValidationSummary = () => {\r\n const processHadNoErrors = calc_p1IsServiceDateValid && calc_p1IsAppliedEligibleAmountValid && calc_p1IsRentIncreaseAmountValid && calc_p1IsRemainingEligibleAmountValid\r\n const displayText = processHadNoErrors ? \r\n `Based on the information you provided, the phase 1 rent increase was imposed correctly` : \r\n `Based on the information you provided, warnings were identified ${props?.isTenantRoute ? 'in the' : 'for your'} phase 1 rent increase. This may happen if the information\r\n you provided was not correct. You can click modify to change any incorrect information that you provided.`;\r\n \r\n return
\r\n Warning. Based on the decision date of {formatter.toDateDisplay(decisionDate, { fullMonth: true })} and your phase 1 rent increase date of {formatter.toDateDisplay(phase1RentIncreaseDate, { fullMonth: true })}, {props?.isTenantRoute ? 'the landlord' : 'you'} did not give the required 3 full months of notice to the tenant prior to this rent increase. \r\n If this rent increase was not mutually agreed to by the tenant(s), the tenant(s) could dispute the rent increase with the Residential Tenancy Branch or or deduct any amount overpaid from future rent payments. If you continue with a subsequent rent increase that builds on this base rent amount, you may be adding to the amount which could be disputed by the tenant or deducted from a future rent payment. \r\n You can find information on rent increases here.\r\n
\r\n Warning. The first additional rent increase (phase 1) was not imposed between the required dates of {formatter.toDateDisplay(decisionDate)} and {formatter.toDateDisplay(moment(decisionDate).add(1, 'year'))}. \r\n Due to the phase 1 rent increase date not being imposed in the allowed timeframe, you may not use this webtool to calculate phase 2 rent increase. \r\n The landlord may have raised the rent by an amount that is more than they are allowed to do. If this rent increase was not mutually agreed to by the tenant(s), \r\n the tenant(s) may dispute the rent increase with the Residential Tenancy Branch or deduct any amount overpaid from future rent payments. You can find information on rent increases here.\r\n
\r\n Warning. Based on the information that you provided, {props?.isTenantRoute ? 'the landlord has' : 'you have'} applied an eligible amount that is {formatter.toAmountDisplay(calc_p1EligibleErrorAmount)} over the allowed\r\n maximum rent increase for this unit of {formatter.toAmountDisplay(calc_p1MaxEligibleAmount)}.\r\n
\r\n Warning. Based on the information that you provided, {props?.isTenantRoute ? 'the landlord has' : 'you have'} applied a rent increase that is {formatter.toAmountDisplay(calc_p1RentIncreaseErrorAmount)} over the allowed maximum rent increase for this unit of {formatter.toAmountDisplay(calc_p1MaxAdditionalRentIncrease)}. \r\n If this rent increase was not mutually agreed to by the tenant(s), it is possible that the tenant(s) could dispute the rent increase with the Residential Tenancy Branch or deduct any amount overpaid from future rent payments. You can find information on rent increases here.\r\n
\r\n Warning. Based on the information that you provided, the remaining eligible amount for an additional rent increase is {formatter.toAmountDisplay(calc_p1RemainingEligibleAmount)}. The phase 2 calculator will use the corrected amount, not the amount you provided. \r\n
\r\n Warning. Based on the information that you provided, {props?.isTenantRoute ? 'the landlord has' : 'you have'} {formatter.toAmountDisplay(calc_p1UnusedEligibleAmount)} of unused eligible amount in your phase 1 rent increase. This amount cannot be used for future rent increases.\r\n
{props?.isTenantRoute ? 'The landlord has' : 'You have'} no eligible amount remaining for future additional rent increases and can now only apply a standard rent increase to this unit.
\r\n Do you want to adjust your current rent to the the corrected amount above of {formatter.toAmountDisplay(calc_p1MaxAdditionalRentIncrease)}, or continue with the rent amount that you are charging the tenant today of {formatter.toAmountDisplay(phase1RentAmount)}. \r\n Important: If you continue with an amount that is not determined to be correct, a warning will be included in your generated rent increase notice to inform the tenant of the discrepancy.\r\n
\r\n \r\n \r\n Applied Rule: The second additional rent increase (phase 2) can only be imposed at least 12 months after the effective date of the first additional rent increase (phase 1).\r\n The earliest effective date allowed for the phase 2 rent increase is {formatter.toDateDisplay(calc_p2EarliestRentIncreaseDate, { fullMonth: true })}.\r\n \r\n
\r\n \r\n \r\n Applied Rule: The second additional rent increase (phase 2) can only be imposed at least 12 months after the effective date of the most recent rent increase, and a notice of rent increase must be served at least three full months before the effective date of the rent increase.\r\n Based on today's date and the information you provided, the earliest allowed effective date for the phase 2 rent increase would be {formatter.toDateDisplay(calc_p2MinRentIncreaseDate, { fullMonth: true })}. {/* calc_p2EarliestServiceDate */}\r\n \r\n
\r\n
\r\n \r\n \r\n Applied Rule: The phase 2 additional rent increase must be imposed within 12 months of the earliest allowed date after the phase 1 rent increase.\r\n The last allowed date for this rent increase to be effective is {formatter.toDateDisplay(calc_p2MaxRentIncreaseDate, { fullMonth: true })}. If you do not impose the second additional rent increase by this date, you will not be allowed to include the eligible amount for phase 2 in any future rent increases.\r\n \r\n
\r\n Annual Allowable Rent Increase not known. This rent increase cannot be calculated until the annual allowable rent increase is known for the year 2024. \r\n This tool is updated each September with the annual allowable rate for the following year. \r\n Based on the date you have selected for this rent increase, you can return to this site and calculate this rent increase on {formatter.toDateDisplay(calc_nextCPIUpdateDate, { fullMonth: true })}.\r\n
\r\n \r\n \r\n Applied Rule: The amount that can be applied to an additional rent increase in a year is either 3% of the rent amount after the annual allowable rent increase has been added, or the remaining eligible amount for the unit, whichever is less.\r\n The maximum rent increase amount for the phase 2 additional rent increase is {formatter.toAmountDisplay(calc_p2AppliedEligibleAmount)}.\r\n \r\n
\r\n Warning. The rent amount that you selected for the phase 2 additional rent increase does not use the full eligible amount available. Based on the rent amount entered of \r\n {formatter.toAmountDisplay(phase2RentAmount)}, you will lose {formatter.toAmountDisplay(calc_p2UnusedEligibleAmount)} of eligible amount which cannot be used in a future rent increase.\r\n
\r\n \r\n \r\n Applied Rule: Any unused eligible amounts associated to a rental unit can be applied to a future rent increase.\r\n The remaining eligible amount for a future rent increase is {formatter.toAmountDisplay(calc_p2RemainingEligibleAmount)}.\r\n \r\n
\r\n \r\n \r\n Applied Rule:\r\n \r\n If the phase 2 additional rent increase is not imposed between {formatter.toDateDisplay(calc_p2MinRentIncreaseDate, { fullMonth: true })}, and {formatter.toDateDisplay(calc_p2MaxRentIncreaseDate, { fullMonth: true })},\r\n the eligible amount for phase 2 is lost and cannot be used in a future rent increase. The eligible amount remaining for the phase 3 additional rent increase would be {formatter.toAmountDisplay(calc_p2RemainingEligibleAmount)}.\r\n \r\n \r\n
\r\n Warning. Based on the additional rent increase regulations, the rent increase that was effective on {formatter.toDateDisplay(rentIncreaseDateAfterPhase2, { fullMonth: true })}, is considered the phase 2 additional rent increase. \r\n If the phase 2 eligible amount of {formatter.toAmountDisplay(calc_p2AppliedEligibleAmount)} was not included in the rent increase on {formatter.toDateDisplay(rentIncreaseDateAfterPhase2, { fullMonth: true })}, then it is considered a lost amount and cannot be used for a future rent increase.\r\n
\r\n Warning. Based on the information that you provided. the last allowed date for the second additional rent increase (phase 2) was {formatter.toDateDisplay(calc_p2RentIncreaseDate, { fullMonth: true })}. \r\n As this date has passed, you have lost the right to impose the phase 2 additional rent increase and {formatter.toAmountDisplay(calc_p2AppliedEligibleAmount)} of eligible amount. \r\n If you have any eligible amount remaining for a third rent increase (phase 3), you must generate a notice insert for this lost phase 2 rent increase and include it with your phase 3 additional rent increase.\r\n
\r\n Warning. Based on the rules and the information provided, you have {formatter.toAmountDisplay(calc_p2RemainingEligibleAmount)} eligible amount remaining for future rent increases. Only standard rent increases will be allowed for this rental unit going forward.\r\n
\r\n Process Completed. {calc_isGeneratedNoticeAvailable ? 'If the above is information is correct you can use it to generate a rent increase notice insert.' : null}\r\n
\r\n \r\n The information you entered in the previous step will be used for this process. If any of these values are not correct, you can go \r\n goBackToPreviousStep()}> back to the previous step and modify these values.\r\n \r\n
\r\n )\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n cpiConfig: state.config.cpiConfig,\r\n validationData: state.validations.data,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(\r\n {\r\n navigate: NavigateActions.navigate,\r\n },\r\n dispatch\r\n );\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(RentIncreaseCalculator);","import React, {Component} from 'react';\r\nimport { Route, Switch } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport { ConfigActions } from './redux/actions';\r\nimport \"isomorphic-fetch\";\r\nimport NoticeGenerator from './components/NoticeGenerator';\r\nimport Header from './components/Header';\r\nimport ROUTES from './constants/RouteConstants';\r\nimport { WebToolOne } from './components/WebtoolOne';\r\nimport Error404 from './components/ErrorBoundary/ErrorPages/Error404';\r\nimport { Validator } from './components/Validator';\r\nimport { RentIncreaseCalculator } from './components/RentIncreaseCalculator';\r\n\r\nclass App extends Component {\r\n constructor(props) {\r\n super(props);\r\n fetch(this.getJSONFilePath()).then((res) => {\r\n if(!res.ok) throw new Error(\"HTTP error \" + res.status);\r\n return res.json();\r\n }).then((json) => {\r\n this.props.addCpiConfig(json);\r\n }).catch((err) => {\r\n throw new Error(\"Incorrect CPI config\" + err);\r\n });\r\n }\r\n\r\n getJSONFilePath() {\r\n let filePath = `${process.env.PUBLIC_URL}/cpi_config.json`;\r\n // Append a timestamp query param to json files so they are not cached, by default\r\n filePath += `${filePath.indexOf('?') === -1 ? '?' : '&'}t=${(new Date()).getTime()}`;\r\n return filePath;\r\n }\r\n \r\n render() {\r\n return (\r\n <>\r\n \r\n \r\n {/*default route handler*/}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* Catch all \"*??\" */}\r\n \r\n >\r\n );\r\n }\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\nbindActionCreators(\r\n {\r\n addCpiConfig: ConfigActions.addCpiConfig\r\n },\r\n dispatch\r\n)\r\n\r\nexport default connect(null, mapDispatchToProps)(App);\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' },\r\n })\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready\r\n .then(registration => {\r\n registration.unregister();\r\n })\r\n .catch(error => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\nimport { createRoot } from \"react-dom/client\";\r\nimport { ConnectedRouter } from 'connected-react-router';\r\nimport { Provider } from 'react-redux';\r\n\r\nimport configureStore, { history } from './redux/configureStore';\r\nimport ErrorBoundary from './components/ErrorBoundary';\r\nimport App from './App';\r\nimport * as serviceWorker from './serviceWorker';\r\n\r\nconst store = configureStore();\r\nconst rootElement = document.getElementById(\"root\");\r\nconst root = createRoot(rootElement);\r\nroot.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n"],"names":["GetIntrinsic","require","callBind","$indexOf","module","exports","name","allowMissing","intrinsic","bind","$apply","$call","$reflectApply","call","$gOPD","$defineProperty","$max","value","e","originalFunction","func","arguments","configurable","length","applyBind","apply","hasOwn","hasOwnProperty","classNames","classes","i","arg","argType","push","Array","isArray","inner","toString","Object","prototype","includes","key","join","default","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","token","count","options","result","tokenValue","replace","addSuffix","comparison","buildFormatLongFn","args","undefined","width","String","defaultWidth","formats","date","full","long","medium","short","time","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","_date","_baseDate","_options","buildLocalizeFn","dirtyIndex","valuesArray","context","formattingValues","defaultFormattingWidth","_defaultWidth","_width","values","argumentCallback","ordinalNumber","dirtyNumber","number","Number","rem100","era","narrow","abbreviated","wide","quarter","month","day","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","buildMatchFn","string","matchPattern","matchPatterns","defaultMatchWidth","matchResult","match","matchedString","parsePatterns","defaultParseWidth","array","predicate","findIndex","pattern","test","object","findKey","valueCallback","rest","slice","parsePattern","parseInt","parseResult","any","index","code","formatDistance","formatLong","formatRelative","localize","weekStartsOn","firstWeekContainsDate","defaultOptions","getDefaultOptions","dateLongFormatter","timeLongFormatter","longFormatters","p","P","dateTimeFormat","datePattern","timePattern","getTimezoneOffsetInMilliseconds","utcDate","Date","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","setUTCFullYear","getTime","getUTCISOWeekYear","dirtyDate","requiredArgs","toDate","year","getUTCFullYear","fourthOfJanuaryOfNextYear","setUTCHours","startOfNextYear","startOfUTCISOWeek","fourthOfJanuaryOfThisYear","startOfThisYear","MILLISECONDS_IN_WEEK","getUTCISOWeek","diff","fourthOfJanuary","startOfUTCISOWeekYear","Math","round","getUTCWeekYear","_ref","_ref2","_ref3","_options$firstWeekCon","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","toInteger","locale","RangeError","firstWeekOfNextYear","startOfUTCWeek","firstWeekOfThisYear","getUTCWeek","firstWeek","startOfUTCWeekYear","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","indexOf","isProtectedWeekYearToken","throwProtectedError","format","input","concat","required","TypeError","getUTCDay","setUTCDate","getUTCDate","_options$weekStartsOn","NaN","isNaN","ceil","floor","addDays","dirtyAmount","amount","setDate","MILLISECONDS_IN_HOUR","addHours","addMilliseconds","timestamp","MILLISECONDS_IN_MINUTE","addMinutes","addMonths","dayOfMonth","endOfDesiredMonth","setMonth","setFullYear","addQuarters","months","addWeeks","days","addYears","pow","millisecondsInMinute","millisecondsInHour","millisecondsInSecond","MILLISECONDS_IN_DAY","differenceInCalendarDays","dirtyDateLeft","dirtyDateRight","startOfDayLeft","startOfDay","startOfDayRight","timestampLeft","timestampRight","differenceInCalendarMonths","dateLeft","dateRight","differenceInCalendarWeeks","startOfWeekLeft","startOfWeek","startOfWeekRight","differenceInCalendarYears","endOfDay","setHours","endOfMonth","endOfWeek","getDay","endOfYear","addLeadingZeros","targetLength","sign","output","abs","y","signedYear","M","getUTCMonth","d","a","dayPeriodEnumValue","getUTCHours","toUpperCase","h","H","m","getUTCMinutes","s","getUTCSeconds","S","numberOfDigits","milliseconds","getUTCMilliseconds","dayPeriodEnum","formatters","G","unit","lightFormatters","Y","signedWeekYear","weekYear","R","u","Q","q","L","w","week","I","isoWeek","D","dayOfYear","setUTCMonth","difference","getUTCDayOfYear","E","dayOfWeek","localDayOfWeek","c","isoDayOfWeek","toLowerCase","b","hours","B","K","k","X","_localize","timezoneOffset","_originalDate","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","x","O","formatTimezoneShort","z","t","originalDate","T","offset","dirtyDelimiter","absOffset","minutes","delimiter","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","_ref4","_options$locale2","_options$locale2$opti","_ref5","_ref6","_ref7","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","defaultLocale","isValid","subMilliseconds","formatterOptions","map","substring","firstCharacter","longFormatter","matched","cleanEscapedString","formatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","startOfISOWeek","startOfISOWeekYear","getISOWeekYear","getISOWeek","getQuarter","getYear","isAfter","dirtyDateToCompare","dateToCompare","isBefore","_typeof","obj","Symbol","iterator","constructor","isDate","isEqual","dirtyLeftDate","dirtyRightDate","isSameDay","dateLeftStartOfDay","dateRightStartOfDay","isSameMonth","isSameQuarter","dateLeftStartOfQuarter","startOfQuarter","dateRightStartOfQuarter","isSameYear","isWithinInterval","interval","startTime","start","endTime","end","max","dirtyDatesArray","datesArray","forEach","currentDate","min","parseISO","argument","_options$additionalDi","additionalDigits","dateStrings","dateString","timeString","split","patterns","dateTimeDelimiter","timeZoneDelimiter","substr","timezone","exec","splitDateString","parseYearResult","regex","RegExp","captures","restDateString","century","parseYear","dateRegex","isWeekDate","parseDateUnit","_year","validateWeekDate","isoWeekYear","fourthOfJanuaryDay","dayOfISOWeekYear","daysInMonths","isLeapYearIndex","validateDate","validateDayOfYearDate","parseDate","timeRegex","parseTimeUnit","seconds","validateTime","parseTime","timezoneString","timezoneRegex","_hours","validateTimezone","parseTimezone","parseFloat","assign","target","property","_inherits","subClass","superClass","create","writable","_setPrototypeOf","o","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","this","self","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","getPrototypeOf","_classCallCheck","instance","Constructor","_defineProperties","props","descriptor","enumerable","defineProperty","_createClass","protoProps","staticProps","_defineProperty","Setter","_utcDate","ValueSetter","_Setter","_super","validateValue","setValue","priority","subPriority","_this","flags","DateToSystemTimezoneSetter","_Setter2","_super2","_this2","_len","_key","timestampIsSet","convertedDate","Parser","parse","setter","validate","set","_value","EraParser","_Parser","numericPatterns","hour23h","hour24h","hour11h","hour12h","minute","second","singleDigit","twoDigits","threeDigits","fourDigits","anyDigitsSigned","singleDigitSigned","twoDigitsSigned","threeDigitsSigned","fourDigitsSigned","timezonePatterns","mapValue","parseFnResult","mapFn","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","n","parseNDigitsSigned","dayPeriodEnumToHours","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","YearParser","isTwoDigitYear","normalizedTwoDigitYear","LocalWeekYearParser","ISOWeekYearParser","_flags","firstWeekOfYear","ExtendedYearParser","QuarterParser","StandAloneQuarterParser","MonthParser","StandAloneMonthParser","LocalWeekParser","dirtyWeek","setUTCWeek","ISOWeekParser","dirtyISOWeek","setUTCISOWeek","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","DateParser","isLeapYear","DayOfYearParser","setUTCDay","dirtyDay","DayParser","LocalDayParser","wholeWeekDays","StandAloneLocalDayParser","ISODayParser","setUTCISODay","AMPMParser","AMPMMidnightParser","DayPeriodParser","Hour1to12Parser","isPM","Hour0to23Parser","Hour0To11Parser","Hour1To24Parser","MinuteParser","setUTCMinutes","SecondParser","setUTCSeconds","FractionOfSecondParser","setUTCMilliseconds","ISOTimezoneWithZParser","ISOTimezoneParser","TimestampSecondsParser","TimestampMillisecondsParser","parsers","_createForOfIteratorHelper","allowArrayLike","it","minLen","_arrayLikeToArray","from","_unsupportedIterableToArray","F","done","_e","f","err","normalCompletion","didErr","step","next","_e2","return","arr","len","arr2","notWhitespaceRegExp","dirtyDateString","dirtyFormatString","dirtyReferenceDate","formatString","_step","subFnOptions","setters","tokens","usedTokens","_iterator","_loop","parser","incompatibleTokens","incompatibleToken","find","usedToken","fullToken","run","v","_ret","uniquePrioritySetters","sort","filter","setterArray","_step2","_iterator2","dirtyHours","setMinutes","dirtyMinutes","dirtyMonth","dateWithDesiredMonth","daysInMonth","monthIndex","lastDayOfMonth","getDaysInMonth","setQuarter","dirtyQuarter","setSeconds","dirtySeconds","setYear","dirtyYear","setMilliseconds","startOfMonth","currentMonth","startOfYear","cleanDate","subDays","subHours","subMinutes","subMonths","subQuarters","subWeeks","subYears","argStr","console","warn","Error","stack","keys","hasSymbols","toStr","origDefineProperty","hasPropertyDescriptors","supportsDescriptors","fn","defineProperties","predicates","getOwnPropertySymbols","isCallable","list","thisArg","receiver","forEachArray","charAt","forEachString","forEachObject","that","bound","boundLength","boundArgs","Function","Empty","implementation","$SyntaxError","SyntaxError","$Function","$TypeError","getEvalledConstructor","expressionSyntax","getOwnPropertyDescriptor","throwTypeError","ThrowTypeError","calleeThrows","get","gOPDthrows","getProto","needsEval","TypedArray","Uint8Array","INTRINSICS","AggregateError","ArrayBuffer","Atomics","BigInt","BigInt64Array","BigUint64Array","DataView","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","eval","EvalError","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","isFinite","JSON","Map","Promise","Set","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","Uint32Array","URIError","WeakMap","WeakRef","WeakSet","error","errorProto","doEval","gen","LEGACY_ALIASES","$concat","$spliceApply","splice","$replace","$strSlice","$exec","rePropName","reEscapeChar","getBaseIntrinsic","alias","intrinsicName","parts","first","last","quote","subString","stringToPath","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","part","desc","hasArrayLengthDefineBug","origSymbol","hasSymbolSham","sym","symObj","getOwnPropertyNames","syms","propertyIsEnumerable","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","type","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","for","g","l","r","$$typeof","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","stringifiable","isProduction","process","invariant","condition","message","source","getAllKeys","copy","Context","commands","defaultCommands","update","extend","isEquals","newContext","directive","$spec","spec","nextObject","objectWasNextObject","nextValueForKey","nextObjectValue","$push","invariantPushAndUnshift","$unshift","$splice","originalObject","invariantSplice","invariantSplices","$set","_nextObject","invariantSet","$toggle","targets","invariantSpecArray","nextObjectCopy","$unset","_spec","$add","invariantMapOrSet","_a","has","add","$remove","delete","$merge","specValue","original","defaultContext","command","typeOfTarget","argIndex","framesToPop","badArrayLike","isCallableMarker","fnToStr","reflectApply","_","constructorRegex","isES6ClassFn","fnStr","tryFunctionObject","hasToStringTag","toStringTag","isIE68","isDDA","document","all","str","strClass","fetch","HASH_UNDEFINED","UNORDERED_COMPARE_FLAG","PARTIAL_COMPARE_FLAG","MAX_SAFE_INTEGER","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","global","freeSelf","root","freeExports","nodeType","freeModule","freeProcess","nodeUtil","binding","nodeIsTypedArray","isTypedArray","arraySome","isHostObject","mapToArray","size","setToArray","transform","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","uid","IE_PROTO","funcToString","objectToString","reIsNative","nativeKeys","getNative","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","Hash","entries","clear","entry","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isObjectLike","isArrayLike","isArrayLikeObject","isArguments","iteratee","baseTimes","skipIndexes","isIndex","assocIndexOf","eq","baseIsEqual","customizer","bitmask","isObject","equalFunc","objIsArr","othIsArr","objTag","othTag","getTag","objIsObj","othIsObj","isSameTag","equalArrays","tag","byteLength","byteOffset","buffer","convert","isPartial","stacked","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","othProps","othLength","skipCtor","objValue","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsNative","isMasked","isFunction","baseKeys","Ctor","proto","isPrototype","arrLength","seen","arrValue","othIndex","getMapData","data","isKeyable","getValue","pop","cache","pairs","LARGE_ARRAY_SIZE","resolve","ctorString","isLength","baseUnary","hookCallback","some","hooks","setHookCallback","callback","hasOwnProp","isObjectEmpty","isUndefined","isNumber","res","arrLen","createUTC","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","_isValid","parsedParts","isNowValid","_d","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","fun","momentProperties","updateInProgress","copyConfig","to","prop","val","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","argLen","deprecations","deprecateSimple","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","lastDay","sameElse","calendar","mom","now","_calendar","zeroFill","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","ordinal","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","defaultLongDateFormat","LTS","LT","LL","LLL","LLLL","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","ss","mm","hh","dd","ww","MM","yy","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","aliases","addUnitAlias","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","getPrioritizedUnits","unitsObj","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","stringGet","stringSet","prioritized","prioritizedLen","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","p1","p2","p3","p4","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","mod","modMonth","monthsShort","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","getSetMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","ms","createUTCDate","firstWeekOffset","dow","doy","fwd","dayOfYearFromWeeks","weekday","resYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","kInput","_isPm","_meridiem","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","minl","normalizeLocale","chooseLocale","names","j","loadLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","getLocale","defineLocale","abbr","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","configFromString","createFromInputFallback","defaults","currentDateArray","nowValue","_useUTC","configFromArray","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","temp","weekdayOverflow","curWeek","GG","W","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","hour","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","prototypeMin","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","weeks","_milliseconds","_days","_data","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","separator","utcOffset","offsetFromString","chunkOffset","matcher","matches","cloneWithOffset","model","clone","setTime","local","getDateOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","createAdder","direction","period","tmp","isAdding","invalid","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","properties","propertyLen","arrayTest","dataTypeTest","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","inspect","prefix","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","toObject","toJSON","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","get$1","field","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","factory","keysShim","isArgs","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","ctor","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","window","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","origKeys","originalKeys","shim","keysWorksWithArguments","isarray","pathToRegexp","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","path","defaultDelimiter","escaped","capture","group","modifier","asterisk","partial","repeat","optional","escapeGroup","escapeString","encodeURIComponentPretty","charCodeAt","opts","encode","pretty","segment","stringify","attachKeys","re","sensitive","route","endsWithDelimiter","groups","regexpToRegexp","arrayToRegexp","stringToRegexp","validators","_createChainableTypeChecker2","_len2","_key2","validator","_createChainableTypeChecker","__esModule","checkType","isRequired","propName","componentName","location","propFullName","componentNameSafe","propFullNameSafe","chainedCheckType","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","secret","getShim","ReactPropTypes","bigint","bool","symbol","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","C","N","V","U","$","J","Z","ee","te","ae","ne","oe","se","ie","pe","le","de","ce","ue","fe","he","me","ye","ve","De","we","ge","ke","be","Se","Ce","Me","Pe","Ee","Ne","xe","Oe","Ye","Ie","Te","Le","Re","Fe","Ae","qe","Ke","We","Be","Qe","He","je","Ve","Ue","ze","$e","Ge","Je","Xe","Ze","et","tt","rt","at","nt","ot","st","pt","lt","dt","ct","ut","ft","ht","mt","yt","vt","Dt","wt","gt","kt","Mt","getOwnPropertyDescriptors","bt","St","Ct","Rt","_t","Pt","Et","xt","Nt","Ot","Yt","It","Tt","Lt","toPrimitive","Ft","At","qt","Kt","Wt","Bt","Ht","Qt","lr","pr","jt","awareOfUnicodeTokens","Vt","Ut","zt","$t","Gt","Jt","Xt","Zt","er","tr","rr","ar","nr","or","sr","ir","globalThis","__localeId__","__localeData__","dr","cr","ur","fr","minDate","maxDate","excludeDates","excludeDateIntervals","includeDates","includeDateIntervals","filterDate","gr","hr","mr","yr","vr","Dr","wr","kr","br","excludeTimes","includeTimes","filterTime","Sr","minTime","maxTime","Cr","every","_r","Mr","Pr","Er","Nr","xr","Or","Yr","Ir","startPeriod","endPeriod","Tr","Lr","state","yearsList","createElement","className","onClick","onChange","unshift","incrementYears","decrementYears","onCancel","setState","shiftYears","yearDropdownItemNumber","scrollableYearDropdown","dropdownRef","createRef","current","children","ariaSelected","scrollTop","offsetTop","clientHeight","scrollHeight","ref","renderOptions","Component","Rr","Fr","dropdownVisible","onSelectChange","renderSelectOptions","style","visibility","toggleDropdown","renderReadView","renderDropdown","adjustDateOnChange","handleYearChange","onSelect","setOpen","dropdownMode","renderScrollMode","renderSelectMode","Ar","monthNames","isSelectedMonth","qr","Kr","useShortMonthInDropdown","Wr","Br","monthYearsList","scrollableMonthYearDropdown","Qr","Hr","jr","isDisabled","onMouseEnter","preventDefault","handleOnKeyDown","disabledKeyboardNavigation","selected","preSelection","highlightDates","startDate","endDate","selectsStart","selectsEnd","selectsRange","selectsDisabledDaysInRange","selectingDate","isInSelectingRange","dayClassName","isExcluded","isSelected","isKeyboardSelected","isRangeStart","isRangeEnd","isInRange","isSelectingRangeStart","isSelectingRangeEnd","isCurrentDay","isWeekend","isAfterMonth","isBeforeMonth","getHighLightedClass","ariaLabelPrefixWhenEnabled","ariaLabelPrefixWhenDisabled","getTabIndex","isInputFocused","activeElement","body","inline","shouldFocusDayInline","containerRef","contains","classList","dayEl","focus","preventScroll","monthShowsDuplicateDaysEnd","monthShowsDuplicateDaysStart","renderDayContents","getClassNames","onKeyDown","handleClick","handleMouseEnter","tabIndex","getAriaLabel","role","handleFocusDay","Vr","weekNumber","ariaLabelPrefix","Ur","onDayClick","onDayMouseEnter","onWeekSelect","shouldCloseOnSelect","formatWeekNumber","calendarStartDay","showWeekNumber","handleWeekClick","chooseDayAriaLabelPrefix","disabledDayAriaLabelPrefix","handleDayClick","handleDayMouseEnter","renderDays","zr","orderInDisplay","onMouseLeave","fixedHeight","weekAriaLabelPrefix","showWeekNumbers","isWeekInMonth","peekNextMonth","setPreSelection","MONTH_REFS","onMonthClick","handleMonthNavigation","QUARTER_REFS","onQuarterClick","handleQuarterNavigation","monthClassName","isRangeStartMonth","isRangeEndMonth","isCurrentMonth","isSelectedQuarter","isRangeStartQuarter","isRangeEndQuarter","showFullMonthYearPicker","showTwoColumnMonthYearPicker","showFourColumnMonthYearPicker","onMonthKeyDown","getMonthClassNames","onQuarterKeyDown","getQuarterClassNames","getQuarterTabIndex","isCurrentQuarter","showMonthYearPicker","showQuarterYearPicker","handleMouseLeave","renderMonths","renderQuarters","renderWeeks","$r","height","timeClassName","isSelectedTime","injectTimes","intervals","openToDate","liClasses","centerLi","calcCenterPosition","monthRef","header","todayButton","showTimeSelectOnly","timeCaption","renderTimes","onTimeChange","Gr","yearItemNumber","YEAR_REFS","requestAnimationFrame","updateFocusOnPaginate","handleYearClick","onYearClick","handleYearNavigation","isCurrentYear","onYearKeyDown","getYearTabIndex","getYearClassNames","Jr","customTimeInput","cloneElement","placeholder","timeInputLabel","renderTimeInput","Xr","showPopperArrow","arrowProps","Zr","ea","onClickOutside","onDropdownFocus","handleMonthChange","onMonthMouseLeave","onYearChange","isRenderAriaLiveMessage","onMonthChange","handleMonthYearChange","weekLabel","formatWeekday","weekDayClassName","formatWeekDay","useWeekdaysShort","showYearPicker","renderCustomHeader","forceShowMonthNavigation","showDisabledMonthNavigation","decreaseMonth","decreaseYear","previousMonthButtonLabel","previousYearButtonLabel","previousMonthAriaLabel","previousYearAriaLabel","showTimeSelect","increaseMonth","increaseYear","nextMonthButtonLabel","nextYearButtonLabel","nextMonthAriaLabel","nextYearAriaLabel","showYearDropdown","showMonthDropdown","showMonthYearDropdown","changeYear","changeMonth","changeMonthYear","handleTodayButtonClick","monthDate","renderCurrentMonth","onFocus","handleDropdownFocus","renderMonthDropdown","renderMonthYearDropdown","renderYearDropdown","monthContainer","customHeaderCount","prevMonthButtonDisabled","nextMonthButtonDisabled","prevYearButtonDisabled","nextYearButtonDisabled","renderYearHeader","renderDefaultHeader","showPreviousMonths","monthsShown","monthSelectedIn","renderHeader","monthAriaLabelPrefix","handleOnDayKeyDown","handleMonthMouseLeave","timeIntervals","withPortal","showTimeInput","getDateInView","assignMonthContainer","container","renderAriaLiveRegion","renderPreviousButton","renderNextButton","renderYears","renderTodayButton","renderTimeSection","renderInputTimeSection","renderChildren","ta","el","portalRoot","portalHost","getElementById","portalId","setAttribute","appendChild","removeChild","createPortal","ra","disabled","aa","tabLoopRef","querySelectorAll","getTabChildren","enableTabLoop","handleFocusStart","handleFocusEnd","na","wrapperClassName","hidePopper","popperComponent","popperModifiers","popperPlacement","popperProps","popperOnKeyDown","Popper","modifiers","placement","popperContainer","Manager","Reference","oa","sa","ia","pa","getPreSelection","open","startOpen","preventFocus","focused","preventFocusTimeout","clearTimeout","blur","cancelFocusInput","calcInitialState","lastPreSelectChange","da","setBlur","inputValue","readOnly","preventOpenOnFocus","inputFocusTimeout","setTimeout","setFocus","onBlur","onChangeRaw","isDefaultPrevented","la","strictParsing","setSelected","allowSameDay","focusSelectedMonth","onInputClick","componentNode","querySelector","inputOk","handleSelect","onInputError","onClearClick","closeOnScroll","documentElement","isCalendarOpen","dateFormatCalendar","handleCalendarClickOutside","outsideClickIgnoreClass","handleTimeChange","calendarClassName","calendarContainer","excludeScrollbar","onDayKeyDown","customInput","customInputRef","handleBlur","handleChange","handleFocus","onInputKeyDown","id","form","autoFocus","placeholderText","autoComplete","title","ariaDescribedBy","ariaInvalid","ariaLabelledBy","ariaRequired","isClearable","clearButtonTitle","clearButtonClassName","ariaLabelClose","trim","addEventListener","onScroll","onCalendarOpen","onCalendarClose","clearPreventFocusTimeout","removeEventListener","showIcon","xmlns","viewBox","renderDateInput","renderClearButton","renderCalendar","onPortalKeyDown","renderInputContainer","popperClassName","onPopperKeyDown","CalendarContainer","getDefaultLocale","registerLocale","setDefaultLocale","ca","fa","ha","ja","ka","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","qa","removeAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","prepareStackTrace","Pa","Qa","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","stopTracking","Ua","Wa","checked","Xa","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","fb","defaultSelected","gb","dangerouslySetInnerHTML","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","firstChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","setProperty","tb","menuitem","area","col","embed","img","keygen","link","meta","param","track","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","ed","transition","fd","gd","hd","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","defaultPrevented","returnValue","isPropagationStopped","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","fromCharCode","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","documentMode","color","email","password","range","search","tel","text","url","event","listeners","oninput","detachEvent","attachEvent","nextSibling","compareDocumentPosition","HTMLIFrameElement","contentWindow","href","contentEditable","focusedElem","selectionRange","selectionStart","selectionEnd","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","animationend","animationiteration","animationstart","transitionend","animation","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","listener","of","pf","qf","rf","random","sf","passive","tf","uf","parentWindow","vf","wf","xa","$a","ba","char","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Jf","queueMicrotask","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","deletions","Cg","pendingProps","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","dh","eh","fh","gh","ih","jh","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","_owner","_stringRef","uh","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ji","ki","getSnapshot","li","mi","ni","lastEffect","stores","oi","pi","qi","ri","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","digest","Li","Mi","Ni","Oi","Pi","Qi","Ri","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","tail","tailMode","yj","Ej","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onclick","createElementNS","createTextNode","Hj","Ij","Jj","Kj","Lj","Mj","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","src","Wk","mk","nk","ok","pk","qk","rk","sk","tk","uk","Infinity","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","pendingSuspenseBoundaries","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","supportsFiber","inject","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","hasElementType","hasMap","hasSet","hasArrayBuffer","isView","equal","isNodeFound","ignoreClass","correspondingElement","seed","passiveEventSupport","handlersMap","enabledInstances","touchEvents","IGNORE_CLASS_NAME","getEventHandlerOptions","eventName","handlerOptions","WrappedComponent","_class","_temp","_Component","__outsideClickHandler","__clickOutsideHandlerProp","getInstance","handleClickOutside","__getComponentNode","setClickOutsideRef","enableOnClickOutside","_uid","noop","testPassiveEventSupport","events","eventTypes","evt","clientWidth","host","findHighest","composed","composedPath","disableOnClickOutside","getRef","instanceRef","_proto","_this$props","excluded","sourceKeys","_objectWithoutPropertiesLoose","wrappedRef","getClass","ManagerReferenceNodeContext","React","ManagerReferenceNodeSetterContext","_React$useState","referenceNode","setReferenceNode","hasUnmounted","handleSetReferenceNode","Provider","unwrapArray","safeInvoke","setRef","fromEntries","reduce","acc","useIsomorphicLayoutEffect","getWindow","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","getUAString","uaData","navigator","userAgentData","brands","brand","userAgent","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","offsetHeight","visualViewport","addVisualOffsets","offsetLeft","right","bottom","getWindowScroll","win","pageXOffset","pageYOffset","getNodeName","getDocumentElement","getWindowScrollBarX","getComputedStyle","isScrollParent","_getComputedStyle","overflowX","overflowY","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","isOffsetParentAnElement","offsetParentIsScaled","rect","isElementScaled","scroll","offsets","getNodeScroll","clientLeft","clientTop","getLayoutRect","getParentNode","assignedSlot","getScrollParent","listScrollParents","_element$ownerDocumen","scrollParent","isBody","updatedList","isTableElement","getTrueOffsetParent","position","getOffsetParent","isFirefox","currentNode","css","perspective","contain","willChange","getContainingBlock","auto","basePlacements","clippingParents","viewport","popper","reference","variationPlacements","placements","modifierPhases","visited","requires","requiresIfExists","dep","depModifier","debounce","DEFAULT_OPTIONS","strategy","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","orderedModifiers","modifiersData","elements","attributes","styles","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","contextElement","phase","orderModifiers","merged","existing","mergeByName","enabled","_ref3$options","effect","cleanupFn","noopFn","forceUpdate","_state$elements","rects","reset","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","getBasePlacement","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","commonX","commonY","mainAxis","unsetSides","mapToStyles","_Object$assign2","popperRect","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","dpr","devicePixelRatio","roundOffsetsByDPR","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","popperOffsets","hash","getOppositePlacement","getOppositeVariationPlacement","parent","rootNode","getRootNode","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","html","layoutViewport","getViewportRect","getInnerBoundingClientRect","winScroll","scrollWidth","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","axis","within","mathMax","mathMin","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","referenceRect","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","maxLen","arrowElement","arrow","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","_state$modifiersData$","toPaddingObject","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","center","axisProp","centerOffset","_options$element","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","createPopper","_options$scroll","_options$resize","resize","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","initialStyles","margin","attribute","_skip","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","computeAutoPlacement","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","check","fittingPlacement","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","EMPTY_MODIFIERS","usePopper","referenceElement","popperElement","prevOptions","optionsWithDefaults","updateStateModifier","ReactDOM","popperOptions","newOptions","popperInstanceRef","popperInstance","defaultCreatePopper","NOOP","NOOP_PROMISE","_ref$placement","_ref$strategy","_ref$modifiers","innerRef","setPopperElement","_React$useState2","setArrowElement","_usePopper","childrenProps","hide","refHandler","warning","__self","__source","jsx","jsxs","escape","_status","_result","Children","only","PureComponent","createContext","_currentValue2","_threadCount","Consumer","_defaultValue","_globalName","createFactory","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","compose","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","__REDUX_DEVTOOLS_EXTENSION__","formatProdErrorMessage","$$observable","observable","randomString","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","isPlainObject","createStore","reducer","preloadedState","enhancer","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","getState","subscribe","isSubscribed","replaceReducer","nextReducer","outerSubscribe","observer","observeState","unsubscribe","combineReducers","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","nextState","previousStateForKey","nextStateForKey","bindActionCreator","actionCreator","bindActionCreators","actionCreators","boundActionCreators","funcs","applyMiddleware","middlewares","store","_dispatch","middlewareAPI","chain","middleware","_objectSpread","sortIndex","performance","setImmediate","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","RequireObjectCoercible","ToString","callBound","mvsIsWS","leftWhitespace","rightWhitespace","define","getPolyfill","boundMethod","mongolianVowelSeparator","polyfill","support","searchParams","iterable","blob","Blob","formData","arrayBuffer","viewClasses","isArrayBufferView","normalizeName","normalizeValue","iteratorFor","items","Headers","headers","append","consumed","bodyUsed","reject","fileReaderReady","reader","onload","onerror","readBlobAsArrayBuffer","FileReader","promise","readAsArrayBuffer","bufferClone","buf","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","URLSearchParams","_bodyArrayBuffer","rejected","isConsumed","readAsText","readBlobAsText","chars","readArrayBufferAsText","decode","json","oldValue","methods","Request","credentials","method","signal","upcased","normalizeMethod","referrer","reParamSearch","bytes","parseHeaders","rawHeaders","line","Response","bodyInit","status","statusText","response","redirectStatuses","redirect","DOMException","init","request","aborted","xhr","XMLHttpRequest","abortXhr","abort","getAllResponseHeaders","responseURL","responseText","ontimeout","onabort","fixUrl","withCredentials","responseType","setRequestHeader","onreadystatechange","readyState","send","$String","optMessage","ownKeys","enumerableOnly","symbols","_objectSpread2","_toPropertyKey","hint","prim","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","definition","nmd","paths","ReactReduxContext","batch","getBatch","nullListeners","notify","createSubscription","parentSub","handleChangeWrapper","subscription","onStateChange","trySubscribe","addNestedSub","prev","createListenerCollection","notifyNestedSubs","tryUnsubscribe","getListeners","contextValue","previousState","_excluded","_excluded2","EMPTY_ARRAY","NO_SUBSCRIPTION_ARRAY","storeStateUpdatesReducer","updateCount","useIsomorphicLayoutEffectWithArgs","effectFunc","effectArgs","captureWrapperProps","lastWrapperProps","lastChildProps","renderIsScheduled","wrapperProps","actualChildProps","childPropsFromStoreUpdate","subscribeUpdates","shouldHandleStateChanges","childPropsSelector","forceComponentUpdateDispatch","didUnsubscribe","lastThrownError","checkForUpdates","newChildProps","latestStoreState","initStateUpdates","connectAdvanced","selectorFactory","_ref2$getDisplayName","getDisplayName","_ref2$methodName","methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","_ref2$storeKey","storeKey","_ref2$forwardRef","withRef","_ref2$context","connectOptions","wrappedComponentName","selectorFactoryOptions","_extends","pure","usePureOnlyMemo","ConnectFunction","_useMemo","reactReduxForwardedRef","propsContext","ContextToUse","didStoreComeFromProps","createChildSelector","_useMemo2","overriddenContextValue","_useReducer","previousStateUpdateResult","renderedWrappedComponent","Connect","forwarded","hoistStatics","shallowEqual","objA","objB","keysA","keysB","wrapMapToPropsConstant","getConstant","constant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","proxy","stateOrDispatch","ownProps","mapDispatchToProps","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergeProps","mergedProps","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","handleSubsequentCalls","nextOwnProps","propsChanged","stateChanged","nextStateProps","statePropsChanged","handleNewState","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","factories","strictEqual","createConnect","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","defaultMapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","defaultMapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","defaultMergePropsFactories","_ref$selectorFactory","defaultSelectorFactory","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","newBatch","isAbsolute","pathname","spliceOne","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","up","provided","addLeadingSlash","stripLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","createLocation","currentLocation","hashIndex","searchIndex","parsePath","resolvePathname","createTransitionManager","prompt","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","isActive","notifyListeners","canUseDOM","getConfirmation","confirm","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","clamp","lowerBound","upperBound","MAX_SIGNED_31_BIT_INT","commonjsGlobal","calculateChangedBits","contextProp","getUniqueId","_React$Component","emitter","handlers","on","handler","off","newValue","changedBits","createEventEmitter","nextProps","_Provider$childContex","_React$Component2","observedBits","onUpdate","_Consumer$contextType","createNamedContext","historyContext","Router","history","_isMounted","_pendingLocation","staticContext","unlisten","listen","computeRootMatch","params","isExact","cache$1","cacheLimit$1","cacheCount$1","matchPath","_options$exact","_options$strict","_options$sensitive","cacheKey","pathCache","regexp","compilePath$1","_compilePath","Route","context$1","computedMatch","isEmptyChildren","basename","createURL","staticHandler","Switch","LOCATION_CHANGE","CALL_HISTORY_METHOD","updateLocation","structure","getIn","toJS","getRouter","router","getLocation","getAction","getSearch","getHash","createMatchSelector","lastPathname","lastMatch","createSelectors","ConnectedRouter","_PureComponent","onLocationChanged","stateCompareFunction","inTimeTravelling","isTimeTravelDebuggingAllowed","noTimeTravelDebugging","_getLocation","pathnameInStore","searchInStore","hashInStore","stateInStore","_history$location","pathnameInHistory","searchInHistory","hashInHistory","stateInHistory","isEqualWith","handleLocationChange","isFirstRendering","noInitialPop","omitRouter","ConnectedRouterWithContext","connect","_onLocationChanged","_slicedToArray","_arrayWithHoles","_arr","_n","_s","_iterableToArrayLimit","_nonIterableRest","injectQuery","query","searchQuery","currentQuery","_currentQuery$split2","fromJS","merge","initialRouterState","createConnectedRouter","plainStructure","connectRouter","createConnectRouter","_createSelectors","createThunkMiddleware","extraArgument","thunk","withExtraArgument","_toConsumableArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","_action$payload","eligibleAmountDivider","APPEND_IMPROVEMENT","UPDATE_IMPROVEMENT","DELETE_IMPROVEMENT","SET_IMPROVEMENT","UPDATE_STEP","RESET_IMPROVEMENTS","CONTINUE_CLICKED","SET_VALIDATION_DATA","ADD_CPI_CONFIG","maxTitleLength","maxAddressLength","maxCity","maxPostalCode","maxDollarLength","VALIDATION_PHASE_ONE","russianPluralGroups","lastTwo","pluralTypes","arabic","bosnian_serbian","chinese","croatian","french","german","russian","lithuanian","czech","polish","icelandic","slovenian","pluralTypeToLanguages","pluralTypeName","langToPluralType","mapping","langs","langToTypeMap","en","dollarRegex","dollarBillsYall","defaultTokenRegex","transformPhrase","phrase","substitutions","tokenRegex","interpolationRegex","smart_count","texts","pluralTypeIndex","expression","Polyglot","phrases","currentLocale","onMissingKey","constructTokenRegex","interpolation","newLocale","morePhrases","prefixedKey","unset","newPhrases","polyglotInstance","headerText","subHeaderTextExplorer","subHeaderTextNoticeGenerator","subHeaderLandlordValidator","subHeaderTenantValidator","subHeaderRentIncreaseCalculator","bodyHeader","disclaimer","branch","noticeGenerator","sectionOne","description","descriptionWarning","landlordDescription","tenantDescription","step1","subText","descriptionHTML","improvements","cost","eligibleAmount","addImprovement","step2","description1","website","maxAllowedUrl","improvementCostSingle","improvementCostMulti","additionalInfo","urlText","unitRent","unitRentEntered","cpiValue","improvementSelect","editImprovements","increaseBreakdown","yearOne","yearTwo","yearThree","increaseAmount","increaseAmountFutureYears","rentWithIncrease","additionalIncrease","rentWithMaxIncrease","remainingAmount1","remainingAmount2","remainingAmount3","cpiRatesUrl","print","errors","submit","rent","improvement","increaseApplied","increaseDate","currentRent","nextIncreaseDate","increaseDateAlert","increaseDateAlertText","increaseAmountAlert","increaseAmountAlertText","defaultState","calculatedAmount","submitDisabled","polyglot","currentStep","continueClicked","cpiConfig","validationData","ImprovementReducer","validations","ValidationReducer","ConfigReducer","globalHistory","_props","_props$getUserConfirm","_props$hashType","hashType","_HashPathCoders$hashT","getDOMLocation","transitionManager","forceNextPop","ignorePath","handleHashChange","encodedPath","prevLocation","fromLocation","toLocation","toIndex","allPaths","lastIndexOf","fromIndex","delta","go","revertPop","handlePop","initialLocation","listenerCount","checkDOMListeners","isBlocked","createHref","baseTag","getAttribute","pushHashPath","prevIndex","nextPaths","goBack","goForward","block","unblock","createHashHistory","toPropertyKey","_jsx","border","cellPadding","cellSpacing","_jsxs","rowSpan","alt","align","fontSize","colSpan","ErrorBoundary","hasError","Error500","ImprovementPrivateActions","ImprovementActions","newImprovement","setImprovements","updateObject","updateIndex","updatedImprovements","deletedImprovements","NavigateActions","ConfigActions","ValidationActions","ThemeContext","useBootstrapPrefix","defaultPrefix","prefixes","isTrivialHref","SafeAnchor","_ref$as","createChainedFunction","Button","bsPrefix","variant","active","toAmountDisplay","noCents","commaAmount","toFixedNumber","num","digits","toDateDisplay","noDay","fullMonth","momentDate","moment","rentIncreaseAmount","cpiPercent","maxAdditionalIncrease","rentWithAllIncreases","remainingAmount","getCpiForYear","yearly_cpis","minLengthValidator","minLength","minValueValidator","minValue","maxValueValidator","maxValue","postalCodeValidator","minDateValidator","maxDateValidator","requiredValidator","validationObject","_Object$keys","validation","objKey","validationRules","rule","errorMsg","getElementsByClassName","innerText","scrollIntoView","behavior","rHyphen","pascalCase","chr","createWithBsPrefix","_ref$displayName","BsComponent","_ref2$as","Tag","resolvedPrefix","InputGroupAppend","InputGroupPrepend","InputGroupText","InputGroup","hasValidation","Text","Radio","Checkbox","Append","Prepend","tooltip","Feedback","_ref$type","_ref$tooltip","controlId","FormCheckInput","bsCustomPrefix","_ref$isValid","_ref$isInvalid","isInvalid","isStatic","_useContext","FormContext","custom","FormCheckLabel","htmlFor","FormCheck","_ref$inline","_ref$disabled","_ref$feedbackTooltip","feedbackTooltip","feedback","_ref$title","label","propCustom","innerFormContext","hasLabel","Input","Label","FormFileInput","FormFileLabel","FormFile","dataBrowse","_ref$inputAs","inputAs","FormControl","_classes","htmlSize","plaintext","_classes2","_classes3","_classes4","_classes5","FormGroup","DEVICE_SIZES","Col","spans","brkPoint","span","propValue","_propValue$span","infix","FormLabel","column","srOnly","columnClass","FormText","muted","FormRow","FormImpl","validated","Row","Group","Check","File","_path","_path2","numberInputRegex","InputBase","maxLength","valid","maxLengthValidator","renderStartAdornment","_this$props2","startAdornment","_Fragment","renderEndAdornment","_this$props3","endAdornment","renderComponentType","_this$props4","selectList","prependLabel","handleSelectChange","Form","option","renderPrintLabel","_this$props5","printValue","_this$props6","topLabel","cssClass","errorIcon","_objectWithoutProperties","sourceSymbolKeys","SvgCalendar","svgRef","titleId","fill","fillRule","customDateInput","CustomDateInput","Calendar","inputProps","DatePicker","streetAddress","city","postalCode","NormalizationConstants","baseRoute","testMode","userAccessDate","decisionDate","minDecisionDate","decisionEligibleAmount","decisionRentAmount","handleDateChange","handleDecisionDateChange","appConstants","isPreviousYearRentIncrease","previousYearRentIncreaseDate","handleIsPreviousYearRentIncrease","eightMonthsBeforeDecisionDate","previousRentIncreaseLabel","renderRentIncreaseDate","isExistingRentIncrease","existingNoticeServiceDate","existingRentEffectiveDate","existingRentAmount","handleIsExistingRentIncrease","handleExistingNoticeServiceDateChange","renderYesQuestions","bgc","DROPDOWN_YES_VALUE","StepOne","_this$setState","_event$target","_this$setState2","_this$state","_event$target2","additionalStateChanges","_event$target3","calculateRentVars","earliestDecisionServiceDate","_this$state2","dateUsedForMinMaxCalc","minRentIncreaseDate","rentAmountUsedForCalc","oneYearAfterLastRentIncreaseDate","getCalcRentIncreaseServiceTimeIsAvailable","earliestServiceDate","maxRentIncreaseDate","setStepOneVars","_this$state3","address","setStepTwoStatus","setStepThreeStatus","calculatedRentVars","calcRentIncreaseCausedLoss","calcRentIncreaseServiceTimeIsAvailable","calcMissedRentIncreaseDate","not1YearBetweenRentIncreases","not3MonthsForService","stepOneVars","GeneralUtils","modifyClicked","setStepOneStatus","stepOneData","_this$state4","addressValidations","decisionQuestionsValidations","previousRentIncreaseQuestionsValidations","existingRentIncreaseQuestionsValidation","validationArray","_this$state5","submitted","RentalAddress","DecisionQuestions","min_decision_date","PreviousRentIncreaseQuestions","FutureRentIncreaseQuestions","submitStepOne","restartIcon","StepTwo","selectedRentIncreaseDate","calculateCpiYear","submitStepTwo","rentIncreaseDateRequired","setStepTwoVars","calcCPIYear","calcCPIValue","CalculationUtils","dateNextYearCPIAvailable","stepTwoVars","logCalcCPI","stepTwoData","appliedRuleIcon","renderButtons","renderCpiUnavailableError","rentCPIAmountStandardRentIncrease","rentAmountStandardRentIncrease","rentAmountAdditionalPortion","rentAmountFinalAdditionalRentIncrease","rentMaxAmountAdditionalPortion","cpiYear","renderAllowedRentIncreaseAmount","StepThree","phaseOneRemainingEligibleAmount","selectedRentIncreaseAmount","aawds","submitStepThree","hideRIAmount","setStepThreeVars","getIsGeneratedNoticeAvailable","phaseOneLostEligibleAmount","getPhaseOneLostEligibleAmount","isGeneratedNoticeAvailable","inPersonMinServiceDate","emailDoorFaxMinServiceDate","regMailMinServiceDate","stepThreeVars","RentIncreaseBreakdown","renderRentIncreaseAmount","stepThreeData","BASE","EXPLORER","EXPLORER_STEP1","EXPLORER_STEP2","NOTICEGEN","NOTICEGEN_STEP1","NOTICEGEN_STEP2","LANDLORD_VALIDATOR","TENANT_VALIDATOR","RENT_INCREASE_CALCULATOR","renderUnusedAmountWarning","renderNotOneYearBetweenRentIncreaseError","renderNotThreeMonthsForServiceError","renderMissedRentIncreaseWarning","renderAdditionalMissedRentIncreaseWarning","renderNoRemainingEligibleAmountWarning","rel","editInformation","bcLogoPrint","rentIncreaseDate","renderRentAmount","renderMissedRentIncreaseDate","renderLostFirstYearRentIncreaseWarning","renderServiceDate","renderSectionOne","renderEligibleAmount","renderSectionTwo","calc_p1RemainingEligibleAmount","calc_p1RentAmount","calc_p2MaxCPIAmountStandardRentIncrease","calc_p2MaxRentAmountStandardRentIncrease","calc_p2AppliedEligibleAmount","calc_p2MaxAdditionalRentIncrease","calc_p2MaxEligibleAmount","_props$formData","isRentIncreaseAfterPhase2","calc_p2IsServiceTimeAvailable","calc_p2RentIncreaseDate","calc_p2RemainingEligibleAmount","calc_p2InPersonMinServiceDate","calc_p2EmailDoorFaxMinServiceDate","calc_p2RegMailMinServiceDate","calc_p2MaxRentIncreaseDate","calc_p2MinRentIncreaseDate","calc_p1IsRentIncreaseAmountValid","calc_p1EligibleErrorAmount","calc_p1IsRemainingEligibleAmountValid","calc_p1IsServiceDateValid","rentIncreaseDateAfterPhase2","calc_p1RentIncreaseErrorAmount","calc_p1MaxAdditionalRentIncrease","calc_p1IsAppliedEligibleAmountValid","calc_p1UnusedEligibleAmount","phase1RentIncreaseDate","phase1RentAmountUsed","calc_p2CPIValue","calc_p2CPIYear","calc_p2EarliestRentIncreaseDate","phase2RentAmount","calc_p1MaxEligibleAmount","remainingPhase1EligibleAmount","renderRegularRentIncreaseBecomingPhase2Warning","renderLostSecondYearRentIncreaseWarning","renderPhase1RIAmountWarning","renderPhase1AppliedEligibleAmountWarning","renderPhase1RemainingEligibleAmountError","renderPhase1MinimumServiceTimeError","RICalcIncreaseBreakdown","NoticeGenerator","stepOneSubmitted","stepTwoSubmitted","stepThreeSubmitted","stepCompleted","resetForm","reload","generateNotice","navigate","ROUTES","hasFutureRIError","renderGenerateNoticeButton","firstYearDate","StepFour","readyCheckIcon","printIcon","renderSectionOneCompletedButtons","GeneratedNoticePhase1","defaultKey","_toPrimitive","useUncontrolled","fieldName","_extends2","Utils","propsValue","handlerName","_useUncontrolledProp","wasPropRef","_useState","stateValue","isProp","wasProp","useUncontrolledProp","prevState","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","__suppressDeprecationWarning","NavbarBrand","ownerWindow","doc","rUpper","msPattern","hyphenateStyleName","hyphenate","supportedTransforms","transforms","getPropertyValue","psuedoElement","isTransform","removeProperty","cssText","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","initialStatus","appear","isMounting","enter","appearStatus","in","unmountOnExit","mountOnEnter","nextCallback","_inheritsLoose","updateStatus","nextStatus","cancelNextCallback","getTimeouts","exit","timeout","mounting","nodeRef","forceReflow","performEnter","performExit","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onEntered","onEnter","onEntering","onTransitionEnd","_this3","onExit","onExiting","onExited","cancel","setNextCallback","_this4","doesNotHaveTimeoutOrListener","addEndListener","maybeNextCallback","childProps","TransitionGroupContext","optionsSupported","onceSupported","once","wrappedHandler","__once","onceHandler","emulateTransitionEnd","called","handle","createEvent","initEvent","triggerEvent","remove","transitionEnd","mult","parseDuration","removeEmulate","transitionEndListener","_collapseStyles","MARGINS","getDefaultDimensionValue","dimension","elem","margins","collapseStyles","getDimensionValue","Collapse","_ref$dimension","_ref$getDimensionValu","computedDimension","handleEnter","handleEntering","handleEntered","handleExit","handleExiting","innerProps","NavbarCollapse","NavbarContext","expanded","NavbarToggle","onToggle","useCommittedRef","useEventCallback","NavbarText","Navbar","_useUncontrolled","initialBsPrefix","expand","fixed","sticky","_useUncontrolled$as","_onToggle","collapseOnSelect","controlledProps","handleCollapse","expandClass","navbarContext","SelectableContext","Brand","Toggle","getSubHeaderText","currentPath","Improvement","buttonText","updateImprovement","CPIConstants","deleteImprovement","Step1","appendImprovement","submitStep1","goToStep2","generateCalculation","cpi","item1","item2","item3","item4","item5","remainingAmountText","percentage","Y1A","Y1B","Y1C","Y1D","Y1F","Y2A","Y2B","Y2C","Y2D","Y2F","Y3A","Y3B","Y3C","Y3D","Y3F","Step2","totalAmount","calculateDisabled","calculateTargetYearCPI","target_year","_unused","calculateEligibleAmount","select","setRent","toggleCheckbox","renderImprovementSelect","generateDescription","eligibleAmountSum","minEligibleAmount","lowestCost","allCosts","goToStep1","rentLabel","backIcon","calculateIcon","FullRentIncreaseBreakdown","WebToolOne","continueState","_x","_decisionData$errors","_decisionData$errors2","_decisionData$errors3","_decisionData$errors4","_decisionData$errors5","_decisionData$errors6","_decisionData$errors7","setIsSubmitted","setValidationData","_useState2","setStreetAddress","_useState4","priorRentAmount","appliedPhase1EligibleAmount","phase1RentAmount","decisionData","setDecisionData","decisionDataChangeHandler","_objectSpread4","_e$target2","_objectSpread6","calculate","decisionDataValidations","addressErrors","decisionDataErrors","p2ToolUsedFor","AppConstants","calc_p1EarliestServiceDate","calc_p1CPIYear","calc_p1CPIValue","calc_p1MaxCPIAmountStandardRentIncrease","calc_p1MaxRentAmountStandardRentIncrease","p1MaxEligibleAmount","calc_p1IsServiceDateExpired","calc_p1IsPhase2Available","addressString","calculatedVars","setData","_objectSpread3","_e$target","appConfig","_props$validationData","displayTextLandlord","displayTextTenant","isTenantRoute","renderMinDateValidation","displayText","correctAmountDisplay","renderRemainingEligibleAmount","processHadNoErrors","renderValidationSummary","renderLostRentIncreaseWarning","renderNoticeError","renderMaxEligibleAmountError","renderMaxIncreaseAmountError","renderWrongEligibleAmountError","renderUnusedligibleAmountError","_data$errors","setRentData","noEligibleAmount","rentAmountErrors","phase1RentAmountUsedTemp","rentAmountError","continueClick","_props$location","validationDataSubmitted","RentIncreaseInformation","ValidationSummary","ValidationErrors","ValidationComplete","DROPDOWN_NO_VALUE","_props$phaseTwoData2","_props$phaseTwoData3","_props$phaseTwoData4","_props$phaseOneData","phaseOneData","_props$phaseTwoData","phaseTwoData","calc_p2EarliestServiceDate","setStepOneData","hideRentIncreaseDateAfterPhase2Question","validationErrors","calculatedStepOneVars","p2StepOneData","calculateStepOneVars","setPhaseTwoData","_objectSpread5","phase2RentIncreaseDate","setStepTwoData","_CalculationUtils$get","calc_nextCPIUpdateDate","p2MaxEligibleAmount","p2StepTwoData","setStepThreeData","setPhaseThreeVars","calc_p2UnusedEligibleAmount","calc_isGeneratedNoticeAvailable","p2StepThreeData","changeHandler","renderCpiNotAvailableError","renderRentIncreaseCalculations","renderMaxAdditionalRule","_stepThreeData$errors","renderUnusedEligibleAmountWarning","renderRegularIncreaseConsideredAdditionalWarning","renderMissedDeadlineWithRemainingAmount","renderNoEligibleAmountRemainingWarning","toggleDisplayGeneratedNotice","resetPhaseTwo","p2Data","displayGenerateNotice","setPreStepOneData","initP2Data","renderPageHeader","RICalcStepOne","RICalcStepTwo","RICalcStepThree","RICalcStepFour","GeneratedNoticePhase2","App","getJSONFilePath","addCpiConfig","filePath","Header","Validator","RentIncreaseCalculator","Error404","hostname","rootReducer","composeWithDevTools","routerMiddleware","rootElement","serviceWorker","ready","registration","unregister"],"sourceRoot":""}