diff --git a/.azuredevops/dynamic-branches.yml b/.azuredevops/dynamic-branches.yml index 873e4f280..8112e68cd 100644 --- a/.azuredevops/dynamic-branches.yml +++ b/.azuredevops/dynamic-branches.yml @@ -97,11 +97,11 @@ steps: --resource-group $(webapp.resourceGroup) \ --slot pr-preview-$(webapp.slotName) \ --configuration-source $(webapp.name) - # az webapp identity assign \ - # -g $(webapp.resourceGroup) \ - # -n $(webapp.name) \ - # --slot pr-preview-$(webapp.slotName) \ - # --identities /subscriptions/400c5730-25f5-4ee6-a933-8b289b9ccb0d/resourcegroups/rg-eligibilityestimator-dev/providers/microsoft.managedidentity/userassignedidentities/id-eligibilityestimator-dev + az webapp identity assign \ + --resource-group $(webapp.resourceGroup) \ + --name $(webapp.name) \ + --slot pr-preview-$(webapp.slotName) \ + --identities /subscriptions/400c5730-25f5-4ee6-a933-8b289b9ccb0d/resourcegroups/rg-eligibilityestimator-dev/providers/microsoft.managedidentity/userassignedidentities/id-eligibilityestimator-dev - task: AzureCLI@2 displayName: 'Deploy pr image to new slot' diff --git a/components/Forms/DatePicker.tsx b/components/Forms/DatePicker.tsx index b22fbae4c..08353a2a0 100644 --- a/components/Forms/DatePicker.tsx +++ b/components/Forms/DatePicker.tsx @@ -131,7 +131,9 @@ export const DatePicker: React.FC = (props) => { type="number" min={props.minYear} max={props.maxYear} + pattern="[0-9]*" onChange={_onYearChange} + onKeyUpCapture={restrictNonNumbers} className="inputStyles" /> diff --git a/components/Layout/Breadcrumb.tsx b/components/Layout/Breadcrumb.tsx index 7eedb4452..f6dea0882 100644 --- a/components/Layout/Breadcrumb.tsx +++ b/components/Layout/Breadcrumb.tsx @@ -21,13 +21,13 @@ export function Breadcrumb({ locale, items = [] }: BreadcrumbProps) { className="inline-block min-w-0 max-w-full truncate -my-4" > - + {item.text} {index < items.length - 1 && ( - + {/* eslint-disable-next-line @next/next/no-img-element */} { } list-none w-64 sm:w-56 lg:w-80 my-1`} > - + {value.text} @@ -67,7 +67,7 @@ export const Footer = ({ id, locale }: FooterProps) => { } pr-4 my-1`} > - + {value.text} diff --git a/components/Layout/index.tsx b/components/Layout/index.tsx index 30a4b62a8..d5561ff52 100644 --- a/components/Layout/index.tsx +++ b/components/Layout/index.tsx @@ -18,8 +18,6 @@ export const Layout: React.VFC<{ const [prodEnv, setProdEnv] = useState(null) const isProduction = process.env.APP_ENV === 'production' - console.log(hostname, isProduction) - useEffect(() => { if (isProduction) { setProdEnv(hostname.includes('.alpha.service') ? 'alpha' : 'beta') diff --git a/i18n/api/en.ts b/i18n/api/en.ts index 713f5a476..e0d028c47 100644 --- a/i18n/api/en.ts +++ b/i18n/api/en.ts @@ -327,15 +327,16 @@ const en: Translations = { }, detail: { eligible: "You're likely eligible for this benefit.", - futureEligible60: "You'll likely be eligible once you turn 60.", + futureEligible60: + "You'll likely be eligible once you turn {EARLIEST_ELIGIBLE_AGE}.", futureEligible: "You'll likely be eligible once you turn {EARLIEST_ELIGIBLE_AGE}.", eligibleIncomeTooHigh: "You're likely eligible for this benefit, but your income is too high to receive a monthly payment at this time.", futureEligibleIncomeTooHigh: - 'You may be eligible once you turn 65. Since your income is too high, you may not receive a monthly payment.', + 'You may be eligible once you turn {EARLIEST_ELIGIBLE_AGE}. Since your income is too high, you may not receive a monthly payment.', futureEligibleIncomeTooHigh2: - 'You may be eligible once you turn 60. If your income stays the same, you may not receive a monthly payment.', + 'You may be eligible once you turn {EARLIEST_ELIGIBLE_AGE}. If your income stays the same, you may not receive a monthly payment.', eligibleDependingOnIncome: "You're likely eligible for this benefit if {INCOME_SINGLE_OR_COMBINED} is less than {INCOME_LESS_THAN}. Depending on your income, you should expect to receive around {ENTITLEMENT_AMOUNT_FOR_BENEFIT} every month.", eligibleDependingOnIncomeNoEntitlement: @@ -433,7 +434,7 @@ const en: Translations = { eligibleIncomeTooHigh: "You're likely eligible for this benefit, but your income is too high to receive a monthly payment at this time.", futureEligibleIncomeTooHigh: - 'You may be eligible once you turn 65. Since your income is too high, you may not receive a monthly payment.', + 'You may be eligible once you turn {EARLIEST_ELIGIBLE_AGE}. Since your income is too high, you may not receive a monthly payment.', serviceCanadaReviewYourPayment: 'If you apply, Service Canada will review your payment amount each year based on your income tax return.', automaticallyBePaid: @@ -445,16 +446,16 @@ const en: Translations = { youShouldHaveReceivedLetter: 'You should have received a letter about your enrolment status the month after you turned 64.', ifYouDidnt: - "If you didn't, contact us to find out if you need to apply.", + "If you didn't, contact us to find out if you need to apply.", applyOnline: "If you didn't, you can apply online.", over70: "If you're over the age of 70 and are not receiving an Old Age Security pension, apply now.", eligibleWhenTurn65: "You may be eligible for this benefit once you turn 65. You can edit your answers to see what you could receive at a future age.", ifNotReceiveLetter64: - "If you didn't, contact us to find out if you need to apply.", + "If you didn't, contact us to find out if you need to apply.", chooseToDefer: - "You can choose to defer your pension or increase your years of residence in Canada. To find out which option is best for you, contact us.", + "You can choose to defer your pension or increase your years of residence in Canada. To find out which option is best for you, contact us.", receivePayment: 'You may be able to receive payment for up to the last 11 months.', }, @@ -464,7 +465,7 @@ const en: Translations = { incomeTooHigh: "You're likely eligible for this benefit, but your income is too high to receive a monthly payment at this time.", futureEligibleIncomeTooHigh: - 'You may be eligible once you turn 65. If your income stays the same, you may not receive a monthly payment.', + 'You may be eligible once you turn {EARLIEST_ELIGIBLE_AGE}. If your income stays the same, you may not receive a monthly payment.', ifYouApply: "If you apply, Service Canada will review your income tax return every year. You'll automatically be paid if your income qualifies.", canApplyOnline: 'You can apply for this benefit online.', diff --git a/i18n/api/fr.ts b/i18n/api/fr.ts index a8bb04a54..459e0aa63 100644 --- a/i18n/api/fr.ts +++ b/i18n/api/fr.ts @@ -336,15 +336,15 @@ const fr: Translations = { detail: { eligible: 'Vous êtes probablement admissible à cette prestation.', futureEligible60: - 'Vous serez probablement admissible lorsque vous aurez 60 ans.', + 'Vous serez probablement admissible lorsque vous aurez {EARLIEST_ELIGIBLE_AGE}.', futureEligible: 'Vous serez probablement admissible lorsque vous aurez {EARLIEST_ELIGIBLE_AGE}.', eligibleIncomeTooHigh: 'Vous êtes probablement admissible à cette prestation, mais votre revenu est trop élevé pour recevoir un paiement mensuel pour le moment.', futureEligibleIncomeTooHigh: - 'Vous pourriez être admissible lorsque vous aurez 65 ans. Puisque votre revenu est trop élevé, vous ne recevrez peut-être pas de paiement mensuel.', + 'Vous pourriez être admissible lorsque vous aurez {EARLIEST_ELIGIBLE_AGE}. Puisque votre revenu est trop élevé, vous ne recevrez peut-être pas de paiement mensuel.', futureEligibleIncomeTooHigh2: - 'Vous serez probablement admissible lorsque vous aurez 60 ans. Si votre revenu reste le même, vous ne recevrez peut-être pas de paiement mensuel.', + 'Vous serez probablement admissible lorsque vous aurez {EARLIEST_ELIGIBLE_AGE}. Si votre revenu reste le même, vous ne recevrez peut-être pas de paiement mensuel.', eligibleDependingOnIncome: 'Vous êtes probablement éligible à cette prestation si {INCOME_SINGLE_OR_COMBINED} est inférieur à {INCOME_LESS_THAN}. En fonction de {YOUR_OR_COMPLETE}, vous devriez vous attendre à recevoir environ {ENTITLEMENT_AMOUNT_FOR_BENEFIT} par mois.', eligibleDependingOnIncomeNoEntitlement: @@ -443,7 +443,7 @@ const fr: Translations = { eligibleIncomeTooHigh: 'Vous êtes probablement admissible à cette prestation, mais votre revenu est trop élevé pour recevoir un paiement mensuel pour le moment.', futureEligibleIncomeTooHigh: - 'Vous pourriez être admissible lorsque vous aurez 65 ans. Puisque votre revenu est trop élevé, vous ne recevrez peut-être pas de paiement mensuel.', + 'Vous pourriez être admissible lorsque vous aurez {EARLIEST_ELIGIBLE_AGE}. Puisque votre revenu est trop élevé, vous ne recevrez peut-être pas de paiement mensuel.', serviceCanadaReviewYourPayment: 'Si vous présentez une demande, Service Canada révisera le montant de votre paiement chaque année en fonction de votre déclaration de revenus.', automaticallyBePaid: @@ -455,7 +455,7 @@ const fr: Translations = { youShouldHaveReceivedLetter: "Vous devriez avoir reçu une lettre au sujet de votre statut d'inscription le mois après votre 64e anniversaire.", ifYouDidnt: - "Si vous ne l'avez pas reçue, communiquez avec nous pour savoir si vous devez présenter une demande.", + "Si vous ne l'avez pas reçue, communiquez avec nous pour savoir si vous devez présenter une demande.", applyOnline: "Si vous ne l'avez pas reçue, vous pouvez présenter une demande en ligne.", over70: @@ -463,9 +463,9 @@ const fr: Translations = { eligibleWhenTurn65: "Vous pourriez être admissible lorsque vous aurez 65 ans. Vous pouvez modifier vos réponses pour voir ce que vous pourriez recevoir à un âge futur.", ifNotReceiveLetter64: - "Si vous ne l'avez pas reçue, communiquez avec nous pour savoir si vous devez présenter une demande.", + "Si vous ne l'avez pas reçue, communiquez avec nous pour savoir si vous devez présenter une demande.", chooseToDefer: - "Vous pouvez choisir de reporter votre pension ou augmenter vos années de résidence au Canada. Pour savoir quelle option serait la meilleure pour vous, communiquez avec nous.", + "Vous pouvez choisir de reporter votre pension ou augmenter vos années de résidence au Canada. Pour savoir quelle option serait la meilleure pour vous, communiquez avec nous.", receivePayment: 'Vous pourriez recevoir un paiement pour un maximum des 11 derniers mois.', }, @@ -475,7 +475,7 @@ const fr: Translations = { incomeTooHigh: 'Vous êtes probablement admissible à cette prestation, mais votre revenu est trop élevé pour recevoir un paiement mensuel pour le moment.', futureEligibleIncomeTooHigh: - 'Vous pourriez être admissible lorsque vous aurez 65 ans. Si votre revenu reste le même, vous ne recevrez peut-être pas de paiement mensuel.', + 'Vous pourriez être admissible lorsque vous aurez {EARLIEST_ELIGIBLE_AGE}. Si votre revenu reste le même, vous ne recevrez peut-être pas de paiement mensuel.', ifYouApply: 'Si vous présentez une demande, Service Canada révisera votre déclaration de revenus chaque année. Vous recevrez automatiquement des paiements si votre revenu est admissible.', canApplyOnline: diff --git a/i18n/tooltips/en.ts b/i18n/tooltips/en.ts index c2c8e7dd5..41824d0b8 100644 --- a/i18n/tooltips/en.ts +++ b/i18n/tooltips/en.ts @@ -69,7 +69,7 @@ const en: TooltipTranslations = { moreinfo: 'Will this income be used in your application?', text: "
\

