@fin.cx/opendata 4.7.0 → 4.9.0

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 (89) hide show
  1. package/.smartconfig.json +6 -2
  2. package/dist_ts/00_commitinfo_data.js +3 -3
  3. package/dist_ts/financialstatements/amounts.d.ts +58 -0
  4. package/dist_ts/financialstatements/amounts.js +130 -0
  5. package/dist_ts/financialstatements/classes.financialstatementerror.d.ts +24 -0
  6. package/dist_ts/financialstatements/classes.financialstatementerror.js +10 -0
  7. package/dist_ts/financialstatements/constants.d.ts +16 -0
  8. package/dist_ts/financialstatements/constants.js +20 -0
  9. package/dist_ts/financialstatements/dates.d.ts +16 -0
  10. package/dist_ts/financialstatements/dates.js +72 -0
  11. package/dist_ts/financialstatements/html.d.ts +21 -0
  12. package/dist_ts/financialstatements/html.js +92 -0
  13. package/dist_ts/financialstatements/index.d.ts +6 -0
  14. package/dist_ts/financialstatements/index.js +11 -0
  15. package/dist_ts/financialstatements/interfaces.d.ts +258 -0
  16. package/dist_ts/financialstatements/interfaces.js +2 -0
  17. package/dist_ts/financialstatements/layout.d.ts +20 -0
  18. package/dist_ts/financialstatements/layout.html.d.ts +8 -0
  19. package/dist_ts/financialstatements/layout.html.js +125 -0
  20. package/dist_ts/financialstatements/layout.js +2 -0
  21. package/dist_ts/financialstatements/layout.pdf.d.ts +6 -0
  22. package/dist_ts/financialstatements/layout.pdf.js +229 -0
  23. package/dist_ts/financialstatements/mediatypes.d.ts +3 -0
  24. package/dist_ts/financialstatements/mediatypes.js +11 -0
  25. package/dist_ts/financialstatements/outline.d.ts +22 -0
  26. package/dist_ts/financialstatements/outline.js +26 -0
  27. package/dist_ts/financialstatements/parse.esef.d.ts +13 -0
  28. package/dist_ts/financialstatements/parse.esef.js +349 -0
  29. package/dist_ts/financialstatements/parse.hgb.d.ts +9 -0
  30. package/dist_ts/financialstatements/parse.hgb.js +1014 -0
  31. package/dist_ts/financialstatements/parse.statement.d.ts +8 -0
  32. package/dist_ts/financialstatements/parse.statement.js +25 -0
  33. package/dist_ts/financialstatements/plugins.d.ts +10 -0
  34. package/dist_ts/financialstatements/plugins.js +15 -0
  35. package/dist_ts/financialstatements/read.d.ts +10 -0
  36. package/dist_ts/financialstatements/read.js +113 -0
  37. package/dist_ts/gleif/classes.gleifclient.d.ts +26 -0
  38. package/dist_ts/gleif/classes.gleifclient.js +214 -0
  39. package/dist_ts/gleif/classes.gleiferror.d.ts +6 -0
  40. package/dist_ts/gleif/classes.gleiferror.js +11 -0
  41. package/dist_ts/gleif/crosswalk.d.ts +7 -0
  42. package/dist_ts/gleif/crosswalk.js +25 -0
  43. package/dist_ts/gleif/csv.d.ts +2 -0
  44. package/dist_ts/gleif/csv.js +75 -0
  45. package/dist_ts/gleif/data.crosswalk.d.ts +12 -0
  46. package/dist_ts/gleif/data.crosswalk.js +1265 -0
  47. package/dist_ts/gleif/index.d.ts +6 -0
  48. package/dist_ts/gleif/index.js +7 -0
  49. package/dist_ts/gleif/interfaces.d.ts +101 -0
  50. package/dist_ts/gleif/interfaces.js +2 -0
  51. package/dist_ts/gleif/plugins.d.ts +1 -0
  52. package/dist_ts/gleif/plugins.js +3 -0
  53. package/dist_ts/gleif/records.d.ts +6 -0
  54. package/dist_ts/gleif/records.js +107 -0
  55. package/dist_ts/gleif/stream.zip.d.ts +2 -0
  56. package/dist_ts/gleif/stream.zip.js +54 -0
  57. package/dist_ts/plugins.d.ts +2 -0
  58. package/dist_ts/plugins.js +4 -1
  59. package/package.json +20 -5
  60. package/readme.md +156 -5
  61. package/ts/00_commitinfo_data.ts +2 -2
  62. package/ts/financialstatements/amounts.ts +181 -0
  63. package/ts/financialstatements/classes.financialstatementerror.ts +35 -0
  64. package/ts/financialstatements/constants.ts +24 -0
  65. package/ts/financialstatements/dates.ts +89 -0
  66. package/ts/financialstatements/html.ts +107 -0
  67. package/ts/financialstatements/index.ts +17 -0
  68. package/ts/financialstatements/interfaces.ts +268 -0
  69. package/ts/financialstatements/layout.html.ts +130 -0
  70. package/ts/financialstatements/layout.pdf.ts +268 -0
  71. package/ts/financialstatements/layout.ts +16 -0
  72. package/ts/financialstatements/mediatypes.ts +14 -0
  73. package/ts/financialstatements/outline.ts +44 -0
  74. package/ts/financialstatements/parse.esef.ts +394 -0
  75. package/ts/financialstatements/parse.hgb.ts +1235 -0
  76. package/ts/financialstatements/parse.statement.ts +26 -0
  77. package/ts/financialstatements/plugins.ts +29 -0
  78. package/ts/financialstatements/read.ts +135 -0
  79. package/ts/gleif/classes.gleifclient.ts +170 -0
  80. package/ts/gleif/classes.gleiferror.ts +8 -0
  81. package/ts/gleif/crosswalk.ts +29 -0
  82. package/ts/gleif/csv.ts +60 -0
  83. package/ts/gleif/data.crosswalk.ts +1271 -0
  84. package/ts/gleif/index.ts +6 -0
  85. package/ts/gleif/interfaces.ts +107 -0
  86. package/ts/gleif/plugins.ts +2 -0
  87. package/ts/gleif/records.ts +104 -0
  88. package/ts/gleif/stream.zip.ts +43 -0
  89. package/ts/plugins.ts +4 -0
