webs-sdk 0.15.0 → 0.15.1

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 (64) hide show
  1. package/README.md +398 -398
  2. package/dist/client.d.ts +2 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +7 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/components/ARFilters/ARFilters.js +52 -52
  7. package/dist/components/AvatarAI.js +4 -4
  8. package/dist/components/CookieConsent/constants.js +31 -31
  9. package/dist/components/CreativeFaceSwap.js +12 -12
  10. package/dist/components/MemeGenerator.js +12 -12
  11. package/dist/components/SpinningWheel/SpinningWheel.js +7 -7
  12. package/dist/components/esports/news/EsportsNews.d.ts.map +1 -1
  13. package/dist/components/esports/news/EsportsNews.js +13 -6
  14. package/dist/components/esports/news/EsportsNews.js.map +1 -1
  15. package/dist/components/esports/news/EsportsNewsDetail.d.ts +12 -0
  16. package/dist/components/esports/news/EsportsNewsDetail.d.ts.map +1 -0
  17. package/dist/components/esports/news/EsportsNewsDetail.js +97 -0
  18. package/dist/components/esports/news/EsportsNewsDetail.js.map +1 -0
  19. package/dist/components/esports/news/index.d.ts +2 -0
  20. package/dist/components/esports/news/index.d.ts.map +1 -1
  21. package/dist/components/esports/news/index.js +3 -1
  22. package/dist/components/esports/news/index.js.map +1 -1
  23. package/dist/components/esports/news/types.d.ts +4 -1
  24. package/dist/components/esports/news/types.d.ts.map +1 -1
  25. package/dist/components/esports/utils.d.ts +1 -0
  26. package/dist/components/esports/utils.d.ts.map +1 -1
  27. package/dist/components/esports/utils.js +23 -0
  28. package/dist/components/esports/utils.js.map +1 -1
  29. package/dist/components/esports/videos/EsportsVideos.d.ts.map +1 -1
  30. package/dist/components/esports/videos/EsportsVideos.js +13 -6
  31. package/dist/components/esports/videos/EsportsVideos.js.map +1 -1
  32. package/dist/components/esports/videos/types.d.ts +4 -1
  33. package/dist/components/esports/videos/types.d.ts.map +1 -1
  34. package/dist/components/ui/VideoPlayer.d.ts +11 -0
  35. package/dist/components/ui/VideoPlayer.d.ts.map +1 -0
  36. package/dist/components/ui/VideoPlayer.js +171 -0
  37. package/dist/components/ui/VideoPlayer.js.map +1 -0
  38. package/dist/context/TranslationContext.d.ts +12 -0
  39. package/dist/context/TranslationContext.d.ts.map +1 -0
  40. package/dist/context/TranslationContext.js +60 -0
  41. package/dist/context/TranslationContext.js.map +1 -0
  42. package/dist/index.d.ts +0 -4
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +1 -8
  45. package/dist/index.js.map +1 -1
  46. package/index.js +83 -0
  47. package/package.json +42 -43
  48. package/public/spin2win/assets/border-afristream.svg +26 -26
  49. package/public/spin2win/assets/border-efc.svg +23 -23
  50. package/public/spin2win/assets/border-totalgym.svg +27 -27
  51. package/public/spin2win/assets/border-womantoday.svg +26 -26
  52. package/public/spin2win/assets/indicator-afristream.svg +28 -28
  53. package/public/spin2win/assets/indicator-efc.svg +29 -29
  54. package/public/spin2win/assets/indicator-totalgym.svg +29 -29
  55. package/public/spin2win/fonts/switzer/README.md +22 -22
  56. package/types/index.d.ts +415 -0
  57. package/dist/components/Quiz.d.ts +0 -91
  58. package/dist/components/Quiz.d.ts.map +0 -1
  59. package/dist/components/Quiz.js +0 -748
  60. package/dist/components/Quiz.js.map +0 -1
  61. package/dist/components/Stickers.d.ts +0 -68
  62. package/dist/components/Stickers.d.ts.map +0 -1
  63. package/dist/components/Stickers.js +0 -303
  64. package/dist/components/Stickers.js.map +0 -1