\ - No, this is an estimation. Your actual income and exemptions will be assessed when you apply. \ + No, this is an estimation. Your actual income and exemptions will be assessed when you apply. \

\
\ ", @@ -89,7 +89,7 @@ const en: TooltipTranslations = { moreinfo: 'Will this income be used in your application?', text: "
\

\ - No, this is an estimation. Your partner’s actual income and exemptions will be assessed when you apply. \ + No, this is an estimation. Your partner’s actual income and exemptions will be assessed when you apply. \

\
\ ", diff --git a/i18n/tooltips/fr.ts b/i18n/tooltips/fr.ts index 7f19ecdd0..e3b2c9888 100644 --- a/i18n/tooltips/fr.ts +++ b/i18n/tooltips/fr.ts @@ -70,7 +70,7 @@ const fr: TooltipTranslations = { moreinfo: 'Ce revenu sera-t-il utilisé dans votre demande?', text: "
\

\ - Non, il s’agit d’une estimation. Vos revenus et exemptions réels seront évalués lors de votre demande. \ + Non, il s’agit d’une estimation. Vos revenus et exemptions réels seront évalués lors de votre demande. \

\
\ ", @@ -82,7 +82,7 @@ const fr: TooltipTranslations = {

\ Vos premiers 15 000 $ de revenu lié au travail sont sujets à des exemptions. Nous allons les calculer pour vous. \