@@ -0,0 +1,6 @@
1
+ export * from './interfaces.js';
2
+ export { GleifClient, gleifDeltaKinds, gleifGoldenCopyBaseUrl, gleifRestBaseUrl } from './classes.gleifclient.js';
3
+ export { GleifError, type TGleifErrorCode } from './classes.gleiferror.js';
4
+ export { parseGleifRestRecord } from './records.js';
5
+ export { courtFromRegistrationAuthority, registrationAuthorityFromCourt, parseRegistrationAuthorityEntityId, registerReferenceFromRegistrationAuthority } from './crosswalk.js';
6
+ export { germanRegistrationAuthorities, gleifUnmappedCourts, gleifRegistrationAuthoritiesSource } from './data.crosswalk.js';
@@ -0,0 +1,7 @@
1
+ export * from './interfaces.js';
2
+ export { GleifClient, gleifDeltaKinds, gleifGoldenCopyBaseUrl, gleifRestBaseUrl } from './classes.gleifclient.js';
3
+ export { GleifError } from './classes.gleiferror.js';
4
+ export { parseGleifRestRecord } from './records.js';
5
+ export { courtFromRegistrationAuthority, registrationAuthorityFromCourt, parseRegistrationAuthorityEntityId, registerReferenceFromRegistrationAuthority } from './crosswalk.js';
6
+ export { germanRegistrationAuthorities, gleifUnmappedCourts, gleifRegistrationAuthoritiesSource } from './data.crosswalk.js';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9nbGVpZi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEgsT0FBTyxFQUFFLFVBQVUsRUFBd0IsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLDhCQUE4QixFQUFFLGtDQUFrQyxFQUFFLDBDQUEwQyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEwsT0FBTyxFQUFFLDZCQUE2QixFQUFFLG1CQUFtQixFQUFFLGtDQUFrQyxFQUFFLE1BQU0scUJBQXFCLENBQUMifQ==
@@ -0,0 +1,101 @@
1
+ import type { TRegisterType } from '../handelsregister/interfaces.js';
2
+ export interface IGleifName {
3
+ name: string;
4
+ language?: string;
5
+ /** The published other-name type; absent for the legal name. */
6
+ type?: string;
7
+ }
8
+ export interface IGleifAddress {
9
+ addressLines: string[];
10
+ city: string;
11
+ country: string;
12
+ language?: string;
13
+ region?: string;
14
+ postalCode?: string;
15
+ addressNumber?: string;
16
+ addressNumberWithinBuilding?: string;
17
+ mailRouting?: string;
18
+ }
19
+ /** Level 1 reference data, with source strings and ISO 8601 dates preserved. No persistence. */
20
+ export interface IGleifRecord {
21
+ lei: string;
22
+ legalName: IGleifName;
23
+ otherNames: IGleifName[];
24
+ transliteratedOtherNames: IGleifName[];
25
+ legalForm?: {
26
+ elfCode?: string;
27
+ other?: string;
28
+ };
29
+ legalAddress: IGleifAddress;
30
+ headquartersAddress: IGleifAddress;
31
+ jurisdiction?: string;
32
+ entityStatus: string;
33
+ entityCategory?: string;
34
+ registrationAuthority?: {
35
+ id?: string;
36
+ otherId?: string;
37
+ entityId?: string;
38
+ };
39
+ registrationStatus: string;
40
+ initialRegistrationDate: string;
41
+ lastUpdateDate: string;
42
+ }
43
+ export type TGleifDelta = 'IntraDay' | 'LastDay' | 'LastWeek' | 'LastMonth';
44
+ export type TGleifFileKind = 'GoldenCopy' | TGleifDelta;
45
+ /** The API's LEI-CDF 3.1 ZIP/CSV descriptor. `size` is compressed bytes. */
46
+ export interface IGleifGoldenCopyFile {
47
+ url: string;
48
+ format: 'csv';
49
+ cdfVersion: 'LEI_3.1';
50
+ kind: TGleifFileKind;
51
+ recordCount: number;
52
+ size: number;
53
+ }
54
+ export interface IGleifPublish {
55
+ /** UTC publication label exactly as returned, `YYYY-MM-DD HH:mm:ss`. */
56
+ publishDate: string;
57
+ fullFile: IGleifGoldenCopyFile;
58
+ deltaFiles: Record<TGleifDelta, IGleifGoldenCopyFile>;
59
+ }
60
+ export type TGleifFetch = (input: string, init: RequestInit) => Promise<Response>;
61
+ export interface IGleifClientOptions {
62
+ fetch?: TGleifFetch;
63
+ /** Default: https://goldencopy.gleif.org/api/v2 */
64
+ goldenCopyBaseUrl?: string;
65
+ /** Default: https://api.gleif.org/api/v1 */
66
+ restBaseUrl?: string;
67
+ userAgent?: string;
68
+ /** Per request, including streaming and consumer time; default 30 minutes. */
69
+ timeoutMs?: number;
70
+ }
71
+ export interface IGleifReadOptions {
72
+ /** ISO 3166-1 alpha-2; compares the legal address's country, not the headquarters. */
73
+ country?: string;
74
+ /** Exact legal jurisdiction, e.g. DE or US-DE. Both filters, if given, must match. */
75
+ jurisdiction?: string;
76
+ signal?: AbortSignal;
77
+ /** Maximum CSV row size in Unicode code points, including the header; default 1,048,576. */
78
+ maxRowChars?: number;
79
+ }
80
+ export interface IGleifStreamOptions extends IGleifReadOptions {
81
+ /** Default GoldenCopy; deltas overlap and are current records, not event histories. */
82
+ kind?: TGleifFileKind;
83
+ }
84
+ export interface IGleifRegisterNumber {
85
+ type: TRegisterType;
86
+ number: string;
87
+ }
88
+ export interface IGleifRegistrationAuthority {
89
+ raCode: string;
90
+ name: string;
91
+ jurisdiction: string;
92
+ registerName: string;
93
+ courtCode?: string;
94
+ /** Present exactly when this German RA has no court in opendata's list. */
95
+ unmappedReason?: string;
96
+ }
97
+ export interface IGleifUnmappedCourt {
98
+ courtCode: string;
99
+ name: string;
100
+ reason: string;
101
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL2dsZWlmL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -0,0 +1 @@
1
+ export { fflate } from '../plugins.js';
@@ -0,0 +1,3 @@
1
+ // External dependencies for this subpath only; no portal client or storage imports.
2
+ export { fflate } from '../plugins.js';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL2dsZWlmL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0ZBQW9GO0FBQ3BGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUMifQ==
@@ -0,0 +1,6 @@
1
+ import type { IGleifRecord } from './interfaces.js';
2
+ /** Maps the documented JSON:API attributes, not the differently shaped Golden Copy JSON. */
3
+ export declare const parseGleifRestRecord: (valueArg: unknown) => IGleifRecord;
4
+ /** Column names verified against the published LEI-CDF 3.1 CSV (the optional values may be empty). */
5
+ export declare const gleifCsvColumns: readonly ["LEI", "Entity.LegalName", "Entity.LegalName.xmllang", "Entity.LegalJurisdiction", "Entity.EntityStatus", "Entity.EntityCategory", "Entity.LegalForm.EntityLegalFormCode", "Entity.LegalForm.OtherLegalForm", "Entity.RegistrationAuthority.RegistrationAuthorityID", "Entity.RegistrationAuthority.OtherRegistrationAuthorityID", "Entity.RegistrationAuthority.RegistrationAuthorityEntityID", "Registration.RegistrationStatus", "Registration.InitialRegistrationDate", "Registration.LastUpdateDate", ...string[]];
6
+ export declare const csvRecordMapper: (headerArg: string[]) => ((rowArg: string[]) => IGleifRecord);
@@ -0,0 +1,107 @@
1
+ import { GleifError } from './classes.gleiferror.js';
2
+ const bad = (labelArg) => { throw new GleifError('unexpected_answer', `Missing or invalid GLEIF ${labelArg}.`); };
3
+ const object = (valueArg, labelArg) => valueArg && typeof valueArg === 'object' && !Array.isArray(valueArg) ? valueArg : bad(labelArg);
4
+ const optional = (valueArg) => {
5
+ if (valueArg === undefined || valueArg === null || valueArg === '')
6
+ return undefined;
7
+ return typeof valueArg === 'string' ? valueArg : bad('string');
8
+ };
9
+ const required = (valueArg, labelArg) => optional(valueArg) ?? bad(labelArg);
10
+ const date = (valueArg, labelArg) => {
11
+ const value = required(valueArg, labelArg);
12
+ if (!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/.test(value) || !Number.isFinite(Date.parse(value)))
13
+ bad(labelArg);
14
+ return value;
15
+ };
16
+ const compact = (valueArg) => Object.fromEntries(Object.entries(valueArg).filter(([, valueArg]) => valueArg !== undefined));
17
+ const name = (valueArg) => {
18
+ const value = object(valueArg, 'name');
19
+ return compact({ name: required(value.name, 'name'), language: optional(value.language), type: optional(value.type) });
20
+ };
21
+ const names = (valueArg) => {
22
+ if (valueArg === undefined || valueArg === null)
23
+ return [];
24
+ if (!Array.isArray(valueArg))
25
+ bad('names');
26
+ return valueArg.map(name);
27
+ };
28
+ const address = (valueArg) => {
29
+ const value = object(valueArg, 'address');
30
+ if (!Array.isArray(value.addressLines) || value.addressLines.length < 1)
31
+ bad('address lines');
32
+ return compact({
33
+ addressLines: value.addressLines.map((lineArg) => required(lineArg, 'address line')),
34
+ city: required(value.city, 'city'), country: required(value.country, 'country'),
35
+ language: optional(value.language), region: optional(value.region), postalCode: optional(value.postalCode),
36
+ addressNumber: optional(value.addressNumber), addressNumberWithinBuilding: optional(value.addressNumberWithinBuilding), mailRouting: optional(value.mailRouting),
37
+ });
38
+ };
39
+ /** Maps the documented JSON:API attributes, not the differently shaped Golden Copy JSON. */
40
+ export const parseGleifRestRecord = (valueArg) => {
41
+ const data = object(object(valueArg, 'response').data, 'data');
42
+ if (data.type !== 'lei-records')
43
+ bad('resource type');
44
+ const attributes = object(data.attributes, 'attributes');
45
+ const entity = object(attributes.entity, 'entity');
46
+ const registration = object(attributes.registration, 'registration');
47
+ const lei = required(attributes.lei, 'LEI');
48
+ if (!/^[A-Z0-9]{18}\d{2}$/.test(lei) || data.id !== lei)
49
+ bad('LEI');
50
+ const legalForm = entity.legalForm === undefined || entity.legalForm === null ? undefined : object(entity.legalForm, 'legal form');
51
+ const registeredAt = entity.registeredAt === undefined || entity.registeredAt === null ? undefined : object(entity.registeredAt, 'registration authority');
52
+ const form = legalForm ? compact({ elfCode: optional(legalForm.id), other: optional(legalForm.other) }) : undefined;
53
+ const authority = compact({ id: optional(registeredAt?.id), otherId: optional(registeredAt?.other), entityId: optional(entity.registeredAs) });
54
+ return compact({
55
+ lei, legalName: name(entity.legalName), otherNames: names(entity.otherNames), transliteratedOtherNames: names(entity.transliteratedOtherNames),
56
+ legalForm: form && Object.keys(form).length ? form : undefined,
57
+ legalAddress: address(entity.legalAddress), headquartersAddress: address(entity.headquartersAddress),
58
+ jurisdiction: optional(entity.jurisdiction), entityStatus: required(entity.status, 'entity status'), entityCategory: optional(entity.category),
59
+ registrationAuthority: Object.keys(authority).length ? authority : undefined,
60
+ registrationStatus: required(registration.status, 'registration status'),
61
+ initialRegistrationDate: date(registration.initialRegistrationDate, 'initial registration date'), lastUpdateDate: date(registration.lastUpdateDate, 'last update date'),
62
+ });
63
+ };
64
+ /** Column names verified against the published LEI-CDF 3.1 CSV (the optional values may be empty). */
65
+ export const gleifCsvColumns = [
66
+ 'LEI', 'Entity.LegalName', 'Entity.LegalName.xmllang', 'Entity.LegalJurisdiction', 'Entity.EntityStatus', 'Entity.EntityCategory',
67
+ 'Entity.LegalForm.EntityLegalFormCode', 'Entity.LegalForm.OtherLegalForm',
68
+ 'Entity.RegistrationAuthority.RegistrationAuthorityID', 'Entity.RegistrationAuthority.OtherRegistrationAuthorityID', 'Entity.RegistrationAuthority.RegistrationAuthorityEntityID',
69
+ 'Registration.RegistrationStatus', 'Registration.InitialRegistrationDate', 'Registration.LastUpdateDate',
70
+ ...['Entity.LegalAddress', 'Entity.HeadquartersAddress'].flatMap((prefixArg) => ['FirstAddressLine', 'City', 'Country'].map((fieldArg) => `${prefixArg}.${fieldArg}`)),
71
+ ];
72
+ export const csvRecordMapper = (headerArg) => {
73
+ if (new Set(headerArg).size !== headerArg.length || gleifCsvColumns.some((columnArg) => !headerArg.includes(columnArg))) {
74
+ throw new GleifError('invalid_csv', 'Missing or duplicate LEI-CDF 3.1 columns.');
75
+ }
76
+ const indices = new Map(headerArg.map((columnArg, indexArg) => [columnArg, indexArg]));
77
+ const nameColumns = (prefixArg) => headerArg.filter((columnArg) => new RegExp(`^${prefixArg.replaceAll('.', '\\.')}\\.\\d+$`).test(columnArg));
78
+ const otherColumns = nameColumns('Entity.OtherEntityNames.OtherEntityName');
79
+ const transliteratedColumns = nameColumns('Entity.TransliteratedOtherEntityNames.TransliteratedOtherEntityName');
80
+ return (rowArg) => {
81
+ if (rowArg.length !== headerArg.length)
82
+ throw new GleifError('invalid_csv', 'LEI-CDF CSV row has a different column count from its header.');
83
+ const get = (columnArg) => {
84
+ const index = indices.get(columnArg);
85
+ return index === undefined ? undefined : rowArg[index];
86
+ };
87
+ const nameOf = (prefixArg) => ({ name: get(prefixArg), language: get(`${prefixArg}.xmllang`), type: get(`${prefixArg}.type`) });
88
+ const addressOf = (prefixArg) => ({
89
+ addressLines: [get(`${prefixArg}.FirstAddressLine`), ...[1, 2, 3].map((indexArg) => get(`${prefixArg}.AdditionalAddressLine.${indexArg}`))].filter(Boolean),
90
+ city: get(`${prefixArg}.City`), country: get(`${prefixArg}.Country`), language: get(`${prefixArg}.xmllang`), region: get(`${prefixArg}.Region`), postalCode: get(`${prefixArg}.PostalCode`),
91
+ addressNumber: get(`${prefixArg}.AddressNumber`), addressNumberWithinBuilding: get(`${prefixArg}.AddressNumberWithinBuilding`), mailRouting: get(`${prefixArg}.MailRouting`),
92
+ });
93
+ const lei = get('LEI');
94
+ return parseGleifRestRecord({ data: { type: 'lei-records', id: lei, attributes: { lei, entity: {
95
+ legalName: nameOf('Entity.LegalName'), otherNames: otherColumns.filter((columnArg) => get(columnArg)).map(nameOf),
96
+ transliteratedOtherNames: transliteratedColumns.filter((columnArg) => get(columnArg)).map(nameOf),
97
+ legalForm: { id: get('Entity.LegalForm.EntityLegalFormCode'), other: get('Entity.LegalForm.OtherLegalForm') },
98
+ legalAddress: addressOf('Entity.LegalAddress'), headquartersAddress: addressOf('Entity.HeadquartersAddress'),
99
+ jurisdiction: get('Entity.LegalJurisdiction'), status: get('Entity.EntityStatus'), category: get('Entity.EntityCategory'),
100
+ registeredAt: { id: get('Entity.RegistrationAuthority.RegistrationAuthorityID'), other: get('Entity.RegistrationAuthority.OtherRegistrationAuthorityID') },
101
+ registeredAs: get('Entity.RegistrationAuthority.RegistrationAuthorityEntityID'),
102
+ }, registration: {
103
+ status: get('Registration.RegistrationStatus'), initialRegistrationDate: get('Registration.InitialRegistrationDate'), lastUpdateDate: get('Registration.LastUpdateDate'),
104
+ } } } });
105
+ };
106
+ };
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3Jkcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL2dsZWlmL3JlY29yZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR3JELE1BQU0sR0FBRyxHQUFHLENBQUMsUUFBZ0IsRUFBUyxFQUFFLEdBQUcsTUFBTSxJQUFJLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSw0QkFBNEIsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqSSxNQUFNLE1BQU0sR0FBRyxDQUFDLFFBQWlCLEVBQUUsUUFBZ0IsRUFBMkIsRUFBRSxDQUM5RSxRQUFRLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBbUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzdILE1BQU0sUUFBUSxHQUFHLENBQUMsUUFBaUIsRUFBc0IsRUFBRTtJQUN6RCxJQUFJLFFBQVEsS0FBSyxTQUFTLElBQUksUUFBUSxLQUFLLElBQUksSUFBSSxRQUFRLEtBQUssRUFBRTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ3JGLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNqRSxDQUFDLENBQUM7QUFDRixNQUFNLFFBQVEsR0FBRyxDQUFDLFFBQWlCLEVBQUUsUUFBZ0IsRUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN0RyxNQUFNLElBQUksR0FBRyxDQUFDLFFBQWlCLEVBQUUsUUFBZ0IsRUFBVSxFQUFFO0lBQzNELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDM0MsSUFBSSxDQUFDLHNFQUFzRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5SSxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQztBQUNGLE1BQU0sT0FBTyxHQUFHLENBQXNCLFFBQWMsRUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFTLENBQUM7QUFDckssTUFBTSxJQUFJLEdBQUcsQ0FBQyxRQUFpQixFQUFjLEVBQUU7SUFDN0MsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2QyxPQUFPLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekgsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxLQUFLLEdBQUcsQ0FBQyxRQUFpQixFQUFnQixFQUFFO0lBQ2hELElBQUksUUFBUSxLQUFLLFNBQVMsSUFBSSxRQUFRLEtBQUssSUFBSTtRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzNELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQyxPQUFRLFFBQXNCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzNDLENBQUMsQ0FBQztBQUNGLE1BQU0sT0FBTyxHQUFHLENBQUMsUUFBaUIsRUFBaUIsRUFBRTtJQUNuRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQUUsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzlGLE9BQU8sT0FBTyxDQUFDO1FBQ2IsWUFBWSxFQUFHLEtBQUssQ0FBQyxZQUEwQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztRQUNuRyxJQUFJLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQztRQUMvRSxRQUFRLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDMUcsYUFBYSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUUsMkJBQTJCLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztLQUNqSyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRiw0RkFBNEY7QUFDNUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxRQUFpQixFQUFnQixFQUFFO0lBQ3RFLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssYUFBYTtRQUFFLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN0RCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN6RCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNuRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNyRSxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1QyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssR0FBRztRQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRSxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNuSSxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0lBQzNKLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDcEgsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9JLE9BQU8sT0FBTyxDQUFDO1FBQ2IsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUM7UUFDOUksU0FBUyxFQUFFLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQzlELFlBQVksRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUM7UUFDcEcsWUFBWSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUM5SSxxQkFBcUIsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQzVFLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLHFCQUFxQixDQUFDO1FBQ3hFLHVCQUF1QixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsdUJBQXVCLEVBQUUsMkJBQTJCLENBQUMsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUM7S0FDeEssQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsc0dBQXNHO0FBQ3RHLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUM3QixLQUFLLEVBQUUsa0JBQWtCLEVBQUUsMEJBQTBCLEVBQUUsMEJBQTBCLEVBQUUscUJBQXFCLEVBQUUsdUJBQXVCO0lBQ2pJLHNDQUFzQyxFQUFFLGlDQUFpQztJQUN6RSxzREFBc0QsRUFBRSwyREFBMkQsRUFBRSw0REFBNEQ7SUFDakwsaUNBQWlDLEVBQUUsc0NBQXNDLEVBQUUsNkJBQTZCO0lBQ3hHLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSw0QkFBNEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLFNBQVMsSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0NBQzlKLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxTQUFtQixFQUF3QyxFQUFFO0lBQzNGLElBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxNQUFNLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN4SCxNQUFNLElBQUksVUFBVSxDQUFDLGFBQWEsRUFBRSwyQ0FBMkMsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLE1BQU0sV0FBVyxHQUFHLENBQUMsU0FBaUIsRUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDbEssTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7SUFDNUUsTUFBTSxxQkFBcUIsR0FBRyxXQUFXLENBQUMscUVBQXFFLENBQUMsQ0FBQztJQUNqSCxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDaEIsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxNQUFNO1lBQUUsTUFBTSxJQUFJLFVBQVUsQ0FBQyxhQUFhLEVBQUUsK0RBQStELENBQUMsQ0FBQztRQUM3SSxNQUFNLEdBQUcsR0FBRyxDQUFDLFNBQWlCLEVBQXNCLEVBQUU7WUFDcEQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNyQyxPQUFPLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pELENBQUMsQ0FBQztRQUNGLE1BQU0sTUFBTSxHQUFHLENBQUMsU0FBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxHQUFHLFNBQVMsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLFNBQVMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hJLE1BQU0sU0FBUyxHQUFHLENBQUMsU0FBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN4QyxZQUFZLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxTQUFTLG1CQUFtQixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxTQUFTLDBCQUEwQixRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQzNKLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxTQUFTLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsR0FBRyxTQUFTLFVBQVUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsR0FBRyxTQUFTLFVBQVUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxTQUFTLFNBQVMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsR0FBRyxTQUFTLGFBQWEsQ0FBQztZQUMzTCxhQUFhLEVBQUUsR0FBRyxDQUFDLEdBQUcsU0FBUyxnQkFBZ0IsQ0FBQyxFQUFFLDJCQUEyQixFQUFFLEdBQUcsQ0FBQyxHQUFHLFNBQVMsOEJBQThCLENBQUMsRUFBRSxXQUFXLEVBQUUsR0FBRyxDQUFDLEdBQUcsU0FBUyxjQUFjLENBQUM7U0FDN0ssQ0FBQyxDQUFDO1FBQ0gsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sb0JBQW9CLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRTt3QkFDN0YsU0FBUyxFQUFFLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLFVBQVUsRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO3dCQUNqSCx3QkFBd0IsRUFBRSxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7d0JBQ2pHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsc0NBQXNDLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLGlDQUFpQyxDQUFDLEVBQUU7d0JBQzdHLFlBQVksRUFBRSxTQUFTLENBQUMscUJBQXFCLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxTQUFTLENBQUMsNEJBQTRCLENBQUM7d0JBQzVHLFlBQVksRUFBRSxHQUFHLENBQUMsMEJBQTBCLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQzt3QkFDekgsWUFBWSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxzREFBc0QsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsMkRBQTJELENBQUMsRUFBRTt3QkFDMUosWUFBWSxFQUFFLEdBQUcsQ0FBQyw0REFBNEQsQ0FBQztxQkFDaEYsRUFBRSxZQUFZLEVBQUU7d0JBQ2YsTUFBTSxFQUFFLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQyxFQUFFLHVCQUF1QixFQUFFLEdBQUcsQ0FBQyxzQ0FBc0MsQ0FBQyxFQUFFLGNBQWMsRUFBRSxHQUFHLENBQUMsNkJBQTZCLENBQUM7cUJBQ3pLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNYLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
@@ -0,0 +1,2 @@
1
+ /** One CSV member, incrementally inflated. Input slices bound each synchronous output batch. */
2
+ export declare function unzipCsv(sourceArg: AsyncIterable<Uint8Array>): AsyncGenerator<Uint8Array>;
@@ -0,0 +1,54 @@
1
+ import * as plugins from './plugins.js';
2
+ import { GleifError } from './classes.gleiferror.js';
3
+ /** One CSV member, incrementally inflated. Input slices bound each synchronous output batch. */
4
+ export async function* unzipCsv(sourceArg) {
5
+ let member;
6
+ let complete = false;
7
+ let failure;
8
+ let output = [];
9
+ const unzipper = new plugins.fflate.Unzip((fileArg) => {
10
+ if (member || !fileArg.name.toLowerCase().endsWith('.csv')) {
11
+ throw new GleifError('invalid_archive', 'Expected exactly one CSV member in the Golden Copy ZIP.');
12
+ }
13
+ member = fileArg;
14
+ fileArg.ondata = (errorArg, dataArg, finalArg) => {
15
+ if (errorArg)
16
+ failure = errorArg;
17
+ else if (dataArg.length)
18
+ output.push(dataArg);
19
+ if (finalArg)
20
+ complete = true;
21
+ };
22
+ fileArg.start();
23
+ });
24
+ unzipper.register(plugins.fflate.UnzipInflate);
25
+ try {
26
+ for await (const chunk of sourceArg) {
27
+ for (let offset = 0; offset < chunk.length; offset += 1024) {
28
+ unzipper.push(chunk.subarray(offset, offset + 1024));
29
+ if (failure)
30
+ throw failure;
31
+ const ready = output;
32
+ output = [];
33
+ for (const data of ready)
34
+ yield data;
35
+ }
36
+ }
37
+ unzipper.push(new Uint8Array(), true);
38
+ if (failure)
39
+ throw failure;
40
+ for (const data of output)
41
+ yield data;
42
+ if (!member || !complete)
43
+ throw new GleifError('invalid_archive', 'Missing or truncated CSV member in Golden Copy ZIP.');
44
+ }
45
+ catch (error) {
46
+ if (error instanceof GleifError)
47
+ throw error;
48
+ throw new GleifError('invalid_archive', 'Could not stream the Golden Copy ZIP.', undefined, { cause: error });
49
+ }
50
+ finally {
51
+ member?.terminate();
52
+ }
53
+ }
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLnppcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL2dsZWlmL3N0cmVhbS56aXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXJELGdHQUFnRztBQUNoRyxNQUFNLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBb0M7SUFDbEUsSUFBSSxNQUE0QyxDQUFDO0lBQ2pELElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNyQixJQUFJLE9BQTBCLENBQUM7SUFDL0IsSUFBSSxNQUFNLEdBQWlCLEVBQUUsQ0FBQztJQUM5QixNQUFNLFFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDcEQsSUFBSSxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzNELE1BQU0sSUFBSSxVQUFVLENBQUMsaUJBQWlCLEVBQUUseURBQXlELENBQUMsQ0FBQztRQUNyRyxDQUFDO1FBQ0QsTUFBTSxHQUFHLE9BQU8sQ0FBQztRQUNqQixPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUMvQyxJQUFJLFFBQVE7Z0JBQUUsT0FBTyxHQUFHLFFBQVEsQ0FBQztpQkFDNUIsSUFBSSxPQUFPLENBQUMsTUFBTTtnQkFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlDLElBQUksUUFBUTtnQkFBRSxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLENBQUMsQ0FBQztRQUNGLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztJQUNILFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMvQyxJQUFJLENBQUM7UUFDSCxJQUFJLEtBQUssRUFBRSxNQUFNLEtBQUssSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNwQyxLQUFLLElBQUksTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQzNELFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ3JELElBQUksT0FBTztvQkFBRSxNQUFNLE9BQU8sQ0FBQztnQkFDM0IsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDO2dCQUNyQixNQUFNLEdBQUcsRUFBRSxDQUFDO2dCQUNaLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSztvQkFBRSxNQUFNLElBQUksQ0FBQztZQUN2QyxDQUFDO1FBQ0gsQ0FBQztRQUNELFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0QyxJQUFJLE9BQU87WUFBRSxNQUFNLE9BQU8sQ0FBQztRQUMzQixLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU07WUFBRSxNQUFNLElBQUksQ0FBQztRQUN0QyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUTtZQUFFLE1BQU0sSUFBSSxVQUFVLENBQUMsaUJBQWlCLEVBQUUscURBQXFELENBQUMsQ0FBQztJQUMzSCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLElBQUksS0FBSyxZQUFZLFVBQVU7WUFBRSxNQUFNLEtBQUssQ0FBQztRQUM3QyxNQUFNLElBQUksVUFBVSxDQUFDLGlCQUFpQixFQUFFLHVDQUF1QyxFQUFFLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2hILENBQUM7WUFBUyxDQUFDO1FBQ1QsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQ3RCLENBQUM7QUFDSCxDQUFDIn0=
@@ -5,3 +5,5 @@ import * as smartpromise from '@push.rocks/smartpromise';
5
5
  import * as smartrequest from '@push.rocks/smartrequest';
6
6
  declare const getErrorMessage: (error: unknown) => string;
7
7
  export { getErrorMessage, smartpath, smartpromise, smartrequest, };
8
+ import * as fflate from 'fflate';
9
+ export { fflate };
@@ -12,4 +12,7 @@ const getErrorMessage = (error) => {
12
12
  return String(error);
13
13
  };
14
14
  export { getErrorMessage, smartpath, smartpromise, smartrequest, };
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBRWxDLE9BQU8sRUFDTCxJQUFJLEdBQ0wsQ0FBQTtBQUVELG9CQUFvQjtBQUNwQixPQUFPLEtBQUssU0FBUyxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxZQUFZLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxLQUFLLFlBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUV6RCxNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQWMsRUFBRSxFQUFFO0lBQ3pDLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRSxDQUFDO1FBQzNCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUN2QixDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkIsQ0FBQyxDQUFDO0FBRUYsT0FBTyxFQUNMLGVBQWUsRUFDZixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksR0FDYixDQUFBIn0=
15
+ // third-party scope
16
+ import * as fflate from 'fflate';
17
+ export { fflate };
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBRWxDLE9BQU8sRUFDTCxJQUFJLEdBQ0wsQ0FBQTtBQUVELG9CQUFvQjtBQUNwQixPQUFPLEtBQUssU0FBUyxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxZQUFZLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxLQUFLLFlBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUV6RCxNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQWMsRUFBRSxFQUFFO0lBQ3pDLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRSxDQUFDO1FBQzNCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUN2QixDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkIsQ0FBQyxDQUFDO0FBRUYsT0FBTyxFQUNMLGVBQWUsRUFDZixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksR0FDYixDQUFBO0FBRUQsb0JBQW9CO0FBQ3BCLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyJ9
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@fin.cx/opendata",
3
- "version": "4.7.0",
3
+ "version": "4.9.0",
4
4
  "private": false,
5
- "description": "Open business and financial data for TypeScript: register lookups on the German register portal (handelsregister.de) without storage, the statutory public holidays of the German federal states, the base rate of § 247 BGB, the German consumer price index with the arithmetic of index clauses, and stock and crypto prices and fundamentals from several providers.",
5
+ "description": "Open business and financial data for TypeScript: register lookups on the German register portal (handelsregister.de) without storage, the statutory public holidays of the German federal states, the base rate of § 247 BGB, the German consumer price index with the arithmetic of index clauses, published financial statements read from their HTML, PDF or ESEF documents, and stock and crypto prices and fundamentals from several providers.",
6
6
  "main": "dist_ts/index.js",
7
7
  "typings": "dist_ts/index.d.ts",
8
8
  "exports": {
@@ -30,6 +30,14 @@
30
30
  "types": "./dist_ts/cpi/index.d.ts",
31
31
  "import": "./dist_ts/cpi/index.js"
32
32
  },
33
+ "./financialstatements": {
34
+ "types": "./dist_ts/financialstatements/index.d.ts",
35
+ "import": "./dist_ts/financialstatements/index.js"
36
+ },
37
+ "./gleif": {
38
+ "types": "./dist_ts/gleif/index.d.ts",
39
+ "import": "./dist_ts/gleif/index.js"
40
+ },
33
41
  "./package.json": "./package.json"
34
42
  },
