@insignia-education/api-sdk-js 0.15.69 → 0.15.71

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.
Files changed (71) hide show
  1. package/.github/workflows/npm-publish-github-packages.yml +4 -51
  2. package/AGENTS.md +8 -4
  3. package/CLAUDE.md +16 -25
  4. package/package.json +1 -1
  5. package/src/api/v1/Users.js +2 -0
  6. package/.env +0 -1
  7. package/.env.test +0 -5
  8. package/coverage/clover.xml +0 -378
  9. package/coverage/coverage-final.json +0 -3
  10. package/coverage/lcov-report/Client.js.html +0 -463
  11. package/coverage/lcov-report/base.css +0 -224
  12. package/coverage/lcov-report/block-navigation.js +0 -87
  13. package/coverage/lcov-report/favicon.png +0 -0
  14. package/coverage/lcov-report/index.html +0 -131
  15. package/coverage/lcov-report/prettify.css +0 -1
  16. package/coverage/lcov-report/prettify.js +0 -2
  17. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  18. package/coverage/lcov-report/sorter.js +0 -210
  19. package/coverage/lcov-report/src/Client.js.html +0 -478
  20. package/coverage/lcov-report/src/api/index.html +0 -116
  21. package/coverage/lcov-report/src/api/index.js.html +0 -127
  22. package/coverage/lcov-report/src/api/v1/Accounts.js.html +0 -151
  23. package/coverage/lcov-report/src/api/v1/Admin.js.html +0 -121
  24. package/coverage/lcov-report/src/api/v1/Auth.js.html +0 -157
  25. package/coverage/lcov-report/src/api/v1/Categories.js.html +0 -121
  26. package/coverage/lcov-report/src/api/v1/Changelogs.js.html +0 -118
  27. package/coverage/lcov-report/src/api/v1/Configs.js.html +0 -121
  28. package/coverage/lcov-report/src/api/v1/ContactForms.js.html +0 -121
  29. package/coverage/lcov-report/src/api/v1/ConversationalTopics.js.html +0 -121
  30. package/coverage/lcov-report/src/api/v1/Countries.js.html +0 -112
  31. package/coverage/lcov-report/src/api/v1/Coupons.js.html +0 -175
  32. package/coverage/lcov-report/src/api/v1/Courses.js.html +0 -442
  33. package/coverage/lcov-report/src/api/v1/Currencies.js.html +0 -118
  34. package/coverage/lcov-report/src/api/v1/Dashboard.js.html +0 -115
  35. package/coverage/lcov-report/src/api/v1/EducationCenter.js.html +0 -115
  36. package/coverage/lcov-report/src/api/v1/Employee.js.html +0 -169
  37. package/coverage/lcov-report/src/api/v1/Files.js.html +0 -160
  38. package/coverage/lcov-report/src/api/v1/Forums.js.html +0 -175
  39. package/coverage/lcov-report/src/api/v1/Hashes.js.html +0 -121
  40. package/coverage/lcov-report/src/api/v1/Insignias.js.html +0 -121
  41. package/coverage/lcov-report/src/api/v1/Languages.js.html +0 -121
  42. package/coverage/lcov-report/src/api/v1/MailBlacklist.js.html +0 -118
  43. package/coverage/lcov-report/src/api/v1/MailingLists.js.html +0 -127
  44. package/coverage/lcov-report/src/api/v1/Offers.js.html +0 -142
  45. package/coverage/lcov-report/src/api/v1/Organizations.js.html +0 -199
  46. package/coverage/lcov-report/src/api/v1/PaymentMethods.js.html +0 -121
  47. package/coverage/lcov-report/src/api/v1/Payments.js.html +0 -310
  48. package/coverage/lcov-report/src/api/v1/Premiums.js.html +0 -121
  49. package/coverage/lcov-report/src/api/v1/Quizzes.js.html +0 -214
  50. package/coverage/lcov-report/src/api/v1/Sales.js.html +0 -148
  51. package/coverage/lcov-report/src/api/v1/Search.js.html +0 -115
  52. package/coverage/lcov-report/src/api/v1/ShortLinks.js.html +0 -127
  53. package/coverage/lcov-report/src/api/v1/Surveys.js.html +0 -181
  54. package/coverage/lcov-report/src/api/v1/Taxes.js.html +0 -121
  55. package/coverage/lcov-report/src/api/v1/Teacher.js.html +0 -322
  56. package/coverage/lcov-report/src/api/v1/Telegram.js.html +0 -142
  57. package/coverage/lcov-report/src/api/v1/TwoFactor.js.html +0 -145
  58. package/coverage/lcov-report/src/api/v1/UserSessionTypes.js.html +0 -112
  59. package/coverage/lcov-report/src/api/v1/UserTypes.js.html +0 -121
  60. package/coverage/lcov-report/src/api/v1/Users.js.html +0 -772
  61. package/coverage/lcov-report/src/api/v1/Utm.js.html +0 -151
  62. package/coverage/lcov-report/src/api/v1/Webauthn.js.html +0 -190
  63. package/coverage/lcov-report/src/api/v1/Zoom.js.html +0 -124
  64. package/coverage/lcov-report/src/api/v1/index.html +0 -116
  65. package/coverage/lcov-report/src/api/v1/index.js.html +0 -373
  66. package/coverage/lcov-report/src/index.html +0 -116
  67. package/coverage/lcov-report/src/index.js.html +0 -109
  68. package/coverage/lcov-report/tests/helpers.js.html +0 -145
  69. package/coverage/lcov-report/tests/index.html +0 -116
  70. package/coverage/lcov.info +0 -549
  71. package/coverage/test-report.html +0 -277