\ - \ + \ ", }, [FieldKey.PARTNER_INCOME]: { @@ -90,7 +90,7 @@ const fr: TooltipTranslations = { moreinfo: 'Ce revenu sera-t-il utilisé dans votre demande?', text: "
\

\ - Non, il s’agit d’une estimation. Ses revenus et exemptions réels seront évalués lors de votre demande. \ + Non, il s’agit d’une estimation. Ses revenus et exemptions réels seront évalués lors de votre demande. \

\
\ ", @@ -102,7 +102,7 @@ const fr: TooltipTranslations = {

\ Ses premiers 15 000 $ de revenu lié au travail sont sujets à des exemptions. Nous allons les calculer pour vous. \

\ - \ + \ ", }, [FieldKey.YEARS_IN_CANADA_SINCE_18]: { diff --git a/i18n/web/en.ts b/i18n/web/en.ts index c0f3857bc..08b70364d 100644 --- a/i18n/web/en.ts +++ b/i18n/web/en.ts @@ -233,7 +233,7 @@ const en: WebTranslations = { 'This estimator does not include the Canada Pension Plan retirement pension.', learnMoreAboutCpp: `Learn more about the Canada Pension Plan`, aboutResultText: 'About the results', - resultDefinition: `The results are not financial advice and are subject to change. For a more accurate assessment of your estimated benefits amount, please contact us.`, + resultDefinition: `The results are not financial advice and are subject to change. For a more accurate assessment of your estimated benefits amount, please contact us.`, privacyHeading: 'Privacy', privacyDefinition: 'We don’t collect the information you enter in the estimator.', @@ -476,7 +476,7 @@ const en: WebTranslations = { incomeHintText: "
\