35
43
  "type": "module",
@@ -38,16 +46,19 @@
38
46
  "devDependencies": {
39
47
  "@git.zone/tsbuild": "^6.0.2",
40
48
  "@git.zone/tsrun": "^3.0.3",
41
- "@git.zone/tstest": "^7.2.0",
49
+ "@git.zone/tstest": "^7.2.1",
42
50
  "@push.rocks/qenv": "^6.1.3",
43
51
  "@types/node": "26.6.4"
44
52
  },
45
53
  "dependencies": {
54
+ "@push.rocks/smartarchive": "^5.5.2",
46
55
  "@push.rocks/smartpath": "^6.0.0",
47
56
  "@push.rocks/smartpromise": "^4.3.0",
48
57
  "@push.rocks/smartrequest": "^5.0.1",
49
58
  "@push.rocks/smartxml": "^2.1.0",
50
- "parse5": "^8.0.1"
59
+ "fflate": "0.8.3",
60
+ "parse5": "^8.0.1",
61
+ "pdfjs-dist": "^6.3.289"
51
62
  },
52
63
  "repository": {
53
64
  "type": "git",
@@ -93,7 +104,11 @@
93
104
  "base rate",
94
105
  "consumer price index",
95
106
  "Verbraucherpreisindex",
96
- "index clause"
107
+ "index clause",
108
+ "Jahresabschluss",
109
+ "financial statements",
110
+ "HGB",
111
+ "ESEF"
97
112
  ],
98
113
  "scripts": {
99
114
  "test": "(tstest test/ --verbose)",