@@ -0,0 +1,415 @@
1
+ declare module "webs-sdk" {
2
+ type JSONValue = string | number | boolean | null | JSONObject | JSONArray;
3
+ interface JSONObject { [key: string]: JSONValue; }
4
+ interface JSONArray extends Array<JSONValue> {}
5
+
6
+ interface ApiEndpoints {
7
+ contents: string;
8
+ CONFIG: string;
9
+ USER_CREATE_ID: string;
10
+ NOTIFICATION_SET_TOKEN: string;
11
+ SUB_NEW: string;
12
+ SUB_STATUS: string;
13
+ EVENTS_PUSH: string;
14
+ [key: string]: string;
15
+ }
16
+
17
+ interface ImageCompression {
18
+ COMPRESSION: number;
19
+ WIDTH: number;
20
+ ACTIVE: boolean;
21
+ }
22
+
23
+ interface Config {
24
+ apiBaseUrl: string;
25
+ apiVersion: string;
26
+ endpoints: ApiEndpoints;
27
+ timeout: number;
28
+ retryAttempts: number;
29
+ defaultHeaders: Record<string, string>;
30
+ storage: {
31
+ tokenKey: string;
32
+ userKey: string;
33
+ settingsKey: string;
34
+ };
35
+ i18n: {
36
+ defaultLanguage: string;
37
+ supportedLanguages: string[];
38
+ fallbackLanguage: string;
39
+ };
40
+ // Nuevas propiedades del apps_sdk
41
+ DEBUG_MODE: boolean;
42
+ TRACKING_ANSWERED: boolean;
43
+ TRACKING_ACTIVE: boolean;
44
+ FORCED_UPDATE: boolean;
45
+ CONFIG_EXTRA: any;
46
+ QUICK_ACTIONS: any;
47
+ EVENTS: { [key: string]: any };
48
+ EVENTS_MIXPANEL: { [key: string]: any };
49
+ PAYWALL_DATA: any;
50
+ SPECIAL_EVENTS: string[];
51
+ IMAGE_COMPRESSION: ImageCompression;
52
+ EVENT_TYPES: {
53
+ OTHER: string;
54
+ ACTION: string;
55
+ SCREEN: string;
56
+ };
57
+ MIXPANEL: {
58
+ TOKEN: string;
59
+ };
60
+ }
61
+
62
+ interface Networking {
63
+ request(url: string, data?: any): Promise<any>;
64
+ executeInit(): Promise<any>;
65
+ getUserID(): Promise<string | null>;
66
+ setToken(token: string): Promise<any>;
67
+ checkConnection(): Promise<boolean>;
68
+ decryptData(data: any): Promise<any>;
69
+ setEndpoints(domains: any): void;
70
+ setImageCompression(compression: any): void;
71
+ getEndpoints(): Promise<any>;
72
+ createSubscription(data: any): Promise<any>;
73
+ checkSubscription(): Promise<boolean>;
74
+ setForcedUpdate(data: any): boolean;
75
+ setConfigExtra(data: any): void;
76
+ getConfigExtra(): any;
77
+ setQuickActions(quickActions: any): void;
78
+ getQuickActions(): any;
79
+ setEvents(events: any): void;
80
+ setEventsMixPanel(events: any): void;
81
+ setPayWallData(data: any): void;
82
+ getPayWallData(): any;
83
+ sendEvent(eventType: string, eventKeyword: string, eventData?: any, forceSend?: boolean): Promise<any>;
84
+ addPendingEvent(event: any): void;
85
+ clearPendingEvents(): void;
86
+ sendPendingEvents(): Promise<void>;
87
+ }
88
+
89
+ interface AuthManager {
90
+ auto_login(cfg_sessionid: string, website_id: string): Promise<any>;
91
+ getThankyouPageMetadata(cfg_sessionid: string): Promise<ThankYouPageResult | any>;
92
+ authUser(login: string, password: string, website_id: string): Promise<any>;
93
+ authOnlyUser(login: string, website_id: string, login_only_user: string): Promise<any>;
94
+ createUser(email: string, password: string, website_id: string, extraData?: any): Promise<any>;
95
+ uploadProfilePhoto(login: string, password: string, website_id: string, resource: File): Promise<any>;
96
+ setUserMetadata(login: string, password: string, website_id: string, metadata: Record<string, any>): Promise<any>;
97
+ unsubscribeUser(user_id: string): Promise<any>;
98
+ changePassword(login: string, website_id: string, new_pass: string, repeat_new_pass: string): Promise<ChangePasswordResult>;
99
+ changeCredentials(website_id: string, login: string, password: string, new_login: string, new_pass: string, repeat_new_pass: string): Promise<ChangeCredentialsResult>;
100
+ }
101
+
102
+ interface I18nManager {
103
+ // Clase vacía por ahora
104
+ }
105
+
106
+ interface Storage {
107
+ get(key: string): string | null;
108
+ set(key: string, value: string): void;
109
+ remove(key: string): void;
110
+ clear(): void;
111
+ has(key: string): boolean;
112
+ // Métodos compatibles con apps_sdk
113
+ storeData(key: string, value: any): Promise<void>;
114
+ getData(key: string): Promise<any>;
115
+ removeData(key: string): Promise<void>;
116
+ printAllKeys(): Promise<void>;
117
+ removeAllKeys(): Promise<void>;
118
+ handleDownloadImage(base64: string, fileName: string): Promise<void>;
119
+ handleDownloadImageToCreations(base64Image: string, fileName: string, data: any): Promise<any>;
120
+ getCreations(): Promise<any[]>;
121
+ deleteCreation(dirName: string): Promise<void>;
122
+ deleteAllCreations(): Promise<void>;
123
+ setTrackingPermissionGranted(value: boolean): Promise<void>;
124
+ setTrackingPermissionFromStorage(): Promise<void>;
125
+ handleShareFile(fileName: string): Promise<boolean>;
126
+ compressImage(imageUri: string, maxSizeMB?: number): Promise<string | null>;
127
+ }
128
+
129
+ interface Utils {
130
+ formatDate(date: Date, format?: string): string;
131
+ generateId(): string;
132
+ debounce<T extends (...args: any[]) => any>(func: T, wait: number): (...args: Parameters<T>) => void;
133
+ throttle<T extends (...args: any[]) => any>(func: T, limit: number): (...args: Parameters<T>) => void;
134
+ deepClone<T>(obj: T): T;
135
+ isValidEmail(email: string): boolean;
136
+ isValidUrl(url: string): boolean;
137
+ truncateText(text: string, maxLength: number, suffix?: string): string;
138
+ capitalizeFirst(text: string): string;
139
+ camelToKebab(str: string): string;
140
+ kebabToCamel(str: string): string;
141
+ sleep(ms: number): Promise<void>;
142
+ getRandomInt(min: number, max: number): number;
143
+ arrayChunk<T>(array: T[], size: number): T[][];
144
+ arrayUnique<T>(array: T[]): T[];
145
+ objectPick<T, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
146
+ objectOmit<T, K extends keyof T>(obj: T, keys: K[]): Omit<T, K>;
147
+ // Métodos del apps_sdk adaptados para web
148
+ isBase64(str: string): boolean;
149
+ isBase64Image(str: string): boolean;
150
+ capitalize(text: string): string;
151
+ isSpecialEvent(eventKeyword: string): boolean;
152
+ downloadFile(data: string, filename: string, type?: string): void;
153
+ copyToClipboard(text: string): Promise<void>;
154
+ getDeviceInfo(): any;
155
+ isMobile(): boolean;
156
+ isTablet(): boolean;
157
+ isDesktop(): boolean;
158
+ getBrowserInfo(): any;
159
+ formatBytes(bytes: number, decimals?: number): string;
160
+ parseQueryString(queryString: string): Record<string, string>;
161
+ buildQueryString(params: Record<string, any>): string;
162
+ encryptData(data: any): Promise<{ encryptedData: string; ivBase64: string }>;
163
+ }
164
+
165
+ interface Andromeda {
166
+ getWebsiteMetadatabyHostname(hostname: string): Promise<MetadataResult | void>;
167
+ getWebsiteConfig(website_id: string, merchantId?: number): Promise<MetadataResult | void>;
168
+ }
169
+
170
+ interface ContentManager {
171
+ getContentByPreset(preset: string, params: Record<string, any>): Promise<any>;
172
+ }
173
+
174
+ interface SessionData {
175
+ user_id: string | null;
176
+ isFirstOpen: boolean;
177
+ app: {
178
+ shortVersion: string;
179
+ package: string;
180
+ languageCode: string;
181
+ regionCode: string;
182
+ buildVersionNumber: string;
183
+ };
184
+ device: {
185
+ name: string;
186
+ systemName: string;
187
+ systemVersion: string;
188
+ model: string;
189
+ };
190
+ sandbox: {
191
+ domains: string;
192
+ };
193
+ adjust: {
194
+ attribution_id: string;
195
+ idfa: string;
196
+ googleAdid: string;
197
+ attribution: any;
198
+ };
199
+ dev: boolean;
200
+ lang: string;
201
+ package: string;
202
+ }
203
+
204
+ interface Session {
205
+ init(): Promise<void>;
206
+ setConfigEndpoint(endpoint: string): void;
207
+ initSession(): Promise<void>;
208
+ storeSessionStructure(): Promise<void>;
209
+ checkFirstOpen(): Promise<void>;
210
+ generateSessionID(): string;
211
+ checkUserID(): Promise<string | null>;
212
+ getSessionData(): SessionData;
213
+ getSessionID(): string | null;
214
+ getIsFirstOpen(): boolean;
215
+ getIsSubscribed(): boolean;
216
+ getIsDevUser(): boolean;
217
+ setIsSubscribed(isSubscribed: boolean): Promise<void>;
218
+ setSubscriptionData(subscriptionData: any): void;
219
+ setSubscriptionID(subscriptionID: string): void;
220
+ setIsDevUser(isDevUser: boolean): void;
221
+ setUserID(userID: string | null): void;
222
+ getUserID(): string | null;
223
+ setAdjustIDFA(idfa: string): void;
224
+ getAdjustIDFA(): Promise<string>;
225
+ setAdjustGoogleAdid(googleAdid: string): void;
226
+ getAdjustGoogleAdid(): string;
227
+ setAdjustAttributionID(attribution_id: string): void;
228
+ getAdjustAttributionID(): string;
229
+ setAdjustAttribution(attribution: any): void;
230
+ sendFirstOpen(): Promise<void>;
231
+ checkSubscription(): Promise<void>;
232
+ checkSubscription24h(): Promise<void>;
233
+ isForcedUpdate(): boolean;
234
+ getDeviceLanguage(): string;
235
+ getDeviceLanguageAndRegion(): string;
236
+ }
237
+
238
+ interface MixPanel {
239
+ initialize(token?: string | null, trackAutomaticEvents?: boolean, useNative?: boolean, devMode?: boolean): Promise<void>;
240
+ getDistinctID(): Promise<string | null>;
241
+ trackEvent(eventName: string, properties?: any, forceSend?: boolean): Promise<void>;
242
+ trackEventIfExist(eventKeyword: string, eventData?: any): Promise<void>;
243
+ superProperties(properties: any): Promise<void>;
244
+ superPropertiesAppend(properties: any): Promise<void>;
245
+ identifyUser(userID: string): Promise<void>;
246
+ resetUserID(): Promise<void>;
247
+ setUserProperties(properties: any): Promise<void>;
248
+ isMixpanelInitialized(): boolean;
249
+ disableTracking(): void;
250
+ enableTracking(): void;
251
+ }
252
+
253
+ interface AudioVoice {
254
+ name: string;
255
+ lang: string;
256
+ localService: boolean;
257
+ default: boolean;
258
+ voiceURI: string;
259
+ }
260
+
261
+ interface SpeechOptions {
262
+ text: string;
263
+ voice?: string;
264
+ rate?: number;
265
+ pitch?: number;
266
+ volume?: number;
267
+ lang?: string;
268
+ }
269
+
270
+ interface AudioConfig {
271
+ defaultRate: number;
272
+ defaultPitch: number;
273
+ defaultVolume: number;
274
+ preferredLanguages: string[];
275
+ fallbackLanguage: string;
276
+ }
277
+
278
+ interface Audio {
279
+ getAvailableVoices(): AudioVoice[];
280
+ getBestVoiceForLanguage(language?: string): any;
281
+ speak(options: SpeechOptions): Promise<void>;
282
+ speakText(text: string, language?: string): Promise<void>;
283
+ pause(): void;
284
+ resume(): void;
285
+ stop(): void;
286
+ isSpeaking(): boolean;
287
+ isPaused(): boolean;
288
+ isSupported(): boolean;
289
+ setAudioConfig(config: Partial<AudioConfig>): void;
290
+ getAudioConfig(): AudioConfig;
291
+ getAudioInfo(): any;
292
+ speakSequence(texts: string[], options?: Partial<SpeechOptions>): Promise<void>;
293
+ speakWithEffect(text: string, effect: 'slow' | 'fast' | 'robot' | 'whisper'): Promise<void>;
294
+ }
295
+
296
+ interface CorporateUserData {
297
+ id: string;
298
+ email: string;
299
+ name: string;
300
+ role: string;
301
+ local_validation?: boolean;
302
+ }
303
+
304
+ interface CorporateValidationResponse {
305
+ authenticated: boolean;
306
+ user?: CorporateUserData;
307
+ token?: string;
308
+ expires_at?: number;
309
+ error?: string;
310
+ code?: string;
311
+ }
312
+
313
+ interface CorporateLogoutResponse {
314
+ success: boolean;
315
+ message?: string;
316
+ redirect_url?: string;
317
+ }
318
+
319
+ interface CorporateAuthConfig {
320
+ authDomain: string;
321
+ authValidateUrl: string;
322
+ authLogoutUrl: string;
323
+ authLoginUrl: string;
324
+ appDomain: string;
325
+ authCookieDuration: number;
326
+ authRevalidationInterval: number;
327
+ jwtSecret: string;
328
+ authJwtIssuer: string;
329
+ }
330
+
331
+ interface CorporateServerSideAuthResult {
332
+ authenticated: boolean;
333
+ user?: CorporateUserData;
334
+ redirectResponse?: any;
335
+ }
336
+
337
+ interface CorporateAuthManager {
338
+ configure(customConfig: Partial<CorporateAuthConfig>): void;
339
+ validateUser(autoRedirect?: boolean): Promise<CorporateUserData | null>;
340
+ checkAuthStatus(): Promise<{ authenticated: boolean; user?: CorporateUserData }>;
341
+ login(returnTo?: string): void;
342
+ logout(redirectTo?: string): Promise<void>;
343
+ isAdmin(userData?: CorporateUserData): Promise<boolean>;
344
+ getCurrentUser(): Promise<CorporateUserData | null>;
345
+ hasActiveSession(): Promise<boolean>;
346
+ handleAuthCallback(): Promise<boolean>;
347
+ forceRevalidation(): Promise<CorporateUserData | null>;
348
+ checkCorporateLogin(): Promise<CorporateUserData | null>;
349
+ validateCorporateAuthServerSide(request: any): Promise<CorporateServerSideAuthResult>;
350
+ }
351
+
352
+ type LegalDocumentType = 'tc' | 'privacy_policy' | 'cookies_policy' | 'faqs' | 'contact';
353
+
354
+ interface LegalTextResponse {
355
+ success: boolean;
356
+ data: any;
357
+ website_id: string;
358
+ type: string;
359
+ language: string;
360
+ }
361
+
362
+ interface LegalManager {
363
+ getLegalText(
364
+ website_id: string,
365
+ type: LegalDocumentType,
366
+ language?: string
367
+ ): Promise<LegalTextResponse>;
368
+ }
369
+
370
+ interface CalypsoManager {
371
+ trackEvent(data: any): Promise<any>;
372
+ }
373
+
374
+ interface userParams {
375
+ userId: string;
376
+ }
377
+
378
+ interface sessionParams {
379
+ user_id: string;
380
+ session: string;
381
+ }
382
+ interface UserCreditsParams {
383
+ userId: string;
384
+ website_id: string;
385
+ }
386
+
387
+ interface UserManager {
388
+ checkUserSubscription(params: userParams): Promise<any>;
389
+ checkUserLinkedStatus(params: userParams): Promise<any>;
390
+ getAlias(params: userParams): Promise<any>;
391
+ getUserCredits(params: UserCreditsParams): Promise<any>;
392
+ checkSession(params: sessionParams): Promise<any>;
393
+ }
394
+
395
+ interface WebsSDK {
396
+ Networking: Networking;
397
+ AuthManager: AuthManager;
398
+ I18nManager: I18nManager;
399
+ Storage: Storage;
400
+ Utils: Utils;
401
+ Andromeda: Andromeda;
402
+ ContentManager: ContentManager;
403
+ Session: Session;
404
+ MixPanel: MixPanel;
405
+ Audio: Audio;
406
+ CorporateAuthManager: CorporateAuthManager;
407
+ Legal: LegalManager;
408
+ Calypso: CalypsoManager;
409
+ Config: Config;
410
+ User: UserManager;
411
+ }
412
+
413
+ const WebsSDK: WebsSDK;
414
+ export default WebsSDK;
415
+ }
@@ -1,91 +0,0 @@
1
- import React from 'react';
2
- export interface QuizQuestion {
3
- id: string | number;
4
- question: string;
5
- thumbnail?: string;
6
- options: Array<{
7
- text: string;
8
- points: number;
9
- }>;
10
- correctIndex?: number;
11
- explanation?: string;
12
- }
13
- export interface QuizResult {
14
- title: string;
15
- description: string;
16
- minPoints: number;
17
- maxPoints: number;
18
- }
19
- export interface QuizItem {
20
- id: string | number;
21
- title: string;
22
- description?: string;
23
- thumbnail?: string;
24
- contentsId: string;
25
- }
26
- export interface QuizTheme {
27
- primaryColor?: string;
28
- primaryHoverColor?: string;
29
- textColor?: string;
30
- backgroundColor?: string;
31
- cardBackground?: string;
32
- buttonColor?: string;
33
- buttonTextColor?: string;
34
- neutralMid?: string;
35
- cardBorderColor?: string;
36
- titleDarkColor?: string;
37
- }
38
- export interface QuizTexts {
39
- title?: string;
40
- subtitle?: string;
41
- loading?: string;
42
- noItems?: string;
43
- loadMore?: string;
44
- startQuiz?: string;
45
- questionLabel?: string;
46
- nextButton?: string;
47
- previousButton?: string;
48
- submitButton?: string;
49
- correctAnswer?: string;
50
- wrongAnswer?: string;
51
- retryButton?: string;
52
- closeButton?: string;
53
- scoreLabel?: string;
54
- loadingQuestions?: string;
55
- }
56
- export interface QuizConfig {
57
- apiUrl: string;
58
- questionsApiUrl?: string;
59
- tags?: string[];
60
- includeIds?: number[];
61
- locale?: string;
62
- initialCount?: number;
63
- loadMoreCount?: number;
64
- }
65
- export interface QuizProps {
66
- config: QuizConfig;
67
- theme?: QuizTheme;
68
- texts?: QuizTexts;
69
- onQuizStart?: (quiz: QuizItem) => void;
70
- onQuizComplete?: (score: number, totalQuestions: number) => void;
71
- }
72
- export declare function Quiz({ config, theme: themeP, texts: textsP, onQuizStart, onQuizComplete }: QuizProps): React.JSX.Element;
73
- export interface QuizForYouCardProps {
74
- title: string;
75
- description: string;
76
- ctaText: string;
77
- ctaHref: string;
78
- desktopImage: string;
79
- mobileImage?: string;
80
- imageAlt?: string;
81
- imageOnRight?: boolean;
82
- titleColor?: string;
83
- descriptionColor?: string;
84
- ctaColor?: string;
85
- ctaHoverColor?: string;
86
- backgroundColor?: string;
87
- paddingClass?: string;
88
- }
89
- export declare function QuizForYouCard({ title, description, ctaText, ctaHref, desktopImage, mobileImage, imageAlt, imageOnRight, titleColor, descriptionColor, ctaColor, ctaHoverColor, backgroundColor, paddingClass, }: QuizForYouCardProps): React.JSX.Element;
90
- export default Quiz;
91
- //# sourceMappingURL=Quiz.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Quiz.d.ts","sourceRoot":"","sources":["../../src/components/Quiz.tsx"],"names":[],"mappings":"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"}