@amalaika/form-sdk-package 1.0.0 → 1.1.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 (120) hide show
  1. package/README.md +193 -233
  2. package/dist/cjs/client/index.d.ts +42 -3
  3. package/dist/cjs/client/index.d.ts.map +1 -1
  4. package/dist/cjs/client/index.js +274 -73
  5. package/dist/cjs/client/index.js.map +1 -1
  6. package/dist/cjs/i18n/en.json +7 -0
  7. package/dist/cjs/i18n/fr.json +7 -0
  8. package/dist/cjs/i18n/index.d.ts +2 -0
  9. package/dist/cjs/i18n/index.d.ts.map +1 -0
  10. package/dist/cjs/i18n/index.js +15 -0
  11. package/dist/cjs/i18n/index.js.map +1 -0
  12. package/dist/cjs/i18n/rw.json +7 -0
  13. package/dist/cjs/index.d.ts +4 -2
  14. package/dist/cjs/index.d.ts.map +1 -1
  15. package/dist/cjs/index.js +10 -1
  16. package/dist/cjs/index.js.map +1 -1
  17. package/dist/cjs/integrations/checkout-script.d.ts +10 -0
  18. package/dist/cjs/integrations/checkout-script.d.ts.map +1 -0
  19. package/dist/cjs/integrations/checkout-script.js +38 -0
  20. package/dist/cjs/integrations/checkout-script.js.map +1 -0
  21. package/dist/cjs/integrations/index.d.ts +5 -0
  22. package/dist/cjs/integrations/index.d.ts.map +1 -0
  23. package/dist/cjs/integrations/index.js +49 -0
  24. package/dist/cjs/integrations/index.js.map +1 -0
  25. package/dist/cjs/integrations/mastercard.d.ts +11 -0
  26. package/dist/cjs/integrations/mastercard.d.ts.map +1 -0
  27. package/dist/cjs/integrations/mastercard.js +100 -0
  28. package/dist/cjs/integrations/mastercard.js.map +1 -0
  29. package/dist/cjs/integrations/types.d.ts +31 -0
  30. package/dist/cjs/integrations/types.d.ts.map +1 -0
  31. package/dist/cjs/{types.js.map → integrations/types.js.map} +1 -1
  32. package/dist/cjs/state/index.d.ts +29 -0
  33. package/dist/cjs/state/index.d.ts.map +1 -0
  34. package/dist/cjs/state/index.js +97 -0
  35. package/dist/cjs/state/index.js.map +1 -0
  36. package/dist/cjs/types/index.d.ts +80 -2
  37. package/dist/cjs/types/index.d.ts.map +1 -1
  38. package/dist/cjs/utils/index.d.ts +14 -1
  39. package/dist/cjs/utils/index.d.ts.map +1 -1
  40. package/dist/cjs/utils/index.js +122 -4
  41. package/dist/cjs/utils/index.js.map +1 -1
  42. package/dist/esm/client/index.d.ts +42 -3
  43. package/dist/esm/client/index.d.ts.map +1 -1
  44. package/dist/esm/client/index.js +274 -73
  45. package/dist/esm/client/index.js.map +1 -1
  46. package/dist/esm/i18n/en.json +7 -0
  47. package/dist/esm/i18n/fr.json +7 -0
  48. package/dist/esm/i18n/index.d.ts +2 -0
  49. package/dist/esm/i18n/index.d.ts.map +1 -0
  50. package/dist/esm/i18n/index.js +9 -0
  51. package/dist/esm/i18n/index.js.map +1 -0
  52. package/dist/esm/i18n/rw.json +7 -0
  53. package/dist/esm/index.d.ts +4 -2
  54. package/dist/esm/index.d.ts.map +1 -1
  55. package/dist/esm/index.js +3 -1
  56. package/dist/esm/index.js.map +1 -1
  57. package/dist/esm/integrations/checkout-script.d.ts +10 -0
  58. package/dist/esm/integrations/checkout-script.d.ts.map +1 -0
  59. package/dist/esm/integrations/checkout-script.js +35 -0
  60. package/dist/esm/integrations/checkout-script.js.map +1 -0
  61. package/dist/esm/integrations/index.d.ts +5 -0
  62. package/dist/esm/integrations/index.d.ts.map +1 -0
  63. package/dist/esm/integrations/index.js +11 -0
  64. package/dist/esm/integrations/index.js.map +1 -0
  65. package/dist/esm/integrations/mastercard.d.ts +11 -0
  66. package/dist/esm/integrations/mastercard.d.ts.map +1 -0
  67. package/dist/esm/integrations/mastercard.js +97 -0
  68. package/dist/esm/integrations/mastercard.js.map +1 -0
  69. package/dist/esm/integrations/types.d.ts +31 -0
  70. package/dist/esm/integrations/types.d.ts.map +1 -0
  71. package/dist/esm/{types.js.map → integrations/types.js.map} +1 -1
  72. package/dist/esm/state/index.d.ts +29 -0
  73. package/dist/esm/state/index.d.ts.map +1 -0
  74. package/dist/esm/state/index.js +93 -0
  75. package/dist/esm/state/index.js.map +1 -0
  76. package/dist/esm/types/index.d.ts +80 -2
  77. package/dist/esm/types/index.d.ts.map +1 -1
  78. package/dist/esm/utils/index.d.ts +14 -1
  79. package/dist/esm/utils/index.d.ts.map +1 -1
  80. package/dist/esm/utils/index.js +117 -4
  81. package/dist/esm/utils/index.js.map +1 -1
  82. package/package.json +2 -4
  83. package/dist/cjs/client/__tests__/client.spec.d.ts +0 -2
  84. package/dist/cjs/client/__tests__/client.spec.d.ts.map +0 -1
  85. package/dist/cjs/client/__tests__/client.spec.js +0 -300
  86. package/dist/cjs/client/__tests__/client.spec.js.map +0 -1
  87. package/dist/cjs/client.d.ts +0 -22
  88. package/dist/cjs/client.d.ts.map +0 -1
  89. package/dist/cjs/client.js +0 -111
  90. package/dist/cjs/client.js.map +0 -1
  91. package/dist/cjs/types.d.ts +0 -78
  92. package/dist/cjs/types.d.ts.map +0 -1
  93. package/dist/cjs/utils/__tests__/utils.spec.d.ts +0 -2
  94. package/dist/cjs/utils/__tests__/utils.spec.d.ts.map +0 -1
  95. package/dist/cjs/utils/__tests__/utils.spec.js +0 -172
  96. package/dist/cjs/utils/__tests__/utils.spec.js.map +0 -1
  97. package/dist/cjs/utils.d.ts +0 -5
  98. package/dist/cjs/utils.d.ts.map +0 -1
  99. package/dist/cjs/utils.js +0 -45
  100. package/dist/cjs/utils.js.map +0 -1
  101. package/dist/esm/client/__tests__/client.spec.d.ts +0 -2
  102. package/dist/esm/client/__tests__/client.spec.d.ts.map +0 -1
  103. package/dist/esm/client/__tests__/client.spec.js +0 -355
  104. package/dist/esm/client/__tests__/client.spec.js.map +0 -1
  105. package/dist/esm/client.d.ts +0 -22
  106. package/dist/esm/client.d.ts.map +0 -1
  107. package/dist/esm/client.js +0 -107
  108. package/dist/esm/client.js.map +0 -1
  109. package/dist/esm/types.d.ts +0 -78
  110. package/dist/esm/types.d.ts.map +0 -1
  111. package/dist/esm/utils/__tests__/utils.spec.d.ts +0 -2
  112. package/dist/esm/utils/__tests__/utils.spec.d.ts.map +0 -1
  113. package/dist/esm/utils/__tests__/utils.spec.js +0 -182
  114. package/dist/esm/utils/__tests__/utils.spec.js.map +0 -1
  115. package/dist/esm/utils.d.ts +0 -5
  116. package/dist/esm/utils.d.ts.map +0 -1
  117. package/dist/esm/utils.js +0 -40
  118. package/dist/esm/utils.js.map +0 -1
  119. /package/dist/cjs/{types.js → integrations/types.js} +0 -0
  120. /package/dist/esm/{types.js → integrations/types.js} +0 -0
