@voyantjs/products 0.19.0 → 0.21.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.
- package/dist/booking-engine/handler.d.ts +203 -0
- package/dist/booking-engine/handler.d.ts.map +1 -0
- package/dist/booking-engine/handler.js +330 -0
- package/dist/booking-engine/index.d.ts +8 -0
- package/dist/booking-engine/index.d.ts.map +1 -0
- package/dist/booking-engine/index.js +7 -0
- package/dist/catalog-policy.d.ts +33 -0
- package/dist/catalog-policy.d.ts.map +1 -0
- package/dist/catalog-policy.js +421 -0
- package/dist/content-shape.d.ts +217 -0
- package/dist/content-shape.d.ts.map +1 -0
- package/dist/content-shape.js +159 -0
- package/dist/draft-shape.d.ts +43 -0
- package/dist/draft-shape.d.ts.map +1 -0
- package/dist/draft-shape.js +46 -0
- package/dist/events.d.ts +37 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +32 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/routes-content.d.ts +74 -0
- package/dist/routes-content.d.ts.map +1 -0
- package/dist/routes-content.js +117 -0
- package/dist/routes.d.ts +47 -26
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +88 -16
- package/dist/schema-core.d.ts +240 -1
- package/dist/schema-core.d.ts.map +1 -1
- package/dist/schema-core.js +49 -0
- package/dist/schema-itinerary.d.ts +18 -1
- package/dist/schema-itinerary.d.ts.map +1 -1
- package/dist/schema-itinerary.js +1 -0
- package/dist/schema-settings.d.ts +1 -1
- package/dist/schema-sourced-content.d.ts +262 -0
- package/dist/schema-sourced-content.d.ts.map +1 -0
- package/dist/schema-sourced-content.js +69 -0
- package/dist/schema-taxonomy.d.ts +17 -0
- package/dist/schema-taxonomy.d.ts.map +1 -1
- package/dist/schema-taxonomy.js +13 -0
- package/dist/schema.d.ts +1 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +1 -0
- package/dist/service-catalog-plane.d.ts +129 -0
- package/dist/service-catalog-plane.d.ts.map +1 -0
- package/dist/service-catalog-plane.js +212 -0
- package/dist/service-content-owned.d.ts +68 -0
- package/dist/service-content-owned.d.ts.map +1 -0
- package/dist/service-content-owned.js +224 -0
- package/dist/service-content-synthesizer.d.ts +90 -0
- package/dist/service-content-synthesizer.d.ts.map +1 -0
- package/dist/service-content-synthesizer.js +171 -0
- package/dist/service-content.d.ts +106 -0
- package/dist/service-content.d.ts.map +1 -0
- package/dist/service-content.js +365 -0
- package/dist/service.d.ts +82 -28
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +4 -0
- package/dist/tasks/brochures.d.ts +2 -1
- package/dist/tasks/brochures.d.ts.map +1 -1
- package/dist/tasks/brochures.js +3 -0
- package/dist/validation-catalog.d.ts +4 -4
- package/dist/validation-config.d.ts +3 -3
- package/dist/validation-content.d.ts +34 -4
- package/dist/validation-content.d.ts.map +1 -1
- package/dist/validation-content.js +13 -0
- package/dist/validation-core.d.ts +53 -3
- package/dist/validation-core.d.ts.map +1 -1
- package/dist/validation-core.js +16 -0
- package/dist/validation-public.d.ts +9 -9
- package/dist/validation-shared.d.ts +4 -4
- package/package.json +12 -6
package/dist/routes.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ type Env = {
|
|
|
3
3
|
Variables: {
|
|
4
4
|
db: PostgresJsDatabase;
|
|
5
5
|
userId?: string;
|
|
6
|
+
eventBus?: import("@voyantjs/core").EventBus;
|
|
6
7
|
};
|
|
7
8
|
};
|
|
8
9
|
export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
@@ -49,10 +50,13 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
49
50
|
costAmountCents: number | null;
|
|
50
51
|
marginPercent: number | null;
|
|
51
52
|
facilityId: string | null;
|
|
53
|
+
supplierId: string | null;
|
|
52
54
|
startDate: string | null;
|
|
53
55
|
endDate: string | null;
|
|
54
56
|
pax: number | null;
|
|
55
57
|
productTypeId: string | null;
|
|
58
|
+
taxClassId: string | null;
|
|
59
|
+
customerPaymentPolicy: import("hono/utils/types").JSONValue;
|
|
56
60
|
tags: string[] | null;
|
|
57
61
|
createdAt: string;
|
|
58
62
|
updatedAt: string;
|
|
@@ -80,19 +84,22 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
80
84
|
endDate: string | null;
|
|
81
85
|
timezone: string | null;
|
|
82
86
|
description: string | null;
|
|
87
|
+
visibility: "public" | "private" | "hidden";
|
|
83
88
|
bookingMode: "date" | "other" | "date_time" | "open" | "stay" | "transfer" | "itinerary";
|
|
84
89
|
capacityMode: "free_sale" | "limited" | "on_request";
|
|
85
|
-
visibility: "public" | "private" | "hidden";
|
|
86
90
|
activated: boolean;
|
|
91
|
+
productTypeId: string | null;
|
|
92
|
+
facilityId: string | null;
|
|
93
|
+
supplierId: string | null;
|
|
94
|
+
pax: number | null;
|
|
87
95
|
reservationTimeoutMinutes: number | null;
|
|
88
|
-
sellCurrency: string;
|
|
89
96
|
sellAmountCents: number | null;
|
|
97
|
+
sellCurrency: string;
|
|
90
98
|
costAmountCents: number | null;
|
|
91
99
|
marginPercent: number | null;
|
|
92
|
-
facilityId: string | null;
|
|
93
|
-
pax: number | null;
|
|
94
|
-
productTypeId: string | null;
|
|
95
100
|
tags: string[] | null;
|
|
101
|
+
taxClassId: string | null;
|
|
102
|
+
customerPaymentPolicy: import("hono/utils/types").JSONValue;
|
|
96
103
|
};
|
|
97
104
|
};
|
|
98
105
|
outputFormat: "json";
|
|
@@ -581,7 +588,7 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
581
588
|
data: {
|
|
582
589
|
id: string;
|
|
583
590
|
productId: string;
|
|
584
|
-
capability: "on_request" | "private" | "instant_confirmation" | "pickup_available" | "dropoff_available" | "guided" | "shared" | "digital_ticket" | "voucher_required" | "external_inventory" | "multi_day" | "
|
|
591
|
+
capability: "accommodation" | "on_request" | "private" | "instant_confirmation" | "pickup_available" | "dropoff_available" | "guided" | "shared" | "digital_ticket" | "voucher_required" | "external_inventory" | "multi_day" | "transport";
|
|
585
592
|
enabled: boolean;
|
|
586
593
|
notes: string | null;
|
|
587
594
|
createdAt: string;
|
|
@@ -618,7 +625,7 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
618
625
|
data: {
|
|
619
626
|
id: string;
|
|
620
627
|
productId: string;
|
|
621
|
-
capability: "on_request" | "private" | "instant_confirmation" | "pickup_available" | "dropoff_available" | "guided" | "shared" | "digital_ticket" | "voucher_required" | "external_inventory" | "multi_day" | "
|
|
628
|
+
capability: "accommodation" | "on_request" | "private" | "instant_confirmation" | "pickup_available" | "dropoff_available" | "guided" | "shared" | "digital_ticket" | "voucher_required" | "external_inventory" | "multi_day" | "transport";
|
|
622
629
|
enabled: boolean;
|
|
623
630
|
notes: string | null;
|
|
624
631
|
createdAt: string;
|
|
@@ -656,7 +663,7 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
656
663
|
updatedAt: string;
|
|
657
664
|
notes: string | null;
|
|
658
665
|
productId: string;
|
|
659
|
-
capability: "on_request" | "private" | "instant_confirmation" | "pickup_available" | "dropoff_available" | "guided" | "shared" | "digital_ticket" | "voucher_required" | "external_inventory" | "multi_day" | "
|
|
666
|
+
capability: "accommodation" | "on_request" | "private" | "instant_confirmation" | "pickup_available" | "dropoff_available" | "guided" | "shared" | "digital_ticket" | "voucher_required" | "external_inventory" | "multi_day" | "transport";
|
|
660
667
|
};
|
|
661
668
|
};
|
|
662
669
|
outputFormat: "json";
|
|
@@ -686,7 +693,7 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
686
693
|
data: {
|
|
687
694
|
id: string;
|
|
688
695
|
productId: string;
|
|
689
|
-
capability: "on_request" | "private" | "instant_confirmation" | "pickup_available" | "dropoff_available" | "guided" | "shared" | "digital_ticket" | "voucher_required" | "external_inventory" | "multi_day" | "
|
|
696
|
+
capability: "accommodation" | "on_request" | "private" | "instant_confirmation" | "pickup_available" | "dropoff_available" | "guided" | "shared" | "digital_ticket" | "voucher_required" | "external_inventory" | "multi_day" | "transport";
|
|
690
697
|
enabled: boolean;
|
|
691
698
|
notes: string | null;
|
|
692
699
|
createdAt: string;
|
|
@@ -1271,11 +1278,11 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
1271
1278
|
updatedAt: string;
|
|
1272
1279
|
productId: string;
|
|
1273
1280
|
title: string;
|
|
1274
|
-
sortOrder: number;
|
|
1275
|
-
locationType: "start" | "other" | "end" | "meeting_point" | "pickup" | "dropoff" | "point_of_interest";
|
|
1276
|
-
address: string | null;
|
|
1277
1281
|
city: string | null;
|
|
1282
|
+
address: string | null;
|
|
1283
|
+
sortOrder: number;
|
|
1278
1284
|
countryCode: string | null;
|
|
1285
|
+
locationType: "start" | "other" | "end" | "meeting_point" | "pickup" | "dropoff" | "point_of_interest";
|
|
1279
1286
|
latitude: number | null;
|
|
1280
1287
|
longitude: number | null;
|
|
1281
1288
|
googlePlaceId: string | null;
|
|
@@ -1920,7 +1927,7 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
1920
1927
|
name: string;
|
|
1921
1928
|
code: string | null;
|
|
1922
1929
|
description: string | null;
|
|
1923
|
-
unitType: "service" | "other" | "
|
|
1930
|
+
unitType: "service" | "other" | "group" | "person" | "room" | "vehicle";
|
|
1924
1931
|
minQuantity: number | null;
|
|
1925
1932
|
maxQuantity: number | null;
|
|
1926
1933
|
minAge: number | null;
|
|
@@ -1967,7 +1974,7 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
1967
1974
|
name: string;
|
|
1968
1975
|
code: string | null;
|
|
1969
1976
|
description: string | null;
|
|
1970
|
-
unitType: "service" | "other" | "
|
|
1977
|
+
unitType: "service" | "other" | "group" | "person" | "room" | "vehicle";
|
|
1971
1978
|
minQuantity: number | null;
|
|
1972
1979
|
maxQuantity: number | null;
|
|
1973
1980
|
minAge: number | null;
|
|
@@ -2013,12 +2020,12 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
2013
2020
|
description: string | null;
|
|
2014
2021
|
code: string | null;
|
|
2015
2022
|
optionId: string;
|
|
2023
|
+
maxAge: number | null;
|
|
2024
|
+
minAge: number | null;
|
|
2016
2025
|
sortOrder: number;
|
|
2017
|
-
unitType: "service" | "other" | "
|
|
2026
|
+
unitType: "service" | "other" | "group" | "person" | "room" | "vehicle";
|
|
2018
2027
|
minQuantity: number | null;
|
|
2019
2028
|
maxQuantity: number | null;
|
|
2020
|
-
minAge: number | null;
|
|
2021
|
-
maxAge: number | null;
|
|
2022
2029
|
occupancyMin: number | null;
|
|
2023
2030
|
occupancyMax: number | null;
|
|
2024
2031
|
isRequired: boolean;
|
|
@@ -2055,7 +2062,7 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
2055
2062
|
name: string;
|
|
2056
2063
|
code: string | null;
|
|
2057
2064
|
description: string | null;
|
|
2058
|
-
unitType: "service" | "other" | "
|
|
2065
|
+
unitType: "service" | "other" | "group" | "person" | "room" | "vehicle";
|
|
2059
2066
|
minQuantity: number | null;
|
|
2060
2067
|
maxQuantity: number | null;
|
|
2061
2068
|
minAge: number | null;
|
|
@@ -2737,6 +2744,7 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
2737
2744
|
description: string | null;
|
|
2738
2745
|
sortOrder: number;
|
|
2739
2746
|
active: boolean;
|
|
2747
|
+
customerPaymentPolicy: import("hono/utils/types").JSONValue;
|
|
2740
2748
|
metadata: {
|
|
2741
2749
|
[x: string]: import("hono/utils/types").JSONValue;
|
|
2742
2750
|
} | null;
|
|
@@ -2779,6 +2787,7 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
2779
2787
|
description: string | null;
|
|
2780
2788
|
sortOrder: number;
|
|
2781
2789
|
active: boolean;
|
|
2790
|
+
customerPaymentPolicy: import("hono/utils/types").JSONValue;
|
|
2782
2791
|
metadata: {
|
|
2783
2792
|
[x: string]: import("hono/utils/types").JSONValue;
|
|
2784
2793
|
} | null;
|
|
@@ -2806,6 +2815,7 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
2806
2815
|
slug: string;
|
|
2807
2816
|
description: string | null;
|
|
2808
2817
|
active: boolean;
|
|
2818
|
+
customerPaymentPolicy: import("hono/utils/types").JSONValue;
|
|
2809
2819
|
sortOrder: number;
|
|
2810
2820
|
parentId: string | null;
|
|
2811
2821
|
} | undefined;
|
|
@@ -2842,6 +2852,7 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
2842
2852
|
description: string | null;
|
|
2843
2853
|
sortOrder: number;
|
|
2844
2854
|
active: boolean;
|
|
2855
|
+
customerPaymentPolicy: import("hono/utils/types").JSONValue;
|
|
2845
2856
|
metadata: {
|
|
2846
2857
|
[x: string]: import("hono/utils/types").JSONValue;
|
|
2847
2858
|
} | null;
|
|
@@ -3486,10 +3497,13 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
3486
3497
|
costAmountCents: number | null;
|
|
3487
3498
|
marginPercent: number | null;
|
|
3488
3499
|
facilityId: string | null;
|
|
3500
|
+
supplierId: string | null;
|
|
3489
3501
|
startDate: string | null;
|
|
3490
3502
|
endDate: string | null;
|
|
3491
3503
|
pax: number | null;
|
|
3492
3504
|
productTypeId: string | null;
|
|
3505
|
+
taxClassId: string | null;
|
|
3506
|
+
customerPaymentPolicy: import("hono/utils/types").JSONValue;
|
|
3493
3507
|
tags: string[] | null;
|
|
3494
3508
|
createdAt: string;
|
|
3495
3509
|
updatedAt: string;
|
|
@@ -3535,10 +3549,13 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
3535
3549
|
costAmountCents: number | null;
|
|
3536
3550
|
marginPercent: number | null;
|
|
3537
3551
|
facilityId: string | null;
|
|
3552
|
+
supplierId: string | null;
|
|
3538
3553
|
startDate: string | null;
|
|
3539
3554
|
endDate: string | null;
|
|
3540
3555
|
pax: number | null;
|
|
3541
3556
|
productTypeId: string | null;
|
|
3557
|
+
taxClassId: string | null;
|
|
3558
|
+
customerPaymentPolicy: import("hono/utils/types").JSONValue;
|
|
3542
3559
|
tags: string[] | null;
|
|
3543
3560
|
createdAt: string;
|
|
3544
3561
|
updatedAt: string;
|
|
@@ -3781,9 +3798,9 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
3781
3798
|
updatedAt: string;
|
|
3782
3799
|
description: string | null;
|
|
3783
3800
|
title: string | null;
|
|
3801
|
+
location: string | null;
|
|
3784
3802
|
itineraryId: string;
|
|
3785
3803
|
dayNumber: number;
|
|
3786
|
-
location: string | null;
|
|
3787
3804
|
};
|
|
3788
3805
|
};
|
|
3789
3806
|
outputFormat: "json";
|
|
@@ -3840,9 +3857,9 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
3840
3857
|
updatedAt: string;
|
|
3841
3858
|
description: string | null;
|
|
3842
3859
|
title: string | null;
|
|
3860
|
+
location: string | null;
|
|
3843
3861
|
itineraryId: string;
|
|
3844
3862
|
dayNumber: number;
|
|
3845
|
-
location: string | null;
|
|
3846
3863
|
};
|
|
3847
3864
|
};
|
|
3848
3865
|
outputFormat: "json";
|
|
@@ -3933,9 +3950,10 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
3933
3950
|
id: string;
|
|
3934
3951
|
dayId: string;
|
|
3935
3952
|
supplierServiceId: string | null;
|
|
3936
|
-
serviceType: "other" | "
|
|
3953
|
+
serviceType: "other" | "accommodation" | "transfer" | "experience" | "guide" | "meal";
|
|
3937
3954
|
name: string;
|
|
3938
3955
|
description: string | null;
|
|
3956
|
+
countryCode: string | null;
|
|
3939
3957
|
costCurrency: string;
|
|
3940
3958
|
costAmountCents: number;
|
|
3941
3959
|
quantity: number;
|
|
@@ -3980,11 +3998,12 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
3980
3998
|
description: string | null;
|
|
3981
3999
|
supplierServiceId: string | null;
|
|
3982
4000
|
costAmountCents: number;
|
|
4001
|
+
quantity: number;
|
|
3983
4002
|
sortOrder: number | null;
|
|
3984
4003
|
dayId: string;
|
|
3985
|
-
serviceType: "other" | "
|
|
4004
|
+
serviceType: "other" | "accommodation" | "transfer" | "experience" | "guide" | "meal";
|
|
4005
|
+
countryCode: string | null;
|
|
3986
4006
|
costCurrency: string;
|
|
3987
|
-
quantity: number;
|
|
3988
4007
|
};
|
|
3989
4008
|
};
|
|
3990
4009
|
outputFormat: "json";
|
|
@@ -4023,9 +4042,10 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
4023
4042
|
id: string;
|
|
4024
4043
|
dayId: string;
|
|
4025
4044
|
supplierServiceId: string | null;
|
|
4026
|
-
serviceType: "other" | "
|
|
4045
|
+
serviceType: "other" | "accommodation" | "transfer" | "experience" | "guide" | "meal";
|
|
4027
4046
|
name: string;
|
|
4028
4047
|
description: string | null;
|
|
4048
|
+
countryCode: string | null;
|
|
4029
4049
|
costCurrency: string;
|
|
4030
4050
|
costAmountCents: number;
|
|
4031
4051
|
quantity: number;
|
|
@@ -4120,8 +4140,8 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
4120
4140
|
createdAt: string;
|
|
4121
4141
|
notes: string | null;
|
|
4122
4142
|
productId: string;
|
|
4123
|
-
versionNumber: number;
|
|
4124
4143
|
snapshot: import("hono/utils/types").JSONValue;
|
|
4144
|
+
versionNumber: number;
|
|
4125
4145
|
authorId: string;
|
|
4126
4146
|
};
|
|
4127
4147
|
};
|
|
@@ -4174,8 +4194,8 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
4174
4194
|
id: string;
|
|
4175
4195
|
createdAt: string;
|
|
4176
4196
|
productId: string;
|
|
4177
|
-
authorId: string;
|
|
4178
4197
|
content: string;
|
|
4198
|
+
authorId: string;
|
|
4179
4199
|
};
|
|
4180
4200
|
};
|
|
4181
4201
|
outputFormat: "json";
|
|
@@ -4199,6 +4219,7 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
4199
4219
|
description: string | null;
|
|
4200
4220
|
sortOrder: number;
|
|
4201
4221
|
active: boolean;
|
|
4222
|
+
customerPaymentPolicy: import("hono/utils/types").JSONValue;
|
|
4202
4223
|
metadata: {
|
|
4203
4224
|
[x: string]: import("hono/utils/types").JSONValue;
|
|
4204
4225
|
} | null;
|
package/dist/routes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAmFjE,KAAK,GAAG,GAAG;IACT,SAAS,EAAE;QACT,EAAE,EAAE,kBAAkB,CAAA;QACtB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,QAAQ,CAAC,EAAE,OAAO,gBAAgB,EAAE,QAAQ,CAAA;KAC7C,CAAA;CACF,CAAA;AAMD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAumDtB,CAAA;AAEJ,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAA"}
|