@novha/calc-engines 1.6.2 → 1.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mortgage/canada/CanadaMortgageServiceImpl.js +19 -4
- package/dist/mortgage/canada/domain/types.js +1 -1
- package/dist/mortgage/domain/types.js +3 -0
- package/dist/mortgage/france/FranceMortgageServiceImpl.js +55 -9
- package/dist/mortgage/france/domain/types.js +1 -1
- package/dist/mortgage/south-africa/SouthAfricaMortgageServiceImpl.js +16 -2
- package/dist/mortgage/south-africa/domain/types.js +1 -1
- package/dist/types/mortgage/canada/domain/types.d.ts +3 -1
- package/dist/types/mortgage/domain/types.d.ts +14 -0
- package/dist/types/mortgage/france/FranceMortgageServiceImpl.d.ts +1 -0
- package/dist/types/mortgage/france/domain/types.d.ts +6 -0
- package/dist/types/mortgage/south-africa/domain/types.d.ts +2 -0
- package/package.json +1 -1
- package/src/mortgage/canada/CanadaMortgageServiceImpl.ts +18 -3
- package/src/mortgage/canada/domain/types.ts +3 -1
- package/src/mortgage/domain/types.ts +14 -0
- package/src/mortgage/france/FranceMortgageServiceImpl.ts +67 -10
- package/src/mortgage/france/domain/types.ts +7 -0
- package/src/mortgage/south-africa/SouthAfricaMortgageServiceImpl.ts +15 -1
- package/src/mortgage/south-africa/domain/types.ts +2 -0
|
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CanadaMortgageServiceImpl = void 0;
|
|
4
4
|
class CanadaMortgageServiceImpl {
|
|
5
5
|
calculate(input, rules) {
|
|
6
|
-
const { propertyPrice, downPayment,
|
|
6
|
+
const { propertyPrice, downPayment, amortizationYears, paymentFrequency } = input;
|
|
7
|
+
const interestRate = input.interestRate / 100;
|
|
7
8
|
/* -----------------------------
|
|
8
9
|
1. Loan Amount & LTV
|
|
9
10
|
------------------------------ */
|
|
@@ -53,10 +54,24 @@ class CanadaMortgageServiceImpl {
|
|
|
53
54
|
loanAmount: loanAmount,
|
|
54
55
|
insurancePremium: insurancePremium,
|
|
55
56
|
totalMortgage: totalMortgage,
|
|
56
|
-
|
|
57
|
+
monthlyPaymentAmount: paymentAmount,
|
|
57
58
|
totalInterestPaid: totalInterestPaid,
|
|
58
59
|
totalPaid: totalPaid,
|
|
59
|
-
amortizationSchedule: amortizationSchedule
|
|
60
|
+
amortizationSchedule: amortizationSchedule,
|
|
61
|
+
otherFees: {
|
|
62
|
+
notaryFees: {
|
|
63
|
+
value: 0,
|
|
64
|
+
label: 'NOTARY_FEES'
|
|
65
|
+
},
|
|
66
|
+
bankFees: {
|
|
67
|
+
value: 0,
|
|
68
|
+
label: 'BANK_FEES'
|
|
69
|
+
},
|
|
70
|
+
monthlyInsuranceFees: {
|
|
71
|
+
value: insurancePremium,
|
|
72
|
+
label: 'INSURANCE_PREMIUM'
|
|
73
|
+
}
|
|
74
|
+
}
|
|
60
75
|
};
|
|
61
76
|
}
|
|
62
77
|
/* ======================================================
|
|
@@ -106,4 +121,4 @@ class CanadaMortgageServiceImpl {
|
|
|
106
121
|
}
|
|
107
122
|
}
|
|
108
123
|
exports.CanadaMortgageServiceImpl = CanadaMortgageServiceImpl;
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FuYWRhTW9ydGdhZ2VTZXJ2aWNlSW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb3J0Z2FnZS9jYW5hZGEvQ2FuYWRhTW9ydGdhZ2VTZXJ2aWNlSW1wbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFRQSxNQUFhLHlCQUF5QjtJQUU3QixTQUFTLENBQUMsS0FBK0IsRUFBRSxLQUFvQjtRQUVwRSxNQUFNLEVBQ0osYUFBYSxFQUNiLFdBQVcsRUFDWCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNqQixHQUFHLEtBQUssQ0FBQztRQUVWOzt5Q0FFaUM7UUFFakMsTUFBTSxVQUFVLEdBQUcsYUFBYSxHQUFHLFdBQVcsQ0FBQztRQUMvQyxJQUFJLFVBQVUsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDekMsQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLFVBQVUsR0FBRyxhQUFhLENBQUM7UUFFdkM7O3lDQUVpQztRQUVqQyxJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQztRQUV6QixJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNuRCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUMsWUFBWTtpQkFDckQsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU5QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztZQUN6RCxDQUFDO1lBRUQsZ0JBQWdCLEdBQUcsVUFBVSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDbkQsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxr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aUQsRUFDakQsZUFBdUI7UUFHdkIsSUFBSSxXQUFXLEtBQUssYUFBYSxFQUFFLENBQUM7WUFDbEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFFRCwrQkFBK0I7UUFDL0IsTUFBTSxjQUFjLEdBQUcsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUN0QyxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLGNBQWMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFaEUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxtQkFBbUIsRUFBRSxDQUFDLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxTQUFpQixFQUFFLElBQVksRUFBRSxPQUFlO1FBQ3ZFLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2YsT0FBTyxTQUFTLEdBQUcsT0FBTyxDQUFDO1FBQzdCLENBQUM7UUFFRCxPQUFPLFNBQVM7WUFDZCxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDcEMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztDQUNGO0FBMUtELDhEQTBLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhbmFkYU1vcnRnYWdlU2VydmljZSB9IGZyb20gJy4vQ2FuYWRhTW9ydGdhZ2VTZXJ2aWNlJztcbmltcG9ydCB7XG4gIE1vcnRnYWdlUnVsZXMsXG4gIE1vcnRnYWdlQ2FsY3VsYXRpb25JbnB1dCxcbiAgTW9ydGdhZ2VDYWxjdWxhdGlvblJlc3VsdCxcbiAgQW1vcnRpemF0aW9uU2NoZWR1bGVJdGVtXG59IGZyb20gJy4vZG9tYWluL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIENhbmFkYU1vcnRnYWdlU2VydmljZUltcGwgaW1wbGVtZW50cyBDYW5hZGFNb3J0Z2FnZVNlcnZpY2Uge1xuXG4gIHB1YmxpYyBjYWxjdWxhdGUoaW5wdXQ6IE1vcnRnYWdlQ2FsY3VsYXRpb25JbnB1dCwgcnVsZXM6IE1vcnRnYWdlUnVsZXMpOiBNb3J0Z2FnZUNhbGN1bGF0aW9uUmVzdWx0IHtcblxuICAgIGNvbnN0IHtcbiAgICAgIHByb3BlcnR5UHJpY2UsXG4gICAgICBkb3duUGF5bWVudCxcbiAgICAgIGludGVyZXN0UmF0ZSxcbiAgICAgIGFtb3J0aXphdGlvblllYXJzLFxuICAgICAgcGF5bWVudEZyZXF1ZW5jeVxuICAgIH0gPSBpbnB1dDtcblxuICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgMS4gTG9hbiBBbW91bnQgJiBMVFZcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuICAgIGNvbnN0IGxvYW5BbW91bnQgPSBwcm9wZXJ0eVByaWNlIC0gZG93blBheW1lbnQ7XG4gICAgaWYgKGxvYW5BbW91bnQgPD0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGxvYW4gYW1vdW50Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgbHR2ID0gbG9hbkFtb3VudCAvIHByb3BlcnR5UHJpY2U7XG5cbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgIDIuIENNSEMgSW5zdXJhbmNlXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbiAgICBsZXQgaW5zdXJhbmNlUHJlbWl1bSA9IDA7XG5cbiAgICBpZiAobHR2ID4gcnVsZXMubW9ydGdhZ2VJbnN1cmFuY2UucmVxdWlyZWRCZWxvd0x0dikge1xuICAgICAgY29uc3QgcHJlbWl1bVJ1bGUgPSBydWxlcy5tb3J0Z2FnZUluc3VyYW5jZS5wcmVtaXVtUmF0ZXNcbiAgICAgICAgLmZpbmQociA9PiBsdHYgPD0gci5tYXhMdHYpO1xuXG4gICAgICBpZiAoIXByZW1pdW1SdWxlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTFRWIGV4Y2VlZHMgbWF4aW11bSBpbnN1cmFibGUgbGltaXQnKTtcbiAgICAgIH1cblxuICAgICAgaW5zdXJhbmNlUHJlbWl1bSA9IGxvYW5BbW91bnQgKiBwcmVtaXVtUnVsZS5yYXRlO1xuICAgIH1cblxuICAgIGNvbnN0IHRvdGFsTW9ydGdhZ2UgPSBydWxlcy5tb3J0Z2FnZUluc3VyYW5jZS5wcmVtaXVtQWRkZWRUb0xvYW5cbiAgICAgID8gbG9hbkFtb3VudCArIGluc3VyYW5jZVByZW1pdW1cbiAgICAgIDogbG9hbkFtb3VudDtcblxuICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgMy4gSW50ZXJlc3QgUmF0ZSBDb252ZXJzaW9uXG4gICAgICAgKENhbmFkYSBzZW1pLWFubnVhbCBjb21wb3VuZGluZylcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuICAgIGNvbnN0IHBlcmlvZGljUmF0ZSA9IHRoaXMuY29udmVydENhbmFkaWFuUmF0ZShcbiAgICAgIGludGVyZXN0UmF0ZSxcbiAgICAgIHJ1bGVzLmludGVyZXN0LmNvbXBvdW5kaW5nLFxuICAgICAgcnVsZXMucGF5bWVudEZyZXF1ZW5jeVJ1bGVzW3BheW1lbnRGcmVxdWVuY3ldLnBheW1lbnRzUGVyWWVhclxuICAgICk7XG5cbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgIDQuIFBheW1lbnQgRnJlcXVlbmN5XG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbiAgICBjb25zdCBmcmVxdWVuY3lSdWxlID0gcnVsZXMucGF5bWVudEZyZXF1ZW5jeVJ1bGVzW3BheW1lbnRGcmVxdWVuY3ldO1xuICAgIGNvbnN0IHBheW1lbnRzUGVyWWVhciA9IGZyZXF1ZW5jeVJ1bGUucGF5bWVudHNQZXJZZWFyO1xuICAgIGNvbnN0IHRvdGFsUGF5bWVudHMgPSBhbW9ydGl6YXRpb25ZZWFycyAqIHBheW1lbnRzUGVyWWVhcjtcblxuICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgNS4gTW9ydGdhZ2UgUGF5bWVudCBGb3JtdWxhXG4gICAgICAgUCA9IEwgw5cgWyByKDErcilebiBdIC8gWyAoMStyKV5uIOKIkiAxIF1cbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuICAgIGNvbnN0IHBheW1lbnRBbW91bnQgPSB0aGlzLmNhbGN1bGF0ZVBheW1lbnQoXG4gICAgICB0b3RhbE1vcnRnYWdlLFxuICAgICAgcGVyaW9kaWNSYXRlLFxuICAgICAgdG90YWxQYXltZW50c1xuICAgICk7XG5cbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgIDYuIFRvdGFsc1xuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4gICAgY29uc3QgdG90YWxQYWlkID0gcGF5bWVudEFtb3VudCAqIHRvdGFsUGF5bWVudHM7XG4gICAgY29uc3QgdG90YWxJbnRlcmVzdFBhaWQgPSB0b3RhbFBhaWQgLSB0b3RhbE1vcnRnYWdlO1xuXG4gICAgY29uc3QgYW1vcnRpemF0aW9uU2NoZWR1bGUgPSB0aGlzLmNhbGN1bGF0ZUFtb3J0aXphdGlvblNjaGVkdWxlKFxuICAgICAgdG90YWxNb3J0Z2FnZSxcbiAgICAgIHBlcmlvZGljUmF0ZSxcbiAgICAgIHBheW1lbnRBbW91bnQsXG4gICAgICB0b3RhbFBheW1lbnRzLFxuICAgICAgYW1vcnRpemF0aW9uWWVhcnMsXG4gICAgICBwYXltZW50c1BlclllYXJcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxvYW5BbW91bnQ6IGxvYW5BbW91bnQsXG4gICAgICBpbnN1cmFuY2VQcmVtaXVtOiBpbnN1cmFuY2VQcmVtaXVtLFxuICAgICAgdG90YWxNb3J0Z2FnZTogdG90YWxNb3J0Z2FnZSxcbiAgICAgIHBheW1lbnRBbW91bnQ6IHBheW1lbnRBbW91bnQsXG4gICAgICB0b3RhbEludGVyZXN0UGFpZDogdG90YWxJbnRlcmVzdFBhaWQsXG4gICAgICB0b3RhbFBhaWQ6IHRvdGFsUGFpZCxcbiAgICAgIGFtb3J0aXphdGlvblNjaGVkdWxlOiBhbW9ydGl6YXRpb25TY2hlZHVsZVxuICAgIH07XG4gIH1cblxuICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgSGVscGVyIE1ldGhvZHNcbiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVBbW9ydGl6YXRpb25TY2hlZHVsZShcbiAgICBwcmluY2lwYWw6IG51bWJlcixcbiAgICBwZXJpb2RpY1JhdGU6IG51bWJlcixcbiAgICBwYXltZW50QW1vdW50OiBudW1iZXIsXG4gICAgdG90YWxQYXltZW50czogbnVtYmVyLFxuICAgIGFtb3J0aXphdGlvblllYXJzOiBudW1iZXIsXG4gICAgcGF5bWVudHNQZXJZZWFyOiBudW1iZXJcbiAgKTogQW1vcnRpemF0aW9uU2NoZWR1bGVJdGVtW10ge1xuICAgIGNvbnN0IHNjaGVkdWxlOiBBbW9ydGl6YXRpb25TY2hlZHVsZUl0ZW1bXSA9IFtdO1xuICAgIGxldCBiYWxhbmNlID0gcHJpbmNpcGFsO1xuXG4gICAgZm9yIChsZXQgeWVhciA9IDE7IHllYXIgPD0gYW1vcnRpemF0aW9uWWVhcnM7IHllYXIrKykge1xuICAgICAgbGV0IHllYXJseVByaW5jaXBhbCA9IDA7XG4gICAgICBsZXQgeWVhcmx5SW50ZXJlc3QgPSAwO1xuXG4gICAgICBjb25zdCBwYXltZW50c0luWWVhciA9IE1hdGgubWluKHBheW1lbnRzUGVyWWVhciwgdG90YWxQYXltZW50cyAtICh5ZWFyIC0gMSkgKiBwYXltZW50c1BlclllYXIpO1xuXG4gICAgICBmb3IgKGxldCBwYXltZW50ID0gMTsgcGF5bWVudCA8PSBwYXltZW50c0luWWVhcjsgcGF5bWVudCsrKSB7XG4gICAgICAgIGNvbnN0IGludGVyZXN0UGF5bWVudCA9IGJhbGFuY2UgKiBwZXJpb2RpY1JhdGU7XG4gICAgICAgIGNvbnN0IHByaW5jaXBhbFBheW1lbnQgPSBwYXltZW50QW1vdW50IC0gaW50ZXJlc3RQYXltZW50O1xuXG4gICAgICAgIHllYXJseUludGVyZXN0ICs9IGludGVyZXN0UGF5bWVudDtcbiAgICAgICAgeWVhcmx5UHJpbmNpcGFsICs9IHByaW5jaXBhbFBheW1lbnQ7XG4gICAgICAgIGJhbGFuY2UgLT0gcHJpbmNpcGFsUGF5bWVudDtcbiAgICAgIH1cblxuICAgICAgc2NoZWR1bGUucHVzaCh7XG4gICAgICAgIHllYXIsXG4gICAgICAgIHByaW5jaXBhbDogeWVhcmx5UHJpbmNpcGFsLFxuICAgICAgICBpbnRlcmVzdDogeWVhcmx5SW50ZXJlc3QsXG4gICAgICAgIGJhbGFuY2U6IE1hdGgubWF4KDAsIGJhbGFuY2UpXG4gICAgICB9KTtcblxuICAgICAgaWYgKGJhbGFuY2UgPD0gMCkgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNjaGVkdWxlO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0Q2FuYWRpYW5SYXRlKFxuICAgIGFubnVhbFJhdGU6IG51bWJlcixcbiAgICBjb21wb3VuZGluZzogJ1NFTUlfQU5OVUFMJyB8ICdBTk5VQUwnIHwgJ01PTlRITFknLFxuICAgIHBheW1lbnRzUGVyWWVhcjogbnVtYmVyXG4gICk6IG51bWJlciB7XG5cbiAgICBpZiAoY29tcG91bmRpbmcgIT09ICdTRU1JX0FOTlVBTCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignT25seSBDYW5hZGlhbiBzZW1pLWFubnVhbCBjb21wb3VuZGluZyBzdXBwb3J0ZWQnKTtcbiAgICB9XG5cbiAgICAvLyBDYW5hZGlhbiBzdGFuZGFyZCBjb252ZXJzaW9uXG4gICAgY29uc3Qgc2VtaUFubnVhbFJhdGUgPSBhbm51YWxSYXRlIC8gMjtcbiAgICBjb25zdCBlZmZlY3RpdmVBbm51YWxSYXRlID0gTWF0aC5wb3coMSArIHNlbWlBbm51YWxSYXRlLCAyKSAtIDE7XG5cbiAgICByZXR1cm4gTWF0aC5wb3coMSArIGVmZmVjdGl2ZUFubnVhbFJhdGUsIDEgLyBwYXltZW50c1BlclllYXIpIC0gMTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlUGF5bWVudChwcmluY2lwYWw6IG51bWJlciwgcmF0ZTogbnVtYmVyLCBwZXJpb2RzOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmIChyYXRlID09PSAwKSB7XG4gICAgICByZXR1cm4gcHJpbmNpcGFsIC8gcGVyaW9kcztcbiAgICB9XG5cbiAgICByZXR1cm4gcHJpbmNpcGFsICpcbiAgICAgIChyYXRlICogTWF0aC5wb3coMSArIHJhdGUsIHBlcmlvZHMpKSAvXG4gICAgICAoTWF0aC5wb3coMSArIHJhdGUsIHBlcmlvZHMpIC0gMSk7XG4gIH1cbn1cbiJdfQ==
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FuYWRhTW9ydGdhZ2VTZXJ2aWNlSW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb3J0Z2FnZS9jYW5hZGEvQ2FuYWRhTW9ydGdhZ2VTZXJ2aWNlSW1wbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFRQSxNQUFhLHlCQUF5QjtJQUU3QixTQUFTLENBQUMsS0FBK0IsRUFBRSxLQUFvQjtRQUVwRSxNQUFNLEVBQ0osYUFBYSxFQUNiLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2pCLEdBQUcsS0FBSyxDQUFDO1FBRVYsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUM7UUFFOUM7O3lDQUVpQztRQUVqQyxNQUFNLFVBQVUsR0FBRyxhQUFhLEdBQUcsV0FBVyxDQUFDO1FBQy9DLElBQUksVUFBVSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsTUFBTSxHQUFHLEdBQUcsVUFBVSxHQUFHLGFBQWEsQ0FBQztRQUV2Qzs7eUNBRWlDO1FBRWpDLElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBRXpCLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ25ELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZO2lCQUNyRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRTlCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1lBQ3pELENBQUM7WUFFRCxnQkFBZ0IsR0FBRyxVQUFVLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztRQUNuRCxDQUFDO1FB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QztJQUN0QyxDQUFDO0NBQ0Y7QUF6TEQsOERBeUxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2FuYWRhTW9ydGdhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9DYW5hZGFNb3J0Z2FnZVNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgTW9ydGdhZ2VSdWxlcyxcbiAgTW9ydGdhZ2VDYWxjdWxhdGlvbklucHV0LFxuICBNb3J0Z2FnZUNhbGN1bGF0aW9uUmVzdWx0LFxuICBBbW9ydGl6YXRpb25TY2hlZHVsZUl0ZW1cbn0gZnJvbSAnLi9kb21haW4vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgQ2FuYWRhTW9ydGdhZ2VTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIENhbmFkYU1vcnRnYWdlU2VydmljZSB7XG5cbiAgcHVibGljIGNhbGN1bGF0ZShpbnB1dDogTW9ydGdhZ2VDYWxjdWxhdGlvbklucHV0LCBydWxlczogTW9ydGdhZ2VSdWxlcyk6IE1vcnRnYWdlQ2FsY3VsYXRpb25SZXN1bHQge1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvcGVydHlQcmljZSxcbiAgICAgIGRvd25QYXltZW50LFxuICAgICAgYW1vcnRpemF0aW9uWWVhcnMsXG4gICAgICBwYXltZW50RnJlcXVlbmN5XG4gICAgfSA9IGlucHV0O1xuXG4gICAgY29uc3QgaW50ZXJlc3RSYXRlID0gaW5wdXQuaW50ZXJlc3RSYXRlIC8gMTAwO1xuXG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAxLiBMb2FuIEFtb3VudCAmIExUVlxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4gICAgY29uc3QgbG9hbkFtb3VudCA9IHByb3BlcnR5UHJpY2UgLSBkb3duUGF5bWVudDtcbiAgICBpZiAobG9hbkFtb3VudCA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbG9hbiBhbW91bnQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBsdHYgPSBsb2FuQW1vdW50IC8gcHJvcGVydHlQcmljZTtcblxuICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgMi4gQ01IQyBJbnN1cmFuY2VcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuICAgIGxldCBpbnN1cmFuY2VQcmVtaXVtID0gMDtcblxuICAgIGlmIChsdHYgPiBydWxlcy5tb3J0Z2FnZUluc3VyYW5jZS5yZXF1aXJlZEJlbG93THR2KSB7XG4gICAgICBjb25zdCBwcmVtaXVtUnVsZSA9IHJ1bGVzLm1vcnRnYWdlSW5zdXJhbmNlLnByZW1pdW1SYXRlc1xuICAgICAgICAuZmluZChyID0+IGx0diA8PSByLm1heEx0dik7XG5cbiAgICAgIGlmICghcHJlbWl1bVJ1bGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdMVFYgZXhjZWVkcyBtYXhpbXVtIGluc3VyYWJsZSBsaW1pdCcpO1xuICAgICAgfVxuXG4gICAgICBpbnN1cmFuY2VQcmVtaXVtID0gbG9hbkFtb3VudCAqIHByZW1pdW1SdWxlLnJhdGU7XG4gICAgfVxuXG4gICAgY29uc3QgdG90YWxNb3J0Z2FnZSA9IHJ1bGVzLm1vcnRnYWdlSW5zdXJhbmNlLnByZW1pdW1BZGRlZFRvTG9hblxuICAgICAgPyBsb2FuQW1vdW50ICsgaW5zdXJhbmNlUHJlbWl1bVxuICAgICAgOiBsb2FuQW1vdW50O1xuXG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAzLiBJbnRlcmVzdCBSYXRlIENvbnZlcnNpb25cbiAgICAgICAoQ2FuYWRhIHNlbWktYW5udWFsIGNvbXBvdW5kaW5nKVxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4gICAgY29uc3QgcGVyaW9kaWNSYXRlID0gdGhpcy5jb252ZXJ0Q2FuYWRpYW5SYXRlKFxuICAgICAgaW50ZXJlc3RSYXRlLFxuICAgICAgcnVsZXMuaW50ZXJlc3QuY29tcG91bmRpbmcsXG4gICAgICBydWxlcy5wYXltZW50RnJlcXVlbmN5UnVsZXNbcGF5bWVudEZyZXF1ZW5jeV0ucGF5bWVudHNQZXJZZWFyXG4gICAgKTtcblxuICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgNC4gUGF5bWVudCBGcmVxdWVuY3lcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuICAgIGNvbnN0IGZyZXF1ZW5jeVJ1bGUgPSBydWxlcy5wYXltZW50RnJlcXVlbmN5UnVsZXNbcGF5bWVudEZyZXF1ZW5jeV07XG4gICAgY29uc3QgcGF5bWVudHNQZXJZZWFyID0gZnJlcXVlbmN5UnVsZS5wYXltZW50c1BlclllYXI7XG4gICAgY29uc3QgdG90YWxQYXltZW50cyA9IGFtb3J0aXphdGlvblllYXJzICogcGF5bWVudHNQZXJZZWFyO1xuXG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICA1LiBNb3J0Z2FnZSBQYXltZW50IEZvcm11bGFcbiAgICAgICBQID0gTCDDlyBbIHIoMStyKV5uIF0gLyBbICgxK3IpXm4g4oiSIDEgXVxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4gICAgY29uc3QgcGF5bWVudEFtb3VudCA9IHRoaXMuY2FsY3VsYXRlUGF5bWVudChcbiAgICAgIHRvdGFsTW9ydGdhZ2UsXG4gICAgICBwZXJpb2RpY1JhdGUsXG4gICAgICB0b3RhbFBheW1lbnRzXG4gICAgKTtcblxuICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgNi4gVG90YWxzXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbiAgICBjb25zdCB0b3RhbFBhaWQgPSBwYXltZW50QW1vdW50ICogdG90YWxQYXltZW50cztcbiAgICBjb25zdCB0b3RhbEludGVyZXN0UGFpZCA9IHRvdGFsUGFpZCAtIHRvdGFsTW9ydGdhZ2U7XG5cbiAgICBjb25zdCBhbW9ydGl6YXRpb25TY2hlZHVsZSA9IHRoaXMuY2FsY3VsYXRlQW1vcnRpemF0aW9uU2NoZWR1bGUoXG4gICAgICB0b3RhbE1vcnRnYWdlLFxuICAgICAgcGVyaW9kaWNSYXRlLFxuICAgICAgcGF5bWVudEFtb3VudCxcbiAgICAgIHRvdGFsUGF5bWVudHMsXG4gICAgICBhbW9ydGl6YXRpb25ZZWFycyxcbiAgICAgIHBheW1lbnRzUGVyWWVhclxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbG9hbkFtb3VudDogbG9hbkFtb3VudCxcbiAgICAgIGluc3VyYW5jZVByZW1pdW06IGluc3VyYW5jZVByZW1pdW0sXG4gICAgICB0b3RhbE1vcnRnYWdlOiB0b3RhbE1vcnRnYWdlLFxuICAgICAgbW9udGhseVBheW1lbnRBbW91bnQ6IHBheW1lbnRBbW91bnQsXG4gICAgICB0b3RhbEludGVyZXN0UGFpZDogdG90YWxJbnRlcmVzdFBhaWQsXG4gICAgICB0b3RhbFBhaWQ6IHRvdGFsUGFpZCxcbiAgICAgIGFtb3J0aXphdGlvblNjaGVkdWxlOiBhbW9ydGl6YXRpb25TY2hlZHVsZSxcbiAgICAgIG90aGVyRmVlczoge1xuICAgICAgICBub3RhcnlGZWVzOiB7XG4gICAgICAgICAgICB2YWx1ZTogMCxcbiAgICAgICAgICAgIGxhYmVsOiAnTk9UQVJZX0ZFRVMnXG4gICAgICAgIH0sXG4gICAgICAgIGJhbmtGZWVzOiB7XG4gICAgICAgICAgICB2YWx1ZTogMCxcbiAgICAgICAgICAgIGxhYmVsOiAnQkFOS19GRUVTJ1xuICAgICAgICB9LFxuICAgICAgICBtb250aGx5SW5zdXJhbmNlRmVlczoge1xuICAgICAgICAgICAgdmFsdWU6IGluc3VyYW5jZVByZW1pdW0sXG4gICAgICAgICAgICBsYWJlbDogJ0lOU1VSQU5DRV9QUkVNSVVNJ1xuICAgICAgICB9XG4gICAgfVxuICAgIH07XG4gIH1cblxuICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgSGVscGVyIE1ldGhvZHNcbiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVBbW9ydGl6YXRpb25TY2hlZHVsZShcbiAgICBwcmluY2lwYWw6IG51bWJlcixcbiAgICBwZXJpb2RpY1JhdGU6IG51bWJlcixcbiAgICBwYXltZW50QW1vdW50OiBudW1iZXIsXG4gICAgdG90YWxQYXltZW50czogbnVtYmVyLFxuICAgIGFtb3J0aXphdGlvblllYXJzOiBudW1iZXIsXG4gICAgcGF5bWVudHNQZXJZZWFyOiBudW1iZXJcbiAgKTogQW1vcnRpemF0aW9uU2NoZWR1bGVJdGVtW10ge1xuICAgIGNvbnN0IHNjaGVkdWxlOiBBbW9ydGl6YXRpb25TY2hlZHVsZUl0ZW1bXSA9IFtdO1xuICAgIGxldCBiYWxhbmNlID0gcHJpbmNpcGFsO1xuXG4gICAgZm9yIChsZXQgeWVhciA9IDE7IHllYXIgPD0gYW1vcnRpemF0aW9uWWVhcnM7IHllYXIrKykge1xuICAgICAgbGV0IHllYXJseVByaW5jaXBhbCA9IDA7XG4gICAgICBsZXQgeWVhcmx5SW50ZXJlc3QgPSAwO1xuXG4gICAgICBjb25zdCBwYXltZW50c0luWWVhciA9IE1hdGgubWluKHBheW1lbnRzUGVyWWVhciwgdG90YWxQYXltZW50cyAtICh5ZWFyIC0gMSkgKiBwYXltZW50c1BlclllYXIpO1xuXG4gICAgICBmb3IgKGxldCBwYXltZW50ID0gMTsgcGF5bWVudCA8PSBwYXltZW50c0luWWVhcjsgcGF5bWVudCsrKSB7XG4gICAgICAgIGNvbnN0IGludGVyZXN0UGF5bWVudCA9IGJhbGFuY2UgKiBwZXJpb2RpY1JhdGU7XG4gICAgICAgIGNvbnN0IHByaW5jaXBhbFBheW1lbnQgPSBwYXltZW50QW1vdW50IC0gaW50ZXJlc3RQYXltZW50O1xuXG4gICAgICAgIHllYXJseUludGVyZXN0ICs9IGludGVyZXN0UGF5bWVudDtcbiAgICAgICAgeWVhcmx5UHJpbmNpcGFsICs9IHByaW5jaXBhbFBheW1lbnQ7XG4gICAgICAgIGJhbGFuY2UgLT0gcHJpbmNpcGFsUGF5bWVudDtcbiAgICAgIH1cblxuICAgICAgc2NoZWR1bGUucHVzaCh7XG4gICAgICAgIHllYXIsXG4gICAgICAgIHByaW5jaXBhbDogeWVhcmx5UHJpbmNpcGFsLFxuICAgICAgICBpbnRlcmVzdDogeWVhcmx5SW50ZXJlc3QsXG4gICAgICAgIGJhbGFuY2U6IE1hdGgubWF4KDAsIGJhbGFuY2UpXG4gICAgICB9KTtcblxuICAgICAgaWYgKGJhbGFuY2UgPD0gMCkgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNjaGVkdWxlO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0Q2FuYWRpYW5SYXRlKFxuICAgIGFubnVhbFJhdGU6IG51bWJlcixcbiAgICBjb21wb3VuZGluZzogJ1NFTUlfQU5OVUFMJyB8ICdBTk5VQUwnIHwgJ01PTlRITFknLFxuICAgIHBheW1lbnRzUGVyWWVhcjogbnVtYmVyXG4gICk6IG51bWJlciB7XG5cbiAgICBpZiAoY29tcG91bmRpbmcgIT09ICdTRU1JX0FOTlVBTCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignT25seSBDYW5hZGlhbiBzZW1pLWFubnVhbCBjb21wb3VuZGluZyBzdXBwb3J0ZWQnKTtcbiAgICB9XG5cbiAgICAvLyBDYW5hZGlhbiBzdGFuZGFyZCBjb252ZXJzaW9uXG4gICAgY29uc3Qgc2VtaUFubnVhbFJhdGUgPSBhbm51YWxSYXRlIC8gMjtcbiAgICBjb25zdCBlZmZlY3RpdmVBbm51YWxSYXRlID0gTWF0aC5wb3coMSArIHNlbWlBbm51YWxSYXRlLCAyKSAtIDE7XG5cbiAgICByZXR1cm4gTWF0aC5wb3coMSArIGVmZmVjdGl2ZUFubnVhbFJhdGUsIDEgLyBwYXltZW50c1BlclllYXIpIC0gMTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlUGF5bWVudChwcmluY2lwYWw6IG51bWJlciwgcmF0ZTogbnVtYmVyLCBwZXJpb2RzOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmIChyYXRlID09PSAwKSB7XG4gICAgICByZXR1cm4gcHJpbmNpcGFsIC8gcGVyaW9kcztcbiAgICB9XG5cbiAgICByZXR1cm4gcHJpbmNpcGFsICpcbiAgICAgIChyYXRlICogTWF0aC5wb3coMSArIHJhdGUsIHBlcmlvZHMpKSAvXG4gICAgICAoTWF0aC5wb3coMSArIHJhdGUsIHBlcmlvZHMpIC0gMSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9ydGdhZ2UvY2FuYWRhL2RvbWFpbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUnVsZU1ldGEgfSBmcm9tIFwiLi4vLi4vLi4vc2hhcmVkL2RvbWFpbi90eXBlc1wiO1xuaW1wb3J0IHsgT3RoZXJGZWVzIH0gZnJvbSBcIi4uLy4uL2RvbWFpbi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJ1bGVJbnB1dERlZmluaXRpb24ge1xuICAgIHR5cGU6ICdudW1iZXInIHwgJ3N0cmluZyc7XG4gICAgbWluPzogbnVtYmVyO1xuICAgIG1heD86IG51bWJlcjtcbiAgICBlbnVtPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVsZUlucHV0cyB7XG4gICAgcHJvcGVydHlQcmljZTogUnVsZUlucHV0RGVmaW5pdGlvbjtcbiAgICBkb3duUGF5bWVudDogUnVsZUlucHV0RGVmaW5pdGlvbjtcbiAgICBpbnRlcmVzdFJhdGU6IFJ1bGVJbnB1dERlZmluaXRpb247XG4gICAgYW1vcnRpemF0aW9uWWVhcnM6IFJ1bGVJbnB1dERlZmluaXRpb247XG4gICAgcGF5bWVudEZyZXF1ZW5jeTogUnVsZUlucHV0RGVmaW5pdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSdWxlT3V0cHV0cyB7XG4gICAgbG9hbkFtb3VudDogJ251bWJlcic7XG4gICAgaW5zdXJhbmNlUHJlbWl1bTogJ251bWJlcic7XG4gICAgdG90YWxNb3J0Z2FnZTogJ251bWJlcic7XG4gICAgcGF5bWVudEFtb3VudDogJ251bWJlcic7XG4gICAgdG90YWxJbnRlcmVzdFBhaWQ6ICdudW1iZXInO1xuICAgIHRvdGFsUGFpZDogJ251bWJlcic7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9hbkNvbnN0cmFpbnRzIHtcbiAgICBtYXhBbW9ydGl6YXRpb25ZZWFyczogbnVtYmVyO1xuICAgIGluc3VyZWRNYXhBbW9ydGl6YXRpb25ZZWFyczogbnVtYmVyO1xuICAgIG1pbkRvd25QYXltZW50OiB7XG4gICAgICAgIHVwVG81MDBrOiBudW1iZXI7XG4gICAgICAgIGFib3ZlNTAwazogbnVtYmVyO1xuICAgIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9ydGdhZ2VJbnN1cmFuY2VSYXRlIHtcbiAgICBtYXhMdHY6IG51bWJlcjtcbiAgICByYXRlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9ydGdhZ2VJbnN1cmFuY2VSdWxlcyB7XG4gICAgcmVxdWlyZWRCZWxvd0x0djogbnVtYmVyO1xuICAgIHByZW1pdW1SYXRlczogTW9ydGdhZ2VJbnN1cmFuY2VSYXRlW107XG4gICAgcHJlbWl1bUFkZGVkVG9Mb2FuOiBib29sZWFuO1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9ydGdhZ2VSdWxlcyB7XG4gICAgbG9hbkNvbnN0cmFpbnRzOiBMb2FuQ29uc3RyYWludHM7XG4gICAgbW9ydGdhZ2VJbnN1cmFuY2U6IE1vcnRnYWdlSW5zdXJhbmNlUnVsZXM7XG4gICAgaW50ZXJlc3Q6IEludGVyZXN0UnVsZXM7XG4gICAgcGF5bWVudEZyZXF1ZW5jeVJ1bGVzOiBQYXltZW50RnJlcXVlbmN5UnVsZXM7XG4gICAgc3RyZXNzVGVzdDogU3RyZXNzVGVzdFJ1bGVzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVyZXN0UnVsZXMge1xuICAgIGNvbXBvdW5kaW5nOiAnU0VNSV9BTk5VQUwnIHwgJ0FOTlVBTCcgfCAnTU9OVEhMWSc7XG4gICAgY29udmVyc2lvbkZvcm11bGE6ICdDQU5BREFfU1RBTkRBUkQnIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBheW1lbnRGcmVxdWVuY3lSdWxlIHtcbiAgICBwYXltZW50c1BlclllYXI6IG51bWJlcjtcbiAgICBhY2NlbGVyYXRpb24/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBheW1lbnRGcmVxdWVuY3lSdWxlcyB7XG4gICAgTU9OVEhMWTogUGF5bWVudEZyZXF1ZW5jeVJ1bGU7XG4gICAgQklfV0VFS0xZOiBQYXltZW50RnJlcXVlbmN5UnVsZTtcbiAgICBBQ0NFTEVSQVRFRF9CSV9XRUVLTFk6IFBheW1lbnRGcmVxdWVuY3lSdWxlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0cmVzc1Rlc3RSdWxlcyB7XG4gICAgYXBwbHk6IGJvb2xlYW47XG4gICAgbWluaW11bVJhdGVCdWZmZXI6IG51bWJlcjtcbiAgICBtaW5pbXVtUXVhbGlmeWluZ1JhdGU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb3J0Z2FnZVJ1bGVTZXQge1xuICAgIG1ldGE6IFJ1bGVNZXRhO1xuICAgIGlucHV0czogUnVsZUlucHV0cztcbiAgICBydWxlczogTW9ydGdhZ2VSdWxlcztcbiAgICBvdXRwdXRzOiBSdWxlT3V0cHV0cztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb3J0Z2FnZUNhbGN1bGF0aW9uSW5wdXQge1xuICBwcm9wZXJ0eVByaWNlOiBudW1iZXI7XG4gIGRvd25QYXltZW50OiBudW1iZXI7XG4gIGludGVyZXN0UmF0ZTogbnVtYmVyOyAvLyBBbm51YWwgbm9taW5hbCByYXRlIChlLmcuIDAuMDUyKVxuICBhbW9ydGl6YXRpb25ZZWFyczogbnVtYmVyO1xuICBwYXltZW50RnJlcXVlbmN5OiAnTU9OVEhMWScgfCAnQklfV0VFS0xZJyB8ICdBQ0NFTEVSQVRFRF9CSV9XRUVLTFknO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFtb3J0aXphdGlvblNjaGVkdWxlSXRlbSB7XG4gIHllYXI6IG51bWJlcjtcbiAgcHJpbmNpcGFsOiBudW1iZXI7XG4gIGludGVyZXN0OiBudW1iZXI7XG4gIGJhbGFuY2U6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb3J0Z2FnZUNhbGN1bGF0aW9uUmVzdWx0IHtcbiAgbG9hbkFtb3VudDogbnVtYmVyO1xuICBpbnN1cmFuY2VQcmVtaXVtOiBudW1iZXI7XG4gIHRvdGFsTW9ydGdhZ2U6IG51bWJlcjtcbiAgbW9udGhseVBheW1lbnRBbW91bnQ6IG51bWJlcjtcbiAgdG90YWxJbnRlcmVzdFBhaWQ6IG51bWJlcjtcbiAgdG90YWxQYWlkOiBudW1iZXI7XG4gIGFtb3J0aXphdGlvblNjaGVkdWxlOiBBbW9ydGl6YXRpb25TY2hlZHVsZUl0ZW1bXTtcbiAgb3RoZXJGZWVzOiBPdGhlckZlZXM7XG59XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9ydGdhZ2UvZG9tYWluL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIE90aGVyRmVlcyB7XG4gICAgbm90YXJ5RmVlczoge1xuICAgICAgICB2YWx1ZTogbnVtYmVyO1xuICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgIH07XG4gICAgYmFua0ZlZXM6IHtcbiAgICAgICAgdmFsdWU6IG51bWJlcjtcbiAgICAgICAgbGFiZWw6IHN0cmluZztcbiAgICB9O1xuICAgIG1vbnRobHlJbnN1cmFuY2VGZWVzOiB7XG4gICAgICAgIHZhbHVlOiBudW1iZXI7XG4gICAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgfTtcbn0iXX0=
|
|
@@ -39,27 +39,55 @@ class FranceMortgageServiceImpl {
|
|
|
39
39
|
maxMonthlyPayment -= monthlyInsuranceCost;
|
|
40
40
|
}
|
|
41
41
|
const maxLoanAmount = this.calculateLoanAmount(maxMonthlyPayment, stressedRate, loanDurationYears);
|
|
42
|
-
const
|
|
42
|
+
const monthlyPayment = this.calculateMonthlyPayment(requiredLoanAmount, this._input.annualInterestRate, loanDurationYears);
|
|
43
|
+
const totalPaid = monthlyPayment * loanDurationYears * 12;
|
|
44
|
+
const totalInterestPaid = totalPaid - requiredLoanAmount;
|
|
45
|
+
const amortizationSchedule = this.calculateAmortizationSchedule(requiredLoanAmount, this._input.annualInterestRate, loanDurationYears, monthlyPayment);
|
|
43
46
|
return {
|
|
47
|
+
loanAmount: requiredLoanAmount,
|
|
48
|
+
totalPaid,
|
|
49
|
+
totalInterestPaid,
|
|
50
|
+
monthlyPayment,
|
|
51
|
+
requiredLoanAmount,
|
|
44
52
|
maxMonthlyPayment,
|
|
45
53
|
maxLoanAmount,
|
|
46
54
|
totalProjectCost,
|
|
47
|
-
requiredLoanAmount,
|
|
48
55
|
loanDurationYears,
|
|
49
56
|
debtRatio: debtRatio,
|
|
50
57
|
monthlyInsuranceCost,
|
|
51
58
|
isEligible: maxLoanAmount >= requiredLoanAmount,
|
|
52
|
-
amortizationSchedule
|
|
59
|
+
amortizationSchedule,
|
|
60
|
+
otherFees: {
|
|
61
|
+
notaryFees: {
|
|
62
|
+
value: notaryFees,
|
|
63
|
+
label: 'NOTARY_FEES'
|
|
64
|
+
},
|
|
65
|
+
bankFees: {
|
|
66
|
+
value: bankFees,
|
|
67
|
+
label: 'BANK_FEES'
|
|
68
|
+
},
|
|
69
|
+
monthlyInsuranceFees: {
|
|
70
|
+
value: monthlyInsuranceCost,
|
|
71
|
+
label: 'MONTHLY_INSURANCE_FEES'
|
|
72
|
+
}
|
|
73
|
+
}
|
|
53
74
|
};
|
|
54
75
|
}
|
|
55
|
-
|
|
76
|
+
calculateMonthlyPayment(principal, annualRate, years) {
|
|
77
|
+
const monthlyRate = annualRate / 100 / 12;
|
|
78
|
+
const payments = years * 12;
|
|
79
|
+
if (monthlyRate === 0) {
|
|
80
|
+
return payments === 0 ? 0 : principal / payments;
|
|
81
|
+
}
|
|
82
|
+
return (principal *
|
|
83
|
+
(monthlyRate / (1 - Math.pow(1 + monthlyRate, -payments))));
|
|
84
|
+
}
|
|
85
|
+
calculateAmortizationSchedule(loanAmount, annualRate, years, monthlyPayment) {
|
|
56
86
|
const monthlyRate = annualRate / 100 / 12;
|
|
57
87
|
const totalPayments = years * 12;
|
|
58
|
-
if (monthlyRate === 0 || loanAmount <= 0) {
|
|
88
|
+
if (monthlyRate === 0 || loanAmount <= 0 || monthlyPayment <= 0) {
|
|
59
89
|
return [];
|
|
60
90
|
}
|
|
61
|
-
const monthlyPayment = (loanAmount * monthlyRate) /
|
|
62
|
-
(1 - Math.pow(1 + monthlyRate, -totalPayments));
|
|
63
91
|
const schedule = [];
|
|
64
92
|
let balance = loanAmount;
|
|
65
93
|
for (let year = 1; year <= years; year++) {
|
|
@@ -102,10 +130,28 @@ class FranceMortgageServiceImpl {
|
|
|
102
130
|
loanDurationYears: 0,
|
|
103
131
|
debtRatio: 0,
|
|
104
132
|
monthlyInsuranceCost: 0,
|
|
133
|
+
loanAmount: 0,
|
|
134
|
+
monthlyPayment: 0,
|
|
135
|
+
totalInterestPaid: 0,
|
|
136
|
+
totalPaid: 0,
|
|
105
137
|
isEligible: false,
|
|
106
|
-
amortizationSchedule: []
|
|
138
|
+
amortizationSchedule: [],
|
|
139
|
+
otherFees: {
|
|
140
|
+
notaryFees: {
|
|
141
|
+
value: 0,
|
|
142
|
+
label: 'NOTARY_FEES'
|
|
143
|
+
},
|
|
144
|
+
bankFees: {
|
|
145
|
+
value: 0,
|
|
146
|
+
label: 'BANK_FEES'
|
|
147
|
+
},
|
|
148
|
+
monthlyInsuranceFees: {
|
|
149
|
+
value: 0,
|
|
150
|
+
label: 'MONTHLY_INSURANCE_FEES'
|
|
151
|
+
}
|
|
152
|
+
}
|
|
107
153
|
};
|
|
108
154
|
}
|
|
109
155
|
}
|
|
110
156
|
exports.FranceMortgageServiceImpl = FranceMortgageServiceImpl;
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnJhbmNlTW9ydGdhZ2VTZXJ2aWNlSW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb3J0Z2FnZS9mcmFuY2UvRnJhbmNlTW9ydGdhZ2VTZXJ2aWNlSW1wbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFHQSxNQUFhLHlCQUF5QjtJQUlsQyxZQUFZLEtBQW9CLEVBQUUsS0FBb0I7UUFDbEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVELFNBQVM7UUFFTCxJQUNJLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCO1lBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYztZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0I7WUFDbkQsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUNqQyxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FDWCxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxJQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU87WUFDM0YsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFlBQVk7WUFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO1FBRW5DLE1BQU0saUJBQWlCLEdBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTztZQUM1RixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FB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LEVBQUUsVUFBa0IsRUFBRSxLQUFhO1FBQ2pGLE1BQU0sV0FBVyxHQUFHLFVBQVUsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQzFDLE1BQU0sUUFBUSxHQUFHLEtBQUssR0FBRyxFQUFFLENBQUM7UUFFNUIsSUFBSSxXQUFXLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDcEIsT0FBTyxjQUFjLEdBQUcsUUFBUSxDQUFDO1FBQ3JDLENBQUM7UUFFRCxPQUFPLENBQ0gsY0FBYztZQUNkLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FDN0QsQ0FBQztJQUNOLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxLQUFvQjtRQUN6QyxPQUFPO1lBQ0gsaUJBQWlCLEVBQUUsQ0FBQztZQUNwQixhQUFhLEVBQUUsQ0FBQztZQUNoQixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsYUFBYTtZQUNyQyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxXQUFXO1lBQzNELGlCQUFpQixFQUFFLENBQUM7WUFDcEIsU0FBUyxFQUFFLENBQUM7WUFDWixvQkFBb0IsRUFBRSxDQUFDO1lBQ3ZCLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLG9CQUFvQixFQUFFLEVBQUU7U0FDM0IsQ0FBQztJQUNOLENBQUM7Q0FDSjtBQTNKRCw4REEySkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGcmFuY2VNb3J0Z2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLic7XG5pbXBvcnQgeyBNb3J0Z2FnZVJ1bGVzLCBNb3J0Z2FnZUlucHV0LCBNb3J0Z2FnZU91dHB1dCwgQW1vcnRpemF0aW9uU2NoZWR1bGVJdGVtIH0gZnJvbSAnLi9kb21haW4vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgRnJhbmNlTW9ydGdhZ2VTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIEZyYW5jZU1vcnRnYWdlU2VydmljZSB7XG4gICAgcHJpdmF0ZSBfaW5wdXQ6IE1vcnRnYWdlSW5wdXQ7XG4gICAgcHJpdmF0ZSBfcnVsZXM6IE1vcnRnYWdlUnVsZXM7XG5cbiAgICBjb25zdHJ1Y3RvcihpbnB1dDogTW9ydGdhZ2VJbnB1dCwgcnVsZXM6IE1vcnRnYWdlUnVsZXMpIHtcbiAgICAgICAgdGhpcy5faW5wdXQgPSBpbnB1dDtcbiAgICAgICAgdGhpcy5fcnVsZXMgPSBydWxlcztcbiAgICB9XG5cbiAgICBjYWxjdWxhdGUoKTogTW9ydGdhZ2VPdXRwdXQge1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuX2lucHV0LmlzRmlyc3RUaW1lQnV5ZXIgJiZcbiAgICAgICAgICAgIHRoaXMuX3J1bGVzLmZpcnN0VGltZUJ1eWVyICYmXG4gICAgICAgICAgICB0aGlzLl9ydWxlcy5maXJzdFRpbWVCdXllci5yZXF1aXJlc1ByaW1hcnlSZXNpZGVuY2UgJiZcbiAgICAgICAgICAgICF0aGlzLl9pbnB1dC5pc1ByaW1hcnlSZXNpZGVuY2VcbiAgICAgICAgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmluZWxpZ2libGVSZXN1bHQodGhpcy5faW5wdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGVidFJhdGlvID1cbiAgICAgICAgICAgIHRoaXMuX2lucHV0LmlzRmlyc3RUaW1lQnV5ZXIgJiYgdGhpcy5fcnVsZXMuZmlyc3RUaW1lQnV5ZXIgJiZ0aGlzLl9ydWxlcy5maXJzdFRpbWVCdXllci5lbmFibGVkXG4gICAgICAgICAgICAgICAgPyB0aGlzLl9ydWxlcy5maXJzdFRpbWVCdXllci5tYXhEZWJ0UmF0aW9cbiAgICAgICAgICAgICAgICA6IHRoaXMuX3J1bGVzLm1heERlYnRSYXRpbztcblxuICAgICAgICBjb25zdCBsb2FuRHVyYXRpb25ZZWFycyA9XG4gICAgICAgICAgICB0aGlzLl9pbnB1dC5pc0ZpcnN0VGltZUJ1eWVyICYmIHRoaXMuX3J1bGVzLmZpcnN0VGltZUJ1eWVyICYmIHRoaXMuX3J1bGVzLmZpcnN0VGltZUJ1eWVyLmVuYWJsZWRcbiAgICAgICAgICAgICAgICA/IHRoaXMuX3J1bGVzLmZpcnN0VGltZUJ1eWVyLm1heExvYW5EdXJhdGlvblllYXJzXG4gICAgICAgICAgICAgICAgOiB0aGlzLl9pbnB1dC5pc05ld0J1aWxkXG4gICAgICAgICAgICAgICAgPyB0aGlzLl9ydWxlcy5tYXhMb2FuRHVyYXRpb25OZXdCdWlsZFllYXJzXG4gICAgICAgICAgICAgICAgOiB0aGlzLl9ydWxlcy5tYXhMb2FuRHVyYXRpb25ZZWFycztcblxuICAgICAgICBjb25zdCBtaW5Eb3duUGF5bWVudCA9IHRoaXMuX2lucHV0LnByb3BlcnR5UHJpY2UgKiB0aGlzLl9ydWxlcy5taW5Eb3duUGF5bWVudFJhdGU7XG5cbiAgICAgICAgaWYgKHRoaXMuX2lucHV0LmRvd25QYXltZW50IDwgbWluRG93blBheW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmluZWxpZ2libGVSZXN1bHQodGhpcy5faW5wdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgbm90YXJ5UmF0ZSA9IHRoaXMuX2lucHV0LmlzTmV3QnVpbGRcbiAgICAgICAgPyB0aGlzLl9ydWxlcy5mZWVzLm5vdGFyeVJhdGVOZXdQcm9wZXJ0eVxuICAgICAgICA6IHRoaXMuX3J1bGVzLmZlZXMubm90YXJ5UmF0ZU9sZFByb3BlcnR5O1xuXG4gICAgICAgIGNvbnN0IG5vdGFyeUZlZXMgPSB0aGlzLl9pbnB1dC5wcm9wZXJ0eVByaWNlICogbm90YXJ5UmF0ZTtcbiAgICAgICAgY29uc3QgYmFua0ZlZXMgPSB0aGlzLl9pbnB1dC5wcm9wZXJ0eVByaWNlICogdGhpcy5fcnVsZXMuZmVlcy5iYW5rRmVlc1JhdGU7XG4gICAgICAgIGNvbnN0IHRvdGFsUHJvamVjdENvc3QgPSB0aGlzLl9pbnB1dC5wcm9wZXJ0eVByaWNlICsgbm90YXJ5RmVlcyArIGJhbmtGZWVzO1xuICAgICAgICBjb25zdCByZXF1aXJlZExvYW5BbW91bnQgPSB0b3RhbFByb2plY3RDb3N0IC0gdGhpcy5faW5wdXQuZG93blBheW1lbnQ7XG4gICAgICAgIGNvbnN0IHN0cmVzc2VkUmF0ZSA9IHRoaXMuX2lucHV0LmFubnVhbEludGVyZXN0UmF0ZSArIHRoaXMuX3J1bGVzLnN0cmVzc1Rlc3QuaW50ZXJlc3RSYXRlQnVmZmVyO1xuXG4gICAgICAgIGNvbnN0IG1vbnRobHlJbnN1cmFuY2VDb3N0ID0gKHJlcXVpcmVkTG9hbkFtb3VudCAqIHRoaXMuX3J1bGVzLmluc3VyYW5jZS5hdmVyYWdlUmF0ZSkgLyAxMjtcblxuICAgICAgICBsZXQgbWF4TW9udGhseVBheW1lbnQgPSB0aGlzLl9pbnB1dC5uZXRNb250aGx5SW5jb21lICogZGVidFJhdGlvO1xuXG4gICAgICAgIGlmICh0aGlzLl9ydWxlcy5pbnN1cmFuY2UuaW5jbHVkZWRJbkRlYnRSYXRpbykge1xuICAgICAgICAgICAgbWF4TW9udGhseVBheW1lbnQgLT0gbW9udGhseUluc3VyYW5jZUNvc3Q7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtYXhMb2FuQW1vdW50ID0gdGhpcy5jYWxjdWxhdGVMb2FuQW1vdW50KFxuICAgICAgICAgICAgbWF4TW9udGhseVBheW1lbnQsXG4gICAgICAgICAgICBzdHJlc3NlZFJhdGUsXG4gICAgICAgICAgICBsb2FuRHVyYXRpb25ZZWFyc1xuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGFtb3J0aXphdGlvblNjaGVkdWxlID0gdGhpcy5jYWxjdWxhdGVBbW9ydGl6YXRpb25TY2hlZHVsZShcbiAgICAgICAgICAgIHJlcXVpcmVkTG9hbkFtb3VudCxcbiAgICAgICAgICAgIHRoaXMuX2lucHV0LmFubnVhbEludGVyZXN0UmF0ZSxcbiAgICAgICAgICAgIGxvYW5EdXJhdGlvblllYXJzXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1heE1vbnRobHlQYXltZW50LFxuICAgICAgICAgICAgbWF4TG9hbkFtb3VudCxcbiAgICAgICAgICAgIHRvdGFsUHJvamVjdENvc3QsXG4gICAgICAgICAgICByZXF1aXJlZExvYW5BbW91bnQsXG4gICAgICAgICAgICBsb2FuRHVyYXRpb25ZZWFycyxcbiAgICAgICAgICAgIGRlYnRSYXRpbzogZGVidFJhdGlvLFxuICAgICAgICAgICAgbW9udGhseUluc3VyYW5jZUNvc3QsXG4gICAgICAgICAgICBpc0VsaWdpYmxlOiBtYXhMb2FuQW1vdW50ID49IHJlcXVpcmVkTG9hbkFtb3VudCxcbiAgICAgICAgICAgIGFtb3J0aXphdGlvblNjaGVkdWxlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVBbW9ydGl6YXRpb25TY2hlZHVsZShcbiAgICAgICAgbG9hbkFtb3VudDogbnVtYmVyLFxuICAgICAgICBhbm51YWxSYXRlOiBudW1iZXIsXG4gICAgICAgIHllYXJzOiBudW1iZXJcbiAgICApOiBBbW9ydGl6YXRpb25TY2hlZHVsZUl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IG1vbnRobHlSYXRlID0gYW5udWFsUmF0ZSAvIDEwMCAvIDEyO1xuICAgICAgICBjb25zdCB0b3RhbFBheW1lbnRzID0geWVhcnMgKiAxMjtcblxuICAgICAgICBpZiAobW9udGhseVJhdGUgPT09IDAgfHwgbG9hbkFtb3VudCA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtb250aGx5UGF5bWVudCA9XG4gICAgICAgICAgICAobG9hbkFtb3VudCAqIG1vbnRobHlSYXRlKSAvXG4gICAgICAgICAgICAoMSAtIE1hdGgucG93KDEgKyBtb250aGx5UmF0ZSwgLXRvdGFsUGF5bWVudHMpKTtcblxuICAgICAgICBjb25zdCBzY2hlZHVsZTogQW1vcnRpemF0aW9uU2NoZWR1bGVJdGVtW10gPSBbXTtcbiAgICAgICAgbGV0IGJhbGFuY2UgPSBsb2FuQW1vdW50O1xuXG4gICAgICAgIGZvciAobGV0IHllYXIgPSAxOyB5ZWFyIDw9IHllYXJzOyB5ZWFyKyspIHtcbiAgICAgICAgICAgIGxldCB5ZWFybHlQcmluY2lwYWwgPSAwO1xuICAgICAgICAgICAgbGV0IHllYXJseUludGVyZXN0ID0gMDtcblxuICAgICAgICAgICAgY29uc3QgcGF5bWVudHNJblllYXIgPSBNYXRoLm1pbigxMiwgdG90YWxQYXltZW50cyAtICh5ZWFyIC0gMSkgKiAxMik7XG5cbiAgICAgICAgICAgIGZvciAobGV0IG1vbnRoID0gMTsgbW9udGggPD0gcGF5bWVudHNJblllYXI7IG1vbnRoKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbnRlcmVzdFBheW1lbnQgPSBiYWxhbmNlICogbW9udGhseVJhdGU7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJpbmNpcGFsUGF5bWVudCA9IG1vbnRobHlQYXltZW50IC0gaW50ZXJlc3RQYXltZW50O1xuXG4gICAgICAgICAgICAgICAgeWVhcmx5SW50ZXJlc3QgKz0gaW50ZXJlc3RQYXltZW50O1xuICAgICAgICAgICAgICAgIHllYXJseVByaW5jaXBhbCArPSBwcmluY2lwYWxQYXltZW50O1xuICAgICAgICAgICAgICAgIGJhbGFuY2UgLT0gcHJpbmNpcGFsUGF5bWVudDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2NoZWR1bGUucHVzaCh7XG4gICAgICAgICAgICAgICAgeWVhcixcbiAgICAgICAgICAgICAgICBwcmluY2lwYWw6IHllYXJseVByaW5jaXBhbCxcbiAgICAgICAgICAgICAgICBpbnRlcmVzdDogeWVhcmx5SW50ZXJlc3QsXG4gICAgICAgICAgICAgICAgYmFsYW5jZTogTWF0aC5tYXgoMCwgYmFsYW5jZSlcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoYmFsYW5jZSA8PSAwKSBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzY2hlZHVsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZUxvYW5BbW91bnQobW9udGhseVBheW1lbnQ6IG51bWJlciwgYW5udWFsUmF0ZTogbnVtYmVyLCB5ZWFyczogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgbW9udGhseVJhdGUgPSBhbm51YWxSYXRlIC8gMTAwIC8gMTI7XG4gICAgICAgIGNvbnN0IHBheW1lbnRzID0geWVhcnMgKiAxMjtcblxuICAgICAgICBpZiAobW9udGhseVJhdGUgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBtb250aGx5UGF5bWVudCAqIHBheW1lbnRzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIG1vbnRobHlQYXltZW50ICpcbiAgICAgICAgICAgICgoMSAtIE1hdGgucG93KDEgKyBtb250aGx5UmF0ZSwgLXBheW1lbnRzKSkgLyBtb250aGx5UmF0ZSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluZWxpZ2libGVSZXN1bHQoaW5wdXQ6IE1vcnRnYWdlSW5wdXQpOiBNb3J0Z2FnZU91dHB1dCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtYXhNb250aGx5UGF5bWVudDogMCxcbiAgICAgICAgICAgIG1heExvYW5BbW91bnQ6IDAsXG4gICAgICAgICAgICB0b3RhbFByb2plY3RDb3N0OiBpbnB1dC5wcm9wZXJ0eVByaWNlLFxuICAgICAgICAgICAgcmVxdWlyZWRMb2FuQW1vdW50OiBpbnB1dC5wcm9wZXJ0eVByaWNlIC0gaW5wdXQuZG93blBheW1lbnQsXG4gICAgICAgICAgICBsb2FuRHVyYXRpb25ZZWFyczogMCxcbiAgICAgICAgICAgIGRlYnRSYXRpbzogMCxcbiAgICAgICAgICAgIG1vbnRobHlJbnN1cmFuY2VDb3N0OiAwLFxuICAgICAgICAgICAgaXNFbGlnaWJsZTogZmFsc2UsXG4gICAgICAgICAgICBhbW9ydGl6YXRpb25TY2hlZHVsZTogW11cbiAgICAgICAgfTtcbiAgICB9XG59Il19
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnJhbmNlTW9ydGdhZ2VTZXJ2aWNlSW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb3J0Z2FnZS9mcmFuY2UvRnJhbmNlTW9ydGdhZ2VTZXJ2aWNlSW1wbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFHQSxNQUFhLHlCQUF5QjtJQUlsQyxZQUFZLEtBQW9CLEVBQUUsS0FBb0I7UUFDbEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVELFNBQVM7UUFFTCxJQUNJLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCO1lBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYztZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0I7WUFDbkQsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUNqQyxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FDWCxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxJQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU87WUFDM0YsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFlBQVk7WUFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO1FBRW5DLE1BQU0saUJBQWlCLEdBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTztZQUM1RixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FB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fSBmcm9tICcuLi8uLic7XG5pbXBvcnQgeyBNb3J0Z2FnZVJ1bGVzLCBNb3J0Z2FnZUlucHV0LCBNb3J0Z2FnZU91dHB1dCwgQW1vcnRpemF0aW9uU2NoZWR1bGVJdGVtIH0gZnJvbSAnLi9kb21haW4vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgRnJhbmNlTW9ydGdhZ2VTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIEZyYW5jZU1vcnRnYWdlU2VydmljZSB7XG4gICAgcHJpdmF0ZSBfaW5wdXQ6IE1vcnRnYWdlSW5wdXQ7XG4gICAgcHJpdmF0ZSBfcnVsZXM6IE1vcnRnYWdlUnVsZXM7XG5cbiAgICBjb25zdHJ1Y3RvcihpbnB1dDogTW9ydGdhZ2VJbnB1dCwgcnVsZXM6IE1vcnRnYWdlUnVsZXMpIHtcbiAgICAgICAgdGhpcy5faW5wdXQgPSBpbnB1dDtcbiAgICAgICAgdGhpcy5fcnVsZXMgPSBydWxlcztcbiAgICB9XG5cbiAgICBjYWxjdWxhdGUoKTogTW9ydGdhZ2VPdXRwdXQge1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuX2lucHV0LmlzRmlyc3RUaW1lQnV5ZXIgJiZcbiAgICAgICAgICAgIHRoaXMuX3J1bGVzLmZpcnN0VGltZUJ1eWVyICYmXG4gICAgICAgICAgICB0aGlzLl9ydWxlcy5maXJzdFRpbWVCdXllci5yZXF1aXJlc1ByaW1hcnlSZXNpZGVuY2UgJiZcbiAgICAgICAgICAgICF0aGlzLl9pbnB1dC5pc1ByaW1hcnlSZXNpZGVuY2VcbiAgICAgICAgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmluZWxpZ2libGVSZXN1bHQodGhpcy5faW5wdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGVidFJhdGlvID1cbiAgICAgICAgICAgIHRoaXMuX2lucHV0LmlzRmlyc3RUaW1lQnV5ZXIgJiYgdGhpcy5fcnVsZXMuZmlyc3RUaW1lQnV5ZXIgJiZ0aGlzLl9ydWxlcy5maXJzdFRpbWVCdXllci5lbmFibGVkXG4gICAgICAgICAgICAgICAgPyB0aGlzLl9ydWxlcy5maXJzdFRpbWVCdXllci5tYXhEZWJ0UmF0aW9cbiAgICAgICAgICAgICAgICA6IHRoaXMuX3J1bGVzLm1heERlYnRSYXRpbztcblxuICAgICAgICBjb25zdCBsb2FuRHVyYXRpb25ZZWFycyA9XG4gICAgICAgICAgICB0aGlzLl9pbnB1dC5pc0ZpcnN0VGltZUJ1eWVyICYmIHRoaXMuX3J1bGVzLmZpcnN0VGltZUJ1eWVyICYmIHRoaXMuX3J1bGVzLmZpcnN0VGltZUJ1eWVyLmVuYWJsZWRcbiAgICAgICAgICAgICAgICA/IHRoaXMuX3J1bGVzLmZpcnN0VGltZUJ1eWVyLm1heExvYW5EdXJhdGlvblllYXJzXG4gICAgICAgICAgICAgICAgOiB0aGlzLl9pbnB1dC5pc05ld0J1aWxkXG4gICAgICAgICAgICAgICAgPyB0aGlzLl9ydWxlcy5tYXhMb2FuRHVyYXRpb25OZXdCdWlsZFllYXJzXG4gICAgICAgICAgICAgICAgOiB0aGlzLl9ydWxlcy5tYXhMb2FuRHVyYXRpb25ZZWFycztcblxuICAgICAgICBjb25zdCBtaW5Eb3duUGF5bWVudCA9IHRoaXMuX2lucHV0LnByb3BlcnR5UHJpY2UgKiB0aGlzLl9ydWxlcy5taW5Eb3duUGF5bWVudFJhdGU7XG5cbiAgICAgICAgaWYgKHRoaXMuX2lucHV0LmRvd25QYXltZW50IDwgbWluRG93blBheW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmluZWxpZ2libGVSZXN1bHQodGhpcy5faW5wdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgbm90YXJ5UmF0ZSA9IHRoaXMuX2lucHV0LmlzTmV3QnVpbGRcbiAgICAgICAgPyB0aGlzLl9ydWxlcy5mZWVzLm5vdGFyeVJhdGVOZXdQcm9wZXJ0eVxuICAgICAgICA6IHRoaXMuX3J1bGVzLmZlZXMubm90YXJ5UmF0ZU9sZFByb3BlcnR5O1xuXG4gICAgICAgIGNvbnN0IG5vdGFyeUZlZXMgPSB0aGlzLl9pbnB1dC5wcm9wZXJ0eVByaWNlICogbm90YXJ5UmF0ZTtcbiAgICAgICAgY29uc3QgYmFua0ZlZXMgPSB0aGlzLl9pbnB1dC5wcm9wZXJ0eVByaWNlICogdGhpcy5fcnVsZXMuZmVlcy5iYW5rRmVlc1JhdGU7XG4gICAgICAgIGNvbnN0IHRvdGFsUHJvamVjdENvc3QgPSB0aGlzLl9pbnB1dC5wcm9wZXJ0eVByaWNlICsgbm90YXJ5RmVlcyArIGJhbmtGZWVzO1xuICAgICAgICBjb25zdCByZXF1aXJlZExvYW5BbW91bnQgPSB0b3RhbFByb2plY3RDb3N0IC0gdGhpcy5faW5wdXQuZG93blBheW1lbnQ7XG4gICAgICAgIGNvbnN0IHN0cmVzc2VkUmF0ZSA9IHRoaXMuX2lucHV0LmFubnVhbEludGVyZXN0UmF0ZSArIHRoaXMuX3J1bGVzLnN0cmVzc1Rlc3QuaW50ZXJlc3RSYXRlQnVmZmVyO1xuXG4gICAgICAgIGNvbnN0IG1vbnRobHlJbnN1cmFuY2VDb3N0ID0gKHJlcXVpcmVkTG9hbkFtb3VudCAqIHRoaXMuX3J1bGVzLmluc3VyYW5jZS5hdmVyYWdlUmF0ZSkgLyAxMjtcblxuICAgICAgICBsZXQgbWF4TW9udGhseVBheW1lbnQgPSB0aGlzLl9pbnB1dC5uZXRNb250aGx5SW5jb21lICogZGVidFJhdGlvO1xuXG4gICAgICAgIGlmICh0aGlzLl9ydWxlcy5pbnN1cmFuY2UuaW5jbHVkZWRJbkRlYnRSYXRpbykge1xuICAgICAgICAgICAgbWF4TW9udGhseVBheW1lbnQgLT0gbW9udGhseUluc3VyYW5jZUNvc3Q7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtYXhMb2FuQW1vdW50ID0gdGhpcy5jYWxjdWxhdGVMb2FuQW1vdW50KFxuICAgICAgICAgICAgbWF4TW9udGhseVBheW1lbnQsXG4gICAgICAgICAgICBzdHJlc3NlZFJhdGUsXG4gICAgICAgICAgICBsb2FuRHVyYXRpb25ZZWFyc1xuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IG1vbnRobHlQYXltZW50ID0gdGhpcy5jYWxjdWxhdGVNb250aGx5UGF5bWVudChcbiAgICAgICAgICAgIHJlcXVpcmVkTG9hbkFtb3VudCxcbiAgICAgICAgICAgIHRoaXMuX2lucHV0LmFubnVhbEludGVyZXN0UmF0ZSxcbiAgICAgICAgICAgIGxvYW5EdXJhdGlvblllYXJzXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgdG90YWxQYWlkID0gbW9udGhseVBheW1lbnQgKiBsb2FuRHVyYXRpb25ZZWFycyAqIDEyO1xuICAgICAgICBjb25zdCB0b3RhbEludGVyZXN0UGFpZCA9IHRvdGFsUGFpZCAtIHJlcXVpcmVkTG9hbkFtb3VudDtcblxuICAgICAgICBjb25zdCBhbW9ydGl6YXRpb25TY2hlZHVsZSA9IHRoaXMuY2FsY3VsYXRlQW1vcnRpemF0aW9uU2NoZWR1bGUoXG4gICAgICAgICAgICByZXF1aXJlZExvYW5BbW91bnQsXG4gICAgICAgICAgICB0aGlzLl9pbnB1dC5hbm51YWxJbnRlcmVzdFJhdGUsXG4gICAgICAgICAgICBsb2FuRHVyYXRpb25ZZWFycyxcbiAgICAgICAgICAgIG1vbnRobHlQYXltZW50XG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvYW5BbW91bnQ6IHJlcXVpcmVkTG9hbkFtb3VudCxcbiAgICAgICAgICAgIHRvdGFsUGFpZCxcbiAgICAgICAgICAgIHRvdGFsSW50ZXJlc3RQYWlkLFxuICAgICAgICAgICAgbW9udGhseVBheW1lbnQsXG4gICAgICAgICAgICByZXF1aXJlZExvYW5BbW91bnQsXG4gICAgICAgICAgICBtYXhNb250aGx5UGF5bWVudCxcbiAgICAgICAgICAgIG1heExvYW5BbW91bnQsXG4gICAgICAgICAgICB0b3RhbFByb2plY3RDb3N0LFxuICAgICAgICAgICAgbG9hbkR1cmF0aW9uWWVhcnMsXG4gICAgICAgICAgICBkZWJ0UmF0aW86IGRlYnRSYXRpbyxcbiAgICAgICAgICAgIG1vbnRobHlJbnN1cmFuY2VDb3N0LFxuICAgICAgICAgICAgaXNFbGlnaWJsZTogbWF4TG9hbkFtb3VudCA+PSByZXF1aXJlZExvYW5BbW91bnQsXG4gICAgICAgICAgICBhbW9ydGl6YXRpb25TY2hlZHVsZSxcbiAgICAgICAgICAgIG90aGVyRmVlczoge1xuICAgICAgICAgICAgICAgIG5vdGFyeUZlZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG5vdGFyeUZlZXMsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnTk9UQVJZX0ZFRVMnXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBiYW5rRmVlczoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYmFua0ZlZXMsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnQkFOS19GRUVTJ1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbW9udGhseUluc3VyYW5jZUZlZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG1vbnRobHlJbnN1cmFuY2VDb3N0LFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ01PTlRITFlfSU5TVVJBTkNFX0ZFRVMnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXRlTW9udGhseVBheW1lbnQocHJpbmNpcGFsOiBudW1iZXIsIGFubnVhbFJhdGU6IG51bWJlciwgeWVhcnM6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IG1vbnRobHlSYXRlID0gYW5udWFsUmF0ZSAvIDEwMCAvIDEyO1xuICAgICAgICBjb25zdCBwYXltZW50cyA9IHllYXJzICogMTI7XG5cbiAgICAgICAgaWYgKG1vbnRobHlSYXRlID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gcGF5bWVudHMgPT09IDAgPyAwIDogcHJpbmNpcGFsIC8gcGF5bWVudHM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgcHJpbmNpcGFsICpcbiAgICAgICAgICAgIChtb250aGx5UmF0ZSAvICgxIC0gTWF0aC5wb3coMSArIG1vbnRobHlSYXRlLCAtcGF5bWVudHMpKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZUFtb3J0aXphdGlvblNjaGVkdWxlKFxuICAgICAgICBsb2FuQW1vdW50OiBudW1iZXIsXG4gICAgICAgIGFubnVhbFJhdGU6IG51bWJlcixcbiAgICAgICAgeWVhcnM6IG51bWJlcixcbiAgICAgICAgbW9udGhseVBheW1lbnQ6IG51bWJlclxuICAgICk6IEFtb3J0aXphdGlvblNjaGVkdWxlSXRlbVtdIHtcbiAgICAgICAgY29uc3QgbW9udGhseVJhdGUgPSBhbm51YWxSYXRlIC8gMTAwIC8gMTI7XG4gICAgICAgIGNvbnN0IHRvdGFsUGF5bWVudHMgPSB5ZWFycyAqIDEyO1xuXG4gICAgICAgIGlmIChtb250aGx5UmF0ZSA9PT0gMCB8fCBsb2FuQW1vdW50IDw9IDAgfHwgbW9udGhseVBheW1lbnQgPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2NoZWR1bGU6IEFtb3J0aXphdGlvblNjaGVkdWxlSXRlbVtdID0gW107XG4gICAgICAgIGxldCBiYWxhbmNlID0gbG9hbkFtb3VudDtcblxuICAgICAgICBmb3IgKGxldCB5ZWFyID0gMTsgeWVhciA8PSB5ZWFyczsgeWVhcisrKSB7XG4gICAgICAgICAgICBsZXQgeWVhcmx5UHJpbmNpcGFsID0gMDtcbiAgICAgICAgICAgIGxldCB5ZWFybHlJbnRlcmVzdCA9IDA7XG5cbiAgICAgICAgICAgIGNvbnN0IHBheW1lbnRzSW5ZZWFyID0gTWF0aC5taW4oMTIsIHRvdGFsUGF5bWVudHMgLSAoeWVhciAtIDEpICogMTIpO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBtb250aCA9IDE7IG1vbnRoIDw9IHBheW1lbnRzSW5ZZWFyOyBtb250aCsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW50ZXJlc3RQYXltZW50ID0gYmFsYW5jZSAqIG1vbnRobHlSYXRlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByaW5jaXBhbFBheW1lbnQgPSBtb250aGx5UGF5bWVudCAtIGludGVyZXN0UGF5bWVudDtcblxuICAgICAgICAgICAgICAgIHllYXJseUludGVyZXN0ICs9IGludGVyZXN0UGF5bWVudDtcbiAgICAgICAgICAgICAgICB5ZWFybHlQcmluY2lwYWwgKz0gcHJpbmNpcGFsUGF5bWVudDtcbiAgICAgICAgICAgICAgICBiYWxhbmNlIC09IHByaW5jaXBhbFBheW1lbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNjaGVkdWxlLnB1c2goe1xuICAgICAgICAgICAgICAgIHllYXIsXG4gICAgICAgICAgICAgICAgcHJpbmNpcGFsOiB5ZWFybHlQcmluY2lwYWwsXG4gICAgICAgICAgICAgICAgaW50ZXJlc3Q6IHllYXJseUludGVyZXN0LFxuICAgICAgICAgICAgICAgIGJhbGFuY2U6IE1hdGgubWF4KDAsIGJhbGFuY2UpXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGJhbGFuY2UgPD0gMCkgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2NoZWR1bGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVMb2FuQW1vdW50KG1vbnRobHlQYXltZW50OiBudW1iZXIsIGFubnVhbFJhdGU6IG51bWJlciwgeWVhcnM6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IG1vbnRobHlSYXRlID0gYW5udWFsUmF0ZSAvIDEwMCAvIDEyO1xuICAgICAgICBjb25zdCBwYXltZW50cyA9IHllYXJzICogMTI7XG5cbiAgICAgICAgaWYgKG1vbnRobHlSYXRlID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbW9udGhseVBheW1lbnQgKiBwYXltZW50cztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBtb250aGx5UGF5bWVudCAqXG4gICAgICAgICAgICAoKDEgLSBNYXRoLnBvdygxICsgbW9udGhseVJhdGUsIC1wYXltZW50cykpIC8gbW9udGhseVJhdGUpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbmVsaWdpYmxlUmVzdWx0KGlucHV0OiBNb3J0Z2FnZUlucHV0KTogTW9ydGdhZ2VPdXRwdXQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWF4TW9udGhseVBheW1lbnQ6IDAsXG4gICAgICAgICAgICBtYXhMb2FuQW1vdW50OiAwLFxuICAgICAgICAgICAgdG90YWxQcm9qZWN0Q29zdDogaW5wdXQucHJvcGVydHlQcmljZSxcbiAgICAgICAgICAgIHJlcXVpcmVkTG9hbkFtb3VudDogaW5wdXQucHJvcGVydHlQcmljZSAtIGlucHV0LmRvd25QYXltZW50LFxuICAgICAgICAgICAgbG9hbkR1cmF0aW9uWWVhcnM6IDAsXG4gICAgICAgICAgICBkZWJ0UmF0aW86IDAsXG4gICAgICAgICAgICBtb250aGx5SW5zdXJhbmNlQ29zdDogMCxcbiAgICAgICAgICAgIGxvYW5BbW91bnQ6IDAsXG4gICAgICAgICAgICBtb250aGx5UGF5bWVudDogMCxcbiAgICAgICAgICAgIHRvdGFsSW50ZXJlc3RQYWlkOiAwLFxuICAgICAgICAgICAgdG90YWxQYWlkOiAwLFxuICAgICAgICAgICAgaXNFbGlnaWJsZTogZmFsc2UsXG4gICAgICAgICAgICBhbW9ydGl6YXRpb25TY2hlZHVsZTogW10sXG4gICAgICAgICAgICBvdGhlckZlZXM6IHtcbiAgICAgICAgICAgICAgICBub3RhcnlGZWVzOiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAwLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ05PVEFSWV9GRUVTJ1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYmFua0ZlZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IDAsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnQkFOS19GRUVTJ1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbW9udGhseUluc3VyYW5jZUZlZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IDAsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnTU9OVEhMWV9JTlNVUkFOQ0VfRkVFUydcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxufSJdfQ==
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9ydGdhZ2UvZnJhbmNlL2RvbWFpbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3RoZXJGZWVzIH0gZnJvbSBcIi4uLy4uL2RvbWFpbi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1vcnRnYWdlUnVsZXMge1xuICAgIG1heERlYnRSYXRpbzogbnVtYmVyO1xuICAgIG1heExvYW5EdXJhdGlvblllYXJzOiBudW1iZXI7XG4gICAgbWF4TG9hbkR1cmF0aW9uTmV3QnVpbGRZZWFyczogbnVtYmVyO1xuICAgIG1pbkRvd25QYXltZW50UmF0ZTogbnVtYmVyO1xuXG4gICAgZmlyc3RUaW1lQnV5ZXI/OiBGaXJzdFRpbWVCdXllclJ1bGVzO1xuXG4gICAgaW5zdXJhbmNlOiBNb3J0Z2FnZUluc3VyYW5jZVJ1bGVzO1xuICAgIGZlZXM6IE1vcnRnYWdlRmVlc1J1bGVzO1xuICAgIHN0cmVzc1Rlc3Q6IFN0cmVzc1Rlc3RSdWxlcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaXJzdFRpbWVCdXllclJ1bGVzIHtcbiAgICBlbmFibGVkOiBib29sZWFuO1xuICAgIG1heERlYnRSYXRpbzogbnVtYmVyO1xuICAgIG1heExvYW5EdXJhdGlvblllYXJzOiBudW1iZXI7XG4gICAgcXVvdGFEaXNjbGFpbWVyOiBzdHJpbmc7XG4gICAgcmVxdWlyZXNQcmltYXJ5UmVzaWRlbmNlOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1vcnRnYWdlSW5zdXJhbmNlUnVsZXMge1xuICAgIGF2ZXJhZ2VSYXRlOiBudW1iZXI7XG4gICAgaW5jbHVkZWRJbkRlYnRSYXRpbzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb3J0Z2FnZUZlZXNSdWxlcyB7XG4gIG5vdGFyeVJhdGVPbGRQcm9wZXJ0eTogbnVtYmVyO1xuICBub3RhcnlSYXRlTmV3UHJvcGVydHk6IG51bWJlcjtcbiAgYmFua0ZlZXNSYXRlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyZXNzVGVzdFJ1bGVzIHtcbiAgICBpbnRlcmVzdFJhdGVCdWZmZXI6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbW9ydGl6YXRpb25TY2hlZHVsZUl0ZW0ge1xuICAgIHllYXI6IG51bWJlcjtcbiAgICBwcmluY2lwYWw6IG51bWJlcjtcbiAgICBpbnRlcmVzdDogbnVtYmVyO1xuICAgIGJhbGFuY2U6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb3J0Z2FnZUlucHV0IHtcbiAgICBwcm9wZXJ0eVByaWNlOiBudW1iZXI7XG4gICAgZG93blBheW1lbnQ6IG51bWJlcjtcbiAgICBuZXRNb250aGx5SW5jb21lOiBudW1iZXI7XG4gICAgbG9hbkR1cmF0aW9uWWVhcnM6IG51bWJlcjtcbiAgICBhbm51YWxJbnRlcmVzdFJhdGU6IG51bWJlcjtcbiAgICBpc1ByaW1hcnlSZXNpZGVuY2U6IGJvb2xlYW47XG4gICAgaXNGaXJzdFRpbWVCdXllcjogYm9vbGVhbjtcbiAgICBpc05ld0J1aWxkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1vcnRnYWdlT3V0cHV0IHtcbiAgICBsb2FuQW1vdW50OiBudW1iZXI7XG4gICAgdG90YWxQYWlkOiBudW1iZXI7XG4gICAgbW9udGhseVBheW1lbnQ6IG51bWJlcjtcbiAgICB0b3RhbEludGVyZXN0UGFpZDogbnVtYmVyO1xuICAgIG1heE1vbnRobHlQYXltZW50OiBudW1iZXI7XG4gICAgbWF4TG9hbkFtb3VudDogbnVtYmVyO1xuICAgIGxvYW5EdXJhdGlvblllYXJzOiBudW1iZXI7XG4gICAgZGVidFJhdGlvOiBudW1iZXI7XG4gICAgdG90YWxQcm9qZWN0Q29zdDogbnVtYmVyO1xuICAgIHJlcXVpcmVkTG9hbkFtb3VudDogbnVtYmVyO1xuICAgIG1vbnRobHlJbnN1cmFuY2VDb3N0OiBudW1iZXI7XG4gICAgaXNFbGlnaWJsZTogYm9vbGVhbjtcbiAgICBhbW9ydGl6YXRpb25TY2hlZHVsZTogQW1vcnRpemF0aW9uU2NoZWR1bGVJdGVtW107XG4gICAgb3RoZXJGZWVzOiBPdGhlckZlZXM7XG59XG4iXX0=
|
|
@@ -32,7 +32,21 @@ class SouthAfricaMortgageServiceImpl {
|
|
|
32
32
|
isAffordable,
|
|
33
33
|
transferDuty,
|
|
34
34
|
bondRegistrationFee,
|
|
35
|
-
amortizationSchedule
|
|
35
|
+
amortizationSchedule,
|
|
36
|
+
otherFees: {
|
|
37
|
+
notaryFees: {
|
|
38
|
+
value: bondRegistrationFee,
|
|
39
|
+
label: 'BOND_REGISTRATION_FEES'
|
|
40
|
+
},
|
|
41
|
+
bankFees: {
|
|
42
|
+
value: transferDuty,
|
|
43
|
+
label: 'TRANSFER_DUTY'
|
|
44
|
+
},
|
|
45
|
+
monthlyInsuranceFees: {
|
|
46
|
+
value: 0,
|
|
47
|
+
label: 'MONTHLY_INSURANCE_FEES'
|
|
48
|
+
}
|
|
49
|
+
}
|
|
36
50
|
};
|
|
37
51
|
}
|
|
38
52
|
calculateAmortizationSchedule(loanAmount, monthlyRate, monthlyPayment, totalPayments) {
|
|
@@ -79,4 +93,4 @@ class SouthAfricaMortgageServiceImpl {
|
|
|
79
93
|
}
|
|
80
94
|
}
|
|
81
95
|
exports.SouthAfricaMortgageServiceImpl = SouthAfricaMortgageServiceImpl;
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU291dGhBZnJpY2FNb3J0Z2FnZVNlcnZpY2VJbXBsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vcnRnYWdlL3NvdXRoLWFmcmljYS9Tb3V0aEFmcmljYU1vcnRnYWdlU2VydmljZUltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0EsTUFBYSw4QkFBOEI7SUFDekMsWUFDbUIsS0FBb0IsRUFDcEIsS0FBb0I7UUFEcEIsVUFBSyxHQUFMLEtBQUssQ0FBZTtRQUNwQixVQUFLLEdBQUwsS0FBSyxDQUFlO0lBQ3RDLENBQUM7SUFFSCxTQUFTO1FBQ1IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFFckUsd0JBQXdCO1FBQ3hCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUM3RCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUV4RCw2Q0FBNkM7UUFDN0MsTUFBTSxjQUFjLEdBQ3BCLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQztZQUMxQixDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxXQUFXLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBRWhELE1BQU0sU0FBUyxHQUFHLGNBQWMsR0FBRyxhQUFhLENBQUM7UUFDakQsTUFBTSxpQkFBaUIsR0FBRyxTQUFTLEdBQUcsVUFBVSxDQUFDO1FBRWpELHVCQUF1QjtRQUN2QixNQUFNLGlCQUFpQixHQUN2QixDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsR0FBRyxDQUFDO1FBRXZELE1BQU0sWUFBWSxHQUNsQixpQkFBaUIsSUFBSSxJQUFJLENB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LElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxhQUFhLENBQUM7Z0JBQ3RFLElBQUksSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDL0IsYUFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDOUIsQ0FBQztZQUVELElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxhQUFhLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNwRCxJQUFJLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ3ZELE1BQU07WUFDUCxDQUFDO1FBQ0YsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztDQUNEO0FBNUhELHdFQTRIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vcnRnYWdlUnVsZXMsIE1vcnRnYWdlSW5wdXQsIE1vcnRnYWdlT3V0cHV0LCBBbW9ydGl6YXRpb25TY2hlZHVsZUl0ZW0gfSBmcm9tICcuL2RvbWFpbi90eXBlcyc7XG5pbXBvcnQgeyBTb3V0aEFmcmljYU1vcnRnYWdlU2VydmljZSB9IGZyb20gJy4vU291dGhBZnJpY2FNb3J0Z2FnZVNlcnZpY2UnO1xuXG5leHBvcnQgY2xhc3MgU291dGhBZnJpY2FNb3J0Z2FnZVNlcnZpY2VJbXBsIGltcGxlbWVudHMgU291dGhBZnJpY2FNb3J0Z2FnZVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlucHV0OiBNb3J0Z2FnZUlucHV0LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcnVsZXM6IE1vcnRnYWdlUnVsZXNcbikge31cblxuXHRjYWxjdWxhdGUoKTogTW9ydGdhZ2VPdXRwdXQge1xuXHRcdGNvbnN0IGxvYW5BbW91bnQgPSB0aGlzLmlucHV0LnByb3BlcnR5UHJpY2UgLSB0aGlzLmlucHV0LmRvd25QYXltZW50O1xuXG5cdFx0Ly8gTW9udGhseSBpbnRlcmVzdCByYXRlXG5cdFx0Y29uc3QgbW9udGhseVJhdGUgPSB0aGlzLmlucHV0LmFubnVhbEludGVyZXN0UmF0ZSAvIDEwMCAvIDEyO1xuXHRcdGNvbnN0IHRvdGFsUGF5bWVudHMgPSB0aGlzLmlucHV0LmFtb3J0aXphdGlvblllYXJzICogMTI7XG5cblx0XHQvLyBTdGFuZGFyZCBhbW9ydGl6ZWQgbW9udGhseSBwYXltZW50IGZvcm11bGFcblx0XHRjb25zdCBtb250aGx5UGF5bWVudCA9XG5cdFx0KGxvYW5BbW91bnQgKiBtb250aGx5UmF0ZSkgL1xuXHRcdCgxIC0gTWF0aC5wb3coMSArIG1vbnRobHlSYXRlLCAtdG90YWxQYXltZW50cykpO1xuXG5cdFx0Y29uc3QgdG90YWxQYWlkID0gbW9udGhseVBheW1lbnQgKiB0b3RhbFBheW1lbnRzO1xuXHRcdGNvbnN0IHRvdGFsSW50ZXJlc3RQYWlkID0gdG90YWxQYWlkIC0gbG9hbkFtb3VudDtcblxuXHRcdC8vIERlYnQtdG8taW5jb21lIHJhdGlvXG5cdFx0Y29uc3QgZGVidFRvSW5jb21lUmF0aW8gPVxuXHRcdChtb250aGx5UGF5bWVudCAvIHRoaXMuaW5wdXQuZ3Jvc3NNb250aGx5SW5jb21lKSAqIDEwMDtcblxuXHRcdGNvbnN0IGlzQWZmb3JkYWJsZSA9XG5cdFx0ZGVidFRvSW5jb21lUmF0aW8gPD0gdGhpcy5ydWxlcy5sb2FuQ29uc3RyYWludHMubWF4RGVidFRvSW5jb21lUGVyY2VudDtcblxuXHRcdC8vIEZlZXNcblx0XHRjb25zdCBib25kUmVnaXN0cmF0aW9uRmVlID1cblx0XHRsb2FuQW1vdW50ICogKHRoaXMucnVsZXMuZmVlcy5ib25kUmVnaXN0cmF0aW9uUGVyY2VudCAvIDEwMCk7XG5cblx0XHRjb25zdCB0cmFuc2ZlckR1dHkgPSB0aGlzLmNhbGN1bGF0ZVRyYW5zZmVyRHV0eSh0aGlzLmlucHV0LnByb3BlcnR5UHJpY2UpO1xuXHRcdGNvbnN0IGFtb3J0aXphdGlvblNjaGVkdWxlID0gdGhpcy5jYWxjdWxhdGVBbW9ydGl6YXRpb25TY2hlZHVsZShcblx0XHRcdGxvYW5BbW91bnQsXG5cdFx0XHRtb250aGx5UmF0ZSxcblx0XHRcdG1vbnRobHlQYXltZW50LFxuXHRcdFx0dG90YWxQYXltZW50c1xuXHRcdCk7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0bG9hbkFtb3VudCxcblx0XHRcdG1vbnRobHlQYXltZW50LFxuXHRcdFx0dG90YWxJbnRlcmVzdFBhaWQsXG5cdFx0XHR0b3RhbFBhaWQsXG5cdFx0XHRkZWJ0VG9JbmNvbWVSYXRpbyxcblx0XHRcdGlzQWZmb3JkYWJsZSxcblx0XHRcdHRyYW5zZmVyRHV0eSxcblx0XHRcdGJvbmRSZWdpc3RyYXRpb25GZWUsXG5cdFx0XHRhbW9ydGl6YXRpb25TY2hlZHVsZSxcblx0XHRcdG90aGVyRmVlczoge1xuICAgICAgICAgICAgICAgIG5vdGFyeUZlZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGJvbmRSZWdpc3RyYXRpb25GZWUsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnQk9ORF9SRUdJU1RSQVRJT05fRkVFUydcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJhbmtGZWVzOiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0cmFuc2ZlckR1dHksXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnVFJBTlNGRVJfRFVUWSdcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1vbnRobHlJbnN1cmFuY2VGZWVzOiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAwLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ01PTlRITFlfSU5TVVJBTkNFX0ZFRVMnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXHRcdH07XG5cdH1cblxuXHRwcml2YXRlIGNhbGN1bGF0ZUFtb3J0aXphdGlvblNjaGVkdWxlKFxuXHRcdGxvYW5BbW91bnQ6IG51bWJlcixcblx0XHRtb250aGx5UmF0ZTogbnVtYmVyLFxuXHRcdG1vbnRobHlQYXltZW50OiBudW1iZXIsXG5cdFx0dG90YWxQYXltZW50czogbnVtYmVyXG5cdCk6IEFtb3J0aXphdGlvblNjaGVkdWxlSXRlbVtdIHtcblx0XHRjb25zdCBzY2hlZHVsZTogQW1vcnRpemF0aW9uU2NoZWR1bGVJdGVtW10gPSBbXTtcblx0XHRsZXQgYmFsYW5jZSA9IGxvYW5BbW91bnQ7XG5cblx0XHRmb3IgKGxldCB5ZWFyID0gMTsgeWVhciA8PSB0aGlzLmlucHV0LmFtb3J0aXphdGlvblllYXJzOyB5ZWFyKyspIHtcblx0XHRcdGxldCB5ZWFybHlQcmluY2lwYWwgPSAwO1xuXHRcdFx0bGV0IHllYXJseUludGVyZXN0ID0gMDtcblxuXHRcdFx0Ly8gQ2FsY3VsYXRlIGZvciAxMiBtb250aHMgb3IgcmVtYWluaW5nIHBheW1lbnRzXG5cdFx0XHRjb25zdCBwYXltZW50c0luWWVhciA9IE1hdGgubWluKDEyLCB0b3RhbFBheW1lbnRzIC0gKHllYXIgLSAxKSAqIDEyKTtcblxuXHRcdFx0Zm9yIChsZXQgbW9udGggPSAxOyBtb250aCA8PSBwYXltZW50c0luWWVhcjsgbW9udGgrKykge1xuXHRcdFx0XHRjb25zdCBpbnRlcmVzdFBheW1lbnQgPSBiYWxhbmNlICogbW9udGhseVJhdGU7XG5cdFx0XHRcdGNvbnN0IHByaW5jaXBhbFBheW1lbnQgPSBtb250aGx5UGF5bWVudCAtIGludGVyZXN0UGF5bWVudDtcblxuXHRcdFx0XHR5ZWFybHlJbnRlcmVzdCArPSBpbnRlcmVzdFBheW1lbnQ7XG5cdFx0XHRcdHllYXJseVByaW5jaXBhbCArPSBwcmluY2lwYWxQYXltZW50O1xuXHRcdFx0XHRiYWxhbmNlIC09IHByaW5jaXBhbFBheW1lbnQ7XG5cdFx0XHR9XG5cblx0XHRcdHNjaGVkdWxlLnB1c2goe1xuXHRcdFx0XHR5ZWFyLFxuXHRcdFx0XHRwcmluY2lwYWw6IHllYXJseVByaW5jaXBhbCxcblx0XHRcdFx0aW50ZXJlc3Q6IHllYXJseUludGVyZXN0LFxuXHRcdFx0XHRiYWxhbmNlOiBNYXRoLm1heCgwLCBiYWxhbmNlKVxuXHRcdFx0fSk7XG5cblx0XHRcdGlmIChiYWxhbmNlIDw9IDApIGJyZWFrO1xuXHRcdH1cblxuXHRcdHJldHVybiBzY2hlZHVsZTtcblx0fVxuXG5cdHByaXZhdGUgY2FsY3VsYXRlVHJhbnNmZXJEdXR5KHByb3BlcnR5UHJpY2U6IG51bWJlcik6IG51bWJlciB7XG5cdFx0bGV0IGR1dHkgPSAwO1xuXHRcdGxldCBwcmV2aW91c0xpbWl0ID0gMDtcblxuXHRcdGZvciAoY29uc3QgYnJhY2tldCBvZiB0aGlzLnJ1bGVzLmZlZXMudHJhbnNmZXJEdXR5LmJyYWNrZXRzKSB7XG5cdFx0XHRpZiAoYnJhY2tldC51cFRvICYmIHByb3BlcnR5UHJpY2UgPiBwcmV2aW91c0xpbWl0KSB7XG5cdFx0XHRcdGNvbnN0IHRheGFibGUgPSBNYXRoLm1pbihwcm9wZXJ0eVByaWNlLCBicmFja2V0LnVwVG8pIC0gcHJldmlvdXNMaW1pdDtcblx0XHRcdFx0ZHV0eSArPSB0YXhhYmxlICogYnJhY2tldC5yYXRlO1xuXHRcdFx0XHRwcmV2aW91c0xpbWl0ID0gYnJhY2tldC51cFRvO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoYnJhY2tldC5hYm92ZSAmJiBwcm9wZXJ0eVByaWNlID4gYnJhY2tldC5hYm92ZSkge1xuXHRcdFx0XHRkdXR5ICs9IChwcm9wZXJ0eVByaWNlIC0gYnJhY2tldC5hYm92ZSkgKiBicmFja2V0LnJhdGU7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBkdXR5O1xuXHR9XG59XG4iXX0=
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9ydGdhZ2Uvc291dGgtYWZyaWNhL2RvbWFpbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUnVsZU1ldGEgfSBmcm9tIFwiLi4vLi4vLi4vc2hhcmVkL2RvbWFpbi90eXBlc1wiO1xuaW1wb3J0IHsgT3RoZXJGZWVzIH0gZnJvbSBcIi4uLy4uL2RvbWFpbi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJ1bGVJbnB1dERlZmluaXRpb24ge1xuICB0eXBlOiBcIm51bWJlclwiIHwgXCJzdHJpbmdcIjtcbiAgbWluPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXI7XG4gIGVudW0/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSdWxlSW5wdXRzIHtcbiAgcHJvcGVydHlQcmljZTogUnVsZUlucHV0RGVmaW5pdGlvbjtcbiAgZG93blBheW1lbnQ6IFJ1bGVJbnB1dERlZmluaXRpb247XG4gIGludGVyZXN0UmF0ZTogUnVsZUlucHV0RGVmaW5pdGlvbjtcbiAgYW1vcnRpemF0aW9uWWVhcnM6IFJ1bGVJbnB1dERlZmluaXRpb247XG4gIGdyb3NzTW9udGhseUluY29tZTogUnVsZUlucHV0RGVmaW5pdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2FuQ29uc3RyYWludHMge1xuICBtYXhMdHY6IG51bWJlcjtcbiAgbWluRG93blBheW1lbnRQZXJjZW50OiBudW1iZXI7XG4gIG1heEFtb3J0aXphdGlvblllYXJzOiBudW1iZXI7XG4gIG1heERlYnRUb0luY29tZVBlcmNlbnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcmVzdFJ1bGVzIHtcbiAgdHlwZTogXCJmaXhlZFwiIHwgXCJ2YXJpYWJsZVwiO1xuICByYXRlUmFuZ2VQZXJjZW50OiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9O1xuICBzdHJlc3NUZXN0QnVmZmVyUGVyY2VudDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluc3VyYW5jZVJ1bGVzIHtcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNmZXJEdXR5QnJhY2tldCB7XG4gIHVwVG8/OiBudW1iZXI7XG4gIGFib3ZlPzogbnVtYmVyO1xuICByYXRlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVlc1J1bGVzIHtcbiAgYm9uZFJlZ2lzdHJhdGlvblBlcmNlbnQ6IG51bWJlcjtcbiAgdHJhbnNmZXJEdXR5OiB7XG4gICAgYnJhY2tldHM6IFRyYW5zZmVyRHV0eUJyYWNrZXRbXTtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb3J0Z2FnZVJ1bGVzIHtcbiAgbG9hbkNvbnN0cmFpbnRzOiBMb2FuQ29uc3RyYWludHM7XG4gIGludGVyZXN0OiBJbnRlcmVzdFJ1bGVzO1xuICBpbnN1cmFuY2U6IEluc3VyYW5jZVJ1bGVzO1xuICBmZWVzOiBGZWVzUnVsZXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVsZU91dHB1dHMge1xuICBsb2FuQW1vdW50OiBcIm51bWJlclwiO1xuICBtb250aGx5UGF5bWVudDogXCJudW1iZXJcIjtcbiAgdG90YWxJbnRlcmVzdFBhaWQ6IFwibnVtYmVyXCI7XG4gIHRvdGFsUGFpZDogXCJudW1iZXJcIjtcbiAgZGVidFRvSW5jb21lUmF0aW86IFwibnVtYmVyXCI7XG4gIGlzQWZmb3JkYWJsZTogXCJib29sZWFuXCI7XG4gIHRyYW5zZmVyRHV0eTogXCJudW1iZXJcIjtcbiAgYm9uZFJlZ2lzdHJhdGlvbkZlZTogXCJudW1iZXJcIjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb3J0Z2FnZVJ1bGVTZXQge1xuICBtZXRhOiBSdWxlTWV0YTtcbiAgaW5wdXRzOiBSdWxlSW5wdXRzO1xuICBydWxlczogTW9ydGdhZ2VSdWxlcztcbiAgb3V0cHV0czogUnVsZU91dHB1dHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW1vcnRpemF0aW9uU2NoZWR1bGVJdGVtIHtcbiAgeWVhcjogbnVtYmVyO1xuICBwcmluY2lwYWw6IG51bWJlcjtcbiAgaW50ZXJlc3Q6IG51bWJlcjtcbiAgYmFsYW5jZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1vcnRnYWdlSW5wdXQge1xuICBwcm9wZXJ0eVByaWNlOiBudW1iZXI7XG4gIGRvd25QYXltZW50OiBudW1iZXI7XG4gIGFubnVhbEludGVyZXN0UmF0ZTogbnVtYmVyOyAvLyBlLmcuLCAxMS43NSVcbiAgYW1vcnRpemF0aW9uWWVhcnM6IG51bWJlcjtcbiAgZ3Jvc3NNb250aGx5SW5jb21lOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9ydGdhZ2VPdXRwdXQge1xuICBsb2FuQW1vdW50OiBudW1iZXI7XG4gIG1vbnRobHlQYXltZW50OiBudW1iZXI7XG4gIHRvdGFsSW50ZXJlc3RQYWlkOiBudW1iZXI7XG4gIHRvdGFsUGFpZDogbnVtYmVyO1xuICBkZWJ0VG9JbmNvbWVSYXRpbzogbnVtYmVyO1xuICBpc0FmZm9yZGFibGU6IGJvb2xlYW47XG4gIHRyYW5zZmVyRHV0eTogbnVtYmVyO1xuICBib25kUmVnaXN0cmF0aW9uRmVlOiBudW1iZXI7XG4gIGFtb3J0aXphdGlvblNjaGVkdWxlOiBBbW9ydGl6YXRpb25TY2hlZHVsZUl0ZW1bXTtcbiAgb3RoZXJGZWVzOiBPdGhlckZlZXM7XG59XG4iXX0=
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { RuleMeta } from "../../../shared/domain/types";
|
|
2
|
+
import { OtherFees } from "../../domain/types";
|
|
2
3
|
export interface RuleInputDefinition {
|
|
3
4
|
type: 'number' | 'string';
|
|
4
5
|
min?: number;
|
|
@@ -85,8 +86,9 @@ export interface MortgageCalculationResult {
|
|
|
85
86
|
loanAmount: number;
|
|
86
87
|
insurancePremium: number;
|
|
87
88
|
totalMortgage: number;
|
|
88
|
-
|
|
89
|
+
monthlyPaymentAmount: number;
|
|
89
90
|
totalInterestPaid: number;
|
|
90
91
|
totalPaid: number;
|
|
91
92
|
amortizationSchedule: AmortizationScheduleItem[];
|
|
93
|
+
otherFees: OtherFees;
|
|
92
94
|
}
|
|
@@ -5,6 +5,7 @@ export declare class FranceMortgageServiceImpl implements FranceMortgageService
|
|
|
5
5
|
private _rules;
|
|
6
6
|
constructor(input: MortgageInput, rules: MortgageRules);
|
|
7
7
|
calculate(): MortgageOutput;
|
|
8
|
+
private calculateMonthlyPayment;
|
|
8
9
|
private calculateAmortizationSchedule;
|
|
9
10
|
private calculateLoanAmount;
|
|
10
11
|
private ineligibleResult;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { OtherFees } from "../../domain/types";
|
|
1
2
|
export interface MortgageRules {
|
|
2
3
|
maxDebtRatio: number;
|
|
3
4
|
maxLoanDurationYears: number;
|
|
@@ -44,6 +45,10 @@ export interface MortgageInput {
|
|
|
44
45
|
isNewBuild: boolean;
|
|
45
46
|
}
|
|
46
47
|
export interface MortgageOutput {
|
|
48
|
+
loanAmount: number;
|
|
49
|
+
totalPaid: number;
|
|
50
|
+
monthlyPayment: number;
|
|
51
|
+
totalInterestPaid: number;
|
|
47
52
|
maxMonthlyPayment: number;
|
|
48
53
|
maxLoanAmount: number;
|
|
49
54
|
loanDurationYears: number;
|
|
@@ -53,4 +58,5 @@ export interface MortgageOutput {
|
|
|
53
58
|
monthlyInsuranceCost: number;
|
|
54
59
|
isEligible: boolean;
|
|
55
60
|
amortizationSchedule: AmortizationScheduleItem[];
|
|
61
|
+
otherFees: OtherFees;
|
|
56
62
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { RuleMeta } from "../../../shared/domain/types";
|
|
2
|
+
import { OtherFees } from "../../domain/types";
|
|
2
3
|
export interface RuleInputDefinition {
|
|
3
4
|
type: "number" | "string";
|
|
4
5
|
min?: number;
|
|
@@ -85,4 +86,5 @@ export interface MortgageOutput {
|
|
|
85
86
|
transferDuty: number;
|
|
86
87
|
bondRegistrationFee: number;
|
|
87
88
|
amortizationSchedule: AmortizationScheduleItem[];
|
|
89
|
+
otherFees: OtherFees;
|
|
88
90
|
}
|
package/package.json
CHANGED
|
@@ -13,11 +13,12 @@ export class CanadaMortgageServiceImpl implements CanadaMortgageService {
|
|
|
13
13
|
const {
|
|
14
14
|
propertyPrice,
|
|
15
15
|
downPayment,
|
|
16
|
-
interestRate,
|
|
17
16
|
amortizationYears,
|
|
18
17
|
paymentFrequency
|
|
19
18
|
} = input;
|
|
20
19
|
|
|
20
|
+
const interestRate = input.interestRate / 100;
|
|
21
|
+
|
|
21
22
|
/* -----------------------------
|
|
22
23
|
1. Loan Amount & LTV
|
|
23
24
|
------------------------------ */
|
|
@@ -100,10 +101,24 @@ export class CanadaMortgageServiceImpl implements CanadaMortgageService {
|
|
|
100
101
|
loanAmount: loanAmount,
|
|
101
102
|
insurancePremium: insurancePremium,
|
|
102
103
|
totalMortgage: totalMortgage,
|
|
103
|
-
|
|
104
|
+
monthlyPaymentAmount: paymentAmount,
|
|
104
105
|
totalInterestPaid: totalInterestPaid,
|
|
105
106
|
totalPaid: totalPaid,
|
|
106
|
-
amortizationSchedule: amortizationSchedule
|
|
107
|
+
amortizationSchedule: amortizationSchedule,
|
|
108
|
+
otherFees: {
|
|
109
|
+
notaryFees: {
|
|
110
|
+
value: 0,
|
|
111
|
+
label: 'NOTARY_FEES'
|
|
112
|
+
},
|
|
113
|
+
bankFees: {
|
|
114
|
+
value: 0,
|
|
115
|
+
label: 'BANK_FEES'
|
|
116
|
+
},
|
|
117
|
+
monthlyInsuranceFees: {
|
|
118
|
+
value: insurancePremium,
|
|
119
|
+
label: 'INSURANCE_PREMIUM'
|
|
120
|
+
}
|
|
121
|
+
}
|
|
107
122
|
};
|
|
108
123
|
}
|
|
109
124
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { RuleMeta } from "../../../shared/domain/types";
|
|
2
|
+
import { OtherFees } from "../../domain/types";
|
|
2
3
|
|
|
3
4
|
export interface RuleInputDefinition {
|
|
4
5
|
type: 'number' | 'string';
|
|
@@ -101,8 +102,9 @@ export interface MortgageCalculationResult {
|
|
|
101
102
|
loanAmount: number;
|
|
102
103
|
insurancePremium: number;
|
|
103
104
|
totalMortgage: number;
|
|
104
|
-
|
|
105
|
+
monthlyPaymentAmount: number;
|
|
105
106
|
totalInterestPaid: number;
|
|
106
107
|
totalPaid: number;
|
|
107
108
|
amortizationSchedule: AmortizationScheduleItem[];
|
|
109
|
+
otherFees: OtherFees;
|
|
108
110
|
}
|
|
@@ -63,41 +63,80 @@ export class FranceMortgageServiceImpl implements FranceMortgageService {
|
|
|
63
63
|
loanDurationYears
|
|
64
64
|
);
|
|
65
65
|
|
|
66
|
-
const
|
|
66
|
+
const monthlyPayment = this.calculateMonthlyPayment(
|
|
67
67
|
requiredLoanAmount,
|
|
68
68
|
this._input.annualInterestRate,
|
|
69
69
|
loanDurationYears
|
|
70
70
|
);
|
|
71
71
|
|
|
72
|
+
const totalPaid = monthlyPayment * loanDurationYears * 12;
|
|
73
|
+
const totalInterestPaid = totalPaid - requiredLoanAmount;
|
|
74
|
+
|
|
75
|
+
const amortizationSchedule = this.calculateAmortizationSchedule(
|
|
76
|
+
requiredLoanAmount,
|
|
77
|
+
this._input.annualInterestRate,
|
|
78
|
+
loanDurationYears,
|
|
79
|
+
monthlyPayment
|
|
80
|
+
);
|
|
81
|
+
|
|
72
82
|
return {
|
|
83
|
+
loanAmount: requiredLoanAmount,
|
|
84
|
+
totalPaid,
|
|
85
|
+
totalInterestPaid,
|
|
86
|
+
monthlyPayment,
|
|
87
|
+
requiredLoanAmount,
|
|
73
88
|
maxMonthlyPayment,
|
|
74
89
|
maxLoanAmount,
|
|
75
90
|
totalProjectCost,
|
|
76
|
-
requiredLoanAmount,
|
|
77
91
|
loanDurationYears,
|
|
78
92
|
debtRatio: debtRatio,
|
|
79
93
|
monthlyInsuranceCost,
|
|
80
94
|
isEligible: maxLoanAmount >= requiredLoanAmount,
|
|
81
|
-
amortizationSchedule
|
|
95
|
+
amortizationSchedule,
|
|
96
|
+
otherFees: {
|
|
97
|
+
notaryFees: {
|
|
98
|
+
value: notaryFees,
|
|
99
|
+
label: 'NOTARY_FEES'
|
|
100
|
+
},
|
|
101
|
+
bankFees: {
|
|
102
|
+
value: bankFees,
|
|
103
|
+
label: 'BANK_FEES'
|
|
104
|
+
},
|
|
105
|
+
monthlyInsuranceFees: {
|
|
106
|
+
value: monthlyInsuranceCost,
|
|
107
|
+
label: 'MONTHLY_INSURANCE_FEES'
|
|
108
|
+
}
|
|
109
|
+
}
|
|
82
110
|
};
|
|
83
111
|
}
|
|
84
112
|
|
|
113
|
+
private calculateMonthlyPayment(principal: number, annualRate: number, years: number): number {
|
|
114
|
+
const monthlyRate = annualRate / 100 / 12;
|
|
115
|
+
const payments = years * 12;
|
|
116
|
+
|
|
117
|
+
if (monthlyRate === 0) {
|
|
118
|
+
return payments === 0 ? 0 : principal / payments;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
return (
|
|
122
|
+
principal *
|
|
123
|
+
(monthlyRate / (1 - Math.pow(1 + monthlyRate, -payments)))
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
|
|
85
127
|
private calculateAmortizationSchedule(
|
|
86
128
|
loanAmount: number,
|
|
87
129
|
annualRate: number,
|
|
88
|
-
years: number
|
|
130
|
+
years: number,
|
|
131
|
+
monthlyPayment: number
|
|
89
132
|
): AmortizationScheduleItem[] {
|
|
90
133
|
const monthlyRate = annualRate / 100 / 12;
|
|
91
134
|
const totalPayments = years * 12;
|
|
92
135
|
|
|
93
|
-
if (monthlyRate === 0 || loanAmount <= 0) {
|
|
136
|
+
if (monthlyRate === 0 || loanAmount <= 0 || monthlyPayment <= 0) {
|
|
94
137
|
return [];
|
|
95
138
|
}
|
|
96
139
|
|
|
97
|
-
const monthlyPayment =
|
|
98
|
-
(loanAmount * monthlyRate) /
|
|
99
|
-
(1 - Math.pow(1 + monthlyRate, -totalPayments));
|
|
100
|
-
|
|
101
140
|
const schedule: AmortizationScheduleItem[] = [];
|
|
102
141
|
let balance = loanAmount;
|
|
103
142
|
|
|
@@ -152,8 +191,26 @@ export class FranceMortgageServiceImpl implements FranceMortgageService {
|
|
|
152
191
|
loanDurationYears: 0,
|
|
153
192
|
debtRatio: 0,
|
|
154
193
|
monthlyInsuranceCost: 0,
|
|
194
|
+
loanAmount: 0,
|
|
195
|
+
monthlyPayment: 0,
|
|
196
|
+
totalInterestPaid: 0,
|
|
197
|
+
totalPaid: 0,
|
|
155
198
|
isEligible: false,
|
|
156
|
-
amortizationSchedule: []
|
|
199
|
+
amortizationSchedule: [],
|
|
200
|
+
otherFees: {
|
|
201
|
+
notaryFees: {
|
|
202
|
+
value: 0,
|
|
203
|
+
label: 'NOTARY_FEES'
|
|
204
|
+
},
|
|
205
|
+
bankFees: {
|
|
206
|
+
value: 0,
|
|
207
|
+
label: 'BANK_FEES'
|
|
208
|
+
},
|
|
209
|
+
monthlyInsuranceFees: {
|
|
210
|
+
value: 0,
|
|
211
|
+
label: 'MONTHLY_INSURANCE_FEES'
|
|
212
|
+
}
|
|
213
|
+
}
|
|
157
214
|
};
|
|
158
215
|
}
|
|
159
216
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { OtherFees } from "../../domain/types";
|
|
2
|
+
|
|
1
3
|
export interface MortgageRules {
|
|
2
4
|
maxDebtRatio: number;
|
|
3
5
|
maxLoanDurationYears: number;
|
|
@@ -53,6 +55,10 @@ export interface MortgageInput {
|
|
|
53
55
|
}
|
|
54
56
|
|
|
55
57
|
export interface MortgageOutput {
|
|
58
|
+
loanAmount: number;
|
|
59
|
+
totalPaid: number;
|
|
60
|
+
monthlyPayment: number;
|
|
61
|
+
totalInterestPaid: number;
|
|
56
62
|
maxMonthlyPayment: number;
|
|
57
63
|
maxLoanAmount: number;
|
|
58
64
|
loanDurationYears: number;
|
|
@@ -62,4 +68,5 @@ export interface MortgageOutput {
|
|
|
62
68
|
monthlyInsuranceCost: number;
|
|
63
69
|
isEligible: boolean;
|
|
64
70
|
amortizationSchedule: AmortizationScheduleItem[];
|
|
71
|
+
otherFees: OtherFees;
|
|
65
72
|
}
|
|
@@ -50,7 +50,21 @@ export class SouthAfricaMortgageServiceImpl implements SouthAfricaMortgageServic
|
|
|
50
50
|
isAffordable,
|
|
51
51
|
transferDuty,
|
|
52
52
|
bondRegistrationFee,
|
|
53
|
-
amortizationSchedule
|
|
53
|
+
amortizationSchedule,
|
|
54
|
+
otherFees: {
|
|
55
|
+
notaryFees: {
|
|
56
|
+
value: bondRegistrationFee,
|
|
57
|
+
label: 'BOND_REGISTRATION_FEES'
|
|
58
|
+
},
|
|
59
|
+
bankFees: {
|
|
60
|
+
value: transferDuty,
|
|
61
|
+
label: 'TRANSFER_DUTY'
|
|
62
|
+
},
|
|
63
|
+
monthlyInsuranceFees: {
|
|
64
|
+
value: 0,
|
|
65
|
+
label: 'MONTHLY_INSURANCE_FEES'
|
|
66
|
+
}
|
|
67
|
+
}
|
|
54
68
|
};
|
|
55
69
|
}
|
|
56
70
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { RuleMeta } from "../../../shared/domain/types";
|
|
2
|
+
import { OtherFees } from "../../domain/types";
|
|
2
3
|
|
|
3
4
|
export interface RuleInputDefinition {
|
|
4
5
|
type: "number" | "string";
|
|
@@ -95,4 +96,5 @@ export interface MortgageOutput {
|
|
|
95
96
|
transferDuty: number;
|
|
96
97
|
bondRegistrationFee: number;
|
|
97
98
|
amortizationSchedule: AmortizationScheduleItem[];
|
|
99
|
+
otherFees: OtherFees;
|
|
98
100
|
}
|