@@ -3,20 +3,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getAllFields = getAllFields;
4
4
  exports.isFieldVisible = isFieldVisible;
5
5
  exports.getVisibleFieldIds = getVisibleFieldIds;
6
+ exports.validateField = validateField;
7
+ exports.validateForm = validateForm;
8
+ exports.hasIntegration = hasIntegration;
9
+ exports.getIntegrationMethod = getIntegrationMethod;
10
+ exports.resolveIntegrations = resolveIntegrations;
6
11
  function getAllFields(schema) {
7
12
  if (schema.steps) {
8
13
  return schema.steps.flatMap((step) => step.fields);
9
14
  }
10
15
  return schema.fields ?? [];
11
16
  }
12
- function isFieldVisible(field, formValues, allFields) {
17
+ function isFieldVisibleInternal(field, formValues, allFields, visited) {
13
18
  if (!field.visibility)
14
19
  return true;
15
20
  const { dependsOn, operator, value } = field.visibility;
16
- // Cascading: if the parent field is itself hidden, this field is hidden too
17
21
  const parentField = allFields.find((f) => f.id === dependsOn);
18
- if (parentField && !isFieldVisible(parentField, formValues, allFields)) {
19
- return false;
22
+ if (parentField) {
23
+ if (visited.has(parentField.id)) {
24
+ return true;
25
+ }
26
+ visited.add(field.id);
27
+ if (!isFieldVisibleInternal(parentField, formValues, allFields, visited)) {
28
+ return false;
29
+ }
20
30
  }
21
31
  const current = formValues[dependsOn];
22
32
  switch (operator) {
@@ -33,6 +43,9 @@ function isFieldVisible(field, formValues, allFields) {
33
43
  return true;
34
44
  }
35
45
  }
46
+ function isFieldVisible(field, formValues, allFields) {
47
+ return isFieldVisibleInternal(field, formValues, allFields, new Set());
48
+ }
36
49
  function getVisibleFieldIds(allFields, formValues) {
37
50
  const visible = new Set();
38
51
  for (const field of allFields) {
@@ -42,4 +55,109 @@ function getVisibleFieldIds(allFields, formValues) {
42
55
  }
43
56
  return visible;
44
57
  }
58
+ const EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
59
+ const URL_RE = /^https?:\/\/.+/;
60
+ function validateField(field, value) {
61
+ const isEmpty = value === null ||
62
+ value === undefined ||
63
+ value === "" ||
64
+ (Array.isArray(value) && value.length === 0);
65
+ if (field.required && isEmpty) {
66
+ return { valid: false, error: "This field is required" };
67
+ }
68
+ if (isEmpty) {
69
+ return { valid: true };
70
+ }
71
+ if (typeof value === "string") {
72
+ if (field.minLength !== undefined && value.length < field.minLength) {
73
+ return { valid: false, error: `Minimum length is ${field.minLength}` };
74
+ }
75
+ if (field.maxLength !== undefined && value.length > field.maxLength) {
76
+ return { valid: false, error: `Maximum length is ${field.maxLength}` };
77
+ }
78
+ if (field.pattern) {
79
+ const re = new RegExp(field.pattern);
80
+ if (!re.test(value)) {
81
+ return { valid: false, error: "Value does not match the required pattern" };
82
+ }
83
+ }
84
+ }
85
+ if (typeof value === "number" || (typeof value === "string" && field.type === "number")) {
86
+ const num = typeof value === "number" ? value : Number(value);
87
+ if (!isNaN(num)) {
88
+ if (field.min !== undefined && num < field.min) {
89
+ return { valid: false, error: `Minimum value is ${field.min}` };
90
+ }
91
+ if (field.max !== undefined && num > field.max) {
92
+ return { valid: false, error: `Maximum value is ${field.max}` };
93
+ }
94
+ }
95
+ }
96
+ if (field.type === "email" && typeof value === "string") {
97
+ if (!EMAIL_RE.test(value)) {
98
+ return { valid: false, error: "Invalid email format" };
99
+ }
100
+ }
101
+ if (field.type === "url" && typeof value === "string") {
102
+ if (!URL_RE.test(value)) {
103
+ return { valid: false, error: "Invalid URL format" };
104
+ }
105
+ }
106
+ if (field.type === "file" && typeof value === "object" && value !== null) {
107
+ const file = value;
108
+ if (field.accept && file.type && !field.accept.includes(file.type)) {
109
+ return { valid: false, error: `File type "${file.type}" is not allowed` };
110
+ }
111
+ if (field.maxSize !== undefined && file.size !== undefined && file.size > field.maxSize) {
112
+ return { valid: false, error: `File size exceeds maximum of ${field.maxSize} bytes` };
113
+ }
114
+ }
115
+ return { valid: true };
116
+ }
117
+ function validateForm(fields, values) {
118
+ const visibleIds = getVisibleFieldIds(fields, values);
119
+ const results = {};
120
+ for (const field of fields) {
121
+ if (visibleIds.has(field.id)) {
122
+ results[field.id] = validateField(field, values[field.id]);
123
+ }
124
+ }
125
+ return results;
126
+ }
127
+ // ── Integration helpers ─────────────────────────────────────────────
128
+ /** Returns true if the field has at least one integration mapping. */
129
+ function hasIntegration(field) {
130
+ return !!field.integrations && Object.keys(field.integrations).length > 0;
131
+ }
132
+ /** Returns the integration method name for a given selected value or option object, or undefined. */
133
+ function getIntegrationMethod(field, selectedValue) {
134
+ const key = typeof selectedValue === "string" ? selectedValue : selectedValue.id;
135
+ return field.integrations?.[key];
136
+ }
137
+ /**
138
+ * Scans all fields + current values and returns every integration that
139
+ * needs to be executed before submission.
140
+ */
141
+ function resolveIntegrations(fields, formValues) {
142
+ const result = [];
143
+ for (const field of fields) {
144
+ if (!field.integrations)
145
+ continue;
146
+ const raw = formValues[field.id];
147
+ // Support both plain string ("CARD") and option object ({ id: "CARD", value: "CARD" })
148
+ const key = typeof raw === "string"
149
+ ? raw
150
+ : raw !== null && typeof raw === "object" && "id" in raw
151
+ ? String(raw.id)
152
+ : undefined;
153
+ if (key && field.integrations[key]) {
154
+ result.push({
155
+ fieldId: field.id,
156
+ methodName: field.integrations[key],
157
+ selectedValue: key,
158
+ });
159
+ }
160
+ }
161
+ return result;
162
+ }
45
163
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;AAEA,oCAKC;AAED,wCA8BC;AAED,gDAWC;AAlDD,SAAgB,YAAY,CAAC,MAAkB;IAC7C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED,SAAgB,cAAc,CAC5B,KAAsB,EACtB,UAAmC,EACnC,SAA4B;IAE5B,IAAI,CAAC,KAAK,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAEnC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC;IAExD,4EAA4E;IAC5E,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;IAC9D,IAAI,WAAW,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC;QACvE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAEtC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,OAAO,KAAK,KAAK,CAAC;QAC3B,KAAK,YAAY;YACf,OAAO,OAAO,KAAK,KAAK,CAAC;QAC3B,KAAK,IAAI,CAAC,CAAC,CAAC;YACV,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC;QACD;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAgB,kBAAkB,CAChC,SAA4B,EAC5B,UAAmC;IAEnC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,IAAI,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,65 @@
1
- import type { EventFormConfig, FormData, Ticket } from "../types/index.js";
1
+ import type { EventFormConfig, FormData, IntegrationResult, ResolvedIntegration, SubmissionResponse, Ticket } from "../types/index.js";
2
2
  export declare class EventFormClient {
3
3
  private readonly apiBase;
4
4
  private readonly apiKey;
5
5
  private readonly resourceType;
6
6
  private readonly messages;
7
+ private readonly origin;
8
+ private readonly timeout;
9
+ private readonly retryConfig;
10
+ private readonly cacheConfig;
11
+ private readonly noCache;
12
+ private readonly interceptors;
13
+ private readonly mastercardCheckoutUrl;
14
+ private readonly merchantName;
15
+ private readonly cache;
7
16
  private locale;
8
17
  constructor(config: EventFormConfig);
9
18
  setLocale(locale: string): void;
10
19
  getLocale(): string | undefined;
20
+ /**
21
+ * Preload the Mastercard Checkout.js script so it's ready when payment starts.
22
+ * Call this early (e.g. on page load) to avoid skeleton delay.
23
+ */
24
+ preloadCheckoutScript(): Promise<void>;
25
+ clearCache(): void;
26
+ private getCached;
27
+ private setCache;
28
+ private applyRequestInterceptor;
29
+ private applyResponseInterceptor;
30
+ private applyErrorInterceptor;
31
+ private throwMapped;
32
+ private cachedGet;
33
+ private isRetryable;
34
+ private executeRequest;
11
35
  fetchTickets(options?: {
12
36
  locale?: string;
13
37
  name?: string;
14
38
  }): Promise<Ticket[]>;
15
39
  fetchTicketById(id: number, locale?: string): Promise<Ticket>;
40
+ fetchPublicTicket(id: number, locale?: string): Promise<Ticket>;
16
41
  fetchLanguages(): Promise<string[]>;
17
42
  fetchForm(ticketId: number, locale?: string): Promise<FormData>;
18
43
  authorizeUpload(formId: number, fieldId: string, file: File, locale?: string): Promise<string>;
19
44
  uploadFile(formId: number, token: string, file: File, locale?: string): Promise<string>;
20
- submitForm(formId: number, data: Record<string, unknown>, context: {
45
+ /**
46
+ * Submits the form to the backend first, then conditionally runs payment
47
+ * integrations if the response indicates payment is required.
48
+ *
49
+ * If an integration fails after submission, the failure is returned in the
50
+ * result (not thrown), since the submission is already saved on the backend.
51
+ */
52
+ submitForm(form: FormData, data: Record<string, unknown>, context: {
21
53
  eventId: number;
22
54
  ticketId: number;
23
55
  locale?: string;
24
- }): Promise<void>;
56
+ attendanceType?: "HYBRID" | "PHYSICAL" | "VIRTUAL" | null;
57
+ containerId?: string;
58
+ }): Promise<{
59
+ submission: SubmissionResponse;
60
+ integrations: Array<ResolvedIntegration & {
61
+ result: IntegrationResult;
62
+ }>;
63
+ }>;
25
64
  }
26
65
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAGV,eAAe,EACf,QAAQ,EACR,MAAM,EACP,MAAM,mBAAmB,CAAC;AAmC3B,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IACzC,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,EAAE,eAAe;IAQnC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,SAAS,IAAI,MAAM,GAAG,SAAS;IAIzB,YAAY,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAuBf,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiB7D,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAoBnC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAiB/D,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC;IAyBZ,UAAU,CACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC;IAqBZ,UAAU,CACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GACA,OAAO,CAAC,IAAI,CAAC;CAuBjB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"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"}