\ - Your income and exemptions will be assessed when you apply based on your latest income tax return. \ + Your income and exemptions will be assessed when you apply based on your latest income tax return. \

\
\ ", @@ -485,7 +485,7 @@ const en: WebTranslations = { incomeHintTextReceiveOAS: "
\

\ - If you're expecting a drop in income, you can enter your estimated income. Contact us to report this event. \ + If you're expecting a drop in income, you can enter your estimated income. Contact us to report this event. \

\
\ ", @@ -495,7 +495,7 @@ const en: WebTranslations = { partnerIncomeHintText: "
\

\ - Your partner’s income and exemptions will be assessed when you apply based on their latest income tax return. \ + Your partner’s income and exemptions will be assessed when you apply based on their latest income tax return. \

\
\ ", @@ -504,7 +504,7 @@ const en: WebTranslations = { partnerIncomeHintTextReceiveOAS: "
\

\ - If your partner is expecting a drop in income, you can enter their estimated income. Contact us to report this event. \ + If your partner is expecting a drop in income, you can enter their estimated income. Contact us to report this event. \

\
\ ", diff --git a/i18n/web/fr.ts b/i18n/web/fr.ts index 9eac40d7f..e3e400813 100644 --- a/i18n/web/fr.ts +++ b/i18n/web/fr.ts @@ -240,7 +240,7 @@ const fr: WebTranslations = { notIncludeCPP: `Cet estimateur n'inclut pas la pension de retraite du Régime de pensions du Canada.`, learnMoreAboutCpp: `En savoir plus sur le Régime de pensions du Canada`, aboutResultText: 'À propos des résultats', - resultDefinition: `Les résultats ne sont pas des conseils financiers et peuvent changer. Pour une évaluation plus précise de votre montant de prestations estimé, veuillez communiquer avec nous.`, + resultDefinition: `Les résultats ne sont pas des conseils financiers et peuvent changer. Pour une évaluation plus précise de votre montant de prestations estimé, veuillez communiquer avec nous.`, privacyHeading: 'Confidentialité', privacyDefinition: `Nous ne conservons pas les informations que vous entrez dans l'estimateur.`, usingSharedDevice: 'Si vous utilisez un appareil partagé ou public', @@ -487,7 +487,7 @@ const fr: WebTranslations = { incomeHintText: "
\