@@ -7,13 +7,10 @@ on:
7
7
 
8
8
  permissions:
9
9
  id-token: write # Required for OIDC
10
- contents: write # Required to commit the version bump back to master
11
10
 
12
11
  jobs:
13
12
  publish:
14
13
  runs-on: ubuntu-latest
15
- outputs:
16
- version: ${{ steps.bump.outputs.version }}
17
14
  steps:
18
15
  - uses: actions/checkout@v6
19
16
 
@@ -26,51 +23,7 @@ jobs:
26
23
  - run: npm run build --if-present
27
24
  # npm test disabled: integration suite needs a live api backend, no CI service for it yet
28
25
 
29
- - name: Bump patch version
30
- id: bump
31
- run: |
32
- npm version patch --no-git-tag-version
33
- echo "version=$(node -p "require('./package.json').version")" >> "$GITHUB_OUTPUT"
34
-
35
- # Pushing with GITHUB_TOKEN doesn't retrigger this workflow, so no [skip ci] loop risk.
36
- - name: Commit version bump
37
- run: |
38
- git config user.name "github-actions[bot]"
39
- git config user.email "github-actions[bot]@users.noreply.github.com"
40
- git add package.json package-lock.json
41
- git commit -m "chore: bump version to ${{ steps.bump.outputs.version }}"
42
- git push
43
-
44
- - run: npm publish # Or: npm stage publish
45
-
46
- sync-front:
47
- needs: publish
48
- runs-on: ubuntu-latest
49
- strategy:
50
- matrix:
51
- branch: [master, beta]
52
- steps:
53
- - uses: actions/checkout@v6
54
- with:
55
- repository: insignia-education/front
56
- ref: ${{ matrix.branch }}
57
- token: ${{ secrets.FRONT_REPO_PAT }}
58
-
59
- - uses: actions/setup-node@v6
60
- with:
61
- node-version: '24'
62
-
63
- - name: Bump api-sdk-js dependency
64
- run: npm install @insignia-education/api-sdk-js@${{ needs.publish.outputs.version }} --package-lock-only --no-audit --no-fund
65
-
66
- - name: Commit and push
67
- run: |
68
- git config user.name "github-actions[bot]"
69
- git config user.email "github-actions[bot]@users.noreply.github.com"
70
- git add package.json package-lock.json
71
- if git diff --cached --quiet; then
72
- echo "front@${{ matrix.branch }} already on ${{ needs.publish.outputs.version }}"
73
- exit 0
74
- fi
75
- git commit -m "chore: bump @insignia-education/api-sdk-js to ${{ needs.publish.outputs.version }}"
76
- git push origin ${{ matrix.branch }}
26
+ # The version in package.json is whatever was committed — this workflow never bumps it.
27
+ # The pre-commit hook (.github/hooks/pre-commit) already refuses a commit whose version is
28
+ # already published, so publishing here just fails loudly if someone forgot to bump it.
29
+ - run: npm publish # Or: npm stage publish
package/AGENTS.md CHANGED
@@ -95,10 +95,14 @@ Consumers (`front`, `api`) must install this package the normal npm way — **ne
95
95
  - A symlinked package looks like it works, but an `npm install`/`npm ci` in the consumer repo can
96
96
  silently replace the link with a stale registry copy — the consumer keeps running old SDK code
97
97
  with no error, and edits stop propagating until someone notices at runtime.
