math-exercises 3.0.94 → 3.0.96
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/lib/exercises/math/calcul/arithmetics/index.d.ts +0 -9
- package/lib/exercises/math/calcul/arithmetics/index.d.ts.map +1 -1
- package/lib/exercises/math/calcul/arithmetics/index.js +0 -9
- package/lib/exercises/math/calcul/decimals/decimalBoundingOnLine.d.ts +9 -0
- package/lib/exercises/math/calcul/decimals/decimalBoundingOnLine.d.ts.map +1 -0
- package/lib/exercises/math/calcul/decimals/decimalBoundingOnLine.js +171 -0
- package/lib/exercises/math/calcul/decimals/index.d.ts +1 -0
- package/lib/exercises/math/calcul/decimals/index.d.ts.map +1 -1
- package/lib/exercises/math/calcul/decimals/index.js +1 -0
- package/lib/exercises/math/calcul/fractions/index.d.ts +0 -1
- package/lib/exercises/math/calcul/fractions/index.d.ts.map +1 -1
- package/lib/exercises/math/calcul/fractions/index.js +0 -1
- package/lib/exercises/math/functions/basics/countFunctionZeroes.d.ts +11 -0
- package/lib/exercises/math/functions/basics/countFunctionZeroes.d.ts.map +1 -0
- package/lib/exercises/math/functions/basics/countFunctionZeroes.js +197 -0
- package/lib/exercises/math/functions/basics/findZeroesProductQuotient.d.ts +11 -0
- package/lib/exercises/math/functions/basics/findZeroesProductQuotient.d.ts.map +1 -0
- package/lib/exercises/math/functions/basics/findZeroesProductQuotient.js +213 -0
- package/lib/exercises/math/functions/basics/index.d.ts +3 -0
- package/lib/exercises/math/functions/basics/index.d.ts.map +1 -1
- package/lib/exercises/math/functions/basics/index.js +3 -1
- package/lib/exercises/math/functions/basics/isPointOnFunction.d.ts +10 -0
- package/lib/exercises/math/functions/basics/isPointOnFunction.d.ts.map +1 -0
- package/lib/exercises/math/functions/basics/isPointOnFunction.js +133 -0
- package/lib/exercises/math/functions/cube/index.d.ts +1 -0
- package/lib/exercises/math/functions/cube/index.d.ts.map +1 -1
- package/lib/exercises/math/functions/cube/index.js +1 -0
- package/lib/exercises/math/functions/cube/isPointOnCubicFunction.d.ts +9 -0
- package/lib/exercises/math/functions/cube/isPointOnCubicFunction.d.ts.map +1 -0
- package/lib/exercises/math/functions/cube/isPointOnCubicFunction.js +111 -0
- package/lib/exercises/math/functions/inverse/compareInverseValues.d.ts +10 -0
- package/lib/exercises/math/functions/inverse/compareInverseValues.d.ts.map +1 -0
- package/lib/exercises/math/functions/inverse/compareInverseValues.js +136 -0
- package/lib/exercises/math/functions/inverse/index.d.ts +3 -0
- package/lib/exercises/math/functions/inverse/index.d.ts.map +1 -0
- package/lib/exercises/math/functions/inverse/index.js +2 -0
- package/lib/exercises/math/functions/inverse/isPointOnReciprocalFunction.d.ts +9 -0
- package/lib/exercises/math/functions/inverse/isPointOnReciprocalFunction.d.ts.map +1 -0
- package/lib/exercises/math/functions/inverse/isPointOnReciprocalFunction.js +117 -0
- package/lib/exercises/math/functions/sign/equationFromSignTable.d.ts +4 -1
- package/lib/exercises/math/functions/sign/equationFromSignTable.d.ts.map +1 -1
- package/lib/exercises/math/functions/sign/equationFromSignTable.js +25 -10
- package/lib/exercises/math/functions/sqrt/getImageOfSquareRootFunction.d.ts +8 -0
- package/lib/exercises/math/functions/sqrt/getImageOfSquareRootFunction.d.ts.map +1 -0
- package/lib/exercises/math/functions/sqrt/getImageOfSquareRootFunction.js +128 -0
- package/lib/exercises/math/functions/sqrt/index.d.ts +1 -0
- package/lib/exercises/math/functions/sqrt/index.d.ts.map +1 -1
- package/lib/exercises/math/functions/sqrt/index.js +1 -0
- package/lib/exercises/math/functions/square/compareSquaredValues.d.ts +9 -0
- package/lib/exercises/math/functions/square/compareSquaredValues.d.ts.map +1 -0
- package/lib/exercises/math/functions/square/compareSquaredValues.js +143 -0
- package/lib/exercises/math/functions/square/imageOfSquareFunction.d.ts +8 -0
- package/lib/exercises/math/functions/square/imageOfSquareFunction.d.ts.map +1 -0
- package/lib/exercises/math/functions/square/imageOfSquareFunction.js +152 -0
- package/lib/exercises/math/functions/square/index.d.ts +2 -1
- package/lib/exercises/math/functions/square/index.d.ts.map +1 -1
- package/lib/exercises/math/functions/square/index.js +3 -1
- package/lib/exercises/math/functions/square/squareImageIntervalWithGraph.d.ts +11 -0
- package/lib/exercises/math/functions/square/squareImageIntervalWithGraph.d.ts.map +1 -0
- package/lib/exercises/math/functions/square/squareImageIntervalWithGraph.js +174 -0
- package/lib/exercises/math/functions/variations/varTableFromSentences.d.ts +2 -0
- package/lib/exercises/math/functions/variations/varTableFromSentences.d.ts.map +1 -0
- package/lib/exercises/math/functions/variations/varTableFromSentences.js +137 -0
- package/lib/exercises/math/powers/index.d.ts +1 -0
- package/lib/exercises/math/powers/index.d.ts.map +1 -1
- package/lib/exercises/math/powers/index.js +1 -0
- package/lib/exercises/math/powers/powerNotation.d.ts +9 -0
- package/lib/exercises/math/powers/powerNotation.d.ts.map +1 -0
- package/lib/exercises/math/powers/powerNotation.js +126 -0
- package/lib/exercises/math/probaStat/stats1var/averageList.d.ts.map +1 -1
- package/lib/exercises/math/probaStat/stats1var/averageList.js +1 -0
- package/lib/exercises/math/probaStat/stats1var/averageWithTable.d.ts.map +1 -1
- package/lib/exercises/math/probaStat/stats1var/averageWithTable.js +1 -0
- package/lib/exercises/math/probaStat/stats1var/calculateMeanFromFrequencies.d.ts.map +1 -1
- package/lib/exercises/math/probaStat/stats1var/calculateMeanFromFrequencies.js +1 -0
- package/lib/exercises/math/probaStat/stats1var/standardDeviationList.d.ts.map +1 -1
- package/lib/exercises/math/probaStat/stats1var/standardDeviationList.js +1 -0
- package/lib/exercises/math/probaStat/stats1var/standardDeviationTable.d.ts.map +1 -1
- package/lib/exercises/math/probaStat/stats1var/standardDeviationTable.js +1 -0
- package/lib/exercises/math/sets/index.d.ts +1 -0
- package/lib/exercises/math/sets/index.d.ts.map +1 -1
- package/lib/exercises/math/sets/index.js +1 -0
- package/lib/exercises/math/sets/isNumberDecimal.d.ts +11 -0
- package/lib/exercises/math/sets/isNumberDecimal.d.ts.map +1 -0
- package/lib/exercises/math/sets/isNumberDecimal.js +144 -0
- package/lib/index.d.ts +43 -42
- package/lib/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"powerNotation.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/powers/powerNotation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAcT,MAAM,6BAA6B,CAAC;AAYrC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAmIF,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,WAAW,CAkB/C,CAAC"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { addValidProp, shuffleProps, tryToAddWrongProp, } from "../../../exercises/exercise.js";
|
|
2
|
+
import { getDistinctQuestions } from "../../../exercises/utils/getDistinctQuestions.js";
|
|
3
|
+
import { randint } from "../../../math/utils/random/randint.js";
|
|
4
|
+
import { add } from "../../../tree/nodes/operators/addNode.js";
|
|
5
|
+
import { frac } from "../../../tree/nodes/operators/fractionNode.js";
|
|
6
|
+
import { multiply } from "../../../tree/nodes/operators/multiplyNode.js";
|
|
7
|
+
import { isPowerNode, power } from "../../../tree/nodes/operators/powerNode.js";
|
|
8
|
+
import { substract } from "../../../tree/nodes/operators/substractNode.js";
|
|
9
|
+
import { parseAlgebraic } from "../../../tree/parsers/latexParser.js";
|
|
10
|
+
import { coinFlip } from "../../../utils/alea/coinFlip.js";
|
|
11
|
+
import { handleVEAError } from "../../../utils/errors/handleVEAError.js";
|
|
12
|
+
const getPropositions = (nn, { answer, ...identifiers }) => {
|
|
13
|
+
const propositions = [];
|
|
14
|
+
addValidProp(propositions, answer);
|
|
15
|
+
const { a, n } = identifiers;
|
|
16
|
+
// Soit 1/a^n
|
|
17
|
+
// (a+1)^n
|
|
18
|
+
tryToAddWrongProp(propositions, power(add(a, 1).simplify(), n).toTex());
|
|
19
|
+
// (a-1)^n
|
|
20
|
+
tryToAddWrongProp(propositions, power(substract(a, 1).simplify(), n).toTex());
|
|
21
|
+
// -a^n
|
|
22
|
+
tryToAddWrongProp(propositions, power(multiply(-1, a), n).toTex());
|
|
23
|
+
// -a^(-n)
|
|
24
|
+
tryToAddWrongProp(propositions, power(multiply(-1, a), multiply(-1, n)).toTex());
|
|
25
|
+
// a*-1^(-n)
|
|
26
|
+
tryToAddWrongProp(propositions, multiply(a, power(-1, multiply(-1, n))).toTex());
|
|
27
|
+
// n^a
|
|
28
|
+
tryToAddWrongProp(propositions, power(n, a).toTex());
|
|
29
|
+
// -n^a
|
|
30
|
+
tryToAddWrongProp(propositions, power(multiply(-1, n), a).toTex());
|
|
31
|
+
// n^(-a)
|
|
32
|
+
tryToAddWrongProp(propositions, power(n, multiply(-1, a)).toTex());
|
|
33
|
+
return shuffleProps(propositions, nn);
|
|
34
|
+
};
|
|
35
|
+
const getAnswer = (identifiers) => {
|
|
36
|
+
// (1/a^n) <=> a^(-n)
|
|
37
|
+
const { a, n } = identifiers;
|
|
38
|
+
return `${power(a, multiply(-1, n)).toTex()}`;
|
|
39
|
+
};
|
|
40
|
+
const getInstruction = (identifiers) => {
|
|
41
|
+
const { a, n, isSimplified } = identifiers;
|
|
42
|
+
const an = power(a, n);
|
|
43
|
+
const fraction = frac(1, isSimplified ? an.evaluate() : an);
|
|
44
|
+
return `Écrire $${fraction.toTex()}$ sous la forme $a^n$, avec $n \\in \\mathbb{Z}.$`;
|
|
45
|
+
};
|
|
46
|
+
const getHint = (identifiers) => {
|
|
47
|
+
const fracForm = frac(1, power("a", "n")).toTex();
|
|
48
|
+
return `On a :
|
|
49
|
+
|
|
50
|
+
$$
|
|
51
|
+
${fracForm} = ${power("a", multiply(-1, "n")).toTex()}
|
|
52
|
+
$$`;
|
|
53
|
+
};
|
|
54
|
+
const getCorrection = (identifiers) => {
|
|
55
|
+
const { a, n, isSimplified } = identifiers;
|
|
56
|
+
const fraction = frac(1, power(a, n));
|
|
57
|
+
const fracForm = frac(1, power("a", "n")).toTex();
|
|
58
|
+
return `On sait que :
|
|
59
|
+
|
|
60
|
+
$$
|
|
61
|
+
${fracForm} = ${power("a", multiply(-1, "n")).toTex()}
|
|
62
|
+
$$
|
|
63
|
+
|
|
64
|
+
Ici on a donc :
|
|
65
|
+
|
|
66
|
+
$$
|
|
67
|
+
${fraction.toTex()} = ${power(a, multiply(-1, n)).toTex()}
|
|
68
|
+
$$
|
|
69
|
+
|
|
70
|
+
avec $a = ${a}$ et $n = ${n}$${isSimplified
|
|
71
|
+
? `, sachant que $${power(a, n).evaluate()} = ${power(a, n).toTex()}$`
|
|
72
|
+
: ""}.`;
|
|
73
|
+
};
|
|
74
|
+
const getKeys = (identifiers) => {
|
|
75
|
+
return [];
|
|
76
|
+
};
|
|
77
|
+
const isAnswerValid = (ans, { answer, ...identifiers }) => {
|
|
78
|
+
const { a, n } = identifiers;
|
|
79
|
+
const node = parseAlgebraic(ans);
|
|
80
|
+
try {
|
|
81
|
+
return (isPowerNode(node) &&
|
|
82
|
+
node.simplify().equals(power(a, multiply(-1, n)).simplify()));
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
return handleVEAError(err);
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
const getPowerNotationQuestion = (ops) => {
|
|
89
|
+
const isSimplePower = (a, n) => {
|
|
90
|
+
return (n === 2 && a <= 11) || (n === 3 && a <= 3);
|
|
91
|
+
};
|
|
92
|
+
const a = randint(2, 12);
|
|
93
|
+
const n = randint(2, 5);
|
|
94
|
+
const isSimplified = isSimplePower(a, n) ? coinFlip() : false;
|
|
95
|
+
const identifiers = { a, n, isSimplified };
|
|
96
|
+
return getQuestionFromIdentifiers(identifiers);
|
|
97
|
+
};
|
|
98
|
+
const getQuestionFromIdentifiers = (identifiers) => {
|
|
99
|
+
return {
|
|
100
|
+
answer: getAnswer(identifiers),
|
|
101
|
+
instruction: getInstruction(identifiers),
|
|
102
|
+
keys: getKeys(identifiers),
|
|
103
|
+
answerFormat: "tex",
|
|
104
|
+
identifiers,
|
|
105
|
+
hint: getHint(identifiers),
|
|
106
|
+
correction: getCorrection(identifiers),
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
export const powerNotation = {
|
|
110
|
+
id: "powerNotation",
|
|
111
|
+
label: "Écrire une fraction sous la forme $a^n$",
|
|
112
|
+
isSingleStep: true,
|
|
113
|
+
generator: (nb, opts) => getDistinctQuestions(() => getPowerNotationQuestion(opts), nb),
|
|
114
|
+
qcmTimer: 60,
|
|
115
|
+
freeTimer: 60,
|
|
116
|
+
getPropositions,
|
|
117
|
+
isAnswerValid,
|
|
118
|
+
subject: "Mathématiques",
|
|
119
|
+
getInstruction,
|
|
120
|
+
getHint,
|
|
121
|
+
getCorrection,
|
|
122
|
+
getAnswer,
|
|
123
|
+
getQuestionFromIdentifiers,
|
|
124
|
+
hasHintAndCorrection: true,
|
|
125
|
+
shouldHaveCalculator: false,
|
|
126
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"averageList.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/stats1var/averageList.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAUrC,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AA2FF,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"averageList.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/stats1var/averageList.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAUrC,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AA2FF,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,WAAW,CAgB7C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"averageWithTable.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/stats1var/averageWithTable.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,QAAQ,EAaT,MAAM,sBAAsB,CAAC;AAQ9B,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAoHF,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"averageWithTable.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/stats1var/averageWithTable.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,QAAQ,EAaT,MAAM,sBAAsB,CAAC;AAQ9B,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAoHF,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,WAAW,CAiBlD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculateMeanFromFrequencies.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/stats1var/calculateMeanFromFrequencies.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AASrC,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAwGF,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"calculateMeanFromFrequencies.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/stats1var/calculateMeanFromFrequencies.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AASrC,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAwGF,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,WAAW,CAqB9D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standardDeviationList.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/stats1var/standardDeviationList.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAarC,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AA6HF,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"standardDeviationList.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/stats1var/standardDeviationList.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAarC,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AA6HF,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,WAAW,CAevD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standardDeviationTable.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/stats1var/standardDeviationTable.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAcrC,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAkJF,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"standardDeviationTable.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/stats1var/standardDeviationTable.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAcrC,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAkJF,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,WAAW,CAexD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/sets/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/sets/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Exercise } from "../../../exercises/exercise.js";
|
|
2
|
+
import { NodeIdentifiers } from "../../../tree/nodes/nodeConstructor.js";
|
|
3
|
+
type Identifiers = {
|
|
4
|
+
options: {
|
|
5
|
+
a: NodeIdentifiers;
|
|
6
|
+
isDecimal: boolean;
|
|
7
|
+
}[];
|
|
8
|
+
};
|
|
9
|
+
export declare const isNumberdecimal: Exercise<Identifiers>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=isNumberDecimal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isNumberDecimal.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/sets/isNumberDecimal.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAOrC,OAAO,EACL,eAAe,EAEhB,MAAM,qCAAqC,CAAC;AAa7C,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE;QACP,CAAC,EAAE,eAAe,CAAC;QACnB,SAAS,EAAE,OAAO,CAAC;KACpB,EAAE,CAAC;CACL,CAAC;AAqIF,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,WAAW,CAmBjD,CAAC"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { addValidProp, shuffleProps, tryToAddWrongProp, } from "../../../exercises/exercise.js";
|
|
2
|
+
import { getDistinctQuestions } from "../../../exercises/utils/getDistinctQuestions.js";
|
|
3
|
+
import { RationalConstructor } from "../../../math/numbers/rationals/rational.js";
|
|
4
|
+
import { randfloat } from "../../../math/utils/random/randfloat.js";
|
|
5
|
+
import { randint } from "../../../math/utils/random/randint.js";
|
|
6
|
+
import { reifyAlgebraic, } from "../../../tree/nodes/nodeConstructor.js";
|
|
7
|
+
import { isConstantNode } from "../../../tree/nodes/numbers/constantNode.js";
|
|
8
|
+
import { PiNode } from "../../../tree/nodes/numbers/piNode.js";
|
|
9
|
+
import { isFractionNode, } from "../../../tree/nodes/operators/fractionNode.js";
|
|
10
|
+
import { coinFlip } from "../../../utils/alea/coinFlip.js";
|
|
11
|
+
import { random } from "../../../utils/alea/random.js";
|
|
12
|
+
import { doWhile } from "../../../utils/doWhile.js";
|
|
13
|
+
import { handleVEAError } from "../../../utils/errors/handleVEAError.js";
|
|
14
|
+
const getPropositions = (n, { answer, options }) => {
|
|
15
|
+
const propositions = [];
|
|
16
|
+
for (const { a, isDecimal } of options) {
|
|
17
|
+
const prop = reifyAlgebraic(a).toTex();
|
|
18
|
+
if (isDecimal) {
|
|
19
|
+
addValidProp(propositions, prop);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
tryToAddWrongProp(propositions, prop);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return shuffleProps(propositions, n);
|
|
26
|
+
};
|
|
27
|
+
const getAnswer = (identifiers) => {
|
|
28
|
+
return "";
|
|
29
|
+
};
|
|
30
|
+
const getInstruction = (identifiers) => {
|
|
31
|
+
return "Parmi ces nombres, lesquels sont décimaux ?";
|
|
32
|
+
};
|
|
33
|
+
const getHint = (identifiers) => {
|
|
34
|
+
return "Un nombre est décimal s'il a un nombre fini de chiffres après la virgule.";
|
|
35
|
+
};
|
|
36
|
+
const getCorrection = (identifiers) => {
|
|
37
|
+
const { options } = identifiers;
|
|
38
|
+
let correction = "";
|
|
39
|
+
for (const { a, isDecimal } of options) {
|
|
40
|
+
const node = reifyAlgebraic(a);
|
|
41
|
+
const tex = node.toTex();
|
|
42
|
+
if (isConstantNode(node)) {
|
|
43
|
+
correction += `- $${tex}$ n'est pas un nombre décimal, car il s'écrit avec un nombre infini de chiffres après la virgule.\n\n`;
|
|
44
|
+
}
|
|
45
|
+
else if (isFractionNode(node)) {
|
|
46
|
+
const denom = node.rightChild.toTex();
|
|
47
|
+
if (isDecimal) {
|
|
48
|
+
correction += `- $${tex} = ${node
|
|
49
|
+
.evaluate()
|
|
50
|
+
.frenchify()}$ est un nombre décimal car il s'écrit avec un nombre fini de chiffres après la virgule.\n\n`;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
correction += `- $${tex} \\approx ${node
|
|
54
|
+
.evaluate()
|
|
55
|
+
.frenchify()
|
|
56
|
+
.slice(0, 8)}\\ldots$ n'est pas un nombre décimal, car il s'écrit avec un nombre infini de chiffres après la virgule.\n\n`;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
if (isDecimal) {
|
|
61
|
+
correction += `- $${tex}$ est un nombre décimal car il a un nombre fini de chiffres après sa virgule.\n\n`;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
correction += `- $${tex}$ est un nombre décimal car c'est un nombre entier. En effet, on peut écrire $${tex} = ${tex},0$.\n\n`;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return correction;
|
|
69
|
+
};
|
|
70
|
+
const getKeys = (identifiers) => {
|
|
71
|
+
return [];
|
|
72
|
+
};
|
|
73
|
+
const isAnswerValid = (ans, { answer }) => {
|
|
74
|
+
try {
|
|
75
|
+
throw Error("VEA not implemented");
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
return handleVEAError(err);
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
const generateNonDecimalNumber = () => {
|
|
82
|
+
const nonDecimals = [];
|
|
83
|
+
nonDecimals.push(RationalConstructor.randomPureRational().toTree());
|
|
84
|
+
nonDecimals.push(PiNode);
|
|
85
|
+
return random(nonDecimals);
|
|
86
|
+
};
|
|
87
|
+
const generateDecimalNumber = () => {
|
|
88
|
+
const decimals = [];
|
|
89
|
+
decimals.push(randint(0, 100).toTree());
|
|
90
|
+
decimals.push(randfloat(0, 100, 2).toTree());
|
|
91
|
+
decimals.push(RationalConstructor.randomDecimal().toTree());
|
|
92
|
+
return random(decimals);
|
|
93
|
+
};
|
|
94
|
+
const getIsNumberdecimalQuestion = (ops) => {
|
|
95
|
+
let choices = [];
|
|
96
|
+
const decimal = generateDecimalNumber();
|
|
97
|
+
const nonDecimal = generateNonDecimalNumber();
|
|
98
|
+
choices.push({ a: decimal, isDecimal: true });
|
|
99
|
+
choices.push({ a: nonDecimal, isDecimal: false });
|
|
100
|
+
for (let i = 0; i < 2; i++) {
|
|
101
|
+
const isDecimal = coinFlip();
|
|
102
|
+
const randomNumber = doWhile(() => (isDecimal ? generateDecimalNumber() : generateNonDecimalNumber()), (a) => choices.some((c) => c.a.toTex() === a.toTex()));
|
|
103
|
+
choices.push({ a: randomNumber, isDecimal });
|
|
104
|
+
}
|
|
105
|
+
const identifiers = {
|
|
106
|
+
options: choices.map((c) => {
|
|
107
|
+
return {
|
|
108
|
+
a: c.a.toIdentifiers(),
|
|
109
|
+
isDecimal: c.isDecimal,
|
|
110
|
+
};
|
|
111
|
+
}),
|
|
112
|
+
};
|
|
113
|
+
return getQuestionFromIdentifiers(identifiers);
|
|
114
|
+
};
|
|
115
|
+
const getQuestionFromIdentifiers = (identifiers) => {
|
|
116
|
+
return {
|
|
117
|
+
answer: getAnswer(identifiers),
|
|
118
|
+
instruction: getInstruction(identifiers),
|
|
119
|
+
keys: getKeys(identifiers),
|
|
120
|
+
answerFormat: "tex",
|
|
121
|
+
identifiers,
|
|
122
|
+
hint: getHint(identifiers),
|
|
123
|
+
correction: getCorrection(identifiers),
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
export const isNumberdecimal = {
|
|
127
|
+
id: "isNumberDecimal",
|
|
128
|
+
label: "Dire si un nombre est décimal",
|
|
129
|
+
isSingleStep: true,
|
|
130
|
+
generator: (nb, opts) => getDistinctQuestions(() => getIsNumberdecimalQuestion(opts), nb),
|
|
131
|
+
qcmTimer: 60,
|
|
132
|
+
freeTimer: 60,
|
|
133
|
+
getPropositions,
|
|
134
|
+
isAnswerValid,
|
|
135
|
+
subject: "Mathématiques",
|
|
136
|
+
getInstruction,
|
|
137
|
+
getHint,
|
|
138
|
+
getCorrection,
|
|
139
|
+
getAnswer,
|
|
140
|
+
getQuestionFromIdentifiers,
|
|
141
|
+
hasHintAndCorrection: true,
|
|
142
|
+
answerType: "QCM",
|
|
143
|
+
isQCM: true,
|
|
144
|
+
};
|
package/lib/index.d.ts
CHANGED
|
@@ -39,22 +39,6 @@ declare const mathExercises: (Exercise<{
|
|
|
39
39
|
isAskingParity: boolean;
|
|
40
40
|
}, {}> | Exercise<{
|
|
41
41
|
n: number;
|
|
42
|
-
}, {}> | Exercise<{
|
|
43
|
-
a: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
44
|
-
}, {}> | Exercise<{
|
|
45
|
-
options: {
|
|
46
|
-
a: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
47
|
-
isDecimal: boolean;
|
|
48
|
-
}[];
|
|
49
|
-
}, {}> | Exercise<{
|
|
50
|
-
x: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
51
|
-
y: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
52
|
-
}, {}> | Exercise<{
|
|
53
|
-
x: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
54
|
-
y: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
55
|
-
}, {}> | Exercise<{
|
|
56
|
-
point: import("./math/geometry/point.js").PointIdentifiers;
|
|
57
|
-
func: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
58
42
|
}, {}> | Exercise<{
|
|
59
43
|
n: number;
|
|
60
44
|
threshold: number;
|
|
@@ -62,22 +46,6 @@ declare const mathExercises: (Exercise<{
|
|
|
62
46
|
}, {}> | Exercise<{
|
|
63
47
|
a: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
64
48
|
b: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
65
|
-
}, {}> | Exercise<{
|
|
66
|
-
a: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
67
|
-
b: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
68
|
-
isMinusInside: boolean;
|
|
69
|
-
}, {}> | Exercise<{
|
|
70
|
-
a: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
71
|
-
b: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
72
|
-
}, {}> | Exercise<{
|
|
73
|
-
point: import("./math/geometry/point.js").PointIdentifiers;
|
|
74
|
-
bounding: number;
|
|
75
|
-
}, {}> | Exercise<{
|
|
76
|
-
type: number;
|
|
77
|
-
a: number;
|
|
78
|
-
b?: number;
|
|
79
|
-
c?: number;
|
|
80
|
-
d?: number;
|
|
81
49
|
}, {}> | Exercise<{
|
|
82
50
|
integerFirst: boolean;
|
|
83
51
|
integer: number;
|
|
@@ -153,10 +121,6 @@ declare const mathExercises: (Exercise<{
|
|
|
153
121
|
}, {
|
|
154
122
|
allowNonIrreductible?: boolean;
|
|
155
123
|
}> | Exercise<{
|
|
156
|
-
a: number;
|
|
157
|
-
n: number;
|
|
158
|
-
isSimplified: boolean;
|
|
159
|
-
}, {}> | Exercise<{
|
|
160
124
|
a: number;
|
|
161
125
|
b: number;
|
|
162
126
|
c: number;
|
|
@@ -301,6 +265,9 @@ declare const mathExercises: (Exercise<{
|
|
|
301
265
|
}, {}> | Exercise<{
|
|
302
266
|
dec: number;
|
|
303
267
|
pow: number;
|
|
268
|
+
}, {}> | Exercise<{
|
|
269
|
+
point: import("./math/geometry/point.js").PointIdentifiers;
|
|
270
|
+
bounding: number;
|
|
304
271
|
}, {}> | Exercise<{
|
|
305
272
|
choices: {
|
|
306
273
|
node: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
@@ -932,6 +899,21 @@ declare const mathExercises: (Exercise<{
|
|
|
932
899
|
}, {}> | Exercise<{
|
|
933
900
|
points: number[][];
|
|
934
901
|
initTable: string[][];
|
|
902
|
+
}, {}> | Exercise<{
|
|
903
|
+
point: import("./math/geometry/point.js").PointIdentifiers;
|
|
904
|
+
func: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
905
|
+
}, {}> | Exercise<{
|
|
906
|
+
type: number;
|
|
907
|
+
a: number;
|
|
908
|
+
b: number;
|
|
909
|
+
c: number;
|
|
910
|
+
d: number;
|
|
911
|
+
}, {}> | Exercise<{
|
|
912
|
+
type: number;
|
|
913
|
+
a: number;
|
|
914
|
+
b?: number;
|
|
915
|
+
c?: number;
|
|
916
|
+
d?: number;
|
|
935
917
|
}, {}> | Exercise<{
|
|
936
918
|
k: number;
|
|
937
919
|
}, {}> | Exercise<{
|
|
@@ -939,6 +921,9 @@ declare const mathExercises: (Exercise<{
|
|
|
939
921
|
}, {}> | Exercise<{
|
|
940
922
|
a: number;
|
|
941
923
|
b: number;
|
|
924
|
+
}, {}> | Exercise<{
|
|
925
|
+
x: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
926
|
+
y: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
942
927
|
}, {}> | Exercise<{
|
|
943
928
|
a: number;
|
|
944
929
|
b: number;
|
|
@@ -1102,6 +1087,9 @@ declare const mathExercises: (Exercise<{
|
|
|
1102
1087
|
type: number;
|
|
1103
1088
|
}, {}> | Exercise<{
|
|
1104
1089
|
a: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
1090
|
+
}, {}> | Exercise<{
|
|
1091
|
+
a: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
1092
|
+
b: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
1105
1093
|
}, {}> | Exercise<{
|
|
1106
1094
|
lowerBound: number;
|
|
1107
1095
|
upperBound: number;
|
|
@@ -1174,7 +1162,9 @@ declare const mathExercises: (Exercise<{
|
|
|
1174
1162
|
xs: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers[];
|
|
1175
1163
|
type: number;
|
|
1176
1164
|
ineqSymbol?: string;
|
|
1177
|
-
}, {
|
|
1165
|
+
}, {
|
|
1166
|
+
questionType: string;
|
|
1167
|
+
}> | Exercise<{
|
|
1178
1168
|
initTable: string[][];
|
|
1179
1169
|
a: number;
|
|
1180
1170
|
x1: number;
|
|
@@ -1211,6 +1201,8 @@ declare const mathExercises: (Exercise<{
|
|
|
1211
1201
|
b?: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
1212
1202
|
}, {}> | Exercise<{
|
|
1213
1203
|
x: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
1204
|
+
}, {}> | Exercise<{
|
|
1205
|
+
a: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
1214
1206
|
}, {}> | Exercise<{
|
|
1215
1207
|
coin: boolean;
|
|
1216
1208
|
radius: number;
|
|
@@ -1837,6 +1829,10 @@ declare const mathExercises: (Exercise<{
|
|
|
1837
1829
|
b: number;
|
|
1838
1830
|
c: number;
|
|
1839
1831
|
d: number;
|
|
1832
|
+
}, {}> | Exercise<{
|
|
1833
|
+
a: number;
|
|
1834
|
+
n: number;
|
|
1835
|
+
isSimplified: boolean;
|
|
1840
1836
|
}, {}> | Exercise<{
|
|
1841
1837
|
c: number;
|
|
1842
1838
|
}, {}> | Exercise<{
|
|
@@ -2232,6 +2228,11 @@ declare const mathExercises: (Exercise<{
|
|
|
2232
2228
|
}, {}> | Exercise<{
|
|
2233
2229
|
subset: number;
|
|
2234
2230
|
set: number;
|
|
2231
|
+
}, {}> | Exercise<{
|
|
2232
|
+
options: {
|
|
2233
|
+
a: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
2234
|
+
isDecimal: boolean;
|
|
2235
|
+
}[];
|
|
2235
2236
|
}, {}> | Exercise<{
|
|
2236
2237
|
x: number;
|
|
2237
2238
|
y: number;
|
|
@@ -2452,11 +2453,6 @@ declare const mathExercises: (Exercise<{
|
|
|
2452
2453
|
labels: string[];
|
|
2453
2454
|
}, {}>)[];
|
|
2454
2455
|
declare const pcExercises: (Exercise<{
|
|
2455
|
-
atomicMass: number;
|
|
2456
|
-
atomicNumber: number;
|
|
2457
|
-
isAsking: string;
|
|
2458
|
-
symbol: string;
|
|
2459
|
-
}, {}> | Exercise<{
|
|
2460
2456
|
numbers: number[];
|
|
2461
2457
|
}, {}> | Exercise<{
|
|
2462
2458
|
randQuation: number;
|
|
@@ -2611,6 +2607,11 @@ declare const pcExercises: (Exercise<{
|
|
|
2611
2607
|
randomMaterial1: number;
|
|
2612
2608
|
randomMaterial2: number;
|
|
2613
2609
|
ramdonAngleIncidenceDeg: number;
|
|
2610
|
+
}, {}> | Exercise<{
|
|
2611
|
+
atomicMass: number;
|
|
2612
|
+
atomicNumber: number;
|
|
2613
|
+
isAsking: string;
|
|
2614
|
+
symbol: string;
|
|
2614
2615
|
}, {}> | Exercise<{
|
|
2615
2616
|
isAsking: string;
|
|
2616
2617
|
enetringLightX: number;
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,aAAa,MAAM,2BAA2B,CAAC;AAE3D,OAAO,4BAA4B,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,QAAA,MAAM,aAAa
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,aAAa,MAAM,2BAA2B,CAAC;AAE3D,OAAO,4BAA4B,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAA+B,CAAC;AACnD,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAA6B,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC"}
|