\ - Vos revenus et exemptions seront évalués lors de votre demande selon votre dernière déclaration de revenus. \ + Vos revenus et exemptions seront évalués lors de votre demande selon votre dernière déclaration de revenus. \

\
\ ", @@ -496,7 +496,7 @@ const fr: WebTranslations = { incomeHintTextReceiveOAS: "
\

\ - Si vous prévoyez une baisse de revenu, vous pouvez entrer votre revenu prévu. Communiquez avec nous pour signaler cet événement. \ + Si vous prévoyez une baisse de revenu, vous pouvez entrer votre revenu prévu. Communiquez avec nous pour signaler cet événement. \

\
\ ", @@ -507,7 +507,7 @@ const fr: WebTranslations = { partnerIncomeHintText: "
\

\ - Les revenus et exemptions de votre conjoint seront évalués lors de votre demande selon sa dernière déclaration de revenus. \ + Les revenus et exemptions de votre conjoint seront évalués lors de votre demande selon sa dernière déclaration de revenus. \

\
\ ", @@ -517,7 +517,7 @@ const fr: WebTranslations = { partnerIncomeHintTextReceiveOAS: "
\

\ - Si votre conjoint prévoit une baisse de revenu, vous pouvez entrer son revenu prévu. Communiquez avec nous pour signaler cet événement. \ + Si votre conjoint prévoit une baisse de revenu, vous pouvez entrer son revenu prévu. Communiquez avec nous pour signaler cet événement. \