98
- - Instead: bump this package's version (`npm version patch|minor`) and have the human publish it
99
- (`npm publish`), then bump the version range in the consumer's `package.json` and run
100
- `npm install` there.
101
- - Never publish on your own initiative publishing is a human action.
98
+ - Instead: bump this package's version (`npm version patch|minor` the pre-commit hook rejects a
99
+ commit whose version is already published, so this can't be skipped) and commit it. CI
100
+ (`.github/workflows/npm-publish-github-packages.yml`) publishes automatically on push to
101
+ master it does **not** bump the version itself, and it does **not** touch any consumer repo,
102
+ so pin the exact new version (no `^`/`~`) in the consumer's `package.json` and run
103
+ `npm install` there yourself.
104
+ - Never publish on your own initiative — pushing the version-bump commit to master is what
105
+ triggers it; don't run `npm publish` by hand.
102
106
 
103
107
  ## Never do
104
108
  - Don't add runtime dependencies
package/CLAUDE.md CHANGED
@@ -31,30 +31,21 @@ made here.
31
31
 
32
32
  ## Deployment / publish (GitHub Actions — read this before touching `master`)
33
33
 
34
- `.github/workflows/npm-publish-github-packages.yml` runs on every push to `master` (skipped only
35
- if the commit message contains `[skip ci]`). It is **not** a manual `npm publish` a human runs by
36
- hand merging a PR to `master` is the trigger, and that merge is a human action, so the "never
37
- publish on your own initiative" rule in `AGENTS.md` still applies to *merging to master*, not just
38
- to running `npm publish` directly.
39
-
40
- What the workflow actually does, in order:
41
-
42
- 1. **`bump-and-publish`** — bumps the patch version (`npm version patch -m "chore: release v%s
43
- [skip ci]"`), pushes the version-bump commit + tag back to `master`, then publishes the package
44
- to npm (`npm publish --access public`, using `secrets.NPM_TOKEN`).
45
- 2. **`sync-front`** (runs after publish, waits 15s for npm registry propagation) — automatically
46
- syncs `front` using `secrets.FRONT_REPO_PAT`:
47
- - **`beta` branch**: checks it out, runs `npm install @insignia-education/api-sdk-js@<new
48
- version>`, commits, and **pushes directly** — no review step.
49
- - **`master` branch**: checks it out, runs the same install, and **opens a PR** against
50
- `front`'s `master` (`chore/bump-api-sdk-js-<version>`) for human review — it does not merge
51
- itself.
34
+ `.github/workflows/npm-publish-github-packages.yml` runs on every push to `master`. It is **not**
35
+ a manual `npm publish` a human runs by hand merging a PR to `master` is the trigger, and that
36
+ merge is a human action, so the "never publish on your own initiative" rule in `AGENTS.md` still
37
+ applies to *merging to master*, not just to running `npm publish` directly.
38
+
39
+ What the workflow actually does: installs, builds, then `npm publish`. That's it — it does **not**
40
+ bump the version (the pre-commit hook already forces that before the commit even lands), and it
41
+ does **not** touch `front` or any other consumer repo.
52
42
 
53
43
  **Practical implications:**
54
- - Merging a PR to this repo's `master` is not just "ship the SDK change" it also auto-bumps
55
- `front`'s `beta` branch with no human in the loop, and opens (but does not merge) a PR against
56
- `front`'s `master`. Treat a `master` merge here as a deploy action, not a routine commit.
57
- - There is no manual "bump the consumer's `package.json`" step to perform for `beta` CI already
58
- does it. A human only needs to review/merge the auto-opened PR against `front`'s `master`.
59
- - Requires `secrets.NPM_TOKEN` (npm publish) and `secrets.FRONT_REPO_PAT` (push to `front` +
60
- open PRs there) to be configured on this repo.
44
+ - The version published is exactly whatever `package.json` says at the commit that landed on
45
+ `master`. If that version is already on npm (e.g. someone forgot to bump it), the publish step
46
+ fails loudly there's no silent overwrite or skip.
47
+ - Nothing else updates automatically: after a merge here, a human still has to pin the exact new
48
+ version (no `^`/`~`) in `front/package.json` and run `npm install` there see this repo's
49
+ `AGENTS.md` and `front/AGENTS.md`'s API SDK sync rule.
50
+ - Publishes via npm's OIDC trusted publishing (`permissions: id-token: write`) — no `NPM_TOKEN` or
51
+ other secret, and no cross-repo permissions, are needed anymore.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@insignia-education/api-sdk-js",
3
- "version": "0.15.69",
3
+ "version": "0.15.71",
4
4
  "description": "JavaScript SDK for the Insignia Education API",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -110,6 +110,8 @@ export default class Users {
110
110
  stripeIntent: (data) => client.post(`${base}/stripe/intent`, data),
111
111
  /** Direct link to the invoice PDF (application/pdf, inline) — not a fetch: open/href this URL directly, same as support_file. Auth is via the ambient JWT cookie. */
112
112
  invoiceUrl: (id) => `${client.baseUrl}${base}/${id}/invoice`,
113
+ /** Employee-only: force a fresh render + S3 re-upload of an already-numbered payment's invoice PDF, re-notifying the buyer. Returns the reloaded payment. */
114
+ rebuildInvoice: (id) => client.post(`${base}/${id}/invoice/rebuild`),
113
115
  };
114
116
  }
115
117
 
package/.env DELETED
@@ -1 +0,0 @@
1
- INSIGNIA_EDUCATION_API_BASE_URL=http://localhost:8000
package/.env.test DELETED
@@ -1,5 +0,0 @@
1
- INSIGNIA_EDUCATION_API_BASE_URL=http://localhost:8001
2
- TEST_EMAIL=roquendo@insigniaeducation.com
3
- TEST_PASSWORD=12345678
4
- TEST_EMAIL_ADMIN=rodolfoquendo@gmail.com
5
- TEST_PASSWORD_ADMIN=12345678
@@ -1,378 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <coverage generated="1786494103104" clover="3.2.0">
3
- <project timestamp="1786494103104" name="All files">
4
- <metrics statements="360" coveredstatements="202" conditionals="49" coveredconditionals="40" methods="61" coveredmethods="18" elements="470" coveredelements="260" complexity="0" loc="360" ncloc="360" packages="2" files="2" classes="2"/>
5
- <package name="src">
6
- <metrics statements="131" coveredstatements="99" conditionals="45" coveredconditionals="36" methods="15" coveredmethods="14"/>
7
- <file name="Client.js" path="/Users/roquendo/code/insignia-education/api-sdk-js/src/Client.js">
8
- <metrics statements="131" coveredstatements="99" conditionals="45" coveredconditionals="36" methods="15" coveredmethods="14"/>
9
- <line num="1" count="1" type="stmt"/>
10
- <line num="2" count="1" type="cond" truecount="1" falsecount="0"/>
11
- <line num="3" count="1" type="stmt"/>
12
- <line num="4" count="1" type="stmt"/>
13
- <line num="5" count="1" type="cond" truecount="1" falsecount="0"/>
14
- <line num="6" count="29" type="stmt"/>
15
- <line num="7" count="29" type="stmt"/>
16
- <line num="8" count="1" type="stmt"/>
17
- <line num="9" count="1" type="stmt"/>
18
- <line num="10" count="1" type="cond" truecount="1" falsecount="0"/>
19
- <line num="11" count="2" type="stmt"/>
20
- <line num="12" count="2" type="stmt"/>
21
- <line num="13" count="1" type="stmt"/>
22
- <line num="14" count="1" type="cond" truecount="1" falsecount="0"/>
23
- <line num="15" count="29" type="stmt"/>
24
- <line num="16" count="28" type="cond" truecount="2" falsecount="0"/>
25
- <line num="17" count="29" type="cond" truecount="1" falsecount="0"/>
26
- <line num="18" count="29" type="stmt"/>
27
- <line num="19" count="29" type="cond" truecount="2" falsecount="0"/>
28
- <line num="20" count="29" type="stmt"/>
29
- <line num="21" count="29" type="stmt"/>
30
- <line num="22" count="29" type="stmt"/>
31
- <line num="23" count="1" type="stmt"/>
32
- <line num="24" count="1" type="cond" truecount="1" falsecount="0"/>
33
- <line num="25" count="23" type="stmt"/>
34
- <line num="26" count="23" type="stmt"/>
35
- <line num="27" count="23" type="stmt"/>
36
- <line num="28" count="23" type="stmt"/>
37
- <line num="29" count="23" type="stmt"/>
38
- <line num="30" count="23" type="cond" truecount="0" falsecount="1"/>
39
- <line num="31" count="23" type="stmt"/>
40
- <line num="32" count="23" type="stmt"/>
41
- <line num="33" count="23" type="cond" truecount="1" falsecount="0"/>
42
- <line num="34" count="23" type="stmt"/>
43
- <line num="35" count="23" type="stmt"/>
44
- <line num="36" count="23" type="stmt"/>
45
- <line num="37" count="1" type="stmt"/>
46
- <line num="38" count="1" type="cond" truecount="1" falsecount="0"/>
47
- <line num="39" count="23" type="cond" truecount="2" falsecount="0"/>
48
- <line num="40" count="1" type="stmt"/>
49
- <line num="41" count="1" type="stmt"/>
50
- <line num="42" count="1" type="cond" truecount="1" falsecount="0"/>
51
- <line num="43" count="1" type="stmt"/>
52
- <line num="44" count="1" type="stmt"/>
53
- <line num="45" count="1" type="stmt"/>
54
- <line num="46" count="1" type="cond" truecount="1" falsecount="0"/>
55
- <line num="47" count="23" type="cond" truecount="0" falsecount="1"/>
56
- <line num="48" count="23" type="stmt"/>
57
- <line num="49" count="23" type="stmt"/>
58
- <line num="50" count="23" type="cond" truecount="1" falsecount="0"/>
59
- <line num="51" count="1" type="cond" truecount="1" falsecount="0"/>
60
- <line num="52" count="23" type="cond" truecount="1" falsecount="1"/>
61
- <line num="53" count="23" type="stmt"/>
62
- <line num="54" count="23" type="cond" truecount="1" falsecount="0"/>
63
- <line num="55" count="1" type="stmt"/>
64
- <line num="56" count="1" type="stmt"/>
65
- <line num="57" count="1" type="cond" truecount="0" falsecount="1"/>
66
- <line num="58" count="1" type="stmt"/>
67
- <line num="59" count="1" type="stmt"/>
68
- <line num="60" count="1" type="stmt"/>
69
- <line num="61" count="23" type="stmt"/>
70
- <line num="62" count="1" type="stmt"/>
71
- <line num="63" count="1" type="cond" truecount="1" falsecount="0"/>
72
- <line num="64" count="23" type="cond" truecount="2" falsecount="0"/>
73
- <line num="65" count="22" type="stmt"/>
74
- <line num="66" count="22" type="stmt"/>
75
- <line num="67" count="23" type="cond" truecount="1" falsecount="0"/>
76
- <line num="68" count="1" type="stmt"/>
77
- <line num="69" count="1" type="cond" truecount="0" falsecount="1"/>
78
- <line num="70" count="1" type="cond" truecount="1" falsecount="0"/>
79
- <line num="71" count="21" type="stmt"/>
80
- <line num="72" count="21" type="stmt"/>
81
- <line num="73" count="23" type="cond" truecount="1" falsecount="0"/>
82
- <line num="74" count="1" type="stmt"/>
83
- <line num="75" count="1" type="stmt"/>
84
- <line num="76" count="1" type="cond" truecount="0" falsecount="1"/>
85
- <line num="77" count="0" type="stmt"/>
86
- <line num="78" count="0" type="stmt"/>
87
- <line num="79" count="23" type="stmt"/>
88
- <line num="80" count="1" type="stmt"/>
89
- <line num="81" count="1" type="cond" truecount="1" falsecount="0"/>
90
- <line num="82" count="23" type="stmt"/>
91
- <line num="83" count="23" type="cond" truecount="1" falsecount="0"/>
92
- <line num="84" count="23" type="stmt"/>
93
- <line num="85" count="23" type="stmt"/>
94
- <line num="86" count="23" type="cond" truecount="0" falsecount="1"/>
95
- <line num="87" count="0" type="stmt"/>
96
- <line num="88" count="0" type="stmt"/>
97
- <line num="89" count="0" type="stmt"/>
98
- <line num="90" count="0" type="stmt"/>
99
- <line num="91" count="0" type="stmt"/>
100
- <line num="92" count="23" type="stmt"/>
101
- <line num="93" count="23" type="cond" truecount="3" falsecount="0"/>
102
- <line num="94" count="23" type="stmt"/>
103
- <line num="95" count="1" type="stmt"/>
104
- <line num="96" count="1" type="stmt"/>
105
- <line num="97" count="0" type="stmt"/>
106
- <line num="98" count="0" type="stmt"/>
107
- <line num="99" count="0" type="stmt"/>
108
- <line num="100" count="0" type="stmt"/>
109
- <line num="101" count="0" type="stmt"/>
110
- <line num="102" count="0" type="stmt"/>
111
- <line num="103" count="0" type="stmt"/>
112
- <line num="104" count="0" type="stmt"/>
113
- <line num="105" count="0" type="stmt"/>
114
- <line num="106" count="0" type="stmt"/>
115
- <line num="107" count="0" type="stmt"/>
116
- <line num="108" count="0" type="stmt"/>
117
- <line num="109" count="0" type="stmt"/>
118
- <line num="110" count="0" type="stmt"/>
119
- <line num="111" count="0" type="stmt"/>
120
- <line num="112" count="0" type="stmt"/>
121
- <line num="113" count="0" type="stmt"/>
122
- <line num="114" count="0" type="stmt"/>
123
- <line num="115" count="0" type="stmt"/>
124
- <line num="116" count="0" type="stmt"/>
125
- <line num="117" count="1" type="stmt"/>
126
- <line num="118" count="1" type="cond" truecount="1" falsecount="0"/>
127
- <line num="119" count="14" type="cond" truecount="0" falsecount="2"/>
128
- <line num="120" count="0" type="stmt"/>
129
- <line num="121" count="0" type="stmt"/>
130
- <line num="122" count="0" type="stmt"/>
131
- <line num="123" count="0" type="stmt"/>
132
- <line num="124" count="0" type="stmt"/>
133
- <line num="125" count="14" type="stmt"/>
134
- <line num="126" count="14" type="stmt"/>
135
- <line num="127" count="1" type="cond" truecount="1" falsecount="0"/>
136
- <line num="128" count="1" type="cond" truecount="1" falsecount="0"/>
137
- <line num="129" count="1" type="cond" truecount="1" falsecount="0"/>
138
- <line num="130" count="1" type="cond" truecount="1" falsecount="0"/>
139
- <line num="131" count="1" type="stmt"/>
140
- </file>
141
- </package>
142
- <package name="src.api.v1">
143
- <metrics statements="229" coveredstatements="103" conditionals="4" coveredconditionals="4" methods="46" coveredmethods="4"/>
144
- <file name="Users.js" path="/Users/roquendo/code/insignia-education/api-sdk-js/src/api/v1/Users.js">
145
- <metrics statements="229" coveredstatements="103" conditionals="4" coveredconditionals="4" methods="46" coveredmethods="4"/>
146
- <line num="1" count="1" type="stmt"/>
147
- <line num="2" count="1" type="cond" truecount="1" falsecount="0"/>
148
- <line num="3" count="1" type="stmt"/>
149
- <line num="4" count="1" type="cond" truecount="1" falsecount="0"/>
150
- <line num="5" count="1" type="stmt"/>
151
- <line num="6" count="1" type="stmt"/>
152
- <line num="7" count="1" type="stmt"/>
153
- <line num="8" count="1" type="stmt"/>
154
- <line num="9" count="1" type="stmt"/>
155
- <line num="10" count="1" type="stmt"/>
156
- <line num="11" count="1" type="stmt"/>
157
- <line num="12" count="1" type="stmt"/>
158
- <line num="13" count="1" type="stmt"/>
159
- <line num="14" count="1" type="stmt"/>
160
- <line num="15" count="1" type="stmt"/>
161
- <line num="16" count="1" type="stmt"/>
162
- <line num="17" count="1" type="stmt"/>
163
- <line num="18" count="1" type="stmt"/>
164
- <line num="19" count="1" type="stmt"/>
165
- <line num="20" count="0" type="stmt"/>
166
- <line num="21" count="0" type="stmt"/>
167
- <line num="22" count="1" type="stmt"/>
168
- <line num="23" count="1" type="stmt"/>
169
- <line num="24" count="1" type="stmt"/>
170
- <line num="25" count="1" type="stmt"/>
171
- <line num="26" count="1" type="stmt"/>
172
- <line num="27" count="0" type="stmt"/>
173
- <line num="28" count="0" type="stmt"/>
174
- <line num="29" count="0" type="stmt"/>
175
- <line num="30" count="0" type="stmt"/>
176
- <line num="31" count="0" type="stmt"/>
177
- <line num="32" count="0" type="stmt"/>
178
- <line num="33" count="0" type="stmt"/>
179
- <line num="34" count="0" type="stmt"/>
180
- <line num="35" count="0" type="stmt"/>
181
- <line num="36" count="1" type="stmt"/>
182
- <line num="37" count="1" type="stmt"/>
183
- <line num="38" count="0" type="stmt"/>
184
- <line num="39" count="0" type="stmt"/>
185
- <line num="40" count="0" type="stmt"/>
186
- <line num="41" count="0" type="stmt"/>
187
- <line num="42" count="0" type="stmt"/>
188
- <line num="43" count="0" type="stmt"/>
189
- <line num="44" count="0" type="stmt"/>
190
- <line num="45" count="0" type="stmt"/>
191
- <line num="46" count="0" type="stmt"/>
192
- <line num="47" count="0" type="stmt"/>
193
- <line num="48" count="0" type="stmt"/>
194
- <line num="49" count="1" type="stmt"/>
195
- <line num="50" count="1" type="stmt"/>
196
- <line num="51" count="1" type="stmt"/>
197
- <line num="52" count="1" type="stmt"/>
198
- <line num="53" count="0" type="stmt"/>
199
- <line num="54" count="0" type="stmt"/>
200
- <line num="55" count="0" type="stmt"/>
201
- <line num="56" count="0" type="stmt"/>
202
- <line num="57" count="0" type="stmt"/>
203
- <line num="58" count="0" type="stmt"/>
204
- <line num="59" count="0" type="stmt"/>
205
- <line num="60" count="0" type="stmt"/>
206
- <line num="61" count="0" type="stmt"/>
207
- <line num="62" count="0" type="stmt"/>
208
- <line num="63" count="0" type="stmt"/>
209
- <line num="64" count="0" type="stmt"/>
210
- <line num="65" count="0" type="stmt"/>
211
- <line num="66" count="0" type="stmt"/>
212
- <line num="67" count="0" type="stmt"/>
213
- <line num="68" count="0" type="stmt"/>
214
- <line num="69" count="0" type="stmt"/>
215
- <line num="70" count="0" type="stmt"/>
216
- <line num="71" count="0" type="stmt"/>
217
- <line num="72" count="0" type="stmt"/>
218
- <line num="73" count="0" type="stmt"/>
219
- <line num="74" count="0" type="stmt"/>
220
- <line num="75" count="1" type="stmt"/>
221
- <line num="76" count="1" type="stmt"/>
222
- <line num="77" count="1" type="stmt"/>
223
- <line num="78" count="0" type="stmt"/>
224
- <line num="79" count="0" type="stmt"/>
225
- <line num="80" count="0" type="stmt"/>
226
- <line num="81" count="0" type="stmt"/>
227
- <line num="82" count="0" type="stmt"/>
228
- <line num="83" count="0" type="stmt"/>
229
- <line num="84" count="0" type="stmt"/>
230
- <line num="85" count="0" type="stmt"/>
231
- <line num="86" count="0" type="stmt"/>
232
- <line num="87" count="0" type="stmt"/>
233
- <line num="88" count="0" type="stmt"/>
234
- <line num="89" count="0" type="stmt"/>
235
- <line num="90" count="0" type="stmt"/>
236
- <line num="91" count="0" type="stmt"/>
237
- <line num="92" count="0" type="stmt"/>
238
- <line num="93" count="1" type="stmt"/>
239
- <line num="94" count="1" type="stmt"/>
240
- <line num="95" count="1" type="stmt"/>
241
- <line num="96" count="1" type="stmt"/>
242
- <line num="97" count="1" type="cond" truecount="1" falsecount="0"/>
243
- <line num="98" count="1" type="stmt"/>
244
- <line num="99" count="1" type="stmt"/>
245
- <line num="100" count="1" type="stmt"/>
246
- <line num="101" count="1" type="stmt"/>
247
- <line num="102" count="1" type="stmt"/>
248
- <line num="103" count="1" type="stmt"/>
249
- <line num="104" count="1" type="stmt"/>
250
- <line num="105" count="1" type="stmt"/>
251
- <line num="106" count="1" type="stmt"/>
252
- <line num="107" count="1" type="stmt"/>
253
- <line num="108" count="1" type="stmt"/>
254
- <line num="109" count="1" type="stmt"/>
255
- <line num="110" count="1" type="stmt"/>
256
- <line num="111" count="1" type="stmt"/>
257
- <line num="112" count="1" type="cond" truecount="1" falsecount="0"/>
258
- <line num="113" count="1" type="stmt"/>
259
- <line num="114" count="1" type="stmt"/>
260
- <line num="115" count="1" type="stmt"/>
261
- <line num="116" count="1" type="stmt"/>
262
- <line num="117" count="1" type="stmt"/>
263
- <line num="118" count="0" type="stmt"/>
264
- <line num="119" count="0" type="stmt"/>
265
- <line num="120" count="0" type="stmt"/>
266
- <line num="121" count="0" type="stmt"/>
267
- <line num="122" count="0" type="stmt"/>
268
- <line num="123" count="0" type="stmt"/>
269
- <line num="124" count="1" type="stmt"/>
270
- <line num="125" count="1" type="stmt"/>
271
- <line num="126" count="1" type="stmt"/>
272
- <line num="127" count="0" type="stmt"/>
273
- <line num="128" count="0" type="stmt"/>
274
- <line num="129" count="0" type="stmt"/>
275
- <line num="130" count="0" type="stmt"/>
276
- <line num="131" count="0" type="stmt"/>
277
- <line num="132" count="0" type="stmt"/>
278
- <line num="133" count="1" type="stmt"/>
279
- <line num="134" count="1" type="stmt"/>
280
- <line num="135" count="1" type="stmt"/>
281
- <line num="136" count="1" type="stmt"/>
282
- <line num="137" count="1" type="stmt"/>
283
- <line num="138" count="0" type="stmt"/>
284
- <line num="139" count="0" type="stmt"/>
285
- <line num="140" count="0" type="stmt"/>
286
- <line num="141" count="0" type="stmt"/>
287
- <line num="142" count="0" type="stmt"/>
288
- <line num="143" count="0" type="stmt"/>
289
- <line num="144" count="1" type="stmt"/>
290
- <line num="145" count="1" type="stmt"/>
291
- <line num="146" count="0" type="stmt"/>
292
- <line num="147" count="0" type="stmt"/>
293
- <line num="148" count="0" type="stmt"/>
294
- <line num="149" count="0" type="stmt"/>
295
- <line num="150" count="0" type="stmt"/>
296
- <line num="151" count="0" type="stmt"/>
297
- <line num="152" count="0" type="stmt"/>
298
- <line num="153" count="0" type="stmt"/>
299
- <line num="154" count="0" type="stmt"/>
300
- <line num="155" count="1" type="stmt"/>
301
- <line num="156" count="1" type="stmt"/>
302
- <line num="157" count="0" type="stmt"/>
303
- <line num="158" count="0" type="stmt"/>
304
- <line num="159" count="0" type="stmt"/>
305
- <line num="160" count="0" type="stmt"/>
306
- <line num="161" count="0" type="stmt"/>
307
- <line num="162" count="0" type="stmt"/>
308
- <line num="163" count="0" type="stmt"/>
309
- <line num="164" count="0" type="stmt"/>
310
- <line num="165" count="1" type="stmt"/>
311
- <line num="166" count="1" type="stmt"/>
312
- <line num="167" count="0" type="stmt"/>
313
- <line num="168" count="0" type="stmt"/>
314
- <line num="169" count="0" type="stmt"/>
315
- <line num="170" count="0" type="stmt"/>
316
- <line num="171" count="0" type="stmt"/>
317
- <line num="172" count="0" type="stmt"/>
318
- <line num="173" count="0" type="stmt"/>
319
- <line num="174" count="0" type="stmt"/>
320
- <line num="175" count="1" type="stmt"/>
321
- <line num="176" count="1" type="stmt"/>
322
- <line num="177" count="1" type="stmt"/>
323
- <line num="178" count="1" type="stmt"/>
324
- <line num="179" count="1" type="stmt"/>
325
- <line num="180" count="1" type="stmt"/>
326
- <line num="181" count="1" type="stmt"/>
327
- <line num="182" count="1" type="stmt"/>
328
- <line num="183" count="1" type="stmt"/>
329
- <line num="184" count="1" type="stmt"/>
330
- <line num="185" count="1" type="stmt"/>
331
- <line num="186" count="1" type="stmt"/>
332
- <line num="187" count="1" type="stmt"/>
333
- <line num="188" count="1" type="stmt"/>
334
- <line num="189" count="1" type="stmt"/>
335
- <line num="190" count="1" type="stmt"/>
336
- <line num="191" count="1" type="stmt"/>
337
- <line num="192" count="1" type="stmt"/>
338
- <line num="193" count="1" type="stmt"/>
339
- <line num="194" count="1" type="stmt"/>
340
- <line num="195" count="1" type="stmt"/>
341
- <line num="196" count="1" type="stmt"/>
342
- <line num="197" count="1" type="stmt"/>
343
- <line num="198" count="1" type="stmt"/>
344
- <line num="199" count="0" type="stmt"/>
345
- <line num="200" count="0" type="stmt"/>
346
- <line num="201" count="0" type="stmt"/>
347
- <line num="202" count="0" type="stmt"/>
348
- <line num="203" count="0" type="stmt"/>
349
- <line num="204" count="0" type="stmt"/>
350
- <line num="205" count="1" type="stmt"/>
351
- <line num="206" count="1" type="stmt"/>
352
- <line num="207" count="1" type="stmt"/>
353
- <line num="208" count="0" type="stmt"/>
354
- <line num="209" count="0" type="stmt"/>
355
- <line num="210" count="0" type="stmt"/>
356
- <line num="211" count="0" type="stmt"/>
357
- <line num="212" count="0" type="stmt"/>
358
- <line num="213" count="0" type="stmt"/>
359
- <line num="214" count="0" type="stmt"/>
360
- <line num="215" count="0" type="stmt"/>
361
- <line num="216" count="0" type="stmt"/>
362
- <line num="217" count="1" type="stmt"/>
363
- <line num="218" count="1" type="stmt"/>
364
- <line num="219" count="1" type="stmt"/>
365
- <line num="220" count="0" type="stmt"/>
366
- <line num="221" count="0" type="stmt"/>
367
- <line num="222" count="0" type="stmt"/>
368
- <line num="223" count="0" type="stmt"/>
369
- <line num="224" count="0" type="stmt"/>
370
- <line num="225" count="0" type="stmt"/>
371
- <line num="226" count="0" type="stmt"/>
372
- <line num="227" count="0" type="stmt"/>
373
- <line num="228" count="0" type="stmt"/>
374
- <line num="229" count="1" type="stmt"/>
375
- </file>
376
- </package>
377
- </project>
378
- </coverage>