\
\ ", diff --git a/pages/index.tsx b/pages/index.tsx index 3866b629c..53ae6c2a1 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -139,10 +139,10 @@ const Home: NextPage<{ adobeAnalyticsUrl: string }> = ({ > diff --git a/public/openNewTabPurple.svg b/public/openNewTabPurple.svg new file mode 100644 index 000000000..1f6660cd7 --- /dev/null +++ b/public/openNewTabPurple.svg @@ -0,0 +1,30 @@ + + + \ No newline at end of file diff --git a/styles/globals.css b/styles/globals.css index bc75f74f3..9db42d818 100644 --- a/styles/globals.css +++ b/styles/globals.css @@ -7,7 +7,7 @@ * { @apply focus:outline-none; @apply focus-visible:ring-4; - @apply focus-visible:ring-sky-500; + @apply focus-visible:ring-[#009EE1]; } .skip-main { @@ -307,6 +307,7 @@ #alwLink1, #alwsLink0, #alwsLink1, + a.hintText, a.generatedLink { display: inline; background: url('/openNewTab.svg') no-repeat right; @@ -314,7 +315,6 @@ text-decoration-line: underline; --tw-text-opacity: 1; color: rgb(40 65 98 / var(--tw-text-opacity)); - visited: #7834BC !important; } #oasDefer a:hover, @@ -326,12 +326,29 @@ #alwLink1:hover, #alwsLink0:hover, #alwsLink1:hover, + a.hintText, a.generatedLink:hover, .summary-link a:hover { --tw-border-opacity: 1; color: rgb(5 53 210 / var(--tw-border-opacity)); } + #oasDefer a:visited, + #oasLink0:visited, + #oasLink1:visited, + #gisLink0:visited, + #gisLink1:visited, + #alwLink0:visited, + #alwLink1:visited, + #alwsLink0:visited, + #alwsLink1:visited, + a.hintText:visited, + a.generatedLink:visited, + .summary-link a:visited { + color: #7834BC; + background: url('/openNewTabPurple.svg') no-repeat right; + } + @-moz-document url-prefix() { #enter-age select, #enter-partnerAge select, @@ -366,7 +383,7 @@ } a:visited { - color: #7834BC !important; + color: #7834BC; } dfn { diff --git a/utils/api/scrapers/data/oas-amounts-en.json b/utils/api/scrapers/data/oas-amounts-en.json index 5fd1af6ea..29b2ef8b7 100644 --- a/utils/api/scrapers/data/oas-amounts-en.json +++ b/utils/api/scrapers/data/oas-amounts-en.json @@ -1,39 +1,39 @@ { - "lastupdatedYear": "2022", - "lastupdatedQuarter": "April to June 2024", - "renewalYearGIS": "2023", + "lastupdatedYear": "2023", + "lastupdatedQuarter": "July to September 2024", + "renewalYearGIS": "2024", "oas": { - "average": "713.34", - "average75": "784.67", - "maximum": "134,626", - "maximum75": "137,331", - "clawback": "81,761" + "average": "718.33", + "average75": "790.16", + "maximum": "142,609", + "maximum75": "148,179", + "clawback": "86,912" }, "gis": { - "single-amount": "1,065.47", - "single-limit": "21,624", - "spouse-oas-amount": "641.35", - "spouse-oas-limit": "28,560", - "spouse-no-oas-amount": "1,065.47", - "spouse-no-oas-limit": "51,840", - "spouse-allowance-amount": "641.35", - "spouse-allowance-limit": "39,984" + "single-amount": "1,072.93", + "single-limit": "21,768", + "spouse-oas-amount": "645.84", + "spouse-oas-limit": "28,752", + "spouse-no-oas-amount": "1,072.93", + "spouse-no-oas-limit": "52,176", + "spouse-allowance-amount": "645.84", + "spouse-allowance-limit": "40,272" }, "allowance": { - "spouse-gis-amount": "1,354.69", - "spouse-gis-limit": "39,984", - "survivor-amount": "1,614.89", - "survivor-limit": "29,112" + "spouse-gis-amount": "1,364.17", + "spouse-gis-limit": "40,272", + "survivor-amount": "1,626.20", + "survivor-limit": "29,328" }, "topup": { - "single": "165.04", - "married": "46.76" + "single": "166.20", + "married": "47.09" }, "delay": { - "oas66": "764.70", - "oas67": "816.06", - "oas68": "867.42", - "oas69": "918.78", - "oas70": "970.14" + "oas66": "770.05", + "oas67": "821.77", + "oas68": "873.49", + "oas69": "925.21", + "oas70": "976.93" } } diff --git a/utils/api/scrapers/output/legalValuesJson.json b/utils/api/scrapers/output/legalValuesJson.json index c1a6d6e79..e77bfc818 100644 --- a/utils/api/scrapers/output/legalValuesJson.json +++ b/utils/api/scrapers/output/legalValuesJson.json @@ -1,39 +1,39 @@ { - "lastUpdatedYear": 2022, - "lastUpdatedQuarter": "April to June 2024", - "renewalYearGIS": 2023, + "lastUpdatedYear": 2023, + "lastUpdatedQuarter": "July to September 2024", + "renewalYearGIS": 2024, "oas": { - "amount": 713.34, - "amount75": 784.67, - "incomeLimit": 134626, - "incomeLimit75": 137331, - "clawbackIncomeLimit": 81761 + "amount": 718.33, + "amount75": 790.16, + "incomeLimit": 142609, + "incomeLimit75": 148179, + "clawbackIncomeLimit": 86912 }, "gis": { - "singleAmount": 1065.47, - "singleIncomeLimit": 21624, - "spouseOasAmount": 641.35, - "spouseOasIncomeLimit": 28560, - "spouseNoOasAmount": 1065.47, - "spouseNoOasIncomeLimit": 51840, - "spouseAlwAmount": 641.35, - "spouseAlwIncomeLimit": 39984 + "singleAmount": 1072.93, + "singleIncomeLimit": 21768, + "spouseOasAmount": 645.84, + "spouseOasIncomeLimit": 28752, + "spouseNoOasAmount": 1072.93, + "spouseNoOasIncomeLimit": 52176, + "spouseAlwAmount": 645.84, + "spouseAlwIncomeLimit": 40272 }, "alw": { - "alwAmount": 1354.69, - "alwIncomeLimit": 39984, - "afsAmount": 1614.89, - "afsIncomeLimit": 29112 + "alwAmount": 1364.17, + "alwIncomeLimit": 40272, + "afsAmount": 1626.2, + "afsIncomeLimit": 29328 }, "topUp": { - "single": 165.04, - "married": 46.76 + "single": 166.2, + "married": 47.09 }, "delay": { - "oas66": 764.7, - "oas67": 816.06, - "oas68": 867.42, - "oas69": 918.78, - "oas70": 970.14 + "oas66": 770.05, + "oas67": 821.77, + "oas68": 873.49, + "oas69": 925.21, + "oas70": 976